/* * Copyright (c) 1980 Regents of the University of California. * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. */ #ifndef lint char copyright[] = "@(#) Copyright (c) 1980 Regents of the University of California.\n\ All rights reserved.\n"; #endif not lint #ifndef lint static char sccsid[] = "@(#)head.c 5.1 (Berkeley) 5/31/85"; #endif not lint #include /* * head - give the first few lines of a stream or of each of a set of files * * Bill Joy UCB August 24, 1977 */ int linecnt = 10; int argc; main(Argc, argv) int Argc; char *argv[]; { register int argc; char *name; register char *argp; static int around; Argc--, argv++; argc = Argc; do { while (argc > 0 && argv[0][0] == '-') { linecnt = getnum(argv[0] + 1); argc--, argv++, Argc--; } if (argc == 0 && around) break; if (argc > 0) { close(0); if (freopen(argv[0], "r", stdin) == NULL) { perror(argv[0]); exit(1); } name = argv[0]; argc--, argv++; } else name = 0; if (around) putchar('\n'); around++; if (Argc > 1 && name) printf("==> %s <==\n", name); copyout(linecnt); fflush(stdout); } while (argc > 0); } copyout(cnt) register int cnt; { register int c; char lbuf[BUFSIZ]; while (cnt > 0 && fgets(lbuf, sizeof lbuf, stdin) != 0) { printf("%s", lbuf); fflush(stdout); cnt--; } } getnum(cp) register char *cp; { register int i; for (i = 0; *cp >= '0' && *cp <= '9'; cp++) i *= 10, i += *cp - '0'; if (*cp) { fprintf(stderr, "Badly formed number\n"); exit(1); } return (i); }