diff options
author | peter <peter@FreeBSD.org> | 1998-06-05 14:43:42 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 1998-06-05 14:43:42 +0000 |
commit | 00b7e773c5170cbb781853c5c38133d0549366c5 (patch) | |
tree | f332996c96a22c22db01fd28c26f30b2a2f58072 /usr.sbin/mtree/verify.c | |
parent | 8d3569022185b777193cfe6f8ab66c54846d39a2 (diff) | |
download | FreeBSD-src-00b7e773c5170cbb781853c5c38133d0549366c5.zip FreeBSD-src-00b7e773c5170cbb781853c5c38133d0549366c5.tar.gz |
Create a new flag, "nochange", which will specify that a directory is
to be created if it's missing, otherwise completely ignore it's modes and
owners. Primary intended targets: /usr/src and /usr/obj.
Adjust the 'not created: File exists' message to mention that it's a
directory that's the problem, otherwise it doesn't make sense.
I had created chown-style -L and -P flag to control logical/physical mode
(ie: whether symlinks were followed), but the nochange flag is enough to
get the blasted thing out of my hair so I took them back out.
Diffstat (limited to 'usr.sbin/mtree/verify.c')
-rw-r--r-- | usr.sbin/mtree/verify.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/usr.sbin/mtree/verify.c b/usr.sbin/mtree/verify.c index 6610d3a..09b27e7 100644 --- a/usr.sbin/mtree/verify.c +++ b/usr.sbin/mtree/verify.c @@ -36,7 +36,7 @@ static char sccsid[] = "@(#)verify.c 8.1 (Berkeley) 6/6/93"; #endif static const char rcsid[] = - "$Id$"; + "$Id: verify.c,v 1.5 1997/10/01 06:30:02 charnier Exp $"; #endif /* not lint */ #include <sys/param.h> @@ -117,9 +117,10 @@ vwalk() !fnmatch(ep->name, p->fts_name, FNM_PATHNAME)) || !strcmp(ep->name, p->fts_name)) { ep->flags |= F_VISIT; - if (compare(ep->name, ep, p)) + if ((ep->flags & F_NOCHANGE) == 0 && + compare(ep->name, ep, p)) rval = MISMATCHEXIT; - if (ep->flags & F_IGN) + if (ep->flags & (F_IGN | F_NOCHANGE)) (void)fts_set(t, p, FTS_SKIP); else if (ep->child && ep->type == F_DIR && p->fts_info == FTS_D) { @@ -174,13 +175,13 @@ miss(p, tail) create = 0; if (!(p->flags & F_VISIT) && uflag) if (!(p->flags & (F_UID | F_UNAME))) - (void)printf(" (not created: user not specified)"); + (void)printf(" (directory not created: user not specified)"); else if (!(p->flags & (F_GID | F_GNAME))) - (void)printf(" (not created: group not specified)"); + (void)printf(" (directory not created: group not specified)"); else if (!(p->flags & F_MODE)) - (void)printf(" (not created: mode not specified)"); + (void)printf(" (directory not created: mode not specified)"); else if (mkdir(path, S_IRWXU)) - (void)printf(" (not created: %s)", + (void)printf(" (directory not created: %s)", strerror(errno)); else { create = 1; |