|
|
1.1 root 1: static char *sccsid = "@(#)head.c 4.1 (Berkeley) 10/1/80";
2: #include <stdio.h>
3: /*
4: * head - give the first few lines of a stream or of each of a set of files
5: *
6: * Bill Joy UCB August 24, 1977
7: */
8:
9: int linecnt = 10;
10: int argc;
11:
12: main(Argc, argv)
13: int Argc;
14: char *argv[];
15: {
16: register int argc;
17: char *name;
18: register char *argp;
19: static int around;
20: char obuf[BUFSIZ];
21:
22: setbuf(stdout, obuf);
23: Argc--, argv++;
24: argc = Argc;
25: do {
26: while (argc > 0 && argv[0][0] == '-') {
27: linecnt = getnum(argv[0] + 1);
28: argc--, argv++, Argc--;
29: }
30: if (argc == 0 && around)
31: break;
32: if (argc > 0) {
33: close(0);
34: if (freopen(argv[0], "r", stdin) == NULL) {
35: perror(argv[0]);
36: exit(1);
37: }
38: name = argv[0];
39: argc--, argv++;
40: } else
41: name = 0;
42: if (around)
43: putchar('\n');
44: around++;
45: if (Argc > 1 && name)
46: printf("==> %s <==\n", name);
47: copyout(linecnt);
48: fflush(stdout);
49: } while (argc > 0);
50: }
51:
52: copyout(cnt)
53: register int cnt;
54: {
55: register int c;
56: char lbuf[BUFSIZ];
57:
58: while (cnt > 0 && fgets(lbuf, sizeof lbuf, stdin) != 0) {
59: printf("%s", lbuf);
60: fflush(stdout);
61: cnt--;
62: }
63: }
64:
65: getnum(cp)
66: register char *cp;
67: {
68: register int i;
69:
70: for (i = 0; *cp >= '0' && *cp <= '9'; cp++)
71: i *= 10, i += *cp - '0';
72: if (*cp) {
73: fprintf(stderr, "Badly formed number\n");
74: exit(1);
75: }
76: return (i);
77: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.