[BACK]Return to head.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / head

Diff for /src/usr.bin/head/head.c between version 1.23 and 1.24

version 1.23, 2022/01/29 00:19:04 version 1.24, 2022/02/07 17:19:57
Line 96 
Line 96 
 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;
 }  }
   
   

Legend:
Removed from v.1.23  
changed lines
  Added in v.1.24