/* See LICENSE file for copyright and license details. */ #include #include #include #include "util.h" static void head(FILE *, const char *, long); int main(int argc, char *argv[]) { char *end, c; long n = 10; FILE *fp; while((c = getopt(argc, argv, "n:")) != -1) switch(c) { case 'n': n = strtol(optarg, &end, 0); if(*end != '\0') eprintf("%s: not a number\n", optarg); break; default: exit(EXIT_FAILURE); } if(optind == argc) head(stdin, "", n); else for(; optind < argc; optind++) { if(!(fp = fopen(argv[optind], "r"))) eprintf("fopen %s:", argv[optind]); head(fp, argv[optind], n); fclose(fp); } return EXIT_SUCCESS; } void head(FILE *fp, const char *str, long n) { char buf[BUFSIZ]; int i; for(i = 0; i < n && fgets(buf, sizeof buf, fp); i++) fputs(buf, stdout); if(ferror(fp)) eprintf("%s: read error:", str); }