From owner-svn-soc-all@FreeBSD.ORG Fri Jun 29 19:29:24 2012 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from socsvn.FreeBSD.org (unknown [IPv6:2001:4f8:fff6::2f]) by hub.freebsd.org (Postfix) with SMTP id 3AB6C1065672 for ; Fri, 29 Jun 2012 19:29:22 +0000 (UTC) (envelope-from jhagewood@FreeBSD.org) Received: by socsvn.FreeBSD.org (sSMTP sendmail emulation); Fri, 29 Jun 2012 19:29:22 +0000 Date: Fri, 29 Jun 2012 19:29:22 +0000 From: jhagewood@FreeBSD.org To: svn-soc-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Message-Id: <20120629192922.3AB6C1065672@hub.freebsd.org> Cc: Subject: socsvn commit: r238602 - in soc2012/jhagewood/diff: . diff X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Jun 2012 19:29:24 -0000 Author: jhagewood Date: Fri Jun 29 19:29:20 2012 New Revision: 238602 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=238602 Log: Modified: soc2012/jhagewood/diff/diff/diffreg.c soc2012/jhagewood/diff/hagewood-diff.patch Modified: soc2012/jhagewood/diff/diff/diffreg.c ============================================================================== --- soc2012/jhagewood/diff/diff/diffreg.c Fri Jun 29 18:49:14 2012 (r238601) +++ soc2012/jhagewood/diff/diff/diffreg.c Fri Jun 29 19:29:20 2012 (r238602) @@ -94,6 +94,7 @@ # define TIMESPEC_NS(timespec) 0 #endif +#define MAX_CHECK 768 /* * diff - compare two files. */ @@ -1345,20 +1346,25 @@ } /* - * Checks if an open file is a text file. + * Checks if an open file is a text file. Looks at the first 3 kilobytes + * to see if there is a null character. If so, assumes that the files is + * binary. */ static int istextfile(FILE *f) { char buf[BUFSIZ]; - int cnt; + int cnt, check_size; if (aflag || f == NULL) return (1); rewind(f); fread(buf, 1, BUFSIZ, f); - if (cnt = memchr(buf, '\0', BUFSIZ) != NULL) { - printf("%d\n", cnt); + if (BUFSIZ >= MAX_CHECK) + check_size = MAX_CHECK; + else + check_size = BUFSIZ; + if (memchr(buf, '\0', check_size) != NULL) { return (0); } return (1); Modified: soc2012/jhagewood/diff/hagewood-diff.patch ============================================================================== --- soc2012/jhagewood/diff/hagewood-diff.patch Fri Jun 29 18:49:14 2012 (r238601) +++ soc2012/jhagewood/diff/hagewood-diff.patch Fri Jun 29 19:29:20 2012 (r238602) @@ -674,7 +674,7 @@ extern char *start, *ifdefname, *diffargs, *label[2], *ignore_pats; diff -rupN jhagewood/diff/diff-orig/diffreg.c jhagewood/diff/diff/diffreg.c --- jhagewood/diff/diff-orig/diffreg.c 2012-06-28 18:13:23.286983517 -0400 -+++ jhagewood/diff/diff/diffreg.c 2012-06-28 18:13:23.374983516 -0400 ++++ jhagewood/diff/diff/diffreg.c 2012-06-29 15:23:03.842992142 -0400 @@ -62,15 +62,13 @@ * @(#)diffreg.c 8.1 (Berkeley) 6/6/93 */ @@ -695,7 +695,7 @@ #include #include -@@ -90,6 +88,12 @@ __FBSDID("$FreeBSD"); +@@ -90,6 +88,13 @@ __FBSDID("$FreeBSD"); #include "diff.h" #include "pathnames.h" @@ -705,10 +705,11 @@ +# define TIMESPEC_NS(timespec) 0 +#endif + ++#define MAX_CHECK 768 /* * diff - compare two files. */ -@@ -196,7 +200,7 @@ static void change(char *, FILE *, char +@@ -196,7 +201,7 @@ static void change(char *, FILE *, char static void sort(struct line *, int); static void print_header(const char *, const char *); static int ignoreline(char *); @@ -717,7 +718,7 @@ static int fetch(long *, int, int, FILE *, int, int); static int newcand(int, int, int); static int search(int *, int, int); -@@ -294,13 +298,13 @@ u_char cup2low[256] = { +@@ -294,13 +299,13 @@ u_char cup2low[256] = { int diffreg(char *ofile1, char *ofile2, int flags) { @@ -738,7 +739,7 @@ anychange = 0; lastline = 0; -@@ -353,7 +357,6 @@ diffreg(char *ofile1, char *ofile2, int +@@ -353,7 +358,6 @@ diffreg(char *ofile1, char *ofile2, int status |= 2; goto closem; } @@ -746,7 +747,7 @@ switch (files_differ(f1, f2, flags)) { case 0: goto closem; -@@ -365,7 +368,7 @@ diffreg(char *ofile1, char *ofile2, int +@@ -365,7 +369,7 @@ diffreg(char *ofile1, char *ofile2, int goto closem; } @@ -755,7 +756,7 @@ rval = D_BINARY; status |= 1; goto closem; -@@ -477,8 +480,8 @@ closem: +@@ -477,8 +481,8 @@ closem: static int files_differ(FILE *f1, FILE *f2, int flags) { @@ -766,7 +767,7 @@ if ((flags & (D_EMPTY1|D_EMPTY2)) || stb1.st_size != stb2.st_size || (stb1.st_mode & S_IFMT) != (stb2.st_mode & S_IFMT)) -@@ -503,9 +506,9 @@ files_differ(FILE *f1, FILE *f2, int fla +@@ -503,9 +507,9 @@ files_differ(FILE *f1, FILE *f2, int fla static FILE * opentemp(const char *file) { @@ -779,7 +780,7 @@ if (strcmp(file, "-") == 0) ifd = STDIN_FILENO; -@@ -541,7 +544,7 @@ opentemp(const char *file) +@@ -541,7 +545,7 @@ opentemp(const char *file) char * splice(char *dir, char *file) { @@ -788,7 +789,7 @@ if ((tail = strrchr(file, '/')) == NULL) tail = file; -@@ -555,8 +558,8 @@ static void +@@ -555,8 +559,8 @@ static void prepare(int i, FILE *fd, off_t filesize) { struct line *p; @@ -799,7 +800,7 @@ rewind(fd); -@@ -579,7 +582,7 @@ prepare(int i, FILE *fd, off_t filesize) +@@ -579,7 +583,7 @@ prepare(int i, FILE *fd, off_t filesize) static void prune(void) { @@ -808,7 +809,7 @@ for (pref = 0; pref < len[0] && pref < len[1] && file[0][pref + 1].value == file[1][pref + 1].value; -@@ -600,7 +603,7 @@ prune(void) +@@ -600,7 +604,7 @@ prune(void) static void equiv(struct line *a, int n, struct line *b, int m, int *c) { @@ -817,7 +818,7 @@ i = j = 1; while (i <= n && j <= m) { -@@ -629,7 +632,7 @@ equiv(struct line *a, int n, struct line +@@ -629,7 +633,7 @@ equiv(struct line *a, int n, struct line static int isqrt(int n) { @@ -826,7 +827,7 @@ if (n == 0) return (0); -@@ -647,9 +650,9 @@ isqrt(int n) +@@ -647,9 +651,9 @@ isqrt(int n) static int stone(int *a, int n, int *b, int *c) { @@ -839,7 +840,7 @@ const u_int bound = dflag ? UINT_MAX : MAX(256, isqrt(n)); k = 0; -@@ -705,7 +708,7 @@ newcand(int x, int y, int pred) +@@ -705,7 +709,7 @@ newcand(int x, int y, int pred) static int search(int *c, int k, int y) { @@ -848,7 +849,7 @@ if (clist[c[k]].y < y) /* quick look for typical case */ return (k + 1); -@@ -730,7 +733,7 @@ static void +@@ -730,7 +734,7 @@ static void unravel(int p) { struct cand *q; @@ -857,7 +858,7 @@ for (i = 0; i <= len[0]; i++) J[i] = i <= pref ? i : -@@ -748,9 +751,10 @@ unravel(int p) +@@ -748,9 +752,10 @@ unravel(int p) static void check(char *file1, FILE *f1, char *file2, FILE *f2) { @@ -871,7 +872,7 @@ rewind(f1); rewind(f2); j = 1; -@@ -766,7 +770,7 @@ check(char *file1, FILE *f1, char *file2 +@@ -766,7 +771,7 @@ check(char *file1, FILE *f1, char *file2 ixnew[j] = ctnew += skipline(f2); j++; } @@ -880,7 +881,7 @@ for (;;) { c = getc(f1); d = getc(f2); -@@ -781,6 +785,7 @@ check(char *file1, FILE *f1, char *file2 +@@ -781,6 +786,7 @@ check(char *file1, FILE *f1, char *file2 } ctold++; ctnew++; @@ -888,7 +889,7 @@ if (bflag && isspace(c) && isspace(d)) { do { if (c == '\n') -@@ -792,6 +797,7 @@ check(char *file1, FILE *f1, char *file2 +@@ -792,6 +798,7 @@ check(char *file1, FILE *f1, char *file2 break; ctnew++; } while (isspace(d = getc(f2))); @@ -896,7 +897,7 @@ } else if (wflag) { while (isspace(c) && c != '\n') { c = getc(f1); -@@ -801,31 +807,62 @@ check(char *file1, FILE *f1, char *file2 +@@ -801,31 +808,62 @@ check(char *file1, FILE *f1, char *file2 d = getc(f2); ctnew++; } @@ -974,7 +975,7 @@ if (chrtran[c] != chrtran[d]) { jackpot++; J[i] = 0; -@@ -872,7 +909,7 @@ static void +@@ -872,7 +910,7 @@ static void sort(struct line *a, int n) { struct line *ai, *aim, w; @@ -983,7 +984,7 @@ if (n == 0) return; -@@ -916,7 +953,7 @@ unsort(struct line *f, int l, int *b) +@@ -916,7 +954,7 @@ unsort(struct line *f, int l, int *b) static int skipline(FILE *f) { @@ -992,7 +993,7 @@ for (i = 1; (c = getc(f)) != '\n' && c != EOF; i++) continue; -@@ -926,7 +963,7 @@ skipline(FILE *f) +@@ -926,7 +964,7 @@ skipline(FILE *f) static void output(char *file1, FILE *f1, char *file2, FILE *f2, int flags) { @@ -1001,7 +1002,7 @@ rewind(f1); rewind(f2); -@@ -965,7 +1002,7 @@ output(char *file1, FILE *f1, char *file +@@ -965,7 +1003,7 @@ output(char *file1, FILE *f1, char *file #define c i0 if ((c = getc(f1)) == EOF) return; @@ -1010,7 +1011,7 @@ } #undef c } -@@ -980,6 +1017,7 @@ output(char *file1, FILE *f1, char *file +@@ -980,6 +1018,7 @@ output(char *file1, FILE *f1, char *file static void range(int a, int b, char *separator) { @@ -1018,7 +1019,7 @@ printf("%d", a > b ? b : a); if (a < b) printf("%s%d", separator, b); -@@ -988,6 +1026,7 @@ range(int a, int b, char *separator) +@@ -988,6 +1027,7 @@ range(int a, int b, char *separator) static void uni_range(int a, int b) { @@ -1026,7 +1027,7 @@ if (a < b) printf("%d,%d", a, b - a + 1); else if (a == b) -@@ -999,22 +1038,22 @@ uni_range(int a, int b) +@@ -999,22 +1039,22 @@ uni_range(int a, int b) static char * preadline(int fd, size_t len, off_t off) { @@ -1053,7 +1054,7 @@ ret = regexec(&ignore_re, line, 0, NULL, 0); free(line); -@@ -1032,8 +1071,8 @@ static void +@@ -1032,8 +1072,8 @@ static void change(char *file1, FILE *f1, char *file2, FILE *f2, int a, int b, int c, int d, int *pflags) { @@ -1064,7 +1065,7 @@ restart: if (format != D_IFDEF && a > b && c > d) -@@ -1113,15 +1152,15 @@ proceed: +@@ -1113,15 +1153,15 @@ proceed: case D_NORMAL: case D_EDIT: range(a, b, ","); @@ -1084,7 +1085,7 @@ break; case D_NREVERSE: if (a > b) -@@ -1137,7 +1176,7 @@ proceed: +@@ -1137,7 +1177,7 @@ proceed: if (format == D_NORMAL || format == D_IFDEF) { fetch(ixold, a, b, f1, '<', 1); if (a <= b && c <= d && format == D_NORMAL) @@ -1093,7 +1094,7 @@ } i = fetch(ixnew, c, d, f2, format == D_NORMAL ? '>' : '\0', 0); if (i != 0 && format == D_EDIT) { -@@ -1148,14 +1187,14 @@ proceed: +@@ -1148,14 +1188,14 @@ proceed: * it. We have to add a substitute command to change this * back and restart where we left off. */ @@ -1110,7 +1111,7 @@ if (inifdef) { printf("#endif /* %s */\n", ifdefname); inifdef = 0; -@@ -1165,8 +1204,8 @@ proceed: +@@ -1165,8 +1205,8 @@ proceed: static int fetch(long *f, int a, int b, FILE *lb, int ch, int oldfile) { @@ -1121,7 +1122,7 @@ /* * When doing #ifdef's, copy down to current line -@@ -1177,7 +1216,7 @@ fetch(long *f, int a, int b, FILE *lb, i +@@ -1177,7 +1217,7 @@ fetch(long *f, int a, int b, FILE *lb, i /* print through if append (a>b), else to (nb: 0 vs 1 orig) */ nc = f[a > b ? b : a - 1] - curpos; for (i = 0; i < nc; i++) @@ -1130,7 +1131,7 @@ } if (a > b) return (0); -@@ -1197,12 +1236,12 @@ fetch(long *f, int a, int b, FILE *lb, i +@@ -1197,12 +1237,12 @@ fetch(long *f, int a, int b, FILE *lb, i fseek(lb, f[i - 1], SEEK_SET); nc = f[i] - f[i - 1]; if (format != D_IFDEF && ch != '\0') { @@ -1146,7 +1147,7 @@ } col = 0; for (j = 0, lastc = '\0'; j < nc; j++, lastc = c) { -@@ -1211,13 +1250,13 @@ fetch(long *f, int a, int b, FILE *lb, i +@@ -1211,13 +1251,13 @@ fetch(long *f, int a, int b, FILE *lb, i format == D_NREVERSE) warnx("No newline at end of file"); else @@ -1162,7 +1163,7 @@ } while (++col < newcol); } else { if (format == D_EDIT && j == 1 && c == '\n' -@@ -1229,10 +1268,10 @@ fetch(long *f, int a, int b, FILE *lb, i +@@ -1229,10 +1269,10 @@ fetch(long *f, int a, int b, FILE *lb, i * giving the caller an offset * from which to restart. */ @@ -1175,7 +1176,7 @@ col++; } } -@@ -1246,8 +1285,8 @@ fetch(long *f, int a, int b, FILE *lb, i +@@ -1246,8 +1286,8 @@ fetch(long *f, int a, int b, FILE *lb, i static int readhash(FILE *f) { @@ -1186,12 +1187,14 @@ sum = 1; space = 0; -@@ -1305,20 +1344,23 @@ readhash(FILE *f) +@@ -1305,20 +1345,28 @@ readhash(FILE *f) return (sum == 0 ? 1 : sum); } +/* -+ * Checks if an open file is a text file. ++ * Checks if an open file is a text file. Looks at the first 3 kilobytes ++ * to see if there is a null character. If so, assumes that the files is ++ * binary. + */ static int -asciifile(FILE *f) @@ -1200,7 +1203,7 @@ - char buf[BUFSIZ]; - int i, cnt; + char buf[BUFSIZ]; -+ int cnt; ++ int cnt, check_size; if (aflag || f == NULL) return (1); @@ -1211,14 +1214,17 @@ - if (!isprint(buf[i]) && !isspace(buf[i])) - return (0); + fread(buf, 1, BUFSIZ, f); -+ if (cnt = memchr(buf, '\0', BUFSIZ) != NULL) { -+ printf("%d\n", cnt); ++ if (BUFSIZ >= MAX_CHECK) ++ check_size = MAX_CHECK; ++ else ++ check_size = BUFSIZ; ++ if (memchr(buf, '\0', check_size) != NULL) { + return (0); + } return (1); } -@@ -1327,10 +1369,10 @@ asciifile(FILE *f) +@@ -1327,10 +1375,10 @@ asciifile(FILE *f) static char * match_function(const long *f, int pos, FILE *file) { @@ -1233,7 +1239,7 @@ lastline = pos; while (pos > last) { -@@ -1342,7 +1384,6 @@ match_function(const long *f, int pos, F +@@ -1342,7 +1390,6 @@ match_function(const long *f, int pos, F if (nc > 0) { buf[nc] = '\0'; buf[strcspn(buf, "\n")] = '\0'; @@ -1241,7 +1247,7 @@ if (isalpha(buf[0]) || buf[0] == '_' || buf[0] == '$') { if (begins_with(buf, "private:")) { if (!state) -@@ -1373,9 +1414,9 @@ static void +@@ -1373,9 +1420,9 @@ static void dump_context_vec(FILE *f1, FILE *f2) { struct context_vec *cvp = context_vec_start; @@ -1254,7 +1260,7 @@ if (context_vec_start > context_vec_ptr) return; -@@ -1390,8 +1431,8 @@ dump_context_vec(FILE *f1, FILE *f2) +@@ -1390,8 +1437,8 @@ dump_context_vec(FILE *f1, FILE *f2) if (pflag) { f = match_function(ixold, lowa-1, f1); if (f != NULL) { @@ -1265,7 +1271,7 @@ } } printf("\n*** "); -@@ -1478,9 +1519,9 @@ static void +@@ -1478,9 +1525,9 @@ static void dump_unified_vec(FILE *f1, FILE *f2) { struct context_vec *cvp = context_vec_start; @@ -1278,7 +1284,7 @@ if (context_vec_start > context_vec_ptr) return; -@@ -1491,19 +1532,19 @@ dump_unified_vec(FILE *f1, FILE *f2) +@@ -1491,19 +1538,19 @@ dump_unified_vec(FILE *f1, FILE *f2) lowc = MAX(1, cvp->c - context); upd = MIN(len[1], context_vec_ptr->d + context); @@ -1304,7 +1310,7 @@ /* * Output changes in "unified" diff format--the old and new lines -@@ -1551,16 +1592,43 @@ dump_unified_vec(FILE *f1, FILE *f2) +@@ -1551,16 +1598,43 @@ dump_unified_vec(FILE *f1, FILE *f2) static void print_header(const char *file1, const char *file2) {