[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.21 and 1.22

version 1.21, 2015/10/10 20:35:01 version 1.22, 2018/09/16 02:42:19
Line 490 
Line 490 
     int hilo, int what)      int hilo, int what)
 {  {
         u_int64_t data;          u_int64_t data;
         char *sdata, lfmt[24], tmp[20];          char lfmt[24], tmp[20];
         char smode[12], sid[12], path[PATH_MAX + 4];          char smode[12], sid[12], path[PATH_MAX + 4];
         struct passwd *pw;          const char *sdata;
         struct group *gr;  
         struct tm *tm;          struct tm *tm;
         time_t secs;          time_t secs;
         long nsecs;          long nsecs;
Line 546 
Line 545 
                 small = (sizeof(st->st_mode) == 4);                  small = (sizeof(st->st_mode) == 4);
                 data = st->st_mode;                  data = st->st_mode;
                 strmode(st->st_mode, smode);                  strmode(st->st_mode, smode);
                 sdata = smode;                  l = strlen(smode);
                 l = strlen(sdata);                  if (smode[l - 1] == ' ')
                 if (sdata[l - 1] == ' ')                          smode[--l] = '\0';
                         sdata[--l] = '\0';                  switch (hilo) {
                 if (hilo == HIGH_PIECE) {                  case HIGH_PIECE:
                         data >>= 12;                          data >>= 12;
                         sdata += 1;                          smode[4] = '\0';
                         sdata[3] = '\0';                          sdata = smode + 1;
                         hilo = 0;                          break;
                 } else if (hilo == MIDDLE_PIECE) {                  case MIDDLE_PIECE:
                         data = (data >> 9) & 07;                          data = (data >> 9) & 07;
                         sdata += 4;                          smode[7] = '\0';
                         sdata[3] = '\0';                          sdata = smode + 4;
                         hilo = 0;                          break;
                 } else if (hilo == LOW_PIECE) {                  case LOW_PIECE:
                         data &= 0777;                          data &= 0777;
                         sdata += 7;                          smode[10] = '\0';
                         sdata[3] = '\0';                          sdata = smode + 7;
                         hilo = 0;                          break;
                   default:
                           sdata = smode;
                           break;
                 }                  }
                   hilo = 0;
                 formats = FMTF_DECIMAL | FMTF_OCTAL | FMTF_UNSIGNED | FMTF_HEX |                  formats = FMTF_DECIMAL | FMTF_OCTAL | FMTF_UNSIGNED | FMTF_HEX |
                     FMTF_STRING;                      FMTF_STRING;
                 if (ofmt == 0)                  if (ofmt == 0)
Line 582 
Line 585 
         case SHOW_st_uid:          case SHOW_st_uid:
                 small = (sizeof(st->st_uid) == 4);                  small = (sizeof(st->st_uid) == 4);
                 data = st->st_uid;                  data = st->st_uid;
                 if ((pw = getpwuid(st->st_uid)) != NULL)                  sdata = user_from_uid(st->st_uid, 1);
                         sdata = pw->pw_name;                  if (sdata == NULL) {
                 else {  
                         snprintf(sid, sizeof(sid), "(%ld)", (long)st->st_uid);                          snprintf(sid, sizeof(sid), "(%ld)", (long)st->st_uid);
                         sdata = sid;                          sdata = sid;
                 }                  }
Line 596 
Line 598 
         case SHOW_st_gid:          case SHOW_st_gid:
                 small = (sizeof(st->st_gid) == 4);                  small = (sizeof(st->st_gid) == 4);
                 data = st->st_gid;                  data = st->st_gid;
                 if ((gr = getgrgid(st->st_gid)) != NULL)                  sdata = group_from_gid(st->st_uid, 1);
                         sdata = gr->gr_name;                  if (sdata == NULL) {
                 else {  
                         snprintf(sid, sizeof(sid), "(%ld)", (long)st->st_gid);                          snprintf(sid, sizeof(sid), "(%ld)", (long)st->st_gid);
                         sdata = sid;                          sdata = sid;
                 }                  }
Line 706 
Line 707 
                 small = 0;                  small = 0;
                 data = 0;                  data = 0;
                 sdata = smode;                  sdata = smode;
                 sdata[0] = '\0';                  smode[0] = '\0';
                 if (hilo == 0 || hilo == LOW_PIECE) {                  if (hilo == 0 || hilo == LOW_PIECE) {
                         switch (st->st_mode & S_IFMT) {                          switch (st->st_mode & S_IFMT) {
                         case S_IFIFO:                          case S_IFIFO:
                                 (void)strlcat(sdata, "|", sizeof(smode));                                  (void)strlcat(smode, "|", sizeof(smode));
                                 break;                                  break;
                         case S_IFDIR:                          case S_IFDIR:
                                 (void)strlcat(sdata, "/", sizeof(smode));                                  (void)strlcat(smode, "/", sizeof(smode));
                                 break;                                  break;
                         case S_IFREG:                          case S_IFREG:
                                 if (st->st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))                                  if (st->st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))
                                         (void)strlcat(sdata, "*",                                          (void)strlcat(smode, "*",
                                             sizeof(smode));                                              sizeof(smode));
                                 break;                                  break;
                         case S_IFLNK:                          case S_IFLNK:
                                 (void)strlcat(sdata, "@", sizeof(smode));                                  (void)strlcat(smode, "@", sizeof(smode));
                                 break;                                  break;
                         case S_IFSOCK:                          case S_IFSOCK:
                                 (void)strlcat(sdata, "=", sizeof(smode));                                  (void)strlcat(smode, "=", sizeof(smode));
                                 break;                                  break;
                         }                          }
                         hilo = 0;                          hilo = 0;

Legend:
Removed from v.1.21  
changed lines
  Added in v.1.22