|
|
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: if (freopen(argv[0], "r", stdin) == NULL) {
34: perror(argv[0]);
35: exit(1);
36: }
37: name = argv[0];
38: argc--, argv++;
39: } else
40: name = 0;
41: if (around)
42: putchar('\n');
43: around++;
44: if (Argc > 1 && name)
45: printf("==> %s <==\n", name);
46: copyout(linecnt);
47: fflush(stdout);
48: } while (argc > 0);
49: }
50:
51: copyout(cnt)
52: register int cnt;
53: {
54: register int c;
55: char lbuf[BUFSIZ];
56:
57: while (cnt > 0 && fgets(lbuf, sizeof lbuf, stdin) != 0) {
58: printf("%s", lbuf);
59: fflush(stdout);
60: cnt--;
61: }
62: }
63:
64: getnum(cp)
65: register char *cp;
66: {
67: register int i;
68:
69: for (i = 0; *cp >= '0' && *cp <= '9'; cp++)
70: i *= 10, i += *cp - '0';
71: if (*cp) {
72: fprintf(stderr, "Badly formed number\n");
73: exit(1);
74: }
75: return (i);
76: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.