From e69ce3e4bfeac368270c1b0f9bfe7643e0d15404 Mon Sep 17 00:00:00 2001 From: dsl Date: Mon, 20 Oct 2003 12:04:38 +0000 Subject: [PATCH] Add a -q (quiet) option to print nothing for clean filesystems. Support in fsck_ffs and stub in fsck_xxx. Push a few more messages through pwarn() instead of printf() to ensure disk name is shown. --- sbin/fsck/fsck.8 | 8 ++++--- sbin/fsck/fsck.c | 45 +++++++++++++++++++++++---------------- sbin/fsck/fsutil.c | 11 +++++++--- sbin/fsck_ext2fs/main.c | 9 +++++--- sbin/fsck_ffs/fsck.h | 5 +++-- sbin/fsck_ffs/fsck_ffs.8 | 15 ++++++------- sbin/fsck_ffs/main.c | 34 ++++++++++++++++------------- sbin/fsck_ffs/setup.c | 30 +++++++++++++------------- sbin/fsck_lfs/main.c | 7 ++++-- sbin/fsck_lfs/utilities.c | 4 ++-- sbin/fsck_msdos/main.c | 9 +++++--- 11 files changed, 102 insertions(+), 75 deletions(-) diff --git a/sbin/fsck/fsck.8 b/sbin/fsck/fsck.8 index 7f7fa39ae5ab..3133105876b5 100644 --- a/sbin/fsck/fsck.8 +++ b/sbin/fsck/fsck.8 @@ -1,4 +1,4 @@ -.\" $NetBSD: fsck.8,v 1.28 2003/02/25 10:34:55 wiz Exp $ +.\" $NetBSD: fsck.8,v 1.29 2003/10/20 12:04:38 dsl Exp $ .\" .\" Copyright (c) 1996 Christos Zoulas. All rights reserved. .\" @@ -27,7 +27,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd June 18, 2001 +.Dd October 20, 2003 .Dt FSCK 8 .Os .Sh NAME @@ -35,7 +35,7 @@ .Nd file system consistency check and interactive repair .Sh SYNOPSIS .Nm -.Op Fl dfnpvy +.Op Fl dfnpqvy .Op Fl l Ar maxparallel .Op Fl t Ar fstype .Op Fl T Ar fstype:fsoptions @@ -101,6 +101,8 @@ to exit with a non-zero .Xr exit 3 code, so as to alert any invoking program or script that human intervention is required. +.It Fl q +Quiet mode, do not output any messages for clean filesystems. .It Fl t Ar fstype Invoke .Nm diff --git a/sbin/fsck/fsck.c b/sbin/fsck/fsck.c index b944afbdac71..b879ae653ff8 100644 --- a/sbin/fsck/fsck.c +++ b/sbin/fsck/fsck.c @@ -1,4 +1,4 @@ -/* $NetBSD: fsck.c,v 1.30 2003/08/07 10:04:15 agc Exp $ */ +/* $NetBSD: fsck.c,v 1.31 2003/10/20 12:04:38 dsl Exp $ */ /* * Copyright (c) 1980, 1989, 1993, 1994 @@ -71,7 +71,7 @@ #include #ifndef lint -__RCSID("$NetBSD: fsck.c,v 1.30 2003/08/07 10:04:15 agc Exp $"); +__RCSID("$NetBSD: fsck.c,v 1.31 2003/10/20 12:04:38 dsl Exp $"); #endif /* not lint */ #include @@ -139,37 +139,34 @@ main(int argc, char *argv[]) TAILQ_INIT(&selhead); TAILQ_INIT(&opthead); - while ((i = getopt(argc, argv, "dvpfnyl:t:T:")) != -1) + while ((i = getopt(argc, argv, "dfl:npqT:t:vy")) != -1) { switch (i) { case 'd': flags |= CHECK_DEBUG; + continue; + + case 'f': + flags |= CHECK_FORCE; break; - case 'v': - flags |= CHECK_VERBOSE; + case 'n': break; case 'p': - case 'f': - if (i == 'p') - flags |= CHECK_PREEN; - else - flags |= CHECK_FORCE; - /*FALLTHROUGH*/ - case 'n': - case 'y': - globopt[1] = i; - catopt(&options, globopt); + flags |= CHECK_PREEN; + break; + + case 'q': break; case 'l': maxrun = atoi(optarg); - break; + continue; case 'T': if (*optarg) addoption(optarg); - break; + continue; case 't': if (TAILQ_FIRST(&selhead) != NULL) @@ -177,6 +174,13 @@ main(int argc, char *argv[]) maketypelist(optarg); vfstype = optarg; + continue; + + case 'v': + flags |= CHECK_VERBOSE; + continue; + + case 'y': break; case '?': @@ -185,6 +189,11 @@ main(int argc, char *argv[]) /* NOTREACHED */ } + /* Pass option to fsck_xxxfs */ + globopt[1] = i; + catopt(&options, globopt); + } + argc -= optind; argv += optind; @@ -556,7 +565,7 @@ static void usage(void) { static const char common[] = - "[-dfnpvy] [-T fstype:fsoptions] [-t fstype]"; + "[-dfnpqvy] [-T fstype:fsoptions] [-t fstype]"; (void)fprintf(stderr, "Usage: %s %s [special|node]...\n", getprogname(), common); diff --git a/sbin/fsck/fsutil.c b/sbin/fsck/fsutil.c index 5eddd0172b61..892767c71cc5 100644 --- a/sbin/fsck/fsutil.c +++ b/sbin/fsck/fsutil.c @@ -1,4 +1,4 @@ -/* $NetBSD: fsutil.c,v 1.13 2003/08/07 10:04:16 agc Exp $ */ +/* $NetBSD: fsutil.c,v 1.14 2003/10/20 12:04:38 dsl Exp $ */ /* * Copyright (c) 1990, 1993 @@ -31,7 +31,7 @@ #include #ifndef lint -__RCSID("$NetBSD: fsutil.c,v 1.13 2003/08/07 10:04:16 agc Exp $"); +__RCSID("$NetBSD: fsutil.c,v 1.14 2003/10/20 12:04:38 dsl Exp $"); #endif /* not lint */ #include @@ -52,6 +52,7 @@ __RCSID("$NetBSD: fsutil.c,v 1.13 2003/08/07 10:04:16 agc Exp $"); static const char *dev = NULL; static int hot = 0; static int preen = 0; +int quiet; void setcdevname(const char *cd, int pr) @@ -92,7 +93,11 @@ vmsg(int fatal, const char *fmt, va_list ap) { if (!fatal && preen) - (void) printf("%s: ", dev); + (void)printf("%s: ", dev); + if (quiet && !preen) { + (void)printf("** %s (vmsg)\n", dev); + quiet = 0; + } (void) vprintf(fmt, ap); diff --git a/sbin/fsck_ext2fs/main.c b/sbin/fsck_ext2fs/main.c index 9df458ad5869..95c1391184c2 100644 --- a/sbin/fsck_ext2fs/main.c +++ b/sbin/fsck_ext2fs/main.c @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.13 2003/10/05 17:48:49 bouyer Exp $ */ +/* $NetBSD: main.c,v 1.14 2003/10/20 12:04:38 dsl Exp $ */ /* * Copyright (c) 1980, 1986, 1993 @@ -69,7 +69,7 @@ __COPYRIGHT("@(#) Copyright (c) 1980, 1986, 1993\n\ #if 0 static char sccsid[] = "@(#)main.c 8.2 (Berkeley) 1/23/94"; #else -__RCSID("$NetBSD: main.c,v 1.13 2003/10/05 17:48:49 bouyer Exp $"); +__RCSID("$NetBSD: main.c,v 1.14 2003/10/20 12:04:38 dsl Exp $"); #endif #endif /* not lint */ @@ -109,7 +109,7 @@ main(argc, argv) sync(); skipclean = 1; - while ((ch = getopt(argc, argv, "b:c:dfm:npy")) != -1) { + while ((ch = getopt(argc, argv, "b:c:dfm:npqy")) != -1) { switch (ch) { case 'b': skipclean = 0; @@ -141,6 +141,9 @@ main(argc, argv) preen++; break; + case 'q': /* Quiet not implemented */ + break; + case 'y': yflag++; nflag = 0; diff --git a/sbin/fsck_ffs/fsck.h b/sbin/fsck_ffs/fsck.h index 832bcd3db926..d594a15c2cfa 100644 --- a/sbin/fsck_ffs/fsck.h +++ b/sbin/fsck_ffs/fsck.h @@ -1,4 +1,4 @@ -/* $NetBSD: fsck.h,v 1.35 2003/08/07 10:04:19 agc Exp $ */ +/* $NetBSD: fsck.h,v 1.36 2003/10/20 12:04:38 dsl Exp $ */ /* * Copyright (c) 1980, 1986, 1993 @@ -240,6 +240,7 @@ int doinglevel2; /* converting to new inode format */ int newinofmt; /* filesystem has new inode format */ char usedsoftdep; /* just fix soft dependency inconsistencies */ int preen; /* just fix normal inconsistencies */ +int quiet; /* Don't print anything if clean */ int forceimage; /* file system is an image file */ int doswap; /* convert byte order */ int needswap; /* need to convert byte order in memory */ @@ -255,7 +256,7 @@ int fsreadfd; /* file descriptor for reading file system */ int fswritefd; /* file descriptor for writing file system */ int rerun; /* rerun fsck. Only used in non-preen mode */ char resolved; /* cleared if unresolved changes => not clean */ -int isappleufs; /* filesystem is Apple UFS */ +int isappleufs; /* filesystem is Apple UFS */ daddr_t maxfsblock; /* number of blocks in the file system */ char *blockmap; /* ptr to primary blk allocation map */ diff --git a/sbin/fsck_ffs/fsck_ffs.8 b/sbin/fsck_ffs/fsck_ffs.8 index 082087102539..67bac6be30a4 100644 --- a/sbin/fsck_ffs/fsck_ffs.8 +++ b/sbin/fsck_ffs/fsck_ffs.8 @@ -1,4 +1,4 @@ -.\" $NetBSD: fsck_ffs.8,v 1.33 2003/08/07 10:04:20 agc Exp $ +.\" $NetBSD: fsck_ffs.8,v 1.34 2003/10/20 12:04:38 dsl Exp $ .\" .\" Copyright (c) 1980, 1989, 1991, 1993 .\" The Regents of the University of California. All rights reserved. @@ -29,7 +29,7 @@ .\" .\" @(#)fsck.8 8.3 (Berkeley) 11/29/94 .\" -.Dd May 6, 2001 +.Dd October 20, 2003 .Dt FSCK_FFS 8 .Os .Sh NAME @@ -37,17 +37,12 @@ .Nd Fast File System consistency check and interactive repair .Sh SYNOPSIS .Nm -.Op Fl a +.Op Fl adFfpq .Op Fl B Ar byte order .Op Fl b Ar block# .Op Fl c Ar level -.Op Fl d -.Op Fl F -.Op Fl f .Op Fl m Ar mode -.Op Fl p -.Op Fl y -.Op Fl n +.Op Fl y | n .Ar filesystem ... .Sh DESCRIPTION .Nm @@ -230,6 +225,8 @@ which is assumed to be affirmative; do not open the file system for writing. .It Fl p Specify ``preen'' mode, described above. +.It Fl q +Quiet mode, do not output any messages for clean filesystems. .It Fl y Assume a yes response to all questions asked by .Nm ; diff --git a/sbin/fsck_ffs/main.c b/sbin/fsck_ffs/main.c index e3a65c9e5d18..0853e10bc1b6 100644 --- a/sbin/fsck_ffs/main.c +++ b/sbin/fsck_ffs/main.c @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.46 2003/08/07 10:04:20 agc Exp $ */ +/* $NetBSD: main.c,v 1.47 2003/10/20 12:04:38 dsl Exp $ */ /* * Copyright (c) 1980, 1986, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1980, 1986, 1993\n\ #if 0 static char sccsid[] = "@(#)main.c 8.6 (Berkeley) 5/14/95"; #else -__RCSID("$NetBSD: main.c,v 1.46 2003/08/07 10:04:20 agc Exp $"); +__RCSID("$NetBSD: main.c,v 1.47 2003/10/20 12:04:38 dsl Exp $"); #endif #endif /* not lint */ @@ -94,7 +94,7 @@ main(argc, argv) forceimage = 0; endian = 0; isappleufs = 0; - while ((ch = getopt(argc, argv, "aB:b:c:dFfm:npy")) != -1) { + while ((ch = getopt(argc, argv, "aB:b:c:dFfm:npqy")) != -1) { switch (ch) { case 'a': isappleufs = 1; @@ -147,6 +147,10 @@ main(argc, argv) preen++; break; + case 'q': + quiet++; + break; + case 'y': yflag++; nflag = 0; @@ -241,10 +245,10 @@ checkfilesys(filesys, mntpt, auxdata, child) * 1: scan inodes tallying blocks used */ if (preen == 0) { - printf("** Last Mounted on %s\n", sblock->fs_fsmnt); + pwarn("** Last Mounted on %s\n", sblock->fs_fsmnt); if (hotroot()) - printf("** Root file system\n"); - printf("** Phase 1 - Check Blocks and Sizes\n"); + pwarn("** Root file system\n"); + pwarn("** Phase 1 - Check Blocks and Sizes\n"); } pass1(); @@ -256,7 +260,7 @@ checkfilesys(filesys, mntpt, auxdata, child) pfatal("INTERNAL ERROR: dups with -p\n"); if (usedsoftdep) pfatal("INTERNAL ERROR: dups with softdep\n"); - printf("** Phase 1b - Rescan For More DUPS\n"); + pwarn("** Phase 1b - Rescan For More DUPS\n"); pass1b(); } @@ -264,28 +268,28 @@ checkfilesys(filesys, mntpt, auxdata, child) * 2: traverse directories from root to mark all connected directories */ if (preen == 0) - printf("** Phase 2 - Check Pathnames\n"); + pwarn("** Phase 2 - Check Pathnames\n"); pass2(); /* * 3: scan inodes looking for disconnected directories */ if (preen == 0) - printf("** Phase 3 - Check Connectivity\n"); + pwarn("** Phase 3 - Check Connectivity\n"); pass3(); /* * 4: scan inodes looking for disconnected files; check reference counts */ if (preen == 0) - printf("** Phase 4 - Check Reference Counts\n"); + pwarn("** Phase 4 - Check Reference Counts\n"); pass4(); /* * 5: check and repair resource counts in cylinder groups */ if (preen == 0) - printf("** Phase 5 - Check Cyl groups\n"); + pwarn("** Phase 5 - Check Cyl groups\n"); pass5(); /* @@ -362,9 +366,9 @@ checkfilesys(filesys, mntpt, auxdata, child) if (!fsmodified) return (0); if (!preen) - printf("\n***** FILE SYSTEM WAS MODIFIED *****\n"); + pwarn("\n***** FILE SYSTEM WAS MODIFIED *****\n"); if (rerun) - printf("\n***** PLEASE RERUN FSCK *****\n"); + pwarn("\n***** PLEASE RERUN FSCK *****\n"); if (hotroot()) { struct statfs stfs_buf; /* @@ -387,7 +391,7 @@ checkfilesys(filesys, mntpt, auxdata, child) } } if (!preen) - printf("\n***** REBOOT NOW *****\n"); + pwarn("\n***** REBOOT NOW *****\n"); sync(); return (4); } @@ -399,7 +403,7 @@ usage() { (void) fprintf(stderr, - "Usage: %s [-dFfnpy] [-B be|le] [-b block] [-c level] [-m mode]" + "Usage: %s [-dFfnpqy] [-B be|le] [-b block] [-c level] [-m mode]" " filesystem ...\n", getprogname()); exit(1); diff --git a/sbin/fsck_ffs/setup.c b/sbin/fsck_ffs/setup.c index afe64caa53bd..dd8cf7da86dd 100644 --- a/sbin/fsck_ffs/setup.c +++ b/sbin/fsck_ffs/setup.c @@ -1,4 +1,4 @@ -/* $NetBSD: setup.c,v 1.62 2003/08/07 10:04:21 agc Exp $ */ +/* $NetBSD: setup.c,v 1.63 2003/10/20 12:04:38 dsl Exp $ */ /* * Copyright (c) 1980, 1986, 1993 @@ -34,7 +34,7 @@ #if 0 static char sccsid[] = "@(#)setup.c 8.10 (Berkeley) 5/9/95"; #else -__RCSID("$NetBSD: setup.c,v 1.62 2003/08/07 10:04:21 agc Exp $"); +__RCSID("$NetBSD: setup.c,v 1.63 2003/10/20 12:04:38 dsl Exp $"); #endif #endif /* not lint */ @@ -107,16 +107,15 @@ setup(dev) printf("Can't open %s: %s\n", dev, strerror(errno)); return (0); } - if (preen == 0) - printf("** %s", dev); if (nflag || (fswritefd = open(dev, O_WRONLY)) < 0) { fswritefd = -1; if (preen) pfatal("NO WRITE ACCESS"); - printf(" (NO WRITE)"); - } - if (preen == 0) - printf("\n"); + printf("** %s (NO WRITE)\n", dev); + quiet = 0; + } else + if (!preen && !quiet) + printf("** %s\n", dev); fsmodified = 0; lfdir = 0; initbarea(&sblk); @@ -170,8 +169,9 @@ setup(dev) } if (sblock->fs_clean & FS_ISCLEAN) { if (doskipclean) { - pwarn("%sile system is clean; not checking\n", - preen ? "f" : "** F"); + if (!quiet) + pwarn("%sile system is clean; not checking\n", + preen ? "f" : "** F"); return (-1); } if (!preen && !doswap) @@ -381,14 +381,14 @@ setup(dev) bmapsize = roundup(howmany(maxfsblock, NBBY), sizeof(int16_t)); blockmap = calloc((unsigned)bmapsize, sizeof (char)); if (blockmap == NULL) { - printf("cannot alloc %u bytes for blockmap\n", + pwarn("cannot alloc %u bytes for blockmap\n", (unsigned)bmapsize); goto badsblabel; } inostathead = calloc((unsigned)(sblock->fs_ncg), sizeof(struct inostatlist)); if (inostathead == NULL) { - printf("cannot alloc %u bytes for inostathead\n", + pwarn("cannot alloc %u bytes for inostathead\n", (unsigned)(sizeof(struct inostatlist) * (sblock->fs_ncg))); goto badsblabel; } @@ -411,13 +411,13 @@ setup(dev) inphead = (struct inoinfo **)calloc((unsigned)numdirs, sizeof(struct inoinfo *)); if (inpsort == NULL || inphead == NULL) { - printf("cannot alloc %u bytes for inphead\n", + pwarn("cannot alloc %u bytes for inphead\n", (unsigned)(numdirs * sizeof(struct inoinfo *))); goto badsblabel; } cgrp = malloc(sblock->fs_cgsize); if (cgrp == NULL) { - printf("cannot alloc %u bytes for cylinder group\n", + pwarn("cannot alloc %u bytes for cylinder group\n", sblock->fs_cgsize); goto badsblabel; } @@ -641,7 +641,7 @@ readsb(listerr) pfatal("INTERNAL ERROR: unknown endian"); } if (needswap) - printf("** Swapped byte order\n"); + pwarn("** Swapped byte order\n"); /* swap SB byte order if asked */ if (doswap) ffs_sb_swap(sblk.b_un.b_fs, sblk.b_un.b_fs); diff --git a/sbin/fsck_lfs/main.c b/sbin/fsck_lfs/main.c index d331eed021fa..9bd11806449a 100644 --- a/sbin/fsck_lfs/main.c +++ b/sbin/fsck_lfs/main.c @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.15 2003/08/07 10:04:23 agc Exp $ */ +/* $NetBSD: main.c,v 1.16 2003/10/20 12:04:38 dsl Exp $ */ /* * Copyright (c) 1980, 1986, 1993 @@ -64,7 +64,7 @@ main(int argc, char **argv) { int ch; int ret = 0; - char *optstring = "b:dfi:m:npy"; + char *optstring = "b:dfi:m:npqy"; sync(); skipclean = 1; @@ -106,6 +106,9 @@ main(int argc, char **argv) preen++; break; + case 'q': /* Quiet not implemented */ + break; + case 'y': yflag++; nflag = 0; diff --git a/sbin/fsck_lfs/utilities.c b/sbin/fsck_lfs/utilities.c index 2585120b43dc..a6759365d1be 100644 --- a/sbin/fsck_lfs/utilities.c +++ b/sbin/fsck_lfs/utilities.c @@ -1,4 +1,4 @@ -/* $NetBSD: utilities.c,v 1.15 2003/08/07 10:04:24 agc Exp $ */ +/* $NetBSD: utilities.c,v 1.16 2003/10/20 12:04:38 dsl Exp $ */ /* * Copyright (c) 1980, 1986, 1993 @@ -92,7 +92,7 @@ reply(char *question) if (preen) err(1, "INTERNAL ERROR: GOT TO reply()"); persevere = !strcmp(question, "CONTINUE"); - printf("\n"); + pwarn("\n"); if (!persevere && nflag) { printf("%s? no\n\n", question); return (0); diff --git a/sbin/fsck_msdos/main.c b/sbin/fsck_msdos/main.c index 3c29c77153e8..008416ffca35 100644 --- a/sbin/fsck_msdos/main.c +++ b/sbin/fsck_msdos/main.c @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.13 2002/05/25 23:45:13 wiz Exp $ */ +/* $NetBSD: main.c,v 1.14 2003/10/20 12:04:38 dsl Exp $ */ /* * Copyright (C) 1995 Wolfgang Solfrank @@ -35,7 +35,7 @@ #include #ifndef lint -__RCSID("$NetBSD: main.c,v 1.13 2002/05/25 23:45:13 wiz Exp $"); +__RCSID("$NetBSD: main.c,v 1.14 2003/10/20 12:04:38 dsl Exp $"); #endif /* not lint */ #include @@ -71,7 +71,7 @@ main(argc, argv) int ret = 0, erg; int ch; - while ((ch = getopt(argc, argv, "pynf")) != -1) { + while ((ch = getopt(argc, argv, "pqynf")) != -1) { switch (ch) { case 'f': /* @@ -93,6 +93,9 @@ main(argc, argv) alwaysyes = alwaysno = 0; break; + case 'q': /* quite not implemented */ + break; + default: usage(); break;