version 1.23, 2022/01/29 00:19:04 |
version 1.24, 2022/02/07 17:19:57 |
|
|
int |
int |
head_file(const char *path, long count, int need_header) |
head_file(const char *path, long count, int need_header) |
{ |
{ |
|
const char *name; |
FILE *fp; |
FILE *fp; |
int ch; |
int ch, status = 0; |
static int first = 1; |
static int first = 1; |
|
|
if (path != NULL) { |
if (path != NULL) { |
fp = fopen(path, "r"); |
name = path; |
|
fp = fopen(name, "r"); |
if (fp == NULL) { |
if (fp == NULL) { |
warn("%s", path); |
warn("%s", name); |
return 1; |
return 1; |
} |
} |
if (need_header) { |
if (need_header) { |
printf("%s==> %s <==\n", first ? "" : "\n", path); |
printf("%s==> %s <==\n", first ? "" : "\n", name); |
|
if (ferror(stdout)) |
|
err(1, "stdout"); |
first = 0; |
first = 0; |
} |
} |
} else |
} else { |
|
name = "stdin"; |
fp = stdin; |
fp = stdin; |
|
} |
|
|
for (; count > 0 && !feof(fp); --count) |
while ((ch = getc(fp)) != EOF) { |
while ((ch = getc(fp)) != EOF) |
if (putchar(ch) == EOF) |
if (putchar(ch) == '\n') |
err(1, "stdout"); |
break; |
if (ch == '\n' && --count == 0) |
|
break; |
|
} |
|
if (ferror(fp)) { |
|
warn("%s", name); |
|
status = 1; |
|
} |
|
|
fclose(fp); |
fclose(fp); |
|
|
return 0; |
return status; |
} |
} |
|
|
|
|