Module Name:    src
Committed By:   christos
Date:           Fri Oct  5 01:05:14 UTC 2012

Modified Files:
        src/usr.sbin/mtree: extern.h mtree.8 mtree.c verify.c

Log Message:
add -q flag to silence warnings about symlinks to existing dirs (from OpenBSD
via brooks)


To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/usr.sbin/mtree/extern.h
cvs rdiff -u -r1.56 -r1.57 src/usr.sbin/mtree/mtree.8
cvs rdiff -u -r1.38 -r1.39 src/usr.sbin/mtree/mtree.c
cvs rdiff -u -r1.40 -r1.41 src/usr.sbin/mtree/verify.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.sbin/mtree/extern.h
diff -u src/usr.sbin/mtree/extern.h:1.33 src/usr.sbin/mtree/extern.h:1.34
--- src/usr.sbin/mtree/extern.h:1.33	Thu Oct  4 21:01:07 2012
+++ src/usr.sbin/mtree/extern.h	Thu Oct  4 21:05:14 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: extern.h,v 1.33 2012/10/05 01:01:07 christos Exp $	*/
+/*	$NetBSD: extern.h,v 1.34 2012/10/05 01:05:14 christos Exp $	*/
 
 /*-
  * Copyright (c) 1991, 1993
@@ -70,7 +70,7 @@ const char *rlink(const char *);
 int	 verify(void);
 
 extern int	dflag, eflag, iflag, lflag, mflag,
-		nflag, rflag, sflag, tflag, uflag;
+		nflag, qflag, rflag, sflag, tflag, uflag;
 extern int	mtree_Mflag, mtree_Sflag, mtree_Wflag;
 extern size_t	mtree_lineno;
 extern u_int32_t crc_total;

Index: src/usr.sbin/mtree/mtree.8
diff -u src/usr.sbin/mtree/mtree.8:1.56 src/usr.sbin/mtree/mtree.8:1.57
--- src/usr.sbin/mtree/mtree.8:1.56	Thu Oct  4 21:01:07 2012
+++ src/usr.sbin/mtree/mtree.8	Thu Oct  4 21:05:14 2012
@@ -1,4 +1,4 @@
-.\"	$NetBSD: mtree.8,v 1.56 2012/10/05 01:01:07 christos Exp $
+.\"	$NetBSD: mtree.8,v 1.57 2012/10/05 01:05:14 christos Exp $
 .\"
 .\" Copyright (c) 1989, 1990, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -230,6 +230,12 @@ This is the default.
 Use the file hierarchy rooted in
 .Ar path  ,
 instead of the current directory.
+.It Fl q
+Quiet mode.
+Do not complain when a
+.Dq missing
+directory cannot be created because it already exists.
+This occurs when the directory is a symbolic link.
 .It Fl R Ar keywords
 Remove the specified (whitespace or comma separated) keywords from the current
 set of keywords.

Index: src/usr.sbin/mtree/mtree.c
diff -u src/usr.sbin/mtree/mtree.c:1.38 src/usr.sbin/mtree/mtree.c:1.39
--- src/usr.sbin/mtree/mtree.c:1.38	Thu Oct  4 21:01:07 2012
+++ src/usr.sbin/mtree/mtree.c	Thu Oct  4 21:05:14 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: mtree.c,v 1.38 2012/10/05 01:01:07 christos Exp $	*/
+/*	$NetBSD: mtree.c,v 1.39 2012/10/05 01:05:14 christos Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1990, 1993
@@ -43,7 +43,7 @@ __COPYRIGHT("@(#) Copyright (c) 1989, 19
 #if 0
 static char sccsid[] = "@(#)mtree.c	8.1 (Berkeley) 6/6/93";
 #else
-__RCSID("$NetBSD: mtree.c,v 1.38 2012/10/05 01:01:07 christos Exp $");
+__RCSID("$NetBSD: mtree.c,v 1.39 2012/10/05 01:05:14 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -60,7 +60,7 @@ __RCSID("$NetBSD: mtree.c,v 1.38 2012/10
 
 int	ftsoptions = FTS_PHYSICAL;
 int	cflag, Cflag, dflag, Dflag, eflag, iflag, lflag, mflag,
-    	nflag, rflag, sflag, tflag, uflag, Uflag;
+    	nflag, qflag, rflag, sflag, tflag, uflag, Uflag;
 char	fullpath[MAXPATHLEN];
 
 __dead static	void	usage(void);
@@ -77,7 +77,7 @@ main(int argc, char **argv)
 	init_excludes();
 
 	while ((ch = getopt(argc, argv,
-	    "cCdDeE:f:I:ik:K:lLmMnN:p:PrR:s:StuUWxX:"))
+	    "cCdDeE:f:I:ik:K:lLmMnN:p:PqrR:s:StuUWxX:"))
 	    != -1) {
 		switch((char)ch) {
 		case 'c':
@@ -148,6 +148,9 @@ main(int argc, char **argv)
 			ftsoptions &= ~FTS_LOGICAL;
 			ftsoptions |= FTS_PHYSICAL;
 			break;
+		case 'q':
+			qflag = 1;
+			break;
 		case 'r':
 			rflag = 1;
 			break;

Index: src/usr.sbin/mtree/verify.c
diff -u src/usr.sbin/mtree/verify.c:1.40 src/usr.sbin/mtree/verify.c:1.41
--- src/usr.sbin/mtree/verify.c:1.40	Sun Mar 25 12:07:04 2012
+++ src/usr.sbin/mtree/verify.c	Thu Oct  4 21:05:14 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: verify.c,v 1.40 2012/03/25 16:07:04 christos Exp $	*/
+/*	$NetBSD: verify.c,v 1.41 2012/10/05 01:05:14 christos Exp $	*/
 
 /*-
  * Copyright (c) 1990, 1993
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)verify.c	8.1 (Berkeley) 6/6/93";
 #else
-__RCSID("$NetBSD: verify.c,v 1.40 2012/03/25 16:07:04 christos Exp $");
+__RCSID("$NetBSD: verify.c,v 1.41 2012/10/05 01:05:14 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -175,8 +175,17 @@ miss(NODE *p, char *tail)
 		if (p->type != F_DIR && (dflag || p->flags & F_VISIT))
 			continue;
 		strcpy(tail, p->name);
-		if (!(p->flags & F_VISIT))
-			printf("missing: %s", path);
+		if (!(p->flags & F_VISIT)) {
+			/* Don't print missing message if file exists as a 
+			   symbolic link and the -q flag is set. */
+			struct stat statbuf;
+
+			if (qflag && stat(path, &statbuf) == 0 &&
+			    S_ISDIR(statbuf.st_mode))
+				p->flags |= F_VISIT;
+			else
+				(void)printf("%s missing", path);
+		}
 		switch (p->type) {
 		case F_BLOCK:
 		case F_CHAR:

Reply via email to