version 1.4, 1997/01/17 07:13:02 |
version 1.5, 1998/11/16 06:09:12 |
|
|
#endif /* not lint */ |
#endif /* not lint */ |
|
|
#include <sys/types.h> |
#include <sys/types.h> |
|
#include <unistd.h> |
#include <errno.h> |
#include <errno.h> |
#include <limits.h> |
#include <limits.h> |
#include <stdio.h> |
#include <stdio.h> |
|
|
char *delim; |
char *delim; |
int delimcnt; |
int delimcnt; |
|
|
|
int tr __P((char *)); |
|
void usage __P((void)); |
|
void parallel __P((char **)); |
|
void sequential __P((char **)); |
|
|
|
int |
main(argc, argv) |
main(argc, argv) |
int argc; |
int argc; |
char **argv; |
char **argv; |
|
|
char *name; |
char *name; |
} LIST; |
} LIST; |
|
|
|
void |
parallel(argv) |
parallel(argv) |
char **argv; |
char **argv; |
{ |
{ |
|
|
int opencnt, output; |
int opencnt, output; |
char buf[_POSIX2_LINE_MAX + 1], *malloc(); |
char buf[_POSIX2_LINE_MAX + 1], *malloc(); |
|
|
for (cnt = 0, head = NULL; p = *argv; ++argv, ++cnt) { |
for (cnt = 0, head = NULL; (p = *argv); ++argv, ++cnt) { |
if (!(lp = (LIST *)malloc((u_int)sizeof(LIST)))) { |
if (!(lp = (LIST *)malloc((u_int)sizeof(LIST)))) { |
(void)fprintf(stderr, "paste: %s.\n", strerror(ENOMEM)); |
(void)fprintf(stderr, "paste: %s.\n", strerror(ENOMEM)); |
exit(1); |
exit(1); |
|
|
if (!output) { |
if (!output) { |
output = 1; |
output = 1; |
for (cnt = 0; cnt < lp->cnt; ++cnt) |
for (cnt = 0; cnt < lp->cnt; ++cnt) |
if (ch = delim[cnt % delimcnt]) |
if ((ch = delim[cnt % delimcnt])) |
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", buf); |
(void)printf("%s", buf); |
} |
} |
|
|
} |
} |
} |
} |
|
|
|
void |
sequential(argv) |
sequential(argv) |
char **argv; |
char **argv; |
{ |
{ |
|
|
register char ch, *p, *dp; |
register char ch, *p, *dp; |
char buf[_POSIX2_LINE_MAX + 1]; |
char buf[_POSIX2_LINE_MAX + 1]; |
|
|
for (; p = *argv; ++argv) { |
for (; (p = *argv); ++argv) { |
if (p[0] == '-' && !p[1]) |
if (p[0] == '-' && !p[1]) |
fp = stdin; |
fp = stdin; |
else if (!(fp = fopen(p, "r"))) { |
else if (!(fp = fopen(p, "r"))) { |
|
|
(void)printf("%s", buf); |
(void)printf("%s", buf); |
if (!fgets(buf, sizeof(buf), fp)) |
if (!fgets(buf, sizeof(buf), fp)) |
break; |
break; |
if (ch = *dp++) |
if ((ch = *dp++)) |
putchar(ch); |
putchar(ch); |
if (++cnt == delimcnt) { |
if (++cnt == delimcnt) { |
dp = delim; |
dp = delim; |
|
|
} |
} |
} |
} |
|
|
|
int |
tr(arg) |
tr(arg) |
char *arg; |
char *arg; |
{ |
{ |
|
|
return(cnt); |
return(cnt); |
} |
} |
|
|
|
void |
usage() |
usage() |
{ |
{ |
(void)fprintf(stderr, "paste: [-s] [-d delimiters] file ...\n"); |
(void)fprintf(stderr, "paste: [-s] [-d delimiters] file ...\n"); |