From owner-svn-src-all@FreeBSD.ORG  Thu Nov  8 02:55:31 2012
Return-Path: <owner-svn-src-all@FreeBSD.ORG>
Delivered-To: svn-src-all@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
 by hub.freebsd.org (Postfix) with ESMTP id 1A629DD;
 Thu,  8 Nov 2012 02:55:31 +0000 (UTC)
 (envelope-from grog@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org
 [IPv6:2001:1900:2254:2068::e6a:0])
 by mx1.freebsd.org (Postfix) with ESMTP id E99F38FC08;
 Thu,  8 Nov 2012 02:55:30 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
 by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qA82tUUu088809;
 Thu, 8 Nov 2012 02:55:30 GMT (envelope-from grog@svn.freebsd.org)
Received: (from grog@localhost)
 by svn.freebsd.org (8.14.5/8.14.5/Submit) id qA82tUQc088806;
 Thu, 8 Nov 2012 02:55:30 GMT (envelope-from grog@svn.freebsd.org)
Message-Id: <201211080255.qA82tUQc088806@svn.freebsd.org>
From: Greg Lehey <grog@FreeBSD.org>
Date: Thu, 8 Nov 2012 02:55:30 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
 svn-src-head@freebsd.org
Subject: svn commit: r242743 - head/usr.bin/locale
X-SVN-Group: head
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-all@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: "SVN commit messages for the entire src tree \(except for &quot;
 user&quot; and &quot; projects&quot; \)" <svn-src-all.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-all>,
 <mailto:svn-src-all-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-all>
List-Post: <mailto:svn-src-all@freebsd.org>
List-Help: <mailto:svn-src-all-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-all>,
 <mailto:svn-src-all-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Thu, 08 Nov 2012 02:55:31 -0000

Author: grog
Date: Thu Nov  8 02:55:30 2012
New Revision: 242743
URL: http://svnweb.freebsd.org/changeset/base/242743

Log:
  Make parameters to -c and -k options optional.  If no parameters are
  supplied, print information for all keywords.
  
  Improve output of -c option, in particular in conjunction with -k
  option.
  
  MFC after:	14 days

Modified:
  head/usr.bin/locale/locale.1
  head/usr.bin/locale/locale.c

Modified: head/usr.bin/locale/locale.1
==============================================================================
--- head/usr.bin/locale/locale.1	Thu Nov  8 02:29:16 2012	(r242742)
+++ head/usr.bin/locale/locale.1	Thu Nov  8 02:55:30 2012	(r242743)
@@ -40,7 +40,7 @@
 .Op Ar prefix
 .Nm
 .Op Fl ck
-.Ar keyword ...
+.Op Ar keyword ...
 .Sh DESCRIPTION
 The
 .Nm
@@ -74,8 +74,12 @@ directory.
 Print names of all available charmaps.
 .It Fl k
 Print the names and values of all selected keywords.
+If no keywords are selected, print the names and values of all defined
+keywords.
 .It Fl c
 Print the category name for all selected keywords.
+If no keywords are selected, print the category name for all defined
+keywords.
 .El
 .Sh IMPLEMENTATION NOTES
 The special

Modified: head/usr.bin/locale/locale.c
==============================================================================
--- head/usr.bin/locale/locale.c	Thu Nov  8 02:29:16 2012	(r242742)
+++ head/usr.bin/locale/locale.c	Thu Nov  8 02:55:30 2012	(r242743)
@@ -253,12 +253,10 @@ main(int argc, char *argv[])
 	/* validate arguments */
 	if (all_locales && all_charmaps)
 		usage();
-	if ((all_locales || all_charmaps) && argc > 0) 
+	if ((all_locales || all_charmaps) && argc > 0)
 		usage();
 	if ((all_locales || all_charmaps) && (prt_categories || prt_keywords))
 		usage();
-	if ((prt_categories || prt_keywords) && argc <= 0)
-		usage();
 
 	/* process '-a' */
 	if (all_locales) {
@@ -282,13 +280,19 @@ main(int argc, char *argv[])
 			}
 
 	/* process '-c' and/or '-k' */
-	if (prt_categories || prt_keywords || argc > 0) {
-		setlocale(LC_ALL, "");
-		while (argc > 0) {
-			showdetails(*argv);
-			argv++;
-			argc--;
-		}
+	if (prt_categories || prt_keywords) {
+		if (argc > 0) {
+			setlocale(LC_ALL, "");
+                        while (argc > 0) {
+				showdetails(*argv);
+                                argv++;
+                                argc--;
+                        }
+                } else {
+			uint i;
+                        for (i = 0; i < sizeof (kwinfo) / sizeof (struct _kwinfo); i++)
+				showdetails ((char *)kwinfo [i].name);
+                }
 		exit(0);
 	}
 
@@ -303,7 +307,7 @@ usage(void)
 {
 	printf("Usage: locale [ -a | -m ]\n"
                "       locale -k list [prefix]\n"
-               "       locale [ -ck ] keyword ...\n");
+               "       locale [ -ck ] [keyword ...]\n");
 	exit(1);
 }
 
@@ -612,7 +616,10 @@ showdetails(char *kw)
 	}
 
 	if (prt_categories) {
-		printf("%s\n", lookup_localecat(cat));
+                  if (prt_keywords)
+			printf("%-20s ", lookup_localecat(cat));
+                  else
+	                printf("%-20s\t%s\n", kw, lookup_localecat(cat));
 	}
 
 	if (prt_keywords) {