version 1.6, 1999/08/23 23:58:23 |
version 1.7, 1999/08/24 18:49:45 |
|
|
register char ch, *p; |
register char ch, *p; |
LIST *head, *tmp; |
LIST *head, *tmp; |
int opencnt, output; |
int opencnt, output; |
|
char *buf, *lbuf; |
size_t len; |
size_t len; |
|
|
for (cnt = 0, head = NULL; (p = *argv); ++argv, ++cnt) { |
for (cnt = 0, head = NULL; (p = *argv); ++argv, ++cnt) { |
|
|
} |
} |
|
|
for (opencnt = cnt; opencnt;) { |
for (opencnt = cnt; opencnt;) { |
|
lbuf = NULL; |
for (output = 0, lp = head; lp; lp = lp->next) { |
for (output = 0, lp = head; lp; lp = lp->next) { |
if (!lp->fp) { |
if (!lp->fp) { |
if (output && lp->cnt && |
if (output && lp->cnt && |
|
|
putchar(ch); |
putchar(ch); |
continue; |
continue; |
} |
} |
if (!(p = fgetln(lp->fp, &len))) { |
if (!(buf = fgetln(lp->fp, &len))) { |
if (!--opencnt) |
if (!--opencnt) |
break; |
break; |
lp->fp = NULL; |
lp->fp = NULL; |
|
|
putchar(ch); |
putchar(ch); |
continue; |
continue; |
} |
} |
if (*(p + len - 1) == '\n') |
if (*(buf + len - 1) == '\n') |
*(p + len - 1) = '\0'; |
*(buf + len - 1) = '\0'; |
else { |
else { |
(void)fprintf(stderr, |
lbuf = (char *)malloc(len + 1); |
"paste: %s: incomplete line.\n", |
memcpy(lbuf, buf, len); |
lp->name); |
lbuf[len] = '\0'; |
exit(1); |
buf = lbuf; |
} |
} |
/* |
/* |
* make sure that we don't print any delimiters |
* make sure that we don't print any delimiters |
|
|
putchar(ch); |
putchar(ch); |
} else if ((ch = delim[(lp->cnt - 1) % delimcnt])) |
} else if ((ch = delim[(lp->cnt - 1) % delimcnt])) |
putchar(ch); |
putchar(ch); |
(void)printf("%s", p); |
(void)printf("%s", buf); |
|
if (lbuf != NULL) { |
|
free(lbuf); |
|
lbuf = NULL; |
|
} |
} |
} |
if (output) |
if (output) |
putchar('\n'); |
putchar('\n'); |
|
|
register FILE *fp; |
register FILE *fp; |
register int cnt; |
register int cnt; |
register char ch, *p, *dp; |
register char ch, *p, *dp; |
char buf[_POSIX2_LINE_MAX + 1]; |
char *buf, *lbuf; |
|
size_t len; |
|
|
|
lbuf = NULL; |
for (; (p = *argv); ++argv) { |
for (; (p = *argv); ++argv) { |
if (p[0] == '-' && !p[1]) |
if (p[0] == '-' && !p[1]) |
fp = stdin; |
fp = stdin; |
|
|
strerror(errno)); |
strerror(errno)); |
continue; |
continue; |
} |
} |
if (fgets(buf, sizeof(buf), fp)) { |
if ((buf = fgetln(fp, &len))) { |
for (cnt = 0, dp = delim;;) { |
for (cnt = 0, dp = delim;;) { |
if (!(p = strchr(buf, '\n'))) { |
if (*(buf + len - 1) == '\n') |
(void)fprintf(stderr, |
*(buf + len - 1) = '\0'; |
"paste: %s: input line too long.\n", |
else { |
*argv); |
lbuf = (char *)malloc(len + 1); |
exit(1); |
memcpy(lbuf, buf, len); |
|
lbuf[len] = '\0'; |
|
buf = lbuf; |
} |
} |
*p = '\0'; |
|
(void)printf("%s", buf); |
(void)printf("%s", buf); |
if (!fgets(buf, sizeof(buf), fp)) |
if (!(buf = fgetln(fp, &len))) |
break; |
break; |
if ((ch = *dp++)) |
if ((ch = *dp++)) |
putchar(ch); |
putchar(ch); |
|
|
} |
} |
if (fp != stdin) |
if (fp != stdin) |
(void)fclose(fp); |
(void)fclose(fp); |
|
if (lbuf != NULL) { |
|
free(lbuf); |
|
lbuf = NULL; |
|
} |
} |
} |
} |
} |
|
|