| 29 |
|
{ |
| 30 |
|
int wrdcnt = 0; |
| 31 |
|
int n = 0; |
| 32 |
+ |
int dlen = 0; |
| 33 |
|
int fd; |
| 34 |
|
char buf[MAXWLEN]; |
| 35 |
|
/* load file into buffer */ |
| 41 |
|
return(-1); /* open error */ |
| 42 |
|
words[0] = NULL; |
| 43 |
|
while (nargs > 1 && (n += read(fd, buf+n, MAXWLEN-n)) > 0) { |
| 44 |
+ |
dlen = n; |
| 45 |
|
int crem = 0; |
| 46 |
|
if (n > MAXWLEN/2) /* check for mid-word end */ |
| 47 |
|
while (!isspace(buf[--n])) { |
| 58 |
|
words += n; nargs -= n; |
| 59 |
|
wrdcnt += n; |
| 60 |
|
if ((n = crem) > 0) /* move remainder */ |
| 61 |
< |
memmove(buf, buf+MAXWLEN-crem, crem); |
| 61 |
> |
memmove(buf, buf+dlen-crem, crem); |
| 62 |
|
} |
| 63 |
|
done: |
| 64 |
|
close(fd); |