[patch] [RFC] pathchk quiet flag

Eitan Adler eitanadlerlist at gmail.com
Mon Apr 26 18:03:35 UTC 2010


This path adds a -q flag to stop pathchk from outputting error
messages but still return an error code.

Index: pathchk.c
===================================================================
--- pathchk.c	(revision 207232)
+++ pathchk.c	(working copy)
@@ -51,18 +51,20 @@
 static void	 usage(void);

 static int	 pflag;			/* Perform portability checks */
-
-int
+static int	qflag = 0;			/* stop pathchk from talking */
 main(int argc, char *argv[])
 {
 	int ch, rval;
 	const char *arg;

-	while ((ch = getopt(argc, argv, "p")) > 0) {
+	while ((ch = getopt(argc, argv, "pq")) > 0) {
 		switch (ch) {
 		case 'p':
 			pflag = 1;
 			break;
+		case 'q':
+			qflag = 1;
+			break;
 		default:
 			usage();
 			/*NOTREACHED*/
@@ -85,7 +87,7 @@
 usage(void)
 {

-	fprintf(stderr, "usage: pathchk [-p] pathname ...\n");
+	fprintf(stderr, "usage: pathchk [-qp] pathname ...\n");
 	exit(1);
 }

@@ -118,20 +120,29 @@
 		*end = '\0';

 		if (namemax != -1 && complen > namemax) {
-			warnx("%s: %s: component too long (limit %ld)", path,
-			    p, namemax);
+			if (!qflag)
+			{
+				warnx("%s: %s: component too long (limit %ld)", path,
+				    p, namemax);
+			}
 			goto bad;
 		}

 		if (!pflag && stat(pathd, &sb) == -1 && errno != ENOENT) {
-			warn("%s: %.*s", path, (int)(strlen(pathd) -
-			    complen - 1), pathd);
+			if (!qflag)
+			{
+				warn("%s: %.*s", path, (int)(strlen(pathd) -
+				    complen - 1), pathd);
+			}
 			goto bad;
 		}

 		if (pflag && (badch = portable(p)) >= 0) {
-			warnx("%s: %s: component contains non-portable "
-			    "character `%c'", path, p, badch);
+			if (!qflag)
+			{
+				warnx("%s: %s: component contains non-portable "
+				    "character `%c'", path, p, badch);
+			}
 			goto bad;
 		}

@@ -158,7 +169,10 @@
 	} else
 		pathmax = _POSIX_PATH_MAX;
 	if (pathmax != -1 && strlen(path) >= (size_t)pathmax) {
-		warnx("%s: path too long (limit %ld)", path, pathmax - 1);
+		if (!qflag)
+		{
+			warnx("%s: path too long (limit %ld)", path, pathmax - 1);
+		}
 		goto bad;
 	}


More information about the freebsd-hackers mailing list