version 1.2, 1996/06/26 05:40:16 |
version 1.3, 1997/01/12 23:43:06 |
|
|
|
|
#include <sys/types.h> |
#include <sys/types.h> |
#include <sys/stat.h> |
#include <sys/stat.h> |
#include <fcntl.h> |
|
|
#include <err.h> |
#include <errno.h> |
#include <errno.h> |
#include <unistd.h> |
#include <fcntl.h> |
#include <stdio.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <stdlib.h> |
#include <string.h> |
#include <string.h> |
|
#include <unistd.h> |
|
|
#include "extern.h" |
#include "extern.h" |
|
|
/* |
/* |
|
|
char *sp; |
char *sp; |
|
|
if ((sp = p = malloc(off)) == NULL) |
if ((sp = p = malloc(off)) == NULL) |
err(1, "%s", strerror(errno)); |
err(1, NULL); |
|
|
for (wrap = 0, ep = p + off; (ch = getc(fp)) != EOF;) { |
for (wrap = 0, ep = p + off; (ch = getc(fp)) != EOF;) { |
*p = ch; |
*p = ch; |
|
|
} else { |
} else { |
if (wrap && (len = ep - p)) |
if (wrap && (len = ep - p)) |
WR(p, len); |
WR(p, len); |
if (len = p - sp) |
if ((len = p - sp)) |
WR(sp, len); |
WR(sp, len); |
} |
} |
} |
} |
|
|
char *l; |
char *l; |
} *lines; |
} *lines; |
register int ch; |
register int ch; |
register char *p; |
register char *p = NULL; |
int blen, cnt, recno, wrap; |
int blen, cnt, recno, wrap; |
char *sp; |
char *sp = NULL; |
|
|
if ((lines = malloc(off * sizeof(*lines))) == NULL) |
if ((lines = calloc(off, sizeof(*lines))) == NULL) |
err(1, "%s", strerror(errno)); |
err(1, NULL); |
|
|
sp = NULL; |
|
blen = cnt = recno = wrap = 0; |
blen = cnt = recno = wrap = 0; |
|
|
while ((ch = getc(fp)) != EOF) { |
while ((ch = getc(fp)) != EOF) { |
if (++cnt > blen) { |
if (++cnt > blen) { |
if ((sp = realloc(sp, blen += 1024)) == NULL) |
if ((sp = realloc(sp, blen += 1024)) == NULL) |
err(1, "%s", strerror(errno)); |
err(1, NULL); |
p = sp + cnt - 1; |
p = sp + cnt - 1; |
} |
} |
*p++ = ch; |
*p++ = ch; |
|
|
lines[recno].blen = cnt + 256; |
lines[recno].blen = cnt + 256; |
if ((lines[recno].l = realloc(lines[recno].l, |
if ((lines[recno].l = realloc(lines[recno].l, |
lines[recno].blen)) == NULL) |
lines[recno].blen)) == NULL) |
err(1, "%s", strerror(errno)); |
err(1, NULL); |
} |
} |
bcopy(sp, lines[recno].l, lines[recno].len = cnt); |
memcpy(lines[recno].l, sp, (lines[recno].len = cnt)); |
cnt = 0; |
cnt = 0; |
p = sp; |
p = sp; |
if (++recno == off) { |
if (++recno == off) { |