[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug-gettext] [PATCH 2/3] xgettext: allow file name extension with multi
From: |
Daiki Ueno |
Subject: |
[bug-gettext] [PATCH 2/3] xgettext: allow file name extension with multiple dots |
Date: |
Mon, 5 Aug 2013 22:29:57 +0200 |
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 <address@hidden>
+
+ * xgettext.c (main): Allow exntension with multiple
+ dots. e.g. .gschema.xml.
+
2013-03-02 Miguel Angel Arruga Vivas <address@hidden>
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