blob: 65e374fca0892bb4f043e273f0f451ad18f24fcb [file] [log] [blame]
/*
*******************************************************************************
*
* Copyright (C) 1998-1999, International Business Machines
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
*
* File gencol.c
*
* Modification History:
*
* Date Name Description
* 06/09/99 stephen Creation.
*******************************************************************************
*/
#include <stdio.h>
#include "unicode/utypes.h"
#include "cmemory.h"
#include "cstring.h"
#include "unicode/uloc.h"
#include "unicode/ucol.h"
/* Protos */
static void usage(void);
static void version(void);
int main(int argc, char **argv);
/* The version of gencol */
#define GENCOL_VERSION "1.0b"
int
main(int argc,
char **argv)
{
int printUsage = 0;
int printVersion = 0;
int optind;
int i;
char *arg;
const char *loc;
UCollator *coll;
UErrorCode status;
/* parse the options */
for(optind = 1; optind < argc; ++optind) {
arg = argv[optind];
/* version info */
if(uprv_strcmp(arg, "-v") == 0 || uprv_strcmp(arg, "--version") == 0) {
printVersion = 1;
}
/* usage info */
else if(uprv_strcmp(arg, "-h") == 0 || uprv_strcmp(arg, "--help") == 0) {
printUsage = 1;
}
/* POSIX.1 says all arguments after -- are not options */
else if(uprv_strcmp(arg, "--") == 0) {
/* skip the -- */
++optind;
break;
}
/* unrecognized option */
else if(uprv_strncmp(arg, "-", uprv_strlen("-")) == 0) {
printf("gencol: invalid option -- %s\n", arg+1);
printUsage = 1;
}
/* done with options, start file processing */
else {
break;
}
}
/* print usage info */
if(printUsage) {
usage();
return 0;
}
/* print version info */
if(printVersion) {
version();
return 0;
}
/* generate the binary collation files */
coll = ucol_open("default", &status);
ucol_close(coll);
for(i = 0; i < uloc_countAvailable(); ++i) {
status = U_ZERO_ERROR;
loc = uloc_getAvailable(i);
printf("gencol: Creating collation data for locale \"%s\"\n", loc);
coll = ucol_open(loc, &status);
if(U_FAILURE(status)) {
printf("gencol: %s for locale \"%s\"", u_errorName(status), loc);
}
else {
ucol_close(coll);
}
}
return 0;
}
/* Usage information */
static void
usage()
{
puts("Usage: gencol [OPTIONS] [FILES]");
puts("Options:");
puts(" -h, --help Print this message and exit.");
puts(" -v, --version Print the version number of gencol and exit.");
}
/* Version information */
static void
version()
{
printf("gencol version %s (ICU version %s).\n",
GENCOL_VERSION, U_ICU_VERSION);
puts(U_COPYRIGHT_STRING);
}