OLD | NEW |
(Empty) | |
| 1 /************************************************************************** |
| 2 * |
| 3 * Copyright (C) 2000-2009, International Business Machines |
| 4 * Corporation and others. All Rights Reserved. |
| 5 * |
| 6 *************************************************************************** |
| 7 * file name: pkgdata.c |
| 8 * encoding: ANSI X3.4 (1968) |
| 9 * tab size: 8 (not used) |
| 10 * indentation:4 |
| 11 * |
| 12 * created on: 2000may16 |
| 13 * created by: Steven \u24C7 Loomis |
| 14 * |
| 15 * common types for pkgdata |
| 16 */ |
| 17 |
| 18 #ifndef _PKGTYPES |
| 19 #define _PKGTYPES |
| 20 |
| 21 /* headers */ |
| 22 #include "unicode/utypes.h" |
| 23 #include "filestrm.h" |
| 24 |
| 25 /* linked list */ |
| 26 struct _CharList; |
| 27 |
| 28 typedef struct _CharList |
| 29 { |
| 30 const char *str; |
| 31 struct _CharList *next; |
| 32 } CharList; |
| 33 |
| 34 |
| 35 |
| 36 /* |
| 37 * write CharList 'l' into stream 's' using deliminter 'delim' (delim can be NUL
L). quoted: -1 remove, 0 as is, 1 add quotes |
| 38 */ |
| 39 const char *pkg_writeCharList(FileStream *s, CharList *l, const char *delim, int
32_t quoted); |
| 40 |
| 41 /* |
| 42 * Same, but use line breaks. quoted: -1 remove, 0 as is, 1 add quotes |
| 43 */ |
| 44 const char *pkg_writeCharListWrap(FileStream *s, CharList *l, const char *delim,
const char *brk, int32_t quoted); |
| 45 |
| 46 |
| 47 /* |
| 48 * Count items . 0 if null |
| 49 */ |
| 50 uint32_t pkg_countCharList(CharList *l); |
| 51 |
| 52 /* |
| 53 * Prepend string to CharList. Str is adopted! |
| 54 */ |
| 55 CharList *pkg_prependToList(CharList *l, const char *str); |
| 56 |
| 57 /* |
| 58 * append string to CharList. *end or even end can be null if you don't |
| 59 * know it.[slow] |
| 60 * Str is adopted! |
| 61 */ |
| 62 CharList *pkg_appendToList(CharList *l, CharList** end, const char *str); |
| 63 |
| 64 /* |
| 65 * strAlias is an alias to a full or relative path to a FILE. This function |
| 66 * will search strAlias for the directory name (with strrchr). Then, it will |
| 67 * determine if that directory is already in list l. If not, it will add it |
| 68 * with strdup(strAlias). |
| 69 * @param l list to append to , or NULL |
| 70 * @param end end pointer-to-pointer. Can point to null, or be null. |
| 71 * @param strAlias alias to full path string |
| 72 * @return new list |
| 73 */ |
| 74 CharList *pkg_appendUniqueDirToList(CharList *l, CharList** end, const char *str
Alias); |
| 75 |
| 76 /* |
| 77 * does list contain string? Returns: t/f |
| 78 */ |
| 79 UBool pkg_listContains(CharList *l, const char *str); |
| 80 |
| 81 /* |
| 82 * Delete list |
| 83 */ |
| 84 void pkg_deleteList(CharList *l); |
| 85 |
| 86 /* |
| 87 * Mode package function |
| 88 */ |
| 89 struct UPKGOptions_; |
| 90 typedef void (UPKGMODE)(struct UPKGOptions_ *, FileStream *s, UErrorCode *stat
us); |
| 91 |
| 92 /* |
| 93 * Static mode - write the readme file |
| 94 * @param opt UPKGOptions |
| 95 * @param libName Name of the .lib, etc file |
| 96 * @param status ICU error code |
| 97 */ |
| 98 void pkg_sttc_writeReadme(struct UPKGOptions_ *opt, const char *libName, UErrorC
ode *status); |
| 99 |
| 100 /* |
| 101 * Options to be passed throughout the program |
| 102 */ |
| 103 |
| 104 typedef struct UPKGOptions_ |
| 105 { |
| 106 CharList *fileListFiles; /* list of files containing files for inclusion in
the package */ |
| 107 CharList *filePaths; /* All the files, with long paths */ |
| 108 CharList *files; /* All the files */ |
| 109 CharList *outFiles; /* output files [full paths] */ |
| 110 |
| 111 const char *shortName; /* name of what we're building */ |
| 112 const char *cShortName; /* name of what we're building as a C identifier */ |
| 113 const char *entryName; /* special entrypoint name */ |
| 114 const char *targetDir; /* dir for packaged data to go */ |
| 115 const char *dataDir; /* parent of dir for package (default: tmpdir) */ |
| 116 const char *tmpDir; |
| 117 const char *srcDir; |
| 118 const char *options; /* Options arg */ |
| 119 const char *mode; /* Mode of building */ |
| 120 const char *version; /* Library version */ |
| 121 const char *comment; /* comment string */ |
| 122 const char *install; /* Where to install to (NULL = don't install) */ |
| 123 const char *icuroot; /* where does ICU lives */ |
| 124 const char *libName; /* name for library (default: shortName) */ |
| 125 UBool rebuild; |
| 126 UBool verbose; |
| 127 UBool quiet; |
| 128 } UPKGOptions; |
| 129 |
| 130 char * convertToNativePathSeparators(char *path); |
| 131 |
| 132 |
| 133 /* set up common defines for library naming */ |
| 134 |
| 135 #ifdef U_WINDOWS |
| 136 # ifndef UDATA_SO_SUFFIX |
| 137 # define UDATA_SO_SUFFIX ".dll" |
| 138 # endif |
| 139 # define LIB_PREFIX "" |
| 140 # define LIB_STATIC_PREFIX "" |
| 141 # define OBJ_SUFFIX ".obj" |
| 142 # define UDATA_LIB_SUFFIX ".lib" |
| 143 |
| 144 #elif defined(U_CYGWIN) |
| 145 # define LIB_PREFIX "cyg" |
| 146 # define LIB_STATIC_PREFIX "lib" |
| 147 # define OBJ_SUFFIX ".o" |
| 148 # define UDATA_LIB_SUFFIX ".a" |
| 149 |
| 150 #else /* POSIX? */ |
| 151 # define LIB_PREFIX "lib" |
| 152 # define LIB_STATIC_PREFIX "lib" |
| 153 # define OBJ_SUFFIX ".o" |
| 154 # define UDATA_LIB_SUFFIX ".a" |
| 155 #endif |
| 156 |
| 157 #define ASM_SUFFIX ".s" |
| 158 |
| 159 /* defines for common file names */ |
| 160 #define UDATA_CMN_PREFIX "" |
| 161 #define UDATA_CMN_SUFFIX ".dat" |
| 162 #define UDATA_CMN_INTERMEDIATE_SUFFIX "_dat" |
| 163 |
| 164 #define ICUDATA_RES_FILE "icudata.res" |
| 165 |
| 166 #define PKGDATA_DERIVED_PATH '\t' |
| 167 |
| 168 #endif |
OLD | NEW |