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

Diff for /src/usr.bin/stat/stat.c between version 1.4 and 1.5

version 1.4, 2005/04/02 19:17:26 version 1.5, 2005/04/03 18:31:00
Line 103 
Line 103 
 #define FMT_ZERO        '0'  #define FMT_ZERO        '0'
 #define FMT_MINUS       '-'  #define FMT_MINUS       '-'
   
 #define FMT_DECIMAL     'D'  #define FMT_DECIMAL     'D'
 #define FMT_OCTAL       'O'  #define FMT_OCTAL       'O'
 #define FMT_UNSIGNED    'U'  #define FMT_UNSIGNED    'U'
 #define FMT_HEX         'X'  #define FMT_HEX         'X'
 #define FMT_FLOAT       'F'  #define FMT_FLOAT       'F'
 #define FMT_STRING      'S'  #define FMT_STRING      'S'
   
 #define FMTF_DECIMAL    0x01  #define FMTF_DECIMAL    0x01
 #define FMTF_OCTAL      0x02  #define FMTF_OCTAL      0x02
Line 282 
Line 282 
                             errno == ENOENT &&                              errno == ENOENT &&
                             (rc = lstat(argv[0], &st)) == -1)                              (rc = lstat(argv[0], &st)) == -1)
                                 errno = ENOENT;                                  errno = ENOENT;
                 }                  } else
                 else  
                         rc = lstat(argv[0], &st);                          rc = lstat(argv[0], &st);
   
                 if (rc == -1) {                  if (rc == -1) {
Line 292 
Line 291 
                         if (!quiet)                          if (!quiet)
                                 warn("%s: stat",                                  warn("%s: stat",
                                     argc == 0 ? "(stdin)" : argv[0]);                                      argc == 0 ? "(stdin)" : argv[0]);
                 }                  } else
                 else  
                         output(&st, argv[0], statfmt, fn, nonl, quiet);                          output(&st, argv[0], statfmt, fn, nonl, quiet);
   
                 argv++;                  argv++;
Line 312 
Line 310 
         exit(1);          exit(1);
 }  }
   
 /*  /*
  * Parses a format string.   * Parses a format string.
  */   */
 void  void
Line 394 
Line 392 
                  */                   */
                 flags = 0;                  flags = 0;
                 do {                  do {
                         if      (*statfmt == FMT_POUND)                          if (*statfmt == FMT_POUND)
                                 flags |= FLAG_POUND;                                  flags |= FLAG_POUND;
                         else if (*statfmt == FMT_SPACE)                          else if (*statfmt == FMT_SPACE)
                                 flags |= FLAG_SPACE;                                  flags |= FLAG_SPACE;
Line 483 
Line 481 
 #undef fmtcasef  #undef fmtcasef
 #undef fmtcase  #undef fmtcase
   
                 t = format1(st,                  t = format1(st, file, subfmt, statfmt - subfmt, buf,
                      file,                      sizeof(buf), flags, size, prec, ofmt, hilo, what);
                      subfmt, statfmt - subfmt,  
                      buf, sizeof(buf),  
                      flags, size, prec, ofmt, hilo, what);  
   
                 for (i = 0; i < t && i < sizeof(buf); i++)                  for (i = 0; i < t && i < sizeof(buf); i++)
                         addchar(stdout, buf[i], &nl);                          addchar(stdout, buf[i], &nl);
Line 542 
Line 537 
                 data = (what == SHOW_st_dev) ? st->st_dev : st->st_rdev;                  data = (what == SHOW_st_dev) ? st->st_dev : st->st_rdev;
                 sdata = (what == SHOW_st_dev) ?                  sdata = (what == SHOW_st_dev) ?
                     devname(st->st_dev, S_IFBLK) :                      devname(st->st_dev, S_IFBLK) :
                     devname(st->st_rdev,                      devname(st->st_rdev,
                     S_ISCHR(st->st_mode) ? S_IFCHR :                      S_ISCHR(st->st_mode) ? S_IFCHR :
                     S_ISBLK(st->st_mode) ? S_IFBLK :                      S_ISBLK(st->st_mode) ? S_IFBLK :
                     0U);                      0U);
Line 551 
Line 546 
                 if (hilo == HIGH_PIECE) {                  if (hilo == HIGH_PIECE) {
                         data = major(data);                          data = major(data);
                         hilo = 0;                          hilo = 0;
                 }                  } else if (hilo == LOW_PIECE) {
                 else if (hilo == LOW_PIECE) {  
                         data = minor((unsigned)data);                          data = minor((unsigned)data);
                         hilo = 0;                          hilo = 0;
                 }                  }
Line 582 
Line 576 
                         sdata += 1;                          sdata += 1;
                         sdata[3] = '\0';                          sdata[3] = '\0';
                         hilo = 0;                          hilo = 0;
                 }                  } else if (hilo == MIDDLE_PIECE) {
                 else if (hilo == MIDDLE_PIECE) {  
                         data = (data >> 9) & 07;                          data = (data >> 9) & 07;
                         sdata += 4;                          sdata += 4;
                         sdata[3] = '\0';                          sdata[3] = '\0';
                         hilo = 0;                          hilo = 0;
                 }                  } else if (hilo == LOW_PIECE) {
                 else if (hilo == LOW_PIECE) {  
                         data &= 0777;                          data &= 0777;
                         sdata += 7;                          sdata += 7;
                         sdata[3] = '\0';                          sdata[3] = '\0';
Line 725 
Line 717 
                         }                          }
                         path[l + 4] = '\0';                          path[l + 4] = '\0';
                         sdata = path + (ofmt == FMTF_STRING ? 0 : 4);                          sdata = path + (ofmt == FMTF_STRING ? 0 : 4);
                 }                  } else {
                 else {  
                         linkfail = 1;                          linkfail = 1;
                         sdata = "";                          sdata = "";
                 }                  }
Line 763 
Line 754 
                                 break;                                  break;
                         }                          }
                         hilo = 0;                          hilo = 0;
                 }                  } else if (hilo == HIGH_PIECE) {
                 else if (hilo == HIGH_PIECE) {  
                         switch (st->st_mode & S_IFMT) {                          switch (st->st_mode & S_IFMT) {
                         case S_IFIFO:   sdata = "Fifo File";            break;                          case S_IFIFO:   sdata = "Fifo File";            break;
                         case S_IFCHR:   sdata = "Character Device";     break;                          case S_IFCHR:   sdata = "Character Device";     break;
Line 799 
Line 789 
                         char majdev[20], mindev[20];                          char majdev[20], mindev[20];
                         int l1, l2;                          int l1, l2;
   
                         l1 = format1(st,                          l1 = format1(st, file, fmt, flen,
                             file,                              majdev, sizeof(majdev), flags, size, prec,
                             fmt, flen,  
                             majdev, sizeof(majdev),  
                             flags, size, prec,  
                             ofmt, HIGH_PIECE, SHOW_st_rdev);                              ofmt, HIGH_PIECE, SHOW_st_rdev);
                         l2 = format1(st,                          l2 = format1(st, file, fmt, flen,
                             file,                              mindev, sizeof(mindev), flags, size, prec,
                             fmt, flen,  
                             mindev, sizeof(mindev),  
                             flags, size, prec,  
                             ofmt, LOW_PIECE, SHOW_st_rdev);                              ofmt, LOW_PIECE, SHOW_st_rdev);
                         return (snprintf(buf, blen, "%.*s,%.*s",                          return (snprintf(buf, blen, "%.*s,%.*s",
                             l1, majdev, l2, mindev));                              l1, majdev, l2, mindev));
                   } else {
                           return (format1(st, file, fmt, flen, buf, blen,
                               flags, size, prec, ofmt, 0, SHOW_st_size));
                 }                  }
                 else {  
                         return (format1(st,  
                             file,  
                             fmt, flen,  
                             buf, blen,  
                             flags, size, prec,  
                             ofmt, 0, SHOW_st_size));  
                 }  
                 /*NOTREACHED*/                  /*NOTREACHED*/
         default:          default:
                 errx(1, "%.*s: bad format", (int)flen, fmt);                  errx(1, "%.*s: bad format", (int)flen, fmt);
Line 853 
Line 832 
         /*          /*
          * Only the timespecs support the FLOAT output format, and that           * Only the timespecs support the FLOAT output format, and that
          * requires work that differs from the other formats.           * requires work that differs from the other formats.
          */           */
         if (ofmt == FMTF_FLOAT) {          if (ofmt == FMTF_FLOAT) {
                 /*                  /*
                  * Nothing after the decimal point, so just print seconds.                   * Nothing after the decimal point, so just print seconds.

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5