PERFORCE change 179693 for review

Benjamin Fiedler bfiedler at FreeBSD.org
Thu Jun 17 00:36:56 UTC 2010


http://p4web.freebsd.org/@@179693?ac=10

Change 179693 by bfiedler at freebsd-7803 on 2010/06/17 00:36:53

	Implement -tabsize=X, which invokes --expand-tabs

Affected files ...

.. //depot/projects/soc2010/bsdtextproc/diff/diff.c#7 edit
.. //depot/projects/soc2010/bsdtextproc/diff/diff.h#4 edit
.. //depot/projects/soc2010/bsdtextproc/diff/diffreg.c#6 edit

Differences ...

==== //depot/projects/soc2010/bsdtextproc/diff/diff.c#7 (text+ko) ====

@@ -48,7 +48,7 @@
 int	 aflag, bflag, dflag, iflag, lflag, Nflag, Pflag, pflag, rflag;
 int	 sflag, tflag, Tflag, wflag;
 int	 Bflag, yflag;
-int	 strip_cr;
+int	 strip_cr, tabsize=8;
 char 	 ignore_file_case = 0;
 int	 format, context, status;
 char	*start, *ifdefname, *diffargs, *label[2], *ignore_pats;
@@ -91,12 +91,12 @@
 	{ "GTYPE-group-format",		required_argument,	NULL,	OPT_GTYPE },
 	{ "line-format",		required_argument,	NULL,	OPT_LF },
 	{ "LTYPE-line-format",		required_argument,	NULL,	OPT_LLF },
-	{ "tabsize",			optional_argument,	NULL,	OPT_TSIZE },
 	{ "unidirectional-new-file",	no_argument,		NULL,	OPT_UNINF },
 	{ "from-file",			required_argument,	NULL,	OPT_FFILE },
 	{ "to-file",			required_argument,	NULL,	OPT_TOFILE },
 	{ "horizon-lines",		required_argument,	NULL,	OPT_HLINES },
 	{ "speed-large-files",		no_argument,		NULL,	OPT_LFILES }, */
+	{ "tabsize",			optional_argument,	NULL,	OPT_TSIZE },
 	{ "strip-trailing-cr",		no_argument,		NULL,	OPT_STRIPCR },
 	{ "help",			no_argument,		NULL,	OPT_HELP }, 
 	{ "ignore-file-name-case",	no_argument,		NULL,	OPT_IGN_FN_CASE },
@@ -296,6 +296,15 @@
 		case 'y':
 			yflag = 1;
 			break;
+		case OPT_TSIZE:
+                        if (optarg != NULL) {
+                                l = strtol(optarg, &ep, 10);
+                                if (*ep != '\0' || l < 1 || l >= INT_MAX)
+                                        usage();
+                                tabsize = (int)l;
+                        } else 
+                                tabsize = 8;
+                        break; 
 		case OPT_STRIPCR:
 			strip_cr=1;
 			break;

==== //depot/projects/soc2010/bsdtextproc/diff/diff.h#4 (text+ko) ====

@@ -77,7 +77,7 @@
 
 extern int	 aflag, bflag, dflag, iflag, lflag, Nflag, Pflag, pflag, rflag,
 		 sflag, tflag, Tflag, wflag;
-extern int	 Bflag, strip_cr;
+extern int	 Bflag, strip_cr, tabsize;
 extern int	 format, context, status;
 extern char	 ignore_file_case;
 extern char	*start, *ifdefname, *diffargs, *label[2], *ignore_pats;

==== //depot/projects/soc2010/bsdtextproc/diff/diffreg.c#6 (text+ko) ====

@@ -1166,6 +1166,7 @@
 fetch(long *f, int a, int b, FILE *lb, int ch, int oldfile)
 {
 	int	 i, j, c, lastc, col, nc;
+	int	 newcol;
 
 	/*
 	 * When doing #ifdef's, copy down to current line
@@ -1214,9 +1215,10 @@
 				return (0);
 			}
 			if (c == '\t' && tflag) {
+				newcol = ((col/tabsize)+1)*tabsize;
 				do {
 					putchar(' ');
-				} while (++col & 7);
+				} while (++col < newcol);
 			} else {
 				if (format == D_EDIT && j == 1 && c == '\n'
 				    && lastc == '.') {


More information about the p4-projects mailing list