2 * echo args, globbing is necessary.
5 * \n \r \b \c \v \\ \f \t \NNN escapes supported
6 * -n and \c mean dont echo the final newline.
8 * ++jrb bammi@cadence.com
14 # include <compiler.h>
16 # define __PROTO(X) ()
19 char **glob __PROTO((char *patt, int decend_dir));
20 int contains_wild __PROTO((char *patt));
21 void free_all __PROTO((void));
24 int final_newline = 1; /* turned off by -n or \c */
33 if ((*argv)[1] == 'n')
37 fputs("usage: echo [-n] [arguement ... ]\n", stderr);
48 if(contains_wild(word) && (list = glob(word, 0)))
53 if(*++list) putchar(' ');
60 for(c = *word; c; c = (*word)? *++word : 0)
68 case 'b': putchar('\b'); break;
69 case 'f': putchar('\f'); break;
70 case 'n': putchar('\n'); break;
71 case 'r': putchar('\r'); break;
72 case 't': putchar('\t'); break;
73 case 'v': putchar('\v'); break;
74 case '\\': putchar('\\'); break;
75 case 'c': final_newline = 0; break;
76 default: putchar(*word); /* ?? */
80 for(c = *++word; (c >= '0') && (c <= '7'); c = *++word)
81 n = (n << 3) + (c - '0');
88 if(*++argv) putchar(' ');
90 if(final_newline) putchar('\n');