housel@en.ecn.purdue.edu (Peter S. Housel) (09/23/89)
Here is echo.c, with another fix applied. Thanks to Ronald
Lamprecht for noting the buffering bug.
-Peter S. Housel housel@ecn.purdue.edu ...!pur-ee!housel
echo 'x - echo.c'
sed 's/^X//' <<'**-echo.c-EOF-**' >echo.c
X/* echo - echo arguments Author: Andy Tanenbaum */
X
X#define SIZE 1024
Xchar buf[SIZE];
Xint count;
Xmain(argc, argv)
Xint argc;
Xchar *argv[];
X{
X register int i, nflag;
X
X nflag = 0;
X if(argc > 1 && argv[1][0] == '-' && argv[1][1] == 'n') {
X nflag++;
X argc--;
X argv++;
X }
X
X for(i = 1; i < argc; i++) {
X collect(argv[i]);
X if (i < argc - 1) collect(" ");
X }
X
X if (nflag == 0) collect("\n");
X
X /* Print accumulated output. */
X if (count > 0) write(1, buf, count);
X exit(0);
X}
X
Xcollect(s)
Xchar *s;
X{
X/* Collect characters. For efficiency, write them in large chunks. */
X char c;
X
X while ( (c = *s++) != 0) {
X if (count == SIZE) {write(1, buf, count); count = 0;}
X buf[count++] = c;
X }
X}
**-echo.c-EOF-**