1 diff --git a/intl/icu/source/tools/genrb/genrb.c b/intl/icu/source/tools/genrb/genrb.c
2 --- a/intl/icu/source/tools/genrb/genrb.c
3 +++ b/intl/icu/source/tools/genrb/genrb.c
6 *******************************************************************************
8 -* Copyright (C) 1998-2012, International Business Machines
9 +* Copyright (C) 1998-2014, International Business Machines
10 * Corporation and others. All Rights Reserved.
12 *******************************************************************************
17 - initParser(options[NO_COLLATION_RULES].doesOccur);
21 if(options[LANGUAGE].doesOccur) {
23 printf("autodetected encoding %s\n", cp);
25 /* Parse the data into an SRBRoot */
26 - data = parse(ucbuf, inputDir, outputDir, !omitBinaryCollation, status);
27 + data = parse(ucbuf, inputDir, outputDir,
28 + !omitBinaryCollation, options[NO_COLLATION_RULES].doesOccur, status);
30 if (data == NULL || U_FAILURE(*status)) {
31 fprintf(stderr, "couldn't parse the file %s. Error:%s\n", filename,u_errorName(*status));
32 diff --git a/intl/icu/source/tools/genrb/parse.cpp b/intl/icu/source/tools/genrb/parse.cpp
33 --- a/intl/icu/source/tools/genrb/parse.cpp
34 +++ b/intl/icu/source/tools/genrb/parse.cpp
36 const char *outputdir;
37 uint32_t outputdirLength;
38 UBool makeBinaryCollation;
39 + UBool omitCollationRules;
42 -static UBool gOmitCollationRules = FALSE;
44 typedef struct SResource *
45 ParseResourceFunction(ParseState* state, char *tag, uint32_t startline, const struct UString* comment, UErrorCode *status);
49 uprv_strcat(filename, cs);
51 - if(gOmitCollationRules) {
52 + if(state->omitCollationRules) {
59 /* Parse the data into an SRBRoot */
60 - data = parse(ucbuf, genrbdata->inputDir, genrbdata->outputDir, FALSE, status);
61 + data = parse(ucbuf, genrbdata->inputDir, genrbdata->outputDir, FALSE, FALSE, status);
64 collations = resLookup(root, "collations");
67 /* in order to achieve smaller data files, we can direct genrb */
68 /* to omit collation rules */
69 - if(gOmitCollationRules) {
70 + if(state->omitCollationRules) {
71 bundle_closeString(state->bundle, member);
73 table_add(result, member, line, status);
75 {"reserved", NULL, NULL}
78 -void initParser(UBool omitCollationRules)
81 U_STRING_INIT(k_type_string, "string", 6);
82 U_STRING_INIT(k_type_binary, "binary", 6);
84 U_STRING_INIT(k_type_plugin_collation, "process(collation)", 18);
85 U_STRING_INIT(k_type_plugin_transliterator, "process(transliterator)", 23);
86 U_STRING_INIT(k_type_plugin_dependency, "process(dependency)", 19);
88 - gOmitCollationRules = omitCollationRules;
91 static inline UBool isTable(enum EResourceType type) {
94 /* parse the top-level resource */
96 -parse(UCHARBUF *buf, const char *inputDir, const char *outputDir, UBool makeBinaryCollation,
98 +parse(UCHARBUF *buf, const char *inputDir, const char *outputDir,
99 + UBool makeBinaryCollation, UBool omitCollationRules, UErrorCode *status)
101 struct UString *tokenValue;
102 struct UString comment;
103 @@ -2064,6 +2061,7 @@
104 state.outputdir = outputDir;
105 state.outputdirLength = (state.outputdir != NULL) ? (uint32_t)uprv_strlen(state.outputdir) : 0;
106 state.makeBinaryCollation = makeBinaryCollation;
107 + state.omitCollationRules = omitCollationRules;
110 expect(&state, TOK_STRING, &tokenValue, &comment, NULL, status);
111 diff --git a/intl/icu/source/tools/genrb/parse.h b/intl/icu/source/tools/genrb/parse.h
112 --- a/intl/icu/source/tools/genrb/parse.h
113 +++ b/intl/icu/source/tools/genrb/parse.h
116 *******************************************************************************
118 -* Copyright (C) 1998-2011, International Business Machines
119 +* Copyright (C) 1998-2014, International Business Machines
120 * Corporation and others. All Rights Reserved.
122 *******************************************************************************
126 /* One time parser initalisation */
127 -void initParser(UBool omitCollationRules);
130 /* Parse a ResourceBundle text file */
131 struct SRBRoot* parse(UCHARBUF *buf, const char* inputDir, const char* outputDir,
132 - UBool omitBinaryCollation, UErrorCode *status);
133 + UBool makeBinaryCollation, UBool omitCollationRules, UErrorCode *status);