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