summaryrefslogtreecommitdiffstats
path: root/usr.sbin/mtree/verify.c
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>1998-06-05 14:43:42 +0000
committerpeter <peter@FreeBSD.org>1998-06-05 14:43:42 +0000
commit00b7e773c5170cbb781853c5c38133d0549366c5 (patch)
treef332996c96a22c22db01fd28c26f30b2a2f58072 /usr.sbin/mtree/verify.c
parent8d3569022185b777193cfe6f8ab66c54846d39a2 (diff)
downloadFreeBSD-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.c15
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;
OpenPOWER on IntegriCloud