diff options
Diffstat (limited to 'external')
-rw-r--r-- | external/liblangtag/UnpackedTarball_langtag.mk | 1 | ||||
-rw-r--r-- | external/liblangtag/liblangtag-0.5.1-include-last-record-in-language-subtag-registry.patch | 49 |
2 files changed, 50 insertions, 0 deletions
diff --git a/external/liblangtag/UnpackedTarball_langtag.mk b/external/liblangtag/UnpackedTarball_langtag.mk index 7637ee987b33..90068cb3eac6 100644 --- a/external/liblangtag/UnpackedTarball_langtag.mk +++ b/external/liblangtag/UnpackedTarball_langtag.mk @@ -26,6 +26,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,langtag,\ external/liblangtag/liblangtag-0.5.1-undefined-have-sys-param-h.patch \ external/liblangtag/liblangtag-0.5.1-windows-do-not-prepend-dir-separator.patch \ external/liblangtag/liblangtag-0.5.1-unistd.patch \ + external/liblangtag/liblangtag-0.5.1-include-last-record-in-language-subtag-registry.patch \ )) ifeq ($(OS),WNT) diff --git a/external/liblangtag/liblangtag-0.5.1-include-last-record-in-language-subtag-registry.patch b/external/liblangtag/liblangtag-0.5.1-include-last-record-in-language-subtag-registry.patch new file mode 100644 index 000000000000..c28727c3b1fa --- /dev/null +++ b/external/liblangtag/liblangtag-0.5.1-include-last-record-in-language-subtag-registry.patch @@ -0,0 +1,49 @@ +Upstream 6564b87c2f6dac2482e530bc43b038a3e93a0e07 +resolves #6, include last record in language-subtag-registry.xml + +The '%%' in language-subtag-registry is a record delimiter, not record +end marker, it is not present on the last record at file end. + +(cherry picked from commit 4fff73a834f94a7ca256c086d99ea0a654a6c287) + +diff --git a/data/reg2xml.c b/data/reg2xml.c +--- UnpackedTarball/langtag.orig/data/reg2xml.c ++++ UnpackedTarball/langtag/data/reg2xml.c +@@ -48,6 +48,7 @@ _parse(const char *filename, + FILE *fp; + char buffer[1024], *range = NULL, *begin = NULL, *end = NULL; + lt_bool_t in_entry = FALSE; ++ lt_bool_t file_end = FALSE; + xmlNodePtr ent = NULL; + + if ((fp = fopen(filename, "rb")) == NULL) { +@@ -56,10 +57,13 @@ _parse(const char *filename, + } + while (1) { + fgets(buffer, 1024, fp); +- if (feof(fp)) +- break; ++ if (feof(fp)) { ++ if (!in_entry) ++ break; ++ file_end = TRUE; ++ } + _drop_crlf(buffer); +- if (lt_strcmp0(buffer, "%%") == 0) { ++ if (lt_strcmp0(buffer, "%%") == 0 || file_end) { + if (in_entry) { + if (ent) { + if (range) { +@@ -102,7 +106,7 @@ _parse(const char *filename, + ent = NULL; + range = NULL; + } +- in_entry = TRUE; ++ in_entry = !file_end; + } else { + if (!in_entry) { + /* ignore it */ + +--------------erAck-patch-parts-- + + |