From 1bb7aa60c4d2005e9103a20fae635421b4f27760 Mon Sep 17 00:00:00 2001 From: Ori Bernstein Date: Sun, 22 May 2022 16:34:33 +0000 Subject: [PATCH] diff: fix style remove useless macros, bring formatting closer to regular 9front formatting, and use the ARGBEGIN/ARGEND macros. No functional change. --- sys/src/cmd/diff/diff.h | 24 ++++++---- sys/src/cmd/diff/diffdir.c | 16 +++---- sys/src/cmd/diff/diffio.c | 15 ++---- sys/src/cmd/diff/diffreg.c | 72 ++++++++++++++-------------- sys/src/cmd/diff/main.c | 96 ++++++++++++++++++-------------------- 5 files changed, 109 insertions(+), 114 deletions(-) diff --git a/sys/src/cmd/diff/diff.h b/sys/src/cmd/diff/diff.h index 34a5dc010..370dccb20 100644 --- a/sys/src/cmd/diff/diff.h +++ b/sys/src/cmd/diff/diff.h @@ -1,15 +1,21 @@ -char mode; /* '\0', 'e', 'f', 'h' */ -char bflag; /* ignore multiple and trailing blanks */ -char rflag; /* recurse down directory trees */ -char mflag; /* pseudo flag: doing multiple files, one dir */ -int anychange; +typedef struct Line Line; + +struct Line { + int serial; + int value; +}; +extern Line *file[2]; +extern int len[2]; +extern long *ixold, *ixnew; +extern int *J; +extern char mode; +extern char bflag; +extern char rflag; +extern char mflag; +extern int anychange; extern Biobuf stdout; extern int binary; -#define MALLOC(t, n) ((t *)emalloc((n)*sizeof(t))) -#define REALLOC(p, t, n) ((t *)erealloc((void *)(p), (n)*sizeof(t))) -#define FREE(p) free((void *)(p)) - #define MAXPATHLEN 1024 int mkpathname(char *, char *, char *); diff --git a/sys/src/cmd/diff/diffdir.c b/sys/src/cmd/diff/diffdir.c index e661f1334..9f2b46e45 100644 --- a/sys/src/cmd/diff/diffdir.c +++ b/sys/src/cmd/diff/diffdir.c @@ -22,7 +22,7 @@ scandir(char *name) if ((fd = open(name, OREAD)) < 0) { fprint(2, "%s: can't open %s: %r\n", argv0, name); /* fake an empty directory */ - cp = MALLOC(char*, 1); + cp = emalloc(sizeof(char*)); cp[0] = 0; return cp; } @@ -30,14 +30,14 @@ scandir(char *name) nitems = 0; if((n = dirreadall(fd, &db)) > 0){ while (n--) { - cp = REALLOC(cp, char *, (nitems+1)); - cp[nitems] = MALLOC(char, strlen((db+n)->name)+1); + cp = erealloc(cp, (nitems+1)*sizeof(char*)); + cp[nitems] = emalloc(strlen((db+n)->name)+1); strcpy(cp[nitems], (db+n)->name); nitems++; } free(db); } - cp = REALLOC(cp, char*, (nitems+1)); + cp = erealloc(cp, (nitems+1)*sizeof(char*)); cp[nitems] = 0; close(fd); qsort((char *)cp, nitems, sizeof(char*), itemcmp); @@ -105,9 +105,9 @@ diffdir(char *f, char *t, int level) df++; dt++; } for (df = dirf; *df; df++) - FREE(*df); + free(*df); for (dt = dirt; *dt; dt++) - FREE(*dt); - FREE(dirf); - FREE(dirt); + free(*dt); + free(dirf); + free(dirt); } diff --git a/sys/src/cmd/diff/diffio.c b/sys/src/cmd/diff/diffio.c index 146bef3bc..b5b4964c1 100644 --- a/sys/src/cmd/diff/diffio.c +++ b/sys/src/cmd/diff/diffio.c @@ -4,15 +4,6 @@ #include #include "diff.h" -struct line { - int serial; - int value; -}; -extern struct line *file[2]; -extern int len[2]; -extern long *ixold, *ixnew; -extern int *J; - static Biobuf *input[2]; static char *file1, *file2; static int firstchange; @@ -115,7 +106,7 @@ readhash(Biobuf *bp, char *buf) Biobuf * prepare(int i, char *arg) { - struct line *p; + Line *p; int j, h; Biobuf *bp; char *cp, buf[MAXLINELEN]; @@ -145,9 +136,9 @@ prepare(int i, char *arg) } Bseek(bp, 0, 0); } - p = MALLOC(struct line, 3); + p = emalloc(3*sizeof(Line)); for (j = 0; h = readhash(bp, buf); p[j].value = h) - p = REALLOC(p, struct line, (++j+3)); + p = erealloc(p, (++j+3)*sizeof(Line)); len[i] = j; file[i] = p; input[i] = bp; /*fix*/ diff --git a/sys/src/cmd/diff/diffreg.c b/sys/src/cmd/diff/diffreg.c index 6f6f144fc..1b8f4e5be 100644 --- a/sys/src/cmd/diff/diffreg.c +++ b/sys/src/cmd/diff/diffreg.c @@ -66,25 +66,25 @@ * 3*(number of k-candidates installed), typically about * 6n words for files of length n. */ -/* TIDY THIS UP */ -struct cand { +typedef struct Cand Cand; + +struct Cand { int x; int y; int pred; -} cand; -struct line { - int serial; - int value; -} *file[2], line; +}; + +Cand cand; +Line *file[2], line; int len[2]; int binary; -struct line *sfile[2]; /*shortened by pruning common prefix and suffix*/ +Line *sfile[2]; /*shortened by pruning common prefix and suffix*/ int slen[2]; int pref, suff; /*length of prefix and suffix*/ int *class; /*will be overlaid on file[0]*/ int *member; /*will be overlaid on file[1]*/ -int *klist; /*will be overlaid on file[0] after class*/ -struct cand *clist; /* merely a free storage pot for candidates */ +int *klist; /*will be overlaid on file[0] after class*/ +Cand *clist; /* merely a free storage pot for candidates */ int clen; int *J; /*will be overlaid on class*/ long *ixold; /*will be overlaid on klist*/ @@ -92,11 +92,11 @@ long *ixnew; /*will be overlaid on file[1]*/ /* END OF SOME TIDYING */ static void -sort(struct line *a, int n) /*shellsort CACM #201*/ +sort(Line *a, int n) /*shellsort CACM #201*/ { int m; - struct line *ai, *aim, *j, *k; - struct line w; + Line *ai, *aim, *j, *k; + Line w; int i; m = 0; @@ -124,17 +124,17 @@ sort(struct line *a, int n) /*shellsort CACM #201*/ } static void -unsort(struct line *f, int l, int *b) +unsort(Line *f, int l, int *b) { int *a; int i; - a = MALLOC(int, (l+1)); + a = malloc((l+1)*sizeof(int)); for(i=1;i<=l;i++) a[f[i].serial] = f[i].value; for(i=1;i<=l;i++) b[i] = a[i]; - FREE(a); + free(a); } static void @@ -157,7 +157,7 @@ prune(void) } static void -equiv(struct line *a, int n, struct line *b, int m, int *c) +equiv(Line *a, int n, Line *b, int m, int *c) { int i, j; @@ -187,9 +187,9 @@ equiv(struct line *a, int n, struct line *b, int m, int *c) static int newcand(int x, int y, int pred) { - struct cand *q; + Cand *q; - clist = REALLOC(clist, struct cand, (clen+1)); + clist = erealloc(clist, (clen+1)*sizeof(Cand)); q = clist + clen; q->x = x; q->y = y; @@ -263,7 +263,7 @@ static void unravel(int p) { int i; - struct cand *q; + Cand *q; for(i=0; i<=len[0]; i++) { if (i <= pref) @@ -298,8 +298,7 @@ output(void) J[i1] = j1; change(i0, i1, j0, j1); } - } - else { + } else { for (i0 = m; i0 >= 1; i0 = i1-1) { while (i0 >= 1 && J[i0] == J[i0+1]-1 && J[i0]) i0--; @@ -393,28 +392,31 @@ diffreg(char *f, char *t) member = (int *)file[1]; equiv(sfile[0], slen[0], sfile[1], slen[1], member); - member = REALLOC(member, int, slen[1]+2); + member = erealloc(member, (slen[1]+2)*sizeof(int)); class = (int *)file[0]; unsort(sfile[0], slen[0], class); - class = REALLOC(class, int, slen[0]+2); + class = erealloc(class, (slen[0]+2)*sizeof(int)); - klist = MALLOC(int, slen[0]+2); - clist = MALLOC(struct cand, 1); + klist = emalloc((slen[0]+2)*sizeof(int)); + clist = emalloc(sizeof(Cand)); k = stone(class, slen[0], member, klist); - FREE(member); - FREE(class); + free(member); + free(class); - J = MALLOC(int, len[0]+2); + J = emalloc((len[0]+2)*sizeof(int)); unravel(klist[k]); - FREE(clist); - FREE(klist); + free(clist); + free(klist); - ixold = MALLOC(long, len[0]+2); - ixnew = MALLOC(long, len[1]+2); + ixold = emalloc((len[0]+2)*sizeof(long)); + ixnew = emalloc((len[1]+2)*sizeof(long)); Bseek(b0, 0, 0); Bseek(b1, 0, 0); check(b0, b1); output(); - FREE(J); FREE(ixold); FREE(ixnew); - Bterm(b0); Bterm(b1); /* ++++ */ + free(J); + free(ixold); + free(ixnew); + Bterm(b0); + Bterm(b1); } diff --git a/sys/src/cmd/diff/main.c b/sys/src/cmd/diff/main.c index a25168cec..d91c85561 100644 --- a/sys/src/cmd/diff/main.c +++ b/sys/src/cmd/diff/main.c @@ -7,11 +7,14 @@ #define REGULAR_FILE(s) ((s)->type == 'M' && !DIRECTORY(s)) Biobuf stdout; +char mode; /* '\0', 'e', 'f', 'h' */ +char bflag; /* ignore multiple and trailing blanks */ +char rflag; /* recurse down directory trees */ +char mflag; /* pseudo flag: doing multiple files, one dir */ +int anychange; static char *tmp[] = {"/tmp/diff1XXXXXXXXXXX", "/tmp/diff2XXXXXXXXXXX"}; static int whichtmp; -static char *progname; -static char usage[] = "diff [-abcefmnrw] file1 ... file2\n"; static void rmtmpfiles(void) @@ -45,7 +48,7 @@ panic(int status, char *fmt, ...) Bflush(&stdout); - fprint(2, "%s: ", progname); + fprint(2, "%s: ", argv0); va_start(arg, fmt); vfprint(2, fmt, arg); va_end(arg); @@ -114,8 +117,7 @@ statfile(char *file, Dir **sb) } free(dir); return mktmpfile(0, sb); - } - else if (!REGULAR_FILE(dir) && !DIRECTORY(dir)) { + } else if (!REGULAR_FILE(dir) && !DIRECTORY(dir)) { free(dir); if ((input = open(file, OREAD)) == -1) { panic(mflag ? 0: 2, "cannot open %s: %r\n", file); @@ -123,8 +125,7 @@ statfile(char *file, Dir **sb) } file = mktmpfile(input, sb); close(input); - } - else + } else *sb = dir; return file; } @@ -145,8 +146,7 @@ diff(char *f, char *t, int level) if (rflag || level == 0) diffdir(fp, tp, level); else - Bprint(&stdout, "Common subdirectories: %s and %s\n", - fp, tp); + Bprint(&stdout, "Common subdirectories: %s and %s\n", fp, tp); } else if (REGULAR_FILE(fsb) && REGULAR_FILE(tsb)) diffreg(fp, tp); @@ -158,8 +158,7 @@ diff(char *f, char *t, int level) p++; if (mkpathname(tb, tp, p) == 0) diffreg(fp, tb); - } - else { + } else { if ((p = utfrrune(t, '/')) == 0) p = t; else @@ -174,61 +173,58 @@ Return: rmtmpfiles(); } +void +usage(void) +{ + fprint(2, "usage: %s [-abcefmnrw] file1 ... file2\n", argv0); + exits("usage"); +} + void main(int argc, char *argv[]) { - char *p; int i; Dir *fsb, *tsb; Binit(&stdout, 1, OWRITE); - progname = argv0 = *argv; - while (--argc && (*++argv)[0] == '-' && (*argv)[1]) { - for (p = *argv+1; *p; p++) { - switch (*p) { + ARGBEGIN{ + case 'e': + case 'f': + case 'n': + case 'c': + case 'a': + case 'u': + mode = ARGC(); + break; + case 'w': + bflag = 2; + break; - case 'e': - case 'f': - case 'n': - case 'c': - case 'a': - case 'u': - mode = *p; - break; + case 'b': + bflag = 1; + break; - case 'w': - bflag = 2; - break; + case 'r': + rflag = 1; + break; - case 'b': - bflag = 1; - break; + case 'm': + mflag = 1; + break; - case 'r': - rflag = 1; - break; - - case 'm': - mflag = 1; - break; - - case 'h': - default: - progname = "Usage"; - panic(2, usage); - } - } - } + case 'h': + default: + usage(); + }ARGEND; if (argc < 2) - panic(2, usage, progname); + usage(); if ((tsb = dirstat(argv[argc-1])) == nil) panic(2, "can't stat %s\n", argv[argc-1]); if (argc > 2) { if (!DIRECTORY(tsb)) - panic(2, usage, progname); + panic(2, "not directory: %s", argv[argc-1]); mflag = 1; - } - else { + } else { if ((fsb = dirstat(argv[0])) == nil) panic(2, "can't stat %s\n", argv[0]); if (DIRECTORY(fsb) && DIRECTORY(tsb)) @@ -257,7 +253,7 @@ emalloc(unsigned n) void * erealloc(void *p, unsigned n) { - register void *rp; + void *rp; if ((rp = realloc(p, n)) == 0) panic(2, noroom);