/* See LICENSE file for copyright and license details. */ #include #include #include #include #include "util.h" static void head(FILE *, const char *, long); static void usage(void) { eprintf("usage: %s [-n] [FILE...]\n", argv0); exit(1); } int main(int argc, char *argv[]) { long n = 10; FILE *fp; ARGBEGIN { case 'n': n = estrtol(EARGF(usage()), 0); break; default: usage(); } ARGEND; if(argc == 0) { head(stdin, "", n); } else for(; argc > 0; argc--, argv++) { if(!(fp = fopen(argv[0], "r"))) eprintf("fopen %s:", argv[0]); head(fp, argv[0], n); fclose(fp); } return 0; } void head(FILE *fp, const char *str, long n) { char buf[BUFSIZ]; long i = 0; while(i < n && fgets(buf, sizeof buf, fp)) { fputs(buf, stdout); if(buf[strlen(buf)-1] == '\n') i++; } if(ferror(fp)) eprintf("%s: read error:", str); }