summaryrefslogtreecommitdiffstats
path: root/usr.bin/locale/locale.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/locale/locale.c')
-rw-r--r--usr.bin/locale/locale.c35
1 files changed, 29 insertions, 6 deletions
diff --git a/usr.bin/locale/locale.c b/usr.bin/locale/locale.c
index a4b6b40..cad3afe 100644
--- a/usr.bin/locale/locale.c
+++ b/usr.bin/locale/locale.c
@@ -55,7 +55,7 @@ const char *lookup_localecat(int);
char *kwval_lconv(int);
int kwval_lookup(char *, char **, int *, int *);
void showdetails(char *);
-void showkeywordslist(void);
+void showkeywordslist(char *substring);
void showlocale(void);
void usage(void);
@@ -190,6 +190,18 @@ struct _kwinfo {
{ "abmon_10", 1, LC_TIME, ABMON_10, "" },
{ "abmon_11", 1, LC_TIME, ABMON_11, "" },
{ "abmon_12", 1, LC_TIME, ABMON_12, "" },
+ { "altmon_1", 1, LC_TIME, ALTMON_1, "(FreeBSD only)" },
+ { "altmon_2", 1, LC_TIME, ALTMON_2, "(FreeBSD only)" },
+ { "altmon_3", 1, LC_TIME, ALTMON_3, "(FreeBSD only)" },
+ { "altmon_4", 1, LC_TIME, ALTMON_4, "(FreeBSD only)" },
+ { "altmon_5", 1, LC_TIME, ALTMON_5, "(FreeBSD only)" },
+ { "altmon_6", 1, LC_TIME, ALTMON_6, "(FreeBSD only)" },
+ { "altmon_7", 1, LC_TIME, ALTMON_7, "(FreeBSD only)" },
+ { "altmon_8", 1, LC_TIME, ALTMON_8, "(FreeBSD only)" },
+ { "altmon_9", 1, LC_TIME, ALTMON_9, "(FreeBSD only)" },
+ { "altmon_10", 1, LC_TIME, ALTMON_10, "(FreeBSD only)" },
+ { "altmon_11", 1, LC_TIME, ALTMON_11, "(FreeBSD only)" },
+ { "altmon_12", 1, LC_TIME, ALTMON_12, "(FreeBSD only)" },
{ "era", 1, LC_TIME, ERA, "(unavailable)" },
{ "era_d_fmt", 1, LC_TIME, ERA_D_FMT, "(unavailable)" },
{ "era_d_t_fmt", 1, LC_TIME, ERA_D_T_FMT, "(unavailable)" },
@@ -217,7 +229,7 @@ main(int argc, char *argv[])
int ch;
int tmp;
- while ((ch = getopt(argc, argv, "ackm")) != -1) {
+ while ((ch = getopt(argc, argv, "ackms:")) != -1) {
switch (ch) {
case 'a':
all_locales = 1;
@@ -265,7 +277,7 @@ main(int argc, char *argv[])
if (prt_keywords && argc > 0)
while (tmp < argc)
if (strcasecmp(argv[tmp++], "list") == 0) {
- showkeywordslist();
+ showkeywordslist(argv[tmp]);
exit(0);
}
@@ -290,7 +302,8 @@ void
usage(void)
{
printf("Usage: locale [ -a | -m ]\n"
- " locale [ -ck ] name ...\n");
+ " locale -k list [prefix]\n"
+ " locale [ -ck ] keyword ...\n");
exit(1);
}
@@ -594,6 +607,7 @@ showdetails(char *kw)
* invalid keyword specified.
* XXX: any actions?
*/
+ fprintf(stderr, "Unknown keyword: `%s'\n", kw);
return;
}
@@ -639,16 +653,25 @@ lookup_localecat(int cat)
* Show list of keywords
*/
void
-showkeywordslist(void)
+showkeywordslist(char *substring)
{
size_t i;
#define FMT "%-20s %-12s %-7s %-20s\n"
- printf("List of available keywords\n\n");
+ if (substring == NULL)
+ printf("List of available keywords\n\n");
+ else
+ printf("List of available keywords starting with '%s'\n\n",
+ substring);
printf(FMT, "Keyword", "Category", "Type", "Comment");
printf("-------------------- ------------ ------- --------------------\n");
for (i = 0; i < NKWINFO; i++) {
+ if (substring != NULL) {
+ if (strncmp(kwinfo[i].name, substring,
+ strlen(substring)) != 0)
+ continue;
+ }
printf(FMT,
kwinfo[i].name,
lookup_localecat(kwinfo[i].catid),
OpenPOWER on IntegriCloud