@matheusbsbs / matheus-bagliano / commits / c43a24834a
Fork 0

Force the sticked form for options with optional arguments.

This forbids "git tag -n <number> -l" we allowed earlier, so adjust t7004 while at it. Signed-off-by: Pierre Habouzit <madcoder@debian.org>

Pierre Habouzit committed Dec 21, 2007 at 11:41 UTC c43a24834a9babd3ddd9c27ccc81174c2cb36859
2 files changed +51 -51
parse-options.c
+3 -3
@@ -89,7 +89,7 @@ static int get_value(struct optparse_t *p,
89 *(const char **)opt->value = NULL;
90 return 0;
91 }
92 - if (opt->flags & PARSE_OPT_OPTARG && (!arg || *arg == '-')) {
92 + if (opt->flags & PARSE_OPT_OPTARG && !p->opt) {
93 *(const char **)opt->value = (const char *)opt->defval;
94 return 0;
95 }
@@ -103,7 +103,7 @@ static int get_value(struct optparse_t *p,
103 return (*opt->callback)(opt, NULL, 1);
104 if (opt->flags & PARSE_OPT_NOARG)
105 return (*opt->callback)(opt, NULL, 0);
106 - if (opt->flags & PARSE_OPT_OPTARG && (!arg || *arg == '-'))
106 + if (opt->flags & PARSE_OPT_OPTARG && !p->opt)
107 return (*opt->callback)(opt, NULL, 0);
108 if (!arg)
109 return opterror(opt, "requires a value", flags);
@@ -114,7 +114,7 @@ static int get_value(struct optparse_t *p,
114 *(int *)opt->value = 0;
115 return 0;
116 }
117 - if (opt->flags & PARSE_OPT_OPTARG && (!arg || !isdigit(*arg))) {
117 + if (opt->flags & PARSE_OPT_OPTARG && !p->opt) {
118 *(int *)opt->value = opt->defval;
119 return 0;
120 }
t/t7004-tag.sh
+48 -48
@@ -491,21 +491,21 @@ test_expect_success \
491 echo "tag-one-line" >expect &&
492 git-tag -l | grep "^tag-one-line" >actual &&
493 git diff expect actual &&
494 - git-tag -n 0 -l | grep "^tag-one-line" >actual &&
494 + git-tag -n0 -l | grep "^tag-one-line" >actual &&
495 git diff expect actual &&
496 - git-tag -n 0 -l tag-one-line >actual &&
496 + git-tag -n0 -l tag-one-line >actual &&
497 git diff expect actual &&
498
499 echo "tag-one-line A msg" >expect &&
500 - git-tag -n 1 -l | grep "^tag-one-line" >actual &&
500 + git-tag -n1 -l | grep "^tag-one-line" >actual &&
501 git diff expect actual &&
502 git-tag -n -l | grep "^tag-one-line" >actual &&
503 git diff expect actual &&
504 - git-tag -n 1 -l tag-one-line >actual &&
504 + git-tag -n1 -l tag-one-line >actual &&
505 git diff expect actual &&
506 - git-tag -n 2 -l tag-one-line >actual &&
506 + git-tag -n2 -l tag-one-line >actual &&
507 git diff expect actual &&
508 - git-tag -n 999 -l tag-one-line >actual &&
508 + git-tag -n999 -l tag-one-line >actual &&
509 git diff expect actual
510 '
511
@@ -516,21 +516,21 @@ test_expect_success \
516 echo "tag-zero-lines" >expect &&
517 git-tag -l | grep "^tag-zero-lines" >actual &&
518 git diff expect actual &&
519 - git-tag -n 0 -l | grep "^tag-zero-lines" >actual &&
519 + git-tag -n0 -l | grep "^tag-zero-lines" >actual &&
520 git diff expect actual &&
521 - git-tag -n 0 -l tag-zero-lines >actual &&
521 + git-tag -n0 -l tag-zero-lines >actual &&
522 git diff expect actual &&
523
524 echo "tag-zero-lines " >expect &&
525 - git-tag -n 1 -l | grep "^tag-zero-lines" >actual &&
525 + git-tag -n1 -l | grep "^tag-zero-lines" >actual &&
526 git diff expect actual &&
527 git-tag -n -l | grep "^tag-zero-lines" >actual &&
528 git diff expect actual &&
529 - git-tag -n 1 -l tag-zero-lines >actual &&
529 + git-tag -n1 -l tag-zero-lines >actual &&
530 git diff expect actual &&
531 - git-tag -n 2 -l tag-zero-lines >actual &&
531 + git-tag -n2 -l tag-zero-lines >actual &&
532 git diff expect actual &&
533 - git-tag -n 999 -l tag-zero-lines >actual &&
533 + git-tag -n999 -l tag-zero-lines >actual &&
534 git diff expect actual
535 '
536
@@ -544,37 +544,37 @@ test_expect_success \
544 echo "tag-lines" >expect &&
545 git-tag -l | grep "^tag-lines" >actual &&
546 git diff expect actual &&
547 - git-tag -n 0 -l | grep "^tag-lines" >actual &&
547 + git-tag -n0 -l | grep "^tag-lines" >actual &&
548 git diff expect actual &&
549 - git-tag -n 0 -l tag-lines >actual &&
549 + git-tag -n0 -l tag-lines >actual &&
550 git diff expect actual &&
551
552 echo "tag-lines tag line one" >expect &&
553 - git-tag -n 1 -l | grep "^tag-lines" >actual &&
553 + git-tag -n1 -l | grep "^tag-lines" >actual &&
554 git diff expect actual &&
555 git-tag -n -l | grep "^tag-lines" >actual &&
556 git diff expect actual &&
557 - git-tag -n 1 -l tag-lines >actual &&
557 + git-tag -n1 -l tag-lines >actual &&
558 git diff expect actual &&
559
560 echo " tag line two" >>expect &&
561 - git-tag -n 2 -l | grep "^ *tag.line" >actual &&
561 + git-tag -n2 -l | grep "^ *tag.line" >actual &&
562 git diff expect actual &&
563 - git-tag -n 2 -l tag-lines >actual &&
563 + git-tag -n2 -l tag-lines >actual &&
564 git diff expect actual &&
565
566 echo " tag line three" >>expect &&
567 - git-tag -n 3 -l | grep "^ *tag.line" >actual &&
567 + git-tag -n3 -l | grep "^ *tag.line" >actual &&
568 git diff expect actual &&
569 - git-tag -n 3 -l tag-lines >actual &&
569 + git-tag -n3 -l tag-lines >actual &&
570 git diff expect actual &&
571 - git-tag -n 4 -l | grep "^ *tag.line" >actual &&
571 + git-tag -n4 -l | grep "^ *tag.line" >actual &&
572 git diff expect actual &&
573 - git-tag -n 4 -l tag-lines >actual &&
573 + git-tag -n4 -l tag-lines >actual &&
574 git diff expect actual &&
575 - git-tag -n 99 -l | grep "^ *tag.line" >actual &&
575 + git-tag -n99 -l | grep "^ *tag.line" >actual &&
576 git diff expect actual &&
577 - git-tag -n 99 -l tag-lines >actual &&
577 + git-tag -n99 -l tag-lines >actual &&
578 git diff expect actual
579 '
580
@@ -902,21 +902,21 @@ test_expect_success \
902 echo "stag-one-line" >expect &&
903 git-tag -l | grep "^stag-one-line" >actual &&
904 git diff expect actual &&
905 - git-tag -n 0 -l | grep "^stag-one-line" >actual &&
905 + git-tag -n0 -l | grep "^stag-one-line" >actual &&
906 git diff expect actual &&
907 - git-tag -n 0 -l stag-one-line >actual &&
907 + git-tag -n0 -l stag-one-line >actual &&
908 git diff expect actual &&
909
910 echo "stag-one-line A message line signed" >expect &&
911 - git-tag -n 1 -l | grep "^stag-one-line" >actual &&
911 + git-tag -n1 -l | grep "^stag-one-line" >actual &&
912 git diff expect actual &&
913 git-tag -n -l | grep "^stag-one-line" >actual &&
914 git diff expect actual &&
915 - git-tag -n 1 -l stag-one-line >actual &&
915 + git-tag -n1 -l stag-one-line >actual &&
916 git diff expect actual &&
917 - git-tag -n 2 -l stag-one-line >actual &&
917 + git-tag -n2 -l stag-one-line >actual &&
918 git diff expect actual &&
919 - git-tag -n 999 -l stag-one-line >actual &&
919 + git-tag -n999 -l stag-one-line >actual &&
920 git diff expect actual
921 '
922
@@ -927,21 +927,21 @@ test_expect_success \
927 echo "stag-zero-lines" >expect &&
928 git-tag -l | grep "^stag-zero-lines" >actual &&
929 git diff expect actual &&
930 - git-tag -n 0 -l | grep "^stag-zero-lines" >actual &&
930 + git-tag -n0 -l | grep "^stag-zero-lines" >actual &&
931 git diff expect actual &&
932 - git-tag -n 0 -l stag-zero-lines >actual &&
932 + git-tag -n0 -l stag-zero-lines >actual &&
933 git diff expect actual &&
934
935 echo "stag-zero-lines " >expect &&
936 - git-tag -n 1 -l | grep "^stag-zero-lines" >actual &&
936 + git-tag -n1 -l | grep "^stag-zero-lines" >actual &&
937 git diff expect actual &&
938 git-tag -n -l | grep "^stag-zero-lines" >actual &&
939 git diff expect actual &&
940 - git-tag -n 1 -l stag-zero-lines >actual &&
940 + git-tag -n1 -l stag-zero-lines >actual &&
941 git diff expect actual &&
942 - git-tag -n 2 -l stag-zero-lines >actual &&
942 + git-tag -n2 -l stag-zero-lines >actual &&
943 git diff expect actual &&
944 - git-tag -n 999 -l stag-zero-lines >actual &&
944 + git-tag -n999 -l stag-zero-lines >actual &&
945 git diff expect actual
946 '
947
@@ -955,37 +955,37 @@ test_expect_success \
955 echo "stag-lines" >expect &&
956 git-tag -l | grep "^stag-lines" >actual &&
957 git diff expect actual &&
958 - git-tag -n 0 -l | grep "^stag-lines" >actual &&
958 + git-tag -n0 -l | grep "^stag-lines" >actual &&
959 git diff expect actual &&
960 - git-tag -n 0 -l stag-lines >actual &&
960 + git-tag -n0 -l stag-lines >actual &&
961 git diff expect actual &&
962
963 echo "stag-lines stag line one" >expect &&
964 - git-tag -n 1 -l | grep "^stag-lines" >actual &&
964 + git-tag -n1 -l | grep "^stag-lines" >actual &&
965 git diff expect actual &&
966 git-tag -n -l | grep "^stag-lines" >actual &&
967 git diff expect actual &&
968 - git-tag -n 1 -l stag-lines >actual &&
968 + git-tag -n1 -l stag-lines >actual &&
969 git diff expect actual &&
970
971 echo " stag line two" >>expect &&
972 - git-tag -n 2 -l | grep "^ *stag.line" >actual &&
972 + git-tag -n2 -l | grep "^ *stag.line" >actual &&
973 git diff expect actual &&
974 - git-tag -n 2 -l stag-lines >actual &&
974 + git-tag -n2 -l stag-lines >actual &&
975 git diff expect actual &&
976
977 echo " stag line three" >>expect &&
978 - git-tag -n 3 -l | grep "^ *stag.line" >actual &&
978 + git-tag -n3 -l | grep "^ *stag.line" >actual &&
979 git diff expect actual &&
980 - git-tag -n 3 -l stag-lines >actual &&
980 + git-tag -n3 -l stag-lines >actual &&
981 git diff expect actual &&
982 - git-tag -n 4 -l | grep "^ *stag.line" >actual &&
982 + git-tag -n4 -l | grep "^ *stag.line" >actual &&
983 git diff expect actual &&
984 - git-tag -n 4 -l stag-lines >actual &&
984 + git-tag -n4 -l stag-lines >actual &&
985 git diff expect actual &&
986 - git-tag -n 99 -l | grep "^ *stag.line" >actual &&
986 + git-tag -n99 -l | grep "^ *stag.line" >actual &&
987 git diff expect actual &&
988 - git-tag -n 99 -l stag-lines >actual &&
988 + git-tag -n99 -l stag-lines >actual &&
989 git diff expect actual
990 '
991