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) {
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to