aboutsummaryrefslogtreecommitdiff
path: root/intl/bindtextdom.c
diff options
context:
space:
mode:
Diffstat (limited to 'intl/bindtextdom.c')
-rw-r--r--intl/bindtextdom.c28
1 files changed, 17 insertions, 11 deletions
diff --git a/intl/bindtextdom.c b/intl/bindtextdom.c
index fd527a180a..39256ed566 100644
--- a/intl/bindtextdom.c
+++ b/intl/bindtextdom.c
@@ -1,5 +1,5 @@
/* Implementation of the bindtextdomain(3) function
- Copyright (C) 1995-1998, 2000, 2001, 2002, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1995-1998, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -60,7 +60,9 @@
/* Contains the default location of the message catalogs. */
extern const char _nl_default_dirname[];
#ifdef _LIBC
-libc_hidden_proto (_nl_default_dirname)
+extern const char _nl_default_dirname_internal[] attribute_hidden;
+#else
+# define INTUSE(name) name
#endif
/* List with bindings of specific domains. */
@@ -150,8 +152,8 @@ set_binding_values (domainname, dirnamep, codesetp)
char *result = binding->dirname;
if (strcmp (dirname, result) != 0)
{
- if (strcmp (dirname, _nl_default_dirname) == 0)
- result = (char *) _nl_default_dirname;
+ if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0)
+ result = (char *) INTUSE(_nl_default_dirname);
else
{
#if defined _LIBC || defined HAVE_STRDUP
@@ -166,7 +168,7 @@ set_binding_values (domainname, dirnamep, codesetp)
if (__builtin_expect (result != NULL, 1))
{
- if (binding->dirname != _nl_default_dirname)
+ if (binding->dirname != INTUSE(_nl_default_dirname))
free (binding->dirname);
binding->dirname = result;
@@ -207,6 +209,7 @@ set_binding_values (domainname, dirnamep, codesetp)
free (binding->codeset);
binding->codeset = result;
+ ++binding->codeset_cntr;
modified = 1;
}
}
@@ -219,7 +222,7 @@ set_binding_values (domainname, dirnamep, codesetp)
{
/* Simply return the default values. */
if (dirnamep)
- *dirnamep = _nl_default_dirname;
+ *dirnamep = INTUSE(_nl_default_dirname);
if (codesetp)
*codesetp = NULL;
}
@@ -241,11 +244,11 @@ set_binding_values (domainname, dirnamep, codesetp)
if (dirname == NULL)
/* The default value. */
- dirname = _nl_default_dirname;
+ dirname = INTUSE(_nl_default_dirname);
else
{
- if (strcmp (dirname, _nl_default_dirname) == 0)
- dirname = _nl_default_dirname;
+ if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0)
+ dirname = INTUSE(_nl_default_dirname);
else
{
char *result;
@@ -268,7 +271,9 @@ set_binding_values (domainname, dirnamep, codesetp)
}
else
/* The default value. */
- new_binding->dirname = (char *) _nl_default_dirname;
+ new_binding->dirname = (char *) INTUSE(_nl_default_dirname);
+
+ new_binding->codeset_cntr = 0;
if (codesetp)
{
@@ -290,6 +295,7 @@ set_binding_values (domainname, dirnamep, codesetp)
memcpy (result, codeset, len);
#endif
codeset = result;
+ ++new_binding->codeset_cntr;
}
*codesetp = codeset;
new_binding->codeset = (char *) codeset;
@@ -321,7 +327,7 @@ set_binding_values (domainname, dirnamep, codesetp)
if (0)
{
failed_codeset:
- if (new_binding->dirname != _nl_default_dirname)
+ if (new_binding->dirname != INTUSE(_nl_default_dirname))
free (new_binding->dirname);
failed_dirname:
free (new_binding);