diff: fix style

remove useless macros, bring formatting closer
to regular 9front formatting, and use the
ARGBEGIN/ARGEND macros. No functional change.
This commit is contained in:
Ori Bernstein 2022-05-22 16:34:33 +00:00 committed by xfnw
parent 9a1428f41a
commit 1bb7aa60c4
5 changed files with 109 additions and 114 deletions

View file

@ -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 *);

View file

@ -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);
}

View file

@ -4,15 +4,6 @@
#include <ctype.h>
#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*/

View file

@ -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);
}

View file

@ -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);