From c96eb6d2e815d0e293e03919014bd08868d9dc73 Mon Sep 17 00:00:00 2001 From: Warner Losh Date: Tue, 25 Jul 2000 19:05:09 +0000 Subject: Add -q. this will cause the warning messages about missing directories to not be printed. This is from OpenBSD (and I think NetBSD also) and makes our mtree more compatible with other BSDs. This makes cross compilation easier than it was before. Other changes will be needed to allow NetBSD or OpenBSD to cross build on FreeBSD, but this is a start. Reviewed by: andrey Obtained from: OpenBSD Concentric Red Circles by: My own stupidity --- usr.sbin/mtree/verify.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'usr.sbin/mtree/verify.c') diff --git a/usr.sbin/mtree/verify.c b/usr.sbin/mtree/verify.c index d25797b9da14..a599fadc5818 100644 --- a/usr.sbin/mtree/verify.c +++ b/usr.sbin/mtree/verify.c @@ -53,7 +53,7 @@ static const char rcsid[] = extern long int crc_total; extern int ftsoptions; -extern int dflag, eflag, rflag, sflag, uflag; +extern int dflag, eflag, qflag, rflag, sflag, uflag; extern char fullpath[MAXPATHLEN]; extern int lineno; @@ -171,8 +171,16 @@ miss(p, tail) if (p->type != F_DIR && (dflag || p->flags & F_VISIT)) continue; (void)strcpy(tail, p->name); - if (!(p->flags & F_VISIT)) - (void)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) + p->flags |= F_VISIT; + else + (void)printf("missing: %s", path); + } if (p->type != F_DIR && p->type != F_LINK) { putchar('\n'); continue; -- cgit v1.3