From: Junio C Hamano Date: Wed, 9 Apr 2014 18:59:16 +0000 (-0700) Subject: Merge branch 'jc/fix-diff-no-index-diff-opt-parse' into maint X-Git-Tag: v1.9.2~5 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/693b407077bf3739b3609400845e3f6854830ee4?ds=inline;hp=-c Merge branch 'jc/fix-diff-no-index-diff-opt-parse' into maint * jc/fix-diff-no-index-diff-opt-parse: diff-no-index: correctly diagnose error return from diff_opt_parse() --- 693b407077bf3739b3609400845e3f6854830ee4 diff --combined diff-no-index.c index 33e5982a1c,ecf929336d..798477f7e5 --- a/diff-no-index.c +++ b/diff-no-index.c @@@ -183,12 -183,54 +183,12 @@@ static int queue_diff(struct diff_optio void diff_no_index(struct rev_info *revs, int argc, const char **argv, - int nongit, const char *prefix) + const char *prefix) { int i, prefixlen; - int no_index = 0; unsigned deprecated_show_diff_q_option_used = 0; const char *paths[2]; - /* Were we asked to do --no-index explicitly? */ - for (i = 1; i < argc; i++) { - if (!strcmp(argv[i], "--")) { - i++; - break; - } - if (!strcmp(argv[i], "--no-index")) - no_index = 1; - if (argv[i][0] != '-') - break; - } - - if (!no_index && !nongit) { - /* - * Inside a git repository, without --no-index. Only - * when a path outside the repository is given, - * e.g. "git diff /var/tmp/[12]", or "git diff - * Makefile /var/tmp/Makefile", allow it to be used as - * a colourful "diff" replacement. - */ - if ((argc != i + 2) || - (path_inside_repo(prefix, argv[i]) && - path_inside_repo(prefix, argv[i+1]))) - return; - } - if (argc != i + 2) { - if (!no_index) { - /* - * There was no --no-index and there were not two - * paths. It is possible that the user intended - * to do an inside-repository operation. - */ - fprintf(stderr, "Not a git repository\n"); - fprintf(stderr, - "To compare two paths outside a working tree:\n"); - } - /* Give the usage message for non-repository usage and exit. */ - usagef("git diff %s ", - no_index ? "--no-index" : "[--no-index]"); - } - diff_setup(&revs->diffopt); for (i = 1; i < argc - 2; ) { int j; @@@ -202,7 -244,7 +202,7 @@@ i++; else { j = diff_opt_parse(&revs->diffopt, argv + i, argc - i); - if (!j) + if (j <= 0) die("invalid diff option/value: %s", argv[i]); i += j; }