]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
Improve code structure.
authorBruno Haible <bruno@clisp.org>
Mon, 1 Aug 2005 11:35:40 +0000 (11:35 +0000)
committerBruno Haible <bruno@clisp.org>
Tue, 23 Jun 2009 10:12:43 +0000 (12:12 +0200)
gettext-runtime/intl/ChangeLog
gettext-runtime/intl/dcigettext.c

index fa73c40a4b4ba4ec115759bad02685725d36d612..3606fb91d0f6c9cdff8daf189e9edc2f91d38dc6 100644 (file)
@@ -1,3 +1,9 @@
+2005-07-31  Bruno Haible  <bruno@clisp.org>
+
+       Avoid const-cast.
+       * dcigettext.c (DCIGETTEXT): Change type of 'dirname' to const char *.
+       Use an auxiliary variable 'resolved_dirname' of type 'char *'.
+
 2005-07-31  Bruno Haible  <bruno@clisp.org>
 
        * dcigettext.c (tree_lock): Remove extraneous semicolon.
index 339c1fc14b2ad75969c767e72e118faccdc202ef..5894e6da7c181585be158fdea97403a0b0f54e8c 100644 (file)
@@ -451,7 +451,8 @@ DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
   struct binding *binding;
   const char *categoryname;
   const char *categoryvalue;
-  char *dirname, *xdomainname;
+  const char *dirname;
+  char *xdomainname;
   char *single_locale;
   char *retval;
   size_t retlen;
@@ -572,39 +573,43 @@ DCIGETTEXT (const char *domainname, const char *msgid1, const char *msgid2,
     }
 
   if (binding == NULL)
-    dirname = (char *) _nl_default_dirname;
-  else if (IS_ABSOLUTE_PATH (binding->dirname))
-    dirname = binding->dirname;
+    dirname = _nl_default_dirname;
   else
     {
-      /* We have a relative path.  Make it absolute now.  */
-      size_t dirname_len = strlen (binding->dirname) + 1;
-      size_t path_max;
-      char *ret;
+      dirname = binding->dirname;
+      if (!IS_ABSOLUTE_PATH (dirname))
+       {
+         /* We have a relative path.  Make it absolute now.  */
+         size_t dirname_len = strlen (dirname) + 1;
+         size_t path_max;
+         char *resolved_dirname;
+         char *ret;
 
-      path_max = (unsigned int) PATH_MAX;
-      path_max += 2;           /* The getcwd docs say to do this.  */
+         path_max = (unsigned int) PATH_MAX;
+         path_max += 2;                /* The getcwd docs say to do this.  */
 
-      for (;;)
-       {
-         dirname = (char *) alloca (path_max + dirname_len);
-         ADD_BLOCK (block_list, dirname);
+         for (;;)
+           {
+             resolved_dirname = (char *) alloca (path_max + dirname_len);
+             ADD_BLOCK (block_list, tmp_dirname);
 
-         __set_errno (0);
-         ret = getcwd (dirname, path_max);
-         if (ret != NULL || errno != ERANGE)
-           break;
+             __set_errno (0);
+             ret = getcwd (resolved_dirname, path_max);
+             if (ret != NULL || errno != ERANGE)
+               break;
 
-         path_max += path_max / 2;
-         path_max += PATH_INCR;
-       }
+             path_max += path_max / 2;
+             path_max += PATH_INCR;
+           }
 
-      if (ret == NULL)
-       /* We cannot get the current working directory.  Don't signal an
-          error but simply return the default string.  */
-       goto return_untranslated;
+         if (ret == NULL)
+           /* We cannot get the current working directory.  Don't signal an
+              error but simply return the default string.  */
+           goto return_untranslated;
 
-      stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname);
+         stpcpy (stpcpy (strchr (resolved_dirname, '\0'), "/"), dirname);
+         dirname = resolved_dirname;
+       }
     }
 
   /* Now determine the symbolic name of CATEGORY and its value.  */