xref: /csrg-svn/usr.bin/rev/rev.c (revision 32745)
1*32745Sbostic static char *sccsid = "@(#)rev.c	4.2 (Berkeley) 12/02/87";
21079Sbill #include <stdio.h>
31079Sbill 
41079Sbill /* reverse lines of a file */
51079Sbill 
61079Sbill #define N 256
71079Sbill char line[N];
81079Sbill FILE *input;
91079Sbill 
101079Sbill main(argc,argv)
111079Sbill char **argv;
121079Sbill {
131079Sbill 	register i,c;
141079Sbill 	input = stdin;
151079Sbill 	do {
161079Sbill 		if(argc>1) {
171079Sbill 			if((input=fopen(argv[1],"r"))==NULL) {
181079Sbill 				fprintf(stderr,"rev: cannot open %s\n",
191079Sbill 					argv[1]);
201079Sbill 				exit(1);
211079Sbill 			}
221079Sbill 		}
231079Sbill 		for(;;){
241079Sbill 			for(i=0;i<N;i++) {
251079Sbill 				line[i] = c = getc(input);
261079Sbill 				switch(c) {
271079Sbill 				case EOF:
281079Sbill 					goto eof;
291079Sbill 				default:
301079Sbill 					continue;
311079Sbill 				case '\n':
321079Sbill 					break;
331079Sbill 				}
341079Sbill 				break;
351079Sbill 			}
361079Sbill 			while(--i>=0)
371079Sbill 				putc(line[i],stdout);
381079Sbill 			putc('\n',stdout);
391079Sbill 		}
401079Sbill eof:
411079Sbill 		fclose(input);
421079Sbill 		argc--;
431079Sbill 		argv++;
441079Sbill 	} while(argc>1);
45*32745Sbostic 	exit(0);
461079Sbill }
47