diff options
Diffstat (limited to 'diff.c')
| -rw-r--r-- | diff.c | 31 | 
1 files changed, 25 insertions, 6 deletions
| @@ -3140,16 +3140,19 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)  		return stat_opt(options, av);  	/* renames options */ -	else if (!prefixcmp(arg, "-B")) { +	else if (!prefixcmp(arg, "-B") || !prefixcmp(arg, "--break-rewrites=") || +		 !strcmp(arg, "--break-rewrites")) {  		if ((options->break_opt = diff_scoreopt_parse(arg)) == -1)  			return -1;  	} -	else if (!prefixcmp(arg, "-M")) { +	else if (!prefixcmp(arg, "-M") || !prefixcmp(arg, "--detect-renames=") || +		 !strcmp(arg, "--detect-renames")) {  		if ((options->rename_score = diff_scoreopt_parse(arg)) == -1)  			return -1;  		options->detect_rename = DIFF_DETECT_RENAME;  	} -	else if (!prefixcmp(arg, "-C")) { +	else if (!prefixcmp(arg, "-C") || !prefixcmp(arg, "--detect-copies=") || +		 !strcmp(arg, "--detect-copies")) {  		if (options->detect_rename == DIFF_DETECT_COPY)  			DIFF_OPT_SET(options, FIND_COPIES_HARDER);  		if ((options->rename_score = diff_scoreopt_parse(arg)) == -1) @@ -3323,7 +3326,7 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)  	return 1;  } -static int parse_num(const char **cp_p) +int parse_rename_score(const char **cp_p)  {  	unsigned long num, scale;  	int ch, dot; @@ -3366,10 +3369,26 @@ static int diff_scoreopt_parse(const char *opt)  	if (*opt++ != '-')  		return -1;  	cmd = *opt++; +	if (cmd == '-') { +		/* convert the long-form arguments into short-form versions */ +		if (!prefixcmp(opt, "break-rewrites")) { +			opt += strlen("break-rewrites"); +			if (*opt == 0 || *opt++ == '=') +				cmd = 'B'; +		} else if (!prefixcmp(opt, "detect-copies")) { +			opt += strlen("detect-copies"); +			if (*opt == 0 || *opt++ == '=') +				cmd = 'C'; +		} else if (!prefixcmp(opt, "detect-renames")) { +			opt += strlen("detect-renames"); +			if (*opt == 0 || *opt++ == '=') +				cmd = 'M'; +		} +	}  	if (cmd != 'M' && cmd != 'C' && cmd != 'B')  		return -1; /* that is not a -M, -C nor -B option */ -	opt1 = parse_num(&opt); +	opt1 = parse_rename_score(&opt);  	if (cmd != 'B')  		opt2 = 0;  	else { @@ -3379,7 +3398,7 @@ static int diff_scoreopt_parse(const char *opt)  			return -1; /* we expect -B80/99 or -B80 */  		else {  			opt++; -			opt2 = parse_num(&opt); +			opt2 = parse_rename_score(&opt);  		}  	}  	if (*opt != 0) | 
