]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Save and restore errno across bindtextdomain call, per discussion.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 6 Jul 2005 16:25:59 +0000 (16:25 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 6 Jul 2005 16:25:59 +0000 (16:25 +0000)
src/interfaces/libpq/fe-misc.c

index 66ad325c52871b025444830becb11ce8413c9375..6d3b814a9deaad40aa6a98db44c65d29a99ad635 100644 (file)
@@ -23,7 +23,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/interfaces/libpq/fe-misc.c,v 1.114 2005/06/12 00:00:21 neilc Exp $
+ *       $PostgreSQL: pgsql/src/interfaces/libpq/fe-misc.c,v 1.115 2005/07/06 16:25:59 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1128,13 +1128,21 @@ PQenv2encoding(void)
 char *
 libpq_gettext(const char *msgid)
 {
-       static int      already_bound = 0;
+       static bool already_bound = false;
 
        if (!already_bound)
        {
-               already_bound = 1;
+               /* dgettext() preserves errno, but bindtextdomain() doesn't */
+               int             save_errno = errno;
+               const char *ldir;
+
+               already_bound = true;
                /* No relocatable lookup here because the binary could be anywhere */
-               bindtextdomain("libpq", getenv("PGLOCALEDIR") ? getenv("PGLOCALEDIR") : LOCALEDIR);
+               ldir = getenv("PGLOCALEDIR");
+               if (!ldir)
+                       ldir = LOCALEDIR;
+               bindtextdomain("libpq", ldir);
+               errno = save_errno;
        }
 
        return dgettext("libpq", msgid);