bug-gettext
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]