To support extensions like ".gschema.xml", try possible extensions until matching language is found. --- gettext-tools/src/ChangeLog | 5 +++++ gettext-tools/src/xgettext.c | 25 +++++++++++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/gettext-tools/src/ChangeLog b/gettext-tools/src/ChangeLog index ff21d1b..8541880 100644 --- a/gettext-tools/src/ChangeLog +++ b/gettext-tools/src/ChangeLog @@ -1,3 +1,8 @@ +2013-08-05 Daiki Ueno <[email protected]> + + * xgettext.c (main): Allow exntension with multiple + dots. e.g. .gschema.xml. + 2013-03-02 Miguel Angel Arruga Vivas <[email protected]> Extract libexpat compatibility layer. diff --git a/gettext-tools/src/xgettext.c b/gettext-tools/src/xgettext.c index 702ceb0..bb77ea4 100644 --- a/gettext-tools/src/xgettext.c +++ b/gettext-tools/src/xgettext.c @@ -759,6 +759,7 @@ This version was built without iconv()."), char *reduced; const char *extension; const char *language; + const char *p; base = strrchr (filename, '/'); if (!base) @@ -771,17 +772,25 @@ This version was built without iconv()."), reduced[strlen (reduced) - 3] = '\0'; /* Work out what the file extension is. */ - extension = strrchr (reduced, '.'); - if (extension) - ++extension; - else - extension = ""; + for (p = reduced + strlen (reduced); p > reduced; p--) + { + if (*p == '.') + { + extension = p + 1; + + /* Derive the language from the extension, and the extractor + function from the language. */ + language = extension_to_language (extension); + } + } - /* Derive the language from the extension, and the extractor - function from the language. */ - language = extension_to_language (extension); if (language == NULL) { + extension = strrchr (reduced, '.'); + if (extension == NULL) + extension = ""; + else + extension++; error (0, 0, _("\ warning: file '%s' extension '%s' is unknown; will try C"), filename, extension); language = "C"; -- 1.8.3.1
