version 1.29, 2021/11/17 23:09:38 |
version 1.30, 2021/12/24 17:59:28 |
|
|
int |
int |
main(int argc, char *argv[]) |
main(int argc, char *argv[]) |
{ |
{ |
char *prevline, *t1, *t2, *thisline; |
char *p, *prevline, *t, *thisline, *tmp; |
FILE *ifp = NULL, *ofp = NULL; |
FILE *ifp = NULL, *ofp = NULL; |
size_t prevsize, thissize, tmpsize; |
size_t prevsize, thissize, tmpsize; |
ssize_t len; |
ssize_t len; |
|
|
} |
} |
if (prevline[len - 1] == '\n') |
if (prevline[len - 1] == '\n') |
prevline[len - 1] = '\0'; |
prevline[len - 1] = '\0'; |
|
if (numfields || numchars) |
|
p = skip(prevline); |
|
else |
|
p = prevline; |
|
|
thissize = 0; |
thissize = 0; |
thisline = NULL; |
thisline = NULL; |
|
|
thisline[len - 1] = '\0'; |
thisline[len - 1] = '\0'; |
|
|
/* If requested get the chosen fields + character offsets. */ |
/* If requested get the chosen fields + character offsets. */ |
if (numfields || numchars) { |
if (numfields || numchars) |
t1 = skip(thisline); |
t = skip(thisline); |
t2 = skip(prevline); |
else |
} else { |
t = thisline; |
t1 = thisline; |
|
t2 = prevline; |
|
} |
|
|
|
/* If different, print; set previous to new value. */ |
/* If different, print; set previous to new value. */ |
if ((iflag ? strcasecmp : strcmp)(t1, t2)) { |
if ((iflag ? strcasecmp : strcmp)(p, t)) { |
show(ofp, prevline); |
show(ofp, prevline); |
t1 = prevline; |
tmp = prevline; |
prevline = thisline; |
prevline = thisline; |
thisline = t1; |
thisline = tmp; |
|
tmp = p; |
|
p = t; |
|
t = tmp; |
tmpsize = prevsize; |
tmpsize = prevsize; |
prevsize = thissize; |
prevsize = thissize; |
thissize = tmpsize; |
thissize = tmpsize; |