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: Christos Zoulas <christos%zoulas.com@localhost>
Cc: gnats-bugs%netbsd.org@localhost, gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost
Subject: Re: PR/59838 CVS commit: src/usr.sbin/mtree
Date: Fri, 19 Dec 2025 11:34:45 -0300
On Fri, Dec 19, 2025 at 11:22=E2=80=AFAM Christos Zoulas <christos@zoulas.c=
om> wrote:
>
>
>
> > On Dec 19, 2025, at 9:15=E2=80=AFAM, Jose Luis Duran via gnats <gnats-a=
dmin%netbsd.org@localhost> wrote:
> >
> > The following reply was made to PR bin/59838; it has been noted by GNAT=
S.
> >
>
> [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 chan=
ged.
> > * Note that we always output a /set record for the first direc=
tory.
> > */
> > - if (((keys & (F_UNAME | F_UID)) && (*puid !=3D saveuid)) ||
> > + if ((keys & F_TYPE) ||
> > + ((keys & (F_UNAME | F_UID)) && (*puid !=3D saveuid)) ||
> > ((keys & (F_GNAME | F_GID)) && (*pgid !=3D savegid)) ||
> > - ((keys & F_MODE) && (*pmode !=3D savemode)) ||
> > + ((keys & F_MODE) && (*pmode !=3D savemode)) ||
> > ((keys & F_FLAGS) && (*pflags !=3D saveflags)) ||
> > first) {
> > first =3D 0;
> > - if (flavor !=3D F_NETBSD6 && dflag)
> > - fprintf(fp, "/set type=3Ddir");
> > - else
> > - fprintf(fp, "/set type=3Dfile");
> > + fprintf(fp, "/set");
> > + if (keys & F_TYPE) {
> > + if (flavor !=3D F_NETBSD6 && dflag)
> > + fprintf(fp, " type=3Ddir");
> > + else
> > + fprintf(fp, " type=3Dfile");
> > + }
> > if (keys & (F_UID | F_UNAME)) {
> > if (keys & F_UNAME &&
> > (name =3D user_from_uid(saveuid, 1)) !=3D N=
ULL)
> >
>
> 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=3D<dir/file>" conditionally, for example:
$ mtree -cn -k uid -R type -p /usr/bin/ -x
In this case, "/set uid=3D0" should be printed, notice that type is
indeed excluded from the line.
> christos
>
Home |
Main Index |
Thread Index |
Old Index