Module Name:    src
Committed By:   christos
Date:           Wed Jan 12 18:28:19 UTC 2011

Modified Files:
        src/usr.bin/ypcat: ypcat.1 ypcat.c

Log Message:
add -s option to compress spaces.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/usr.bin/ypcat/ypcat.1
cvs rdiff -u -r1.14 -r1.15 src/usr.bin/ypcat/ypcat.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.bin/ypcat/ypcat.1
diff -u src/usr.bin/ypcat/ypcat.1:1.17 src/usr.bin/ypcat/ypcat.1:1.18
--- src/usr.bin/ypcat/ypcat.1:1.17	Sun Jun 21 11:05:59 2009
+++ src/usr.bin/ypcat/ypcat.1	Wed Jan 12 13:28:19 2011
@@ -1,4 +1,4 @@
-.\"	$NetBSD: ypcat.1,v 1.17 2009/06/21 15:05:59 wiz Exp $
+.\"	$NetBSD: ypcat.1,v 1.18 2011/01/12 18:28:19 christos Exp $
 .\"
 .\" Copyright (c) 1993 Winning Strategies, Inc.
 .\" All rights reserved.
@@ -28,7 +28,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 20, 2009
+.Dd January 12, 2011
 .Dt YPCAT 1
 .Os
 .Sh NAME
@@ -36,8 +36,8 @@
 .Nd print the values of all keys in a NIS database
 .Sh SYNOPSIS
 .Nm
-.Op Fl kt
 .Op Fl d Ar domainname
+.Op Fl kst
 .Ar mapname
 .Nm
 .Fl x
@@ -57,6 +57,10 @@
 Display map keys.
 This option is useful with maps in which the values are null or the key
 is not part of the value.
+.It Fl s
+When printing the value of a key, compress all whitespace characters to
+a single space.
+Useful when values contain newlines.
 .It Fl t
 Inhibit translation of map nicknames
 to their corresponding map names.

Index: src/usr.bin/ypcat/ypcat.c
diff -u src/usr.bin/ypcat/ypcat.c:1.14 src/usr.bin/ypcat/ypcat.c:1.15
--- src/usr.bin/ypcat/ypcat.c:1.14	Sun Jun 21 10:58:16 2009
+++ src/usr.bin/ypcat/ypcat.c	Wed Jan 12 13:28:19 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: ypcat.c,v 1.14 2009/06/21 14:58:16 wiz Exp $	*/
+/* $NetBSD: ypcat.c,v 1.15 2011/01/12 18:28:19 christos Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993 Theo de Raadt <dera...@fsa.ca>
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: ypcat.c,v 1.14 2009/06/21 14:58:16 wiz Exp $");
+__RCSID("$NetBSD: ypcat.c,v 1.15 2011/01/12 18:28:19 christos Exp $");
 #endif
 
 #include <sys/param.h>
@@ -52,6 +52,8 @@
 static int	printit(int, char *, int, char *, int, char *);
 static void	usage(void) __attribute__((__noreturn__));
 
+static int	compressspace;
+
 
 int
 main(int argc, char *argv[])
@@ -69,8 +71,20 @@
 	domainname = NULL;
 	notrans = key = 0;
 	ypaliases = ypalias_init();
-	while((c = getopt(argc, argv, "xd:kt")) != -1) {
+	while((c = getopt(argc, argv, "d:kstx")) != -1) {
 		switch (c) {
+		case 'd':
+			domainname = optarg;
+			break;
+
+		case 'k':
+			key++;
+			break;
+
+		case 's':
+			compressspace++;
+			break;
+
 		case 'x':
 			for (i = 0; ypaliases[i].alias; i++)
 				printf("Use \"%s\" for \"%s\"\n",
@@ -78,18 +92,10 @@
 				    ypaliases[i].name);
 			return 0;
 
-		case 'd':
-			domainname = optarg;
-			break;
-
 		case 't':
 			notrans++;
 			break;
 
-		case 'k':
-			key++;
-			break;
-
 		default:
 			usage();
 		}
@@ -137,10 +143,28 @@
 		return instatus;
 	if (indata)
 		(void)printf("%*.*s", inkeylen, inkeylen, inkey);
-	if (invallen)
-		(void)printf("%s%*.*s", (indata ? " " : ""), invallen, invallen,
-		    inval);
-	(void)printf("\n");
+	if (invallen) {
+		if (indata)
+			(void)putc(' ', stdout);
+		if (compressspace) {
+			int i;
+			int hadspace = 0;
+
+			for (i = 0; i < invallen; i++) {
+				if (isspace((unsigned char)inval[i])) {
+					if (hadspace)
+						continue;
+					hadspace = 1;
+					(void)putc(' ', stdout);
+				} else {
+					hadspace = 0;
+					(void)putc(inval[i], stdout);
+				}
+			}
+		} else
+			(void)printf("%*.*s", invallen, invallen, inval);
+	}
+	(void)putc('\n', stdout);
 	return 0;
 }
 

Reply via email to