| /* |
| ******************************************************************************* |
| * |
| * Copyright (C) 1999, International Business Machines |
| * Corporation and others. All Rights Reserved. |
| * |
| ******************************************************************************* |
| * file name: gentest.c |
| * encoding: US-ASCII |
| * tab size: 8 (not used) |
| * indentation:4 |
| * |
| * created on: 2000mar03 |
| * created by: Madhu Katragadda |
| * |
| * This program writes a little data file for testing the udata API. |
| */ |
| |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include "unicode/utypes.h" |
| #include "unicode/udata.h" |
| #include "unewdata.h" |
| #include "cmemory.h" |
| #include "cstring.h" |
| |
| #define DATA_NAME "test" |
| #define DATA_TYPE "dat" |
| |
| /* UDataInfo cf. udata.h */ |
| static const UDataInfo dataInfo={ |
| sizeof(UDataInfo), |
| 0, |
| |
| U_IS_BIG_ENDIAN, |
| U_CHARSET_FAMILY, |
| sizeof(UChar), |
| 0, |
| |
| 0x54, 0x65, 0x73, 0x74, /* dataFormat="Test" */ |
| 1, 0, 0, 0, /* formatVersion */ |
| 1, 0, 0, 0 /* dataVersion */ |
| }; |
| |
| static void usage(); |
| static void createData(const char*); |
| static bool_t beVerbose=FALSE, haveCopyright=FALSE; |
| |
| int |
| main(int argc, char *argv[]) { |
| |
| int printUsage = 0; |
| int option = 1; |
| char *arg; |
| char *outputDir = NULL; /* NULL = no output directory, use the default one(data) */ |
| |
| if(argc > 3) |
| printUsage=1; |
| |
| /* parse the options */ |
| for(option = 1; option < argc; ++option) { |
| arg = argv[option]; |
| |
| /* usage info */ |
| if(uprv_strcmp(arg, "-h") == 0 || uprv_strcmp(arg, "--help") == 0) { |
| printUsage = 1; |
| } |
| |
| else if(uprv_strcmp(arg, "-D") == 0 || uprv_strcmp(arg, "--dir") == 0) { |
| outputDir = argv[++option]; |
| } |
| |
| /* all arguments after -- are not options */ |
| else if(uprv_strcmp(arg, "--") == 0) { |
| /* skip the -- */ |
| ++option; |
| break; |
| } |
| /* unrecognized option */ |
| else if(uprv_strncmp(arg, "-", uprv_strlen("-")) == 0) { |
| printf("genrb: invalid option -- %s\n", arg+1); |
| printUsage = 1; |
| } |
| /* done with options, start Generating the memory mapped file */ |
| else { |
| break; |
| } |
| } |
| |
| /* print usage info */ |
| if(printUsage) { |
| usage(); |
| return 0; |
| } |
| printf("Generating the test memory mapped file"); |
| createData(outputDir); |
| return 0; |
| } |
| /* Usage information */ |
| static void |
| usage() |
| { |
| /*("Usage: gentest [OPTIONS] [DIR]");*/ |
| fprintf(stderr, "Usage: gentest [OPTIONS] [DIR]\n" |
| "\tCreates the memory mapped file \"" DATA_NAME "." DATA_TYPE "\" for testing purpose\n" |
| "Options: \n" |
| "\t-h, --help Print this message and exit.\n" |
| "\t-D, --dir Store the created memory mapped file under 'dir'.\n"); |
| |
| } |
| |
| /* Create data file ----------------------------------------------------- */ |
| static void |
| createData(const char* outputDirectory) { |
| UNewDataMemory *pData; |
| UErrorCode errorCode=U_ZERO_ERROR; |
| char stringValue[]={'Y', 'E', 'A', 'R', '\0'}; |
| uint16_t intValue=2000; |
| |
| long dataLength; |
| uint32_t size; |
| |
| pData=udata_create(outputDirectory, DATA_TYPE, DATA_NAME, &dataInfo, |
| haveCopyright ? U_COPYRIGHT_STRING : NULL, &errorCode); |
| if(U_FAILURE(errorCode)) { |
| fprintf(stderr, "gentest: unable to create data memory, error %d\n", errorCode); |
| exit(errorCode); |
| } |
| |
| /* write the data to the file */ |
| /* a 16 bit value and a String*/ |
| udata_write16(pData, intValue); |
| udata_writeString(pData, stringValue, sizeof(stringValue)); |
| |
| /* finish up */ |
| dataLength=udata_finish(pData, &errorCode); |
| if(U_FAILURE(errorCode)) { |
| fprintf(stderr, "gentest: error %d writing the output file\n", errorCode); |
| exit(errorCode); |
| } |
| size=sizeof(stringValue) + sizeof(intValue); |
| |
| |
| if(dataLength!=(long)size) { |
| fprintf(stderr, "gentest: data length %ld != calculated size %lu\n", dataLength, size); |
| exit(U_INTERNAL_PROGRAM_ERROR); |
| } |
| } |