Files
seta75D 2e8a93c394 Init
2021-10-11 18:20:23 -03:00

93 lines
1.6 KiB
C

/*
* 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 1.1 92/07/30 SMI"; /* from UCB 5.1 5/31/85 */
#endif not lint
#include <stdio.h>
/*
* 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);
exit(0);
/* NOTREACHED */
}
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);
}