xref: /csrg-svn/usr.bin/what/what.c (revision 1452)
1*1452Sroot static	char *sccsid = "@(#)what.c	4.1 (Berkeley) 10/16/80";
2*1452Sroot #include <stdio.h>
3*1452Sroot 
4*1452Sroot /*
5*1452Sroot  * what
6*1452Sroot  */
7*1452Sroot 
8*1452Sroot char	*infile = "Standard input";
9*1452Sroot 
10*1452Sroot main(argc, argv)
11*1452Sroot 	int argc;
12*1452Sroot 	char *argv[];
13*1452Sroot {
14*1452Sroot 
15*1452Sroot 	argc--, argv++;
16*1452Sroot 	do {
17*1452Sroot 		if (argc > 0) {
18*1452Sroot 			if (freopen(argv[0], "r", stdin) == NULL) {
19*1452Sroot 				perror(argv[0]);
20*1452Sroot 				exit(1);
21*1452Sroot 			}
22*1452Sroot 			infile = argv[0];
23*1452Sroot 			printf("%s\n", infile);
24*1452Sroot 			argc--, argv++;
25*1452Sroot 		}
26*1452Sroot 		fseek(stdin, (long) 0, 0);
27*1452Sroot 		find();
28*1452Sroot 	} while (argc > 0);
29*1452Sroot }
30*1452Sroot 
31*1452Sroot find()
32*1452Sroot {
33*1452Sroot 	static char buf[BUFSIZ];
34*1452Sroot 	register char *cp;
35*1452Sroot 	register int c, cc;
36*1452Sroot 	register char *pat;
37*1452Sroot 
38*1452Sroot contin:
39*1452Sroot 	while ((c = getchar()) != EOF)
40*1452Sroot 		if (c == '@') {
41*1452Sroot 			for (pat = "(#)"; *pat; pat++)
42*1452Sroot 				if ((c = getchar()) != *pat)
43*1452Sroot 					goto contin;
44*1452Sroot 			putchar('\t');
45*1452Sroot 			while ((c = getchar()) != EOF && c && c != '"' &&
46*1452Sroot 			    c != '>' && c != '\n')
47*1452Sroot 				putchar(c);
48*1452Sroot 			putchar('\n');
49*1452Sroot 		}
50*1452Sroot }
51