1 1.1 mrg /* @(#)line.c 1.1 */ 2 1.1 mrg /* 3 1.1 mrg This program reads a single line from the standard input 4 1.1 mrg and writes it on the standard output. It is probably most useful 5 1.1 mrg in conjunction with the Bourne shell. 6 1.1 mrg */ 7 1.1 mrg #define LSIZE 512 8 1.1 mrg int EOF; 9 1.1 mrg char nl = '\n'; 10 1.1 mrg main() 11 1.1 mrg { 12 1.1 mrg register char c; 13 1.1 mrg char line[LSIZE]; 14 1.1 mrg register char *linep, *linend; 15 1.1 mrg 16 1.1 mrg EOF = 0; 17 1.1 mrg linep = line; 18 1.1 mrg linend = line + LSIZE; 19 1.1 mrg 20 1.1 mrg while ((c = readc()) != nl) 21 1.1 mrg { 22 1.1 mrg if (linep == linend) 23 1.1 mrg { 24 1.1 mrg write (1, line, LSIZE); 25 1.1 mrg linep = line; 26 1.1 mrg } 27 1.1 mrg *linep++ = c; 28 1.1 mrg } 29 1.1 mrg write (1, line, linep-line); 30 1.1 mrg write(1,&nl,1); 31 1.1 mrg if (EOF == 1) exit(1); 32 1.1 mrg exit (0); 33 1.1 mrg } 34 1.1 mrg readc() 35 1.1 mrg { 36 1.1 mrg char c; 37 1.1 mrg if (read (0, &c, 1) != 1) { 38 1.1 mrg EOF = 1; 39 1.1 mrg return(nl); 40 1.1 mrg } 41 1.1 mrg else 42 1.1 mrg return (c); 43 1.1 mrg } 44