gecko-dev/intl/icu-patches/genrb-omitCollationRules.diff

137 строки
4.9 KiB
Diff

diff --git a/intl/icu/source/tools/genrb/genrb.c b/intl/icu/source/tools/genrb/genrb.c
--- a/intl/icu/source/tools/genrb/genrb.c
+++ b/intl/icu/source/tools/genrb/genrb.c
@@ -1,7 +1,7 @@
/*
*******************************************************************************
*
-* Copyright (C) 1998-2012, International Business Machines
+* Copyright (C) 1998-2014, International Business Machines
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
@@ -280,7 +280,7 @@
}
}
- initParser(options[NO_COLLATION_RULES].doesOccur);
+ initParser();
/*added by Jing*/
if(options[LANGUAGE].doesOccur) {
@@ -557,7 +557,8 @@
printf("autodetected encoding %s\n", cp);
}
/* Parse the data into an SRBRoot */
- data = parse(ucbuf, inputDir, outputDir, !omitBinaryCollation, status);
+ data = parse(ucbuf, inputDir, outputDir,
+ !omitBinaryCollation, options[NO_COLLATION_RULES].doesOccur, status);
if (data == NULL || U_FAILURE(*status)) {
fprintf(stderr, "couldn't parse the file %s. Error:%s\n", filename,u_errorName(*status));
diff --git a/intl/icu/source/tools/genrb/parse.cpp b/intl/icu/source/tools/genrb/parse.cpp
--- a/intl/icu/source/tools/genrb/parse.cpp
+++ b/intl/icu/source/tools/genrb/parse.cpp
@@ -85,10 +85,9 @@
const char *outputdir;
uint32_t outputdirLength;
UBool makeBinaryCollation;
+ UBool omitCollationRules;
} ParseState;
-static UBool gOmitCollationRules = FALSE;
-
typedef struct SResource *
ParseResourceFunction(ParseState* state, char *tag, uint32_t startline, const struct UString* comment, UErrorCode *status);
@@ -323,7 +322,7 @@
}
uprv_strcat(filename, cs);
- if(gOmitCollationRules) {
+ if(state->omitCollationRules) {
return res_none();
}
@@ -771,7 +770,7 @@
}
/* Parse the data into an SRBRoot */
- data = parse(ucbuf, genrbdata->inputDir, genrbdata->outputDir, FALSE, status);
+ data = parse(ucbuf, genrbdata->inputDir, genrbdata->outputDir, FALSE, FALSE, status);
root = data->fRoot;
collations = resLookup(root, "collations");
@@ -1007,7 +1006,7 @@
#endif
/* in order to achieve smaller data files, we can direct genrb */
/* to omit collation rules */
- if(gOmitCollationRules) {
+ if(state->omitCollationRules) {
bundle_closeString(state->bundle, member);
} else {
table_add(result, member, line, status);
@@ -1839,7 +1838,7 @@
{"reserved", NULL, NULL}
};
-void initParser(UBool omitCollationRules)
+void initParser()
{
U_STRING_INIT(k_type_string, "string", 6);
U_STRING_INIT(k_type_binary, "binary", 6);
@@ -1858,8 +1857,6 @@
U_STRING_INIT(k_type_plugin_collation, "process(collation)", 18);
U_STRING_INIT(k_type_plugin_transliterator, "process(transliterator)", 23);
U_STRING_INIT(k_type_plugin_dependency, "process(dependency)", 19);
-
- gOmitCollationRules = omitCollationRules;
}
static inline UBool isTable(enum EResourceType type) {
@@ -2039,8 +2036,8 @@
/* parse the top-level resource */
struct SRBRoot *
-parse(UCHARBUF *buf, const char *inputDir, const char *outputDir, UBool makeBinaryCollation,
- UErrorCode *status)
+parse(UCHARBUF *buf, const char *inputDir, const char *outputDir,
+ UBool makeBinaryCollation, UBool omitCollationRules, UErrorCode *status)
{
struct UString *tokenValue;
struct UString comment;
@@ -2064,6 +2061,7 @@
state.outputdir = outputDir;
state.outputdirLength = (state.outputdir != NULL) ? (uint32_t)uprv_strlen(state.outputdir) : 0;
state.makeBinaryCollation = makeBinaryCollation;
+ state.omitCollationRules = omitCollationRules;
ustr_init(&comment);
expect(&state, TOK_STRING, &tokenValue, &comment, NULL, status);
diff --git a/intl/icu/source/tools/genrb/parse.h b/intl/icu/source/tools/genrb/parse.h
--- a/intl/icu/source/tools/genrb/parse.h
+++ b/intl/icu/source/tools/genrb/parse.h
@@ -1,7 +1,7 @@
/*
*******************************************************************************
*
-* Copyright (C) 1998-2011, International Business Machines
+* Copyright (C) 1998-2014, International Business Machines
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
@@ -24,11 +24,11 @@
U_CDECL_BEGIN
/* One time parser initalisation */
-void initParser(UBool omitCollationRules);
+void initParser();
/* Parse a ResourceBundle text file */
struct SRBRoot* parse(UCHARBUF *buf, const char* inputDir, const char* outputDir,
- UBool omitBinaryCollation, UErrorCode *status);
+ UBool makeBinaryCollation, UBool omitCollationRules, UErrorCode *status);
U_CDECL_END