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
On Fri, Dec 19, 2025 at 11:22 AM Christos Zoulas <christos%zoulas.com@localhost> wrote:
>
>
>
> > On Dec 19, 2025, at 9:15 AM, Jose Luis Duran via gnats <gnats-admin%netbsd.org@localhost> wrote:
> >
> > The following reply was made to PR bin/59838; it has been noted by GNATS.
> >
>
> [stuff deleted]
>
> > 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)
> >
>
> We do we need to check F_TYPE twice? It is in the outer if...
The outer check is for the case where "/set" should not be printed at
all, without any key/value pair, for example:
$ mtree -cn -k flags -R flags,type -p /usr/bin/ -x
In that corner case, no "/set" line should be printed.
The inner check is to print "type=<dir/file>" conditionally, for example:
$ mtree -cn -k uid -R type -p /usr/bin/ -x
In this case, "/set uid=0" should be printed, notice that type is
indeed excluded from the line.
> christos
>
Home |
Main Index |
Thread Index |
Old Index