|
|
1.1 ! root 1: #include <stdio.h> ! 2: /* ! 3: * head - give the first few lines of a stream or of each of a set of files ! 4: * ! 5: * Bill Joy UCB August 24, 1977 ! 6: */ ! 7: ! 8: int linecnt = 10; ! 9: int argc; ! 10: ! 11: main(Argc, argv) ! 12: int Argc; ! 13: char *argv[]; ! 14: { ! 15: register int argc; ! 16: char *name; ! 17: register char *argp; ! 18: static int around; ! 19: char obuf[BUFSIZ]; ! 20: ! 21: setbuf(stdout, obuf); ! 22: Argc--, argv++; ! 23: argc = Argc; ! 24: do { ! 25: while (argc > 0 && argv[0][0] == '-') { ! 26: linecnt = getnum(argv[0] + 1); ! 27: argc--, argv++, Argc--; ! 28: } ! 29: if (argc == 0 && around) ! 30: break; ! 31: if (argc > 0) { ! 32: close(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.