From owner-dev-commits-src-all@freebsd.org Wed Sep 15 23:59:49 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 155D3670B07; Wed, 15 Sep 2021 23:59:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4H8xz86wDwz3mwH; Wed, 15 Sep 2021 23:59:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C98CB172EE; Wed, 15 Sep 2021 23:59:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 18FNxmL8011070; Wed, 15 Sep 2021 23:59:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 18FNxmYR011069; Wed, 15 Sep 2021 23:59:48 GMT (envelope-from git) Date: Wed, 15 Sep 2021 23:59:48 GMT Message-Id: <202109152359.18FNxmYR011069@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Piotr Pawel Stefaniak Subject: git: 03582021117f - main - diff: improve code style MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pstef X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 03582021117f05fa562a2a43028b931ec21c5237 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Sep 2021 23:59:49 -0000 The branch main has been updated by pstef: URL: https://cgit.FreeBSD.org/src/commit/?id=03582021117f05fa562a2a43028b931ec21c5237 commit 03582021117f05fa562a2a43028b931ec21c5237 Author: Piotr Pawel Stefaniak AuthorDate: 2021-08-29 09:15:45 +0000 Commit: Piotr Pawel Stefaniak CommitDate: 2021-09-15 23:36:41 +0000 diff: improve code style Reflow comments, strip trailing space, improve wrapping of lines. --- usr.bin/diff/diff.c | 18 ++-- usr.bin/diff/diff.h | 4 +- usr.bin/diff/diffreg.c | 251 ++++++++++++++++++++++--------------------------- 3 files changed, 123 insertions(+), 150 deletions(-) diff --git a/usr.bin/diff/diff.c b/usr.bin/diff/diff.c index 1bad6226f49d..bfd391a4e3dd 100644 --- a/usr.bin/diff/diff.c +++ b/usr.bin/diff/diff.c @@ -362,9 +362,9 @@ main(int argc, char **argv) } if (dflags & D_EMPTY1 && dflags & D_EMPTY2){ - warn("%s", argv[0]); + warn("%s", argv[0]); warn("%s", argv[1]); - exit(2); + exit(2); } if (stb1.st_mode == 0) @@ -477,8 +477,10 @@ print_only(const char *path, size_t dirlen, const char *entry) void print_status(int val, char *path1, char *path2, const char *entry) { - if (label[0] != NULL) path1 = label[0]; - if (label[1] != NULL) path2 = label[1]; + if (label[0] != NULL) + path1 = label[0]; + if (label[1] != NULL) + path2 = label[1]; switch (val) { case D_BINARY: @@ -535,10 +537,10 @@ usage(void) " [--no-ignore-case] [--normal] [--tabsize] [-I pattern] [-L label]\n" " [-S name] [-X file] [-x pattern] dir1 dir2\n" " diff [-aBbditwW] [--expand-tabs] [--ignore-all-blanks]\n" - " [--ignore-blank-lines] [--ignore-case] [--minimal]\n" - " [--no-ignore-file-name-case] [--strip-trailing-cr]\n" - " [--suppress-common-lines] [--tabsize] [--text] [--width]\n" - " -y | --side-by-side file1 file2\n"); + " [--ignore-blank-lines] [--ignore-case] [--minimal]\n" + " [--no-ignore-file-name-case] [--strip-trailing-cr]\n" + " [--suppress-common-lines] [--tabsize] [--text] [--width]\n" + " -y | --side-by-side file1 file2\n"); exit(2); } diff --git a/usr.bin/diff/diff.h b/usr.bin/diff/diff.h index b5536bd7bf77..28d08288e1e9 100644 --- a/usr.bin/diff/diff.h +++ b/usr.bin/diff/diff.h @@ -1,6 +1,6 @@ +/* $OpenBSD: diff.h,v 1.34 2020/11/01 18:16:08 jcs Exp $ */ - -/*ROR +/*- * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. * diff --git a/usr.bin/diff/diffreg.c b/usr.bin/diff/diffreg.c index e728441c2cb2..94026007a1bf 100644 --- a/usr.bin/diff/diffreg.c +++ b/usr.bin/diff/diffreg.c @@ -95,66 +95,54 @@ __FBSDID("$FreeBSD$"); */ /* - * Uses an algorithm due to Harold Stone, which finds - * a pair of longest identical subsequences in the two - * files. + * Uses an algorithm due to Harold Stone, which finds a pair of longest + * identical subsequences in the two files. * - * The major goal is to generate the match vector J. - * J[i] is the index of the line in file1 corresponding - * to line i file0. J[i] = 0 if there is no + * The major goal is to generate the match vector J. J[i] is the index of + * the line in file1 corresponding to line i file0. J[i] = 0 if there is no * such line in file1. * - * Lines are hashed so as to work in core. All potential - * matches are located by sorting the lines of each file - * on the hash (called ``value''). In particular, this - * collects the equivalence classes in file1 together. - * Subroutine equiv replaces the value of each line in - * file0 by the index of the first element of its - * matching equivalence in (the reordered) file1. - * To save space equiv squeezes file1 into a single - * array member in which the equivalence classes - * are simply concatenated, except that their first - * members are flagged by changing sign. + * Lines are hashed so as to work in core. All potential matches are + * located by sorting the lines of each file on the hash (called + * ``value''). In particular, this collects the equivalence classes in + * file1 together. Subroutine equiv replaces the value of each line in + * file0 by the index of the first element of its matching equivalence in + * (the reordered) file1. To save space equiv squeezes file1 into a single + * array member in which the equivalence classes are simply concatenated, + * except that their first members are flagged by changing sign. * - * Next the indices that point into member are unsorted into - * array class according to the original order of file0. + * Next the indices that point into member are unsorted into array class + * according to the original order of file0. * - * The cleverness lies in routine stone. This marches - * through the lines of file0, developing a vector klist - * of "k-candidates". At step i a k-candidate is a matched - * pair of lines x,y (x in file0 y in file1) such that - * there is a common subsequence of length k - * between the first i lines of file0 and the first y - * lines of file1, but there is no such subsequence for - * any smaller y. x is the earliest possible mate to y - * that occurs in such a subsequence. + * The cleverness lies in routine stone. This marches through the lines of + * file0, developing a vector klist of "k-candidates". At step i + * a k-candidate is a matched pair of lines x,y (x in file0 y in file1) + * such that there is a common subsequence of length k between the first + * i lines of file0 and the first y lines of file1, but there is no such + * subsequence for any smaller y. x is the earliest possible mate to y that + * occurs in such a subsequence. * - * Whenever any of the members of the equivalence class of - * lines in file1 matable to a line in file0 has serial number - * less than the y of some k-candidate, that k-candidate - * with the smallest such y is replaced. The new - * k-candidate is chained (via pred) to the current - * k-1 candidate so that the actual subsequence can - * be recovered. When a member has serial number greater - * that the y of all k-candidates, the klist is extended. - * At the end, the longest subsequence is pulled out - * and placed in the array J by unravel + * Whenever any of the members of the equivalence class of lines in file1 + * matable to a line in file0 has serial number less than the y of some + * k-candidate, that k-candidate with the smallest such y is replaced. The + * new k-candidate is chained (via pred) to the current k-1 candidate so + * that the actual subsequence can be recovered. When a member has serial + * number greater that the y of all k-candidates, the klist is extended. At + * the end, the longest subsequence is pulled out and placed in the array J + * by unravel. * - * With J in hand, the matches there recorded are - * check'ed against reality to assure that no spurious - * matches have crept in due to hashing. If they have, - * they are broken, and "jackpot" is recorded--a harmless - * matter except that a true match for a spuriously - * mated line may now be unnecessarily reported as a change. + * With J in hand, the matches there recorded are check'ed against reality + * to assure that no spurious matches have crept in due to hashing. If they + * have, they are broken, and "jackpot" is recorded -- a harmless matter + * except that a true match for a spuriously mated line may now be + * unnecessarily reported as a change. * - * Much of the complexity of the program comes simply - * from trying to minimize core utilization and - * maximize the range of doable problems by dynamically - * allocating what is needed and reusing what is not. - * The core requirements for problems larger than somewhat - * are (in words) 2*length(file0) + length(file1) + - * 3*(number of k-candidates installed), typically about - * 6n words for files of length n. + * Much of the complexity of the program comes simply from trying to + * minimize core utilization and maximize the range of doable problems by + * dynamically allocating what is needed and reusing what is not. The core + * requirements for problems larger than somewhat are (in words) + * 2*length(file0) + length(file1) + 3*(number of k-candidates installed), + * typically about 6n words for files of length n. */ struct cand { @@ -213,24 +201,24 @@ static int files_differ(FILE *, FILE *, int); static char *match_function(const long *, int, FILE *); static char *preadline(int, size_t, off_t); -static int *J; /* will be overlaid on class */ -static int *class; /* will be overlaid on file[0] */ -static int *klist; /* will be overlaid on file[0] after class */ -static int *member; /* will be overlaid on file[1] */ -static int clen; -static int inifdef; /* whether or not we are in a #ifdef block */ -static int len[2]; -static int pref, suff; /* length of prefix and suffix */ -static int slen[2]; -static int anychange; -static int hw, padding; /* half width and padding */ -static int edoffset; -static long *ixnew; /* will be overlaid on file[1] */ -static long *ixold; /* will be overlaid on klist */ +static int *J; /* will be overlaid on class */ +static int *class; /* will be overlaid on file[0] */ +static int *klist; /* will be overlaid on file[0] after class */ +static int *member; /* will be overlaid on file[1] */ +static int clen; +static int inifdef; /* whether or not we are in a #ifdef block */ +static int len[2]; +static int pref, suff; /* length of prefix and suffix */ +static int slen[2]; +static int anychange; +static int hw, padding; /* half width and padding */ +static int edoffset; +static long *ixnew; /* will be overlaid on file[1] */ +static long *ixold; /* will be overlaid on klist */ static struct cand *clist; /* merely a free storage pot for candidates */ -static int clistlen; /* the length of clist */ +static int clistlen; /* the length of clist */ static struct line *sfile[2]; /* shortened by pruning common prefix/suffix */ -static int (*chrtran)(int); /* translation table for case-folding */ +static int (*chrtran)(int); /* translation table for case-folding */ static struct context_vec *context_vec_start; static struct context_vec *context_vec_end; static struct context_vec *context_vec_ptr; @@ -251,7 +239,7 @@ static int cup2low(int c) { - return tolower(c); + return (tolower(c)); } int @@ -278,11 +266,11 @@ diffreg(char *file1, char *file2, int flags, int capsicum) padding = tabsize - (hw % tabsize); if ((flags & D_EXPANDTABS) != 0 || (padding % tabsize == 0)) padding = MIN_PAD; - + hw = (width >> 1) - ((padding == MIN_PAD) ? (padding << 1) : padding) - 1; } - + if (flags & D_IGNORECASE) chrtran = cup2low; @@ -622,7 +610,7 @@ stone(int *a, int n, int *b, int *c, int flags) { int i, k, y, j, l; int oldc, tc, oldl, sq; - u_int numtries, bound; + unsigned numtries, bound; if (flags & D_MINIMAL) bound = UINT_MAX; @@ -720,9 +708,9 @@ unravel(int p) /* * Check does double duty: - * 1. ferret out any fortuitous correspondences due - * to confounding by hashing (which result in "jackpot") - * 2. collect random access indexes to the two files + * 1. ferret out any fortuitous correspondences due to confounding by + * hashing (which result in "jackpot") + * 2. collect random access indexes to the two files */ static void check(FILE *f1, FILE *f2, int flags) @@ -745,7 +733,7 @@ check(FILE *f1, FILE *f2, int flags) ixnew[j] = ctnew += skipline(f2); j++; } - if (flags & (D_FOLDBLANKS|D_IGNOREBLANKS|D_IGNORECASE|D_STRIPCR)) { + if (flags & (D_FOLDBLANKS | D_IGNOREBLANKS | D_IGNORECASE | D_STRIPCR)) { for (;;) { c = getc(f1); d = getc(f2); @@ -753,7 +741,7 @@ check(FILE *f1, FILE *f2, int flags) * GNU diff ignores a missing newline * in one file for -b or -w. */ - if (flags & (D_FOLDBLANKS|D_IGNOREBLANKS)) { + if (flags & (D_FOLDBLANKS | D_IGNOREBLANKS)) { if (c == EOF && d == '\n') { ctnew++; break; @@ -793,7 +781,7 @@ check(FILE *f1, FILE *f2, int flags) break; ctnew++; } while (isspace(d = getc(f2))); - } else if ((flags & D_IGNOREBLANKS)) { + } else if (flags & D_IGNOREBLANKS) { while (isspace(c) && c != '\n') { c = getc(f1); ctold++; @@ -913,16 +901,11 @@ output(char *file1, FILE *f1, char *file2, FILE *f2, int flags) J[m + 1] = len[1] + 1; if (diff_format != D_EDIT) { for (i0 = 1; i0 <= m; i0 = i1 + 1) { - while (i0 <= m && J[i0] == J[i0 - 1] + 1){ - if (diff_format == D_SIDEBYSIDE && - suppress_common != 1) { - nc = fetch(ixold, i0, i0, f1, '\0', - 1, flags); - print_space(nc, - (hw - nc) + (padding << 1) + 1, - flags); - fetch(ixnew, J[i0], J[i0], f2, '\0', - 0, flags); + while (i0 <= m && J[i0] == J[i0 - 1] + 1) { + if (diff_format == D_SIDEBYSIDE && suppress_common != 1) { + nc = fetch(ixold, i0, i0, f1, '\0', 1, flags); + print_space(nc, (hw - nc) + (padding << 1) + 1, flags); + fetch(ixnew, J[i0], J[i0], f2, '\0', 0, flags); printf("\n"); } i0++; @@ -935,33 +918,28 @@ output(char *file1, FILE *f1, char *file2, FILE *f2, int flags) J[i1] = j1; /* - * When using side-by-side, lines from both of the - * files are printed. The algorithm used by diff(1) - * identifies the ranges in which two files differ. + * When using side-by-side, lines from both of the files are + * printed. The algorithm used by diff(1) identifies the ranges + * in which two files differ. * See the change() function below. - * The for loop below consumes the shorter range, - * whereas one of the while loops deals with the - * longer one. + * The for loop below consumes the shorter range, whereas one of + * the while loops deals with the longer one. */ if (diff_format == D_SIDEBYSIDE) { - for (i=i0, j=j0; i<=i1 && j<=j1; i++, j++) - change(file1, f1, file2, f2, i, i, - j, j, &flags); + for (i = i0, j = j0; i <= i1 && j <= j1; i++, j++) + change(file1, f1, file2, f2, i, i, j, j, &flags); while (i <= i1) { - change(file1, f1, file2, f2, - i, i, j+1, j, &flags); + change(file1, f1, file2, f2, i, i, j + 1, j, &flags); i++; } while (j <= j1) { - change(file1, f1, file2, f2, - i+1, i, j, j, &flags); + change(file1, f1, file2, f2, i + 1, i, j, j, &flags); j++; } } else - change(file1, f1, file2, f2, i0, i1, j0, - j1, &flags); + change(file1, f1, file2, f2, i0, i1, j0, j1, &flags); } } else { for (i0 = m; i0 >= 1; i0 = i1 - 1) { @@ -1078,9 +1056,8 @@ restart: if (ignore_pats != NULL || skip_blanks) { char *line; /* - * All lines in the change, insert, or delete must - * match an ignore pattern for the change to be - * ignored. + * All lines in the change, insert, or delete must match an ignore + * pattern for the change to be ignored. */ if (a <= b) { /* Changes and deletes. */ for (i = a; i <= b; i++) { @@ -1202,7 +1179,7 @@ proceed: nc = fetch(ixold, a, b, f1, '\0', 1, *pflags); print_space(nc, hw - nc + padding, *pflags); } - printf("%c", (a>b)? '>' : ((c>d)? '<' : '|')); + printf("%c", (a > b) ? '>' : ((c > d) ? '<' : '|')); print_space(hw + padding + 1 , padding, *pflags); fetch(ixnew, c, d, f2, '\0', 0, *pflags); printf("\n"); @@ -1216,11 +1193,11 @@ proceed: fetch(ixnew, c, d, f2, diff_format == D_NORMAL ? '>' : '\0', 0, *pflags); if (edoffset != 0 && diff_format == D_EDIT) { /* - * A non-zero edoffset value for D_EDIT indicates that the - * last line printed was a bare dot (".") that has been - * escaped as ".." to prevent ed(1) from misinterpreting - * it. We have to add a substitute command to change this - * back and restart where we left off. + * A non-zero edoffset value for D_EDIT indicates that the last line + * printed was a bare dot (".") that has been escaped as ".." to + * prevent ed(1) from misinterpreting it. We have to add a + * substitute command to change this back and restart where we left + * off. */ printf(".\n"); printf("%ds/.//\n", a + edoffset - 1); @@ -1271,10 +1248,10 @@ fetch(long *f, int a, int b, FILE *lb, int ch, int oldfile, int flags) } for (i = a; i <= b; i++) { fseek(lb, f[i - 1], SEEK_SET); - nc = (f[i] - f[i - 1]); + nc = f[i] - f[i - 1]; if (diff_format == D_SIDEBYSIDE && hw < nc) nc = hw; - if ((diff_format != D_IFDEF && diff_format != D_GFORMAT) && + if (diff_format != D_IFDEF && diff_format != D_GFORMAT && ch != '\0') { printf("%c", ch); if (Tflag && (diff_format == D_NORMAL || @@ -1301,9 +1278,8 @@ fetch(long *f, int a, int b, FILE *lb, int ch, int oldfile, int flags) diff_format == D_NREVERSE) warnx("No newline at end of file"); else - printf("\n\\ No newline at end of " - "file\n"); - return col; + printf("\n\\ No newline at end of file\n"); + return (col); } /* * when using --side-by-side, col needs to be increased @@ -1311,8 +1287,8 @@ fetch(long *f, int a, int b, FILE *lb, int ch, int oldfile, int flags) */ if (c == '\t') { if (flags & D_EXPANDTABS) { - newcol = ((col/tabsize)+1)*tabsize; - do { + newcol = ((col / tabsize) + 1) * tabsize; + do { if (diff_format == D_SIDEBYSIDE) j++; printf(" "); @@ -1320,8 +1296,7 @@ fetch(long *f, int a, int b, FILE *lb, int ch, int oldfile, int flags) } else { if (diff_format == D_SIDEBYSIDE) { if ((j + tabsize) > nc) { - printf("%*s", - nc - j,""); + printf("%*s", nc - j, ""); j = col = nc; } else { printf("\t"); @@ -1334,20 +1309,17 @@ fetch(long *f, int a, int b, FILE *lb, int ch, int oldfile, int flags) } } } else { - if (diff_format == D_EDIT && j == 1 && c == '\n' - && lastc == '.') { + if (diff_format == D_EDIT && j == 1 && c == '\n' && + lastc == '.') { /* - * Don't print a bare "." line - * since that will confuse ed(1). - * Print ".." instead and set the, - * global variable edoffset to an - * offset from which to restart. - * The caller must check the value - * of edoffset + * Don't print a bare "." line since that will confuse + * ed(1). Print ".." instead and set the, global variable + * edoffset to an offset from which to restart. The + * caller must check the value of edoffset */ printf(".\n"); edoffset = i - a + 1; - return edoffset; + return (edoffset); } /* when side-by-side, do not print a newline */ if (diff_format != D_SIDEBYSIDE || c != '\n') { @@ -1357,7 +1329,7 @@ fetch(long *f, int a, int b, FILE *lb, int ch, int oldfile, int flags) } } } - return col; + return (col); } /* @@ -1428,7 +1400,7 @@ asciifile(FILE *f) return (memchr(buf, '\0', cnt) == NULL); } -#define begins_with(s, pre) (strncmp(s, pre, sizeof(pre)-1) == 0) +#define begins_with(s, pre) (strncmp(s, pre, sizeof(pre) - 1) == 0) static char * match_function(const long *f, int pos, FILE *fp) @@ -1459,18 +1431,17 @@ match_function(const long *f, int pos, FILE *fp) if (!state) state = " (public)"; } else { - strlcpy(lastbuf, buf, sizeof lastbuf); + strlcpy(lastbuf, buf, sizeof(lastbuf)); if (state) - strlcat(lastbuf, state, - sizeof lastbuf); + strlcat(lastbuf, state, sizeof(lastbuf)); lastmatchline = pos; - return lastbuf; + return (lastbuf); } } } pos--; } - return lastmatchline > 0 ? lastbuf : NULL; + return (lastmatchline > 0 ? lastbuf : NULL); } /* dump accumulated "context" diff changes */ @@ -1493,7 +1464,7 @@ dump_context_vec(FILE *f1, FILE *f2, int flags) printf("***************"); if ((flags & D_PROTOTYPE)) { - f = match_function(ixold, lowa-1, f1); + f = match_function(ixold, lowa - 1, f1); if (f != NULL) printf(" %s", f); } @@ -1600,7 +1571,7 @@ dump_unified_vec(FILE *f1, FILE *f2, int flags) uni_range(lowc, upd); printf(" @@"); if ((flags & D_PROTOTYPE)) { - f = match_function(ixold, lowa-1, f1); + f = match_function(ixold, lowa - 1, f1); if (f != NULL) printf(" %s", f); }