NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: PR/59838 CVS commit: src/usr.sbin/mtree



The following reply was made to PR bin/59838; it has been noted by GNATS.

From: Jose Luis Duran <jlduran%gmail.com@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: 
Subject: Re: PR/59838 CVS commit: src/usr.sbin/mtree
Date: Fri, 19 Dec 2025 11:12:40 -0300

 >  I also had to:
 >
 >  --- a/usr.sbin/mtree/mtree.c
 >  +++ b/usr.sbin/mtree/mtree.c
 >  @@ -72,6 +72,7 @@ static struct {
 >          {F_NETBSD6, "netbsd6"},
 >   };
 >
 >  +static int      parsekeys(char **);
 >   __dead static  void    usage(void);
 >
 >   int
 
 It is not needed, the function prototype is there, I just didn't see it.
 
 >  And I have a question, if this is also needed?:
 >
 >  --- a/usr.sbin/mtree/create.c
 >  +++ b/usr.sbin/mtree/create.c
 >  @@ -402,10 +402,13 @@ statd(FILE *fp, FTS *t, FTSENT *parent, uid_t
 >  *puid, gid_t *pgid, mode_t *pmode,
 >              ((keys & F_FLAGS) && (*pflags != saveflags)) ||
 >              first) {
 >                  first = 0;
 >  -               if (flavor != F_NETBSD6 && dflag)
 >  -                       fprintf(fp, "/set type=dir");
 >  -               else
 >  -                       fprintf(fp, "/set type=file");
 >  +               fprintf(fp, "/set");
 >  +               if (keys & F_TYPE) {
 >  +                       if (flavor != F_NETBSD6 && dflag)
 >  +                               fprintf(fp, " type=dir");
 >  +                       else
 >  +                               fprintf(fp, " type=file");
 >  +               }
 >                  if (keys & (F_UID | F_UNAME)) {
 >                          if (keys & F_UNAME &&
 >                              (name = user_from_uid(saveuid, 1)) != NULL)
 >
 >  I'm worried that: `mtree -cn -k flags -R flags,type -p /usr/bin/ -x`
 >  would result in a bad specification.
 
 I believe it should also check for the presence of F_TYPE before
 printing "/set":
 
 --- a/usr.sbin/mtree/create.c
 +++ b/usr.sbin/mtree/create.c
 @@ -396,16 +396,20 @@ statd(FILE *fp, FTS *t, FTSENT *parent, uid_t
 *puid, gid_t *pgid, mode_t *pmode,
          * output a new one.  So first we check to see if anything changed.
          * Note that we always output a /set record for the first directory.
          */
 -       if (((keys & (F_UNAME | F_UID)) && (*puid != saveuid)) ||
 +       if ((keys & F_TYPE) ||
 +           ((keys & (F_UNAME | F_UID)) && (*puid != saveuid)) ||
             ((keys & (F_GNAME | F_GID)) && (*pgid != savegid)) ||
 -           ((keys & F_MODE) && (*pmode != savemode)) ||
 +           ((keys & F_MODE) && (*pmode != savemode)) ||
             ((keys & F_FLAGS) && (*pflags != saveflags)) ||
             first) {
                 first = 0;
 -               if (flavor != F_NETBSD6 && dflag)
 -                       fprintf(fp, "/set type=dir");
 -               else
 -                       fprintf(fp, "/set type=file");
 +               fprintf(fp, "/set");
 +               if (keys & F_TYPE) {
 +                       if (flavor != F_NETBSD6 && dflag)
 +                               fprintf(fp, " type=dir");
 +                       else
 +                               fprintf(fp, " type=file");
 +               }
                 if (keys & (F_UID | F_UNAME)) {
                         if (keys & F_UNAME &&
                             (name = user_from_uid(saveuid, 1)) != NULL)
 
 Thank you!
 
 -- 
 Jose Luis Duran
 


Home | Main Index | Thread Index | Old Index