ICU-1104 add a --list-code code option to generalize the --default-code

one. A good use of this option is to know if a given name is valid, by
calling 'uconv --list-code name 2>/dev/null' and checking for the exit
code. Maybe a -q option is in order to make that easier.

X-SVN-Rev: 7386
This commit is contained in:
Yves Arrouye 2002-01-05 01:08:01 +00:00
parent 80b6bd8d53
commit ef243d3b7d
4 changed files with 42 additions and 20 deletions

View File

@ -31,7 +31,7 @@ SECTION = 1
ALL_MAN_FILES = $(TARGET).$(SECTION)
## Extra files to remove for 'make clean'
CLEANFILES = *~ $(DEPS)
CLEANFILES = *~ $(DEPS) $(ALL_MAN_FILES)
## Target information
TARGET = uconv

View File

@ -1,6 +1,6 @@
// -*- Coding: utf-8; -*- [all uconv resource files]
// Copyright (c) 2000 IBM, Inc. and Others.
// $Revision: 1.10 $
// $Revision: 1.11 $
//
// Root translation file for uconv messages.
// So you want to translate this file??? Great!
@ -30,11 +30,12 @@ root
lcUsageWord { "usage" }
ucUsageWord { "Usage" }
usage { "{0}: {1} [ -h, -?, --help ] [ -l, --list | --default-code ] [ --canon ] [ -L, --list-transliterators ] [ -x transliterator ] -f, --from-code code -t, --to-code code [ file ]\n" }
usage { "{0}: {1} [ -h, -?, --help ] [ -l, --list | --list-code code | --default-code ] [ --canon ] [ -L, --list-transliterators ] [ -x transliterator ] -f, --from-code code -t, --to-code code [ file ]\n" }
help { "Options: -h, --help print this message\n"
" -l, --list list all available encodings\n"
" --default-code print name of default encoding"
" --list-code code list only the given encoding\n"
" --default-code list only the default encoding\n"
" --canon print list compatible with cnvrtrs.txt(5)\n"
" -L, --list-transliterators list all available transliterators\n"
" -x transliterator run everything through transliterator\n"
@ -45,6 +46,7 @@ root
cantGetNames { "Couldn''t get available converter names.\n" } // 0: err cantGetNames { "Couldn''t get available converter names.\n" } // 0: err
cantGetTag { "Couldn''t get standard tag name: {0}.\n" } // 0: err
noSuchCodeset { "Couldn''t find encoding: {0}.\n" } // 0: name of the encoding
noFromCodeset { "No conversion from encoding given (use -f)\n" }
noToCodeset { "No conversion to encoding given (use -t)\n" }

View File

@ -18,6 +18,8 @@
[
.BI "\-l\fP, \fB\-\-list"
|
.BI "\-l\fP, \fB\-\-list\-code" " code"
|
.BI "\-\-default-code"
]
[
@ -48,8 +50,15 @@ Print help about usage and exit.
.BI "\-l\fP, \fB\-\-list"
List all the available encodings and exit.
.TP
.BI "\-l\fP, \fB\-\-list\-code" " code"
List only the
.I code
encoding and exit. If
.I code
is not a proper encoding, exit with an error.
.TP
.BI "\-\-default-code"
Print the name of the default encoding and exit.
List only the name of the default encoding and exit.
.TP
.BI "\--canon"
If used with

View File

@ -80,26 +80,21 @@ static void initMsg(const char *pname) {
}
// Print all available codepage converters
static int printConverters(const char *pname, int defonly, int canon)
static int printConverters(const char *pname, const char *lookfor, int canon)
{
UErrorCode err = U_ZERO_ERROR;
const char *lookfor = 0;
int32_t num;
uint16_t num_stds;
const char **stds;
if (defonly) {
/* Find the name of the default converter, and either print it,
or find its real name (in case the function returns an alias)
and save it for later to recognize the real entry. */
lookfor = ucnv_getDefaultName();
if (lookfor) {
if (!canon) {
printf("%s\n", lookfor);
return 0;
} else {
/* We've done that already except for the default name. Oh well. */
const char *truename = ucnv_getAlias(lookfor, 0, &err);
if (U_SUCCESS(err)) {
lookfor = truename;
@ -422,7 +417,8 @@ int main(int argc, char** argv)
const char *pname = *argv;
int printConvs = 0, printDef = 0, printCanon = 0;
int printConvs = 0, printCanon = 0;
const char *printName = 0;
// First, get the arguments from command-line
// to know the codepages to convert between
@ -445,8 +441,23 @@ int main(int argc, char** argv)
{
printConvs = 1;
}
else if (strcmp("--default-code", *iter) == 0) {
printDef = 1;
else if (strcmp("--default-code", *iter) == 0)
{
printName = ucnv_getDefaultName();
}
else if (strcmp("--list-code", *iter) == 0) {
iter++;
if (iter!=end) {
UErrorCode e = U_ZERO_ERROR;
printName = ucnv_getAlias(*iter, 0, &e);
if (U_FAILURE(e)) {
UnicodeString str(*iter);
initMsg(pname);
u_wmsg("noSuchCodeset", str.getBuffer());
return 2;
}
}
else usage(pname, 1);
}
else if (strcmp("--canon", *iter) == 0) {
printCanon = 1;
@ -464,8 +475,8 @@ int main(int argc, char** argv)
}
}
if (printConvs || printDef) {
return printConverters(pname, printDef, printCanon) ? 2 : 0;
if (printConvs || printName) {
return printConverters(pname, printName, printCanon) ? 2 : 0;
}
if (fromcpage==0 && tocpage==0)