svn commit: r310948 - user/bapt/diff
Baptiste Daroussin
bapt at FreeBSD.org
Sat Dec 31 11:35:52 UTC 2016
Author: bapt
Date: Sat Dec 31 11:35:51 2016
New Revision: 310948
URL: https://svnweb.freebsd.org/changeset/base/310948
Log:
Implement diff --ignore-file-name-case
Note that the --no-ignore-file-name-case is not planned to be implemented
as this is the default and there is no configuration switch to change that
default
Obtained from: soc2012
Modified:
user/bapt/diff/diff.c
user/bapt/diff/diff.h
user/bapt/diff/diffdir.c
Modified: user/bapt/diff/diff.c
==============================================================================
--- user/bapt/diff/diff.c Sat Dec 31 11:30:18 2016 (r310947)
+++ user/bapt/diff/diff.c Sat Dec 31 11:35:51 2016 (r310948)
@@ -40,7 +40,7 @@ __FBSDID("$FreeBSD$");
#include "xmalloc.h"
int lflag, Nflag, Pflag, rflag, sflag, Tflag, cflag;
-int diff_format, diff_context, status;
+int diff_format, diff_context, status, ignore_file_case;
int tabsize = 8;
char *start, *ifdefname, *diffargs, *label[2], *ignore_pats;
struct stat stb1, stb2;
@@ -51,6 +51,7 @@ regex_t ignore_re;
enum {
OPT_TSIZE = CHAR_MAX + 1,
OPT_STRIPCR,
+ OPT_IGN_FN_CASE,
};
static struct option longopts[] = {
@@ -79,6 +80,7 @@ static struct option longopts[] = {
{ "ignore-all-space", no_argument, 0, 'w' },
{ "exclude", required_argument, 0, 'x' },
{ "exclude-from", required_argument, 0, 'X' },
+ { "ignore-file-name-case", no_argument, NULL, OPT_IGN_FN_CASE },
{ "strip-trailing-cr", no_argument, NULL, OPT_STRIPCR },
{ "tabsize", optional_argument, NULL, OPT_TSIZE },
{ NULL, 0, 0, '\0'}
@@ -219,6 +221,9 @@ main(int argc, char **argv)
case 'x':
push_excludes(optarg);
break;
+ case OPT_IGN_FN_CASE:
+ ignore_file_case = 1;
+ break;
case OPT_TSIZE:
tabsize = (int) strtonum(optarg, 1, INT_MAX, &errstr);
if (errstr) {
Modified: user/bapt/diff/diff.h
==============================================================================
--- user/bapt/diff/diff.h Sat Dec 31 11:30:18 2016 (r310947)
+++ user/bapt/diff/diff.h Sat Dec 31 11:35:51 2016 (r310948)
@@ -84,7 +84,7 @@ struct excludes {
};
extern int lflag, Nflag, Pflag, rflag, sflag, Tflag, cflag;
-extern int diff_format, diff_context, status;
+extern int diff_format, diff_context, status, ignore_file_case;
extern int tabsize;
extern char *start, *ifdefname, *diffargs, *label[2], *ignore_pats;
extern struct stat stb1, stb2;
Modified: user/bapt/diff/diffdir.c
==============================================================================
--- user/bapt/diff/diffdir.c Sat Dec 31 11:30:18 2016 (r310947)
+++ user/bapt/diff/diffdir.c Sat Dec 31 11:35:51 2016 (r310948)
@@ -124,7 +124,8 @@ diffdir(char *p1, char *p2, int flags)
dent2 = dp2 != edp2 ? *dp2 : NULL;
pos = dent1 == NULL ? 1 : dent2 == NULL ? -1 :
- strcmp(dent1->d_name, dent2->d_name);
+ ignore_file_case ? strcasecmp(dent1->d_name, dent2->d_name) :
+ strcmp(dent1->d_name, dent2->d_name) ;
if (pos == 0) {
/* file exists in both dirs, diff it */
diffit(dent1, path1, dirlen1, path2, dirlen2, flags);
More information about the svn-src-user
mailing list