Diff for /src/usr.sbin/mtree/create.c between versions 1.4 and 1.5

version 1.4, 2003/11/22 11:38:13 version 1.5, 2004/03/15 16:24:22
Line 85  static void statf(int, FTSENT *); Line 85  static void statf(int, FTSENT *);
 void  void
 cwalk(void)  cwalk(void)
 {  {
        register FTS *t;        FTS *t;
        register FTSENT *p;        FTSENT *p;
         time_t clock;          time_t clock;
         char *argv[2], host[MAXHOSTNAMELEN];          char *argv[2], host[MAXHOSTNAMELEN];
         int indent = 0;          int indent = 0;
   
        (void)time(&clock);        time(&clock);
        (void)gethostname(host, sizeof(host));        gethostname(host, sizeof(host));
        (void)printf(        printf(
             "#\t   user: %s\n#\tmachine: %s\n#\t   tree: %s\n#\t   date: %s",              "#\t   user: %s\n#\tmachine: %s\n#\t   tree: %s\n#\t   date: %s",
             getlogin(), host, fullpath, ctime(&clock));              getlogin(), host, fullpath, ctime(&clock));
   
Line 111  cwalk(void) Line 111  cwalk(void)
                 switch(p->fts_info) {                  switch(p->fts_info) {
                 case FTS_D:                  case FTS_D:
                         if (!dflag)                          if (!dflag)
                                (void)printf("\n");                                printf("\n");
                         if (!nflag)                          if (!nflag)
                                (void)printf("# %s\n", p->fts_path);                                printf("# %s\n", p->fts_path);
                         statd(t, p, &uid, &gid, &mode, &flags);                          statd(t, p, &uid, &gid, &mode, &flags);
                         statf(indent, p);                          statf(indent, p);
                         break;                          break;
                 case FTS_DP:                  case FTS_DP:
                         if (!nflag && (p->fts_level > 0))                          if (!nflag && (p->fts_level > 0))
                                (void)printf("%*s# %s\n", indent, "", p->fts_path);                                printf("%*s# %s\n", indent, "", p->fts_path);
                        (void)printf("%*s..\n", indent, "");                        printf("%*s..\n", indent, "");
                         if (!dflag)                          if (!dflag)
                                (void)printf("\n");                                printf("\n");
                         break;                          break;
                 case FTS_DNR:                  case FTS_DNR:
                 case FTS_ERR:                  case FTS_ERR:
Line 136  cwalk(void) Line 136  cwalk(void)
   
                 }                  }
         }          }
        (void)fts_close(t);        fts_close(t);
         if (sflag && keys & F_CKSUM)          if (sflag && keys & F_CKSUM)
                 warnx("%s checksum: %lu", fullpath, crc_total);                  warnx("%s checksum: %lu", fullpath, crc_total);
 }  }
Line 210  statf(int indent, FTSENT *p) Line 210  statf(int indent, FTSENT *p)
                 if ((fd = open(p->fts_accpath, O_RDONLY, 0)) < 0 ||                  if ((fd = open(p->fts_accpath, O_RDONLY, 0)) < 0 ||
                     crc(fd, &val, &len))                      crc(fd, &val, &len))
                         err(1, "line %d: %s", lineno, p->fts_accpath);                          err(1, "line %d: %s", lineno, p->fts_accpath);
                (void)close(fd);                close(fd);
                 output(indent, &offset, "cksum=%lu", val);                  output(indent, &offset, "cksum=%lu", val);
         }          }
 #ifdef MD5  #ifdef MD5
Line 257  statf(int indent, FTSENT *p) Line 257  statf(int indent, FTSENT *p)
                 output(indent, &offset, "flags=%s", fflags);                  output(indent, &offset, "flags=%s", fflags);
                 free(fflags);                  free(fflags);
         }          }
        (void)putchar('\n');        putchar('\n');
 }  }
   
 #define MAXGID  5000  #define MAXGID  5000
Line 270  static int Line 270  static int
 statd(FTS *t, FTSENT *parent, uid_t *puid, gid_t *pgid, mode_t *pmode,  statd(FTS *t, FTSENT *parent, uid_t *puid, gid_t *pgid, mode_t *pmode,
       u_long *pflags)        u_long *pflags)
 {  {
        register FTSENT *p;        FTSENT *p;
        register gid_t sgid;        gid_t sgid;
        register uid_t suid;        uid_t suid;
        register mode_t smode;        mode_t smode;
        register u_long sflags;        u_long sflags;
         struct group *gr;          struct group *gr;
         struct passwd *pw;          struct passwd *pw;
         gid_t savegid = *pgid;          gid_t savegid = *pgid;
Line 343  statd(FTS *t, FTSENT *parent, uid_t *pui Line 343  statd(FTS *t, FTSENT *parent, uid_t *pui
             (first)) {              (first)) {
                 first = 0;                  first = 0;
                 if (dflag)                  if (dflag)
                        (void)printf("/set type=dir");                        printf("/set type=dir");
                 else                  else
                        (void)printf("/set type=file");                        printf("/set type=file");
                 if (keys & F_UNAME) {                  if (keys & F_UNAME) {
                         if ((pw = getpwuid(saveuid)) != NULL)                          if ((pw = getpwuid(saveuid)) != NULL)
                                (void)printf(" uname=%s", pw->pw_name);                                printf(" uname=%s", pw->pw_name);
                         else                          else
                                 errx(1,                                  errx(1,
                                 "line %d: could not get uname for uid=%u",                                  "line %d: could not get uname for uid=%u",
                                 lineno, saveuid);                                  lineno, saveuid);
                 }                  }
                 if (keys & F_UID)                  if (keys & F_UID)
                        (void)printf(" uid=%lu", (u_long)saveuid);                        printf(" uid=%lu", (u_long)saveuid);
                 if (keys & F_GNAME) {                  if (keys & F_GNAME) {
                         if ((gr = getgrgid(savegid)) != NULL)                          if ((gr = getgrgid(savegid)) != NULL)
                                (void)printf(" gname=%s", gr->gr_name);                                printf(" gname=%s", gr->gr_name);
                         else                          else
                                 errx(1,                                  errx(1,
                                 "line %d: could not get gname for gid=%u",                                  "line %d: could not get gname for gid=%u",
                                 lineno, savegid);                                  lineno, savegid);
                 }                  }
                 if (keys & F_GID)                  if (keys & F_GID)
                        (void)printf(" gid=%lu", (u_long)savegid);                        printf(" gid=%lu", (u_long)savegid);
                 if (keys & F_MODE)                  if (keys & F_MODE)
                        (void)printf(" mode=%#o", savemode);                        printf(" mode=%#o", savemode);
                 if (keys & F_NLINK)                  if (keys & F_NLINK)
                        (void)printf(" nlink=1");                        printf(" nlink=1");
                 if (keys & F_FLAGS) {                  if (keys & F_FLAGS) {
                         fflags = flags_to_string(saveflags);                          fflags = flags_to_string(saveflags);
                        (void)printf(" flags=%s", fflags);                        printf(" flags=%s", fflags);
                         free(fflags);                          free(fflags);
                 }                  }
                (void)printf("\n");                printf("\n");
                 *puid = saveuid;                  *puid = saveuid;
                 *pgid = savegid;                  *pgid = savegid;
                 *pmode = savemode;                  *pmode = savemode;
Line 387  statd(FTS *t, FTSENT *parent, uid_t *pui Line 387  statd(FTS *t, FTSENT *parent, uid_t *pui
 static int  static int
 dsort(const FTSENT **a, const FTSENT **b)  dsort(const FTSENT **a, const FTSENT **b)
 {  {
   
         if (S_ISDIR((*a)->fts_statp->st_mode)) {          if (S_ISDIR((*a)->fts_statp->st_mode)) {
                 if (!S_ISDIR((*b)->fts_statp->st_mode))                  if (!S_ISDIR((*b)->fts_statp->st_mode))
                         return (1);                          return (1);
Line 402  output(int indent, int *offset, const ch Line 403  output(int indent, int *offset, const ch
         char buf[1024];          char buf[1024];
   
         va_start(ap, fmt);          va_start(ap, fmt);
        (void)vsnprintf(buf, sizeof(buf), fmt, ap);        vsnprintf(buf, sizeof(buf), fmt, ap);
         va_end(ap);          va_end(ap);
   
         if (*offset + strlen(buf) > MAXLINELEN - 3) {          if (*offset + strlen(buf) > MAXLINELEN - 3) {
                (void)printf(" \\\n%*s", INDENTNAMELEN + indent, "");                printf(" \\\n%*s", INDENTNAMELEN + indent, "");
                 *offset = INDENTNAMELEN + indent;                  *offset = INDENTNAMELEN + indent;
         }          }
         *offset += printf(" %s", buf) + 1;          *offset += printf(" %s", buf) + 1;

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