]> granicus.if.org Git - postgresql/commitdiff
Make the locale location relocatable.
authorBruce Momjian <bruce@momjian.us>
Tue, 25 May 2004 01:00:30 +0000 (01:00 +0000)
committerBruce Momjian <bruce@momjian.us>
Tue, 25 May 2004 01:00:30 +0000 (01:00 +0000)
Adjust get_*_path functions to be limited to MAXPGPATH.

26 files changed:
src/backend/main/main.c
src/bin/initdb/initdb.c
src/bin/pg_controldata/Makefile
src/bin/pg_controldata/pg_controldata.c
src/bin/pg_dump/Makefile
src/bin/pg_dump/pg_dump.c
src/bin/pg_dump/pg_dumpall.c
src/bin/pg_dump/pg_restore.c
src/bin/pg_resetxlog/Makefile
src/bin/pg_resetxlog/pg_resetxlog.c
src/bin/psql/startup.c
src/bin/scripts/Makefile
src/bin/scripts/clusterdb.c
src/bin/scripts/common.c
src/bin/scripts/common.h
src/bin/scripts/createdb.c
src/bin/scripts/createlang.c
src/bin/scripts/createuser.c
src/bin/scripts/dropdb.c
src/bin/scripts/droplang.c
src/bin/scripts/dropuser.c
src/bin/scripts/vacuumdb.c
src/include/port.h
src/interfaces/libpq/fe-misc.c
src/port/Makefile
src/port/path.c

index 9216c2c4be9ab9c636a5aa2a28a29248ee3bbfc9..c93dc4ef4d8ca1353101a6f065084fbc218d58c4 100644 (file)
@@ -13,7 +13,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/main/main.c,v 1.81 2004/05/24 02:47:44 momjian Exp $
+ *       $PostgreSQL: pgsql/src/backend/main/main.c,v 1.82 2004/05/25 01:00:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -150,6 +150,8 @@ main(int argc, char *argv[])
         * startup error messages to be localized.
         */
 
+       set_pglocale(argv[0], "postgres");
+
 #ifdef WIN32
        /* 
         * Windows uses codepages rather than the environment, so we work around
@@ -185,11 +187,6 @@ main(int argc, char *argv[])
        setlocale(LC_NUMERIC, "C");
        setlocale(LC_TIME, "C");
 
-#ifdef ENABLE_NLS
-       bindtextdomain("postgres", LOCALEDIR);
-       textdomain("postgres");
-#endif
-
        /*
         * Skip permission checks if we're just trying to do --help or
         * --version; otherwise root will get unhelpful failure messages from
index 85d65ab459c65cf7255197bbf3b99546b4f978b1..9b227807ae70454ac13ab75e8d523ef12266206e 100644 (file)
@@ -39,7 +39,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  * Portions taken from FreeBSD.
  *
- * $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.32 2004/05/18 03:36:36 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.33 2004/05/25 01:00:22 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -167,7 +167,7 @@ static void check_ok(void);
 static bool chklocale(const char *locale);
 static void setlocales(void);
 static void usage(const char *progname);
-static void init_nls(void);
+static void init_nls(const char *argv0);
 
 
 /*
@@ -1754,13 +1754,9 @@ usage(const char *progname)
  * Initialized NLS if enabled.
  */
 static void
-init_nls(void)
+init_nls(const char *argv0)
 {
-#ifdef ENABLE_NLS
-        setlocale(LC_ALL, "");
-        bindtextdomain("initdb", LOCALEDIR);
-        textdomain("initdb");
-#endif
+       set_pglocale(argv0, "initdb");
 }
 
 
@@ -1801,7 +1797,7 @@ main(int argc, char *argv[])
                                                                 * environment */
        char       *subdirs[] =
        {"global", "pg_xlog", "pg_clog", "base", "base/1"};
-       init_nls();
+       init_nls(argv[0]);
 
        progname = get_progname(argv[0]);
 
index 0ec0705da37db4bcc79c8093f705ca0547b22318..17da280570008feff2c0b618f45e66f73df8855e 100644 (file)
@@ -4,7 +4,7 @@
 #
 # Copyright (c) 1998-2002, PostgreSQL Global Development Group
 #
-# $PostgreSQL: pgsql/src/bin/pg_controldata/Makefile,v 1.7 2004/04/30 20:01:39 momjian Exp $
+# $PostgreSQL: pgsql/src/bin/pg_controldata/Makefile,v 1.8 2004/05/25 01:00:23 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -14,7 +14,7 @@ include $(top_builddir)/src/Makefile.global
 
 override CPPFLAGS += -DFRONTEND
 
-OBJS= pg_controldata.o pg_crc.o
+OBJS= pg_controldata.o pg_crc.o exec.o
 
 all: submake-libpgport pg_controldata
 
@@ -24,6 +24,9 @@ pg_controldata: $(OBJS)
 pg_crc.c: $(top_srcdir)/src/backend/utils/hash/pg_crc.c
        rm -f $@ && $(LN_S) $< .
 
+exec.c: % : $(top_srcdir)/src/port/%
+       rm -f $@ && $(LN_S) $< .
+
 install: all installdirs
        $(INSTALL_PROGRAM) pg_controldata$(X) $(DESTDIR)$(bindir)/pg_controldata$(X)
 
@@ -34,4 +37,4 @@ uninstall:
        rm -f $(DESTDIR)$(bindir)/pg_controldata$(X)
 
 clean distclean maintainer-clean:
-       rm -f pg_controldata$(X) pg_controldata.o pg_crc.o pg_crc.c
+       rm -f pg_controldata$(X) pg_controldata.o pg_crc.o pg_crc.c exec.c
index 86b4d557d9c6e9577b5aea66a0e00b1e9af3ef12..c7d28d11ee2057ff3299ee66944858b7498117dd 100644 (file)
@@ -6,7 +6,7 @@
  * copyright (c) Oliver Elphick <olly@lfix.co.uk>, 2001;
  * licence: BSD
  *
- * $PostgreSQL: pgsql/src/bin/pg_controldata/pg_controldata.c,v 1.15 2004/05/12 13:38:43 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_controldata/pg_controldata.c,v 1.16 2004/05/25 01:00:23 momjian Exp $
  */
 #include "postgres.h"
 
@@ -77,11 +77,7 @@ main(int argc, char *argv[])
        char       *strftime_fmt = "%c";
        const char *progname;
 
-       setlocale(LC_ALL, "");
-#ifdef ENABLE_NLS
-       bindtextdomain("pg_controldata", LOCALEDIR);
-       textdomain("pg_controldata");
-#endif
+       set_pglocale(argv[0], "pg_controldata");
 
        progname = get_progname(argv[0]);
 
index 035e4a4275a61f99e8d4f8a55e2d98a7da469b81..2a788b68de040d7b875f19b2fa24dbc040dc49ba 100644 (file)
@@ -5,7 +5,7 @@
 # Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
 #
-# $PostgreSQL: pgsql/src/bin/pg_dump/Makefile,v 1.51 2004/05/24 01:01:37 momjian Exp $
+# $PostgreSQL: pgsql/src/bin/pg_dump/Makefile,v 1.52 2004/05/25 01:00:24 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -17,8 +17,7 @@ override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) -DFRONTEND
 
 OBJS=  pg_backup_archiver.o pg_backup_db.o pg_backup_custom.o \
        pg_backup_files.o pg_backup_null.o pg_backup_tar.o \
-       dumputils.o
-PG_DUMPALL_OBJS = exec.o
+       dumputils.o exec.o
 
 EXTRA_OBJS = $(top_builddir)/src/backend/parser/keywords.o
 
@@ -31,8 +30,8 @@ pg_dump: pg_dump.o common.o pg_dump_sort.o $(OBJS) $(libpq_builddir)/libpq.a
 pg_restore: pg_restore.o $(OBJS) $(libpq_builddir)/libpq.a
        $(CC) $(CFLAGS) pg_restore.o $(OBJS) $(EXTRA_OBJS) $(libpq) $(LDFLAGS) $(LIBS) -o $@$(X)
 
-pg_dumpall: pg_dumpall.o dumputils.o $(PG_DUMPALL_OBJS) $(libpq_builddir)/libpq.a
-       $(CC) $(CFLAGS) pg_dumpall.o dumputils.o $(PG_DUMPALL_OBJS) $(EXTRA_OBJS) $(libpq) $(LDFLAGS) $(LIBS) -o $@$(X)
+pg_dumpall: pg_dumpall.o dumputils.o exec.o $(libpq_builddir)/libpq.a
+       $(CC) $(CFLAGS) pg_dumpall.o dumputils.o exec.o $(EXTRA_OBJS) $(libpq) $(LDFLAGS) $(LIBS) -o $@$(X)
 
 # We need our own build of exec.c so it gets made with -DFRONTEND
 exec.c: % : $(top_srcdir)/src/port/%
@@ -55,4 +54,4 @@ uninstall:
        rm -f $(addprefix $(DESTDIR)$(bindir)/, pg_dump$(X) pg_restore$(X) pg_dumpall$(X))
 
 clean distclean maintainer-clean:
-       rm -f pg_dump$(X) pg_restore$(X) pg_dumpall$(X) $(OBJS) $(PG_DUMPALL_OBJS) pg_dump.o common.o pg_dump_sort.o pg_restore.o pg_dumpall.o exec.c
+       rm -f pg_dump$(X) pg_restore$(X) pg_dumpall$(X) $(OBJS) pg_dump.o common.o pg_dump_sort.o pg_restore.o pg_dumpall.o exec.c
index b6a7e053484b49aad610ed9dd764f7d529a45ef1..c178baa472628aed37f6536c80d47bd58a8f2e2c 100644 (file)
@@ -12,7 +12,7 @@
  *     by PostgreSQL
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.370 2004/03/24 03:06:08 momjian Exp $
+ *       $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.371 2004/05/25 01:00:24 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -242,11 +242,7 @@ main(int argc, char **argv)
        };
        int                     optindex;
 
-#ifdef ENABLE_NLS
-       setlocale(LC_ALL, "");
-       bindtextdomain("pg_dump", LOCALEDIR);
-       textdomain("pg_dump");
-#endif
+       set_pglocale(argv[0], "pg_dump");
 
        g_verbose = false;
 
index 55d52bd778c076d442e9896252d9a9f9d5efde12..872416b64f74f3311bfc218efb678d91e65c2277 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  *
- * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.34 2004/05/19 21:21:26 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.35 2004/05/25 01:00:24 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -101,11 +101,7 @@ main(int argc, char *argv[])
 
        int                     optindex;
 
-#ifdef ENABLE_NLS
-       setlocale(LC_ALL, "");
-       bindtextdomain("pg_dump", LOCALEDIR);
-       textdomain("pg_dump");
-#endif
+       set_pglocale(argv[0], "pg_dump");
 
        progname = get_progname(argv[0]);
 
index d8dfcc4c486e2405a1104d3b2ab4491c92f3105e..de44b583d12443cf054e78c8e056f8d0c10959c6 100644 (file)
@@ -34,7 +34,7 @@
  *
  *
  * IDENTIFICATION
- *             $PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.56 2004/04/22 02:39:10 momjian Exp $
+ *             $PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.57 2004/05/25 01:00:24 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -121,11 +121,7 @@ main(int argc, char **argv)
                {NULL, 0, NULL, 0}
        };
 
-#ifdef ENABLE_NLS
-       setlocale(LC_ALL, "");
-       bindtextdomain("pg_dump", LOCALEDIR);
-       textdomain("pg_dump");
-#endif
+       set_pglocale(argv[0], "pg_dump");
 
        opts = NewRestoreOptions();
 
index abbeea65c7f793d447f3242bd3a475a213146286..8e8b3394f417d111545a6c9dfa4e080d0b1d5773 100644 (file)
@@ -4,7 +4,7 @@
 #
 # Copyright (c) 1998-2002, PostgreSQL Global Development Group
 #
-# $PostgreSQL: pgsql/src/bin/pg_resetxlog/Makefile,v 1.9 2004/05/24 01:01:37 momjian Exp $
+# $PostgreSQL: pgsql/src/bin/pg_resetxlog/Makefile,v 1.10 2004/05/25 01:00:25 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -14,7 +14,7 @@ include $(top_builddir)/src/Makefile.global
 
 override CPPFLAGS += -DFRONTEND
 
-OBJS= pg_resetxlog.o pg_crc.o dirmod.o
+OBJS= pg_resetxlog.o pg_crc.o dirmod.o exec.o
 
 all: submake-libpgport pg_resetxlog
 
@@ -27,6 +27,9 @@ dirmod.c: % : $(top_srcdir)/src/port/%
 pg_crc.c: $(top_srcdir)/src/backend/utils/hash/pg_crc.c
        rm -f $@ && $(LN_S) $< .
 
+exec.c: % : $(top_srcdir)/src/port/%
+       rm -f $@ && $(LN_S) $< .
+
 install: all installdirs
        $(INSTALL_PROGRAM) pg_resetxlog$(X) $(DESTDIR)$(bindir)/pg_resetxlog$(X)
 
@@ -37,4 +40,4 @@ uninstall:
        rm -f $(DESTDIR)$(bindir)/pg_resetxlog$(X)
 
 clean distclean maintainer-clean:
-       rm -f pg_resetxlog$(X) pg_crc.c dirmod.c $(OBJS)
+       rm -f pg_resetxlog$(X) pg_crc.c dirmod.c exec.c $(OBJS)
index 8c57f7101159724e50a3d115087c7e5fe1194ec9..6f2ed53161107a8ff7642bdd4c0606155cf6443e 100644 (file)
@@ -23,7 +23,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/bin/pg_resetxlog/pg_resetxlog.c,v 1.18 2004/05/12 13:38:44 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_resetxlog/pg_resetxlog.c,v 1.19 2004/05/25 01:00:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -102,11 +102,7 @@ main(int argc, char *argv[])
        int                     fd;
        char            path[MAXPGPATH];
 
-       setlocale(LC_ALL, "");
-#ifdef ENABLE_NLS
-       bindtextdomain("pg_resetxlog", LOCALEDIR);
-       textdomain("pg_resetxlog");
-#endif
+       set_pglocale(argv[0], "pg_resetxlog");
 
        progname = get_progname(argv[0]);
 
index 908b8dec8026e401ac2a5c439d7606a7aa1571f7..1d45105bd4b4f7657d47e4b59c294cc87d378111 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2003, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.93 2004/05/17 14:35:33 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.94 2004/05/25 01:00:26 momjian Exp $
  */
 #include "postgres_fe.h"
 
@@ -102,11 +102,7 @@ main(int argc, char *argv[])
        char       *password = NULL;
        bool            need_pass;
 
-       setlocale(LC_ALL, "");
-#ifdef ENABLE_NLS
-       bindtextdomain("psql", LOCALEDIR);
-       textdomain("psql");
-#endif
+       set_pglocale(argv[0], "psql");
 
        pset.progname = get_progname(argv[0]);
 
index 612b07071f8f7cb264b35b239a37c86629520088..15b692e2dbb84c71a2576f16b95b4cead491b362 100644 (file)
@@ -5,7 +5,7 @@
 # Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
 #
-# $PostgreSQL: pgsql/src/bin/scripts/Makefile,v 1.26 2004/04/26 17:40:48 momjian Exp $
+# $PostgreSQL: pgsql/src/bin/scripts/Makefile,v 1.27 2004/05/25 01:00:27 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -15,21 +15,24 @@ include $(top_builddir)/src/Makefile.global
 
 PROGRAMS = createdb createlang createuser dropdb droplang dropuser clusterdb vacuumdb
 
-override CPPFLAGS := -I$(top_srcdir)/src/bin/pg_dump -I$(top_srcdir)/src/bin/psql -I$(libpq_srcdir) $(CPPFLAGS)
+override CPPFLAGS := -DFRONTEND -I$(top_srcdir)/src/bin/pg_dump -I$(top_srcdir)/src/bin/psql -I$(libpq_srcdir) $(CPPFLAGS)
 
 all: submake-libpq submake-backend $(PROGRAMS)
 
 %: %.o
        $(CC) $(CFLAGS) $^ $(libpq) $(LDFLAGS) $(LIBS) -o $@$(X)
 
-createdb: createdb.o common.o dumputils.o $(top_builddir)/src/backend/parser/keywords.o
-createlang: createlang.o common.o print.o mbprint.o
-createuser: createuser.o common.o dumputils.o $(top_builddir)/src/backend/parser/keywords.o
-dropdb: dropdb.o common.o dumputils.o $(top_builddir)/src/backend/parser/keywords.o
-droplang: droplang.o common.o print.o mbprint.o
-dropuser: dropuser.o common.o dumputils.o $(top_builddir)/src/backend/parser/keywords.o
-clusterdb: clusterdb.o common.o dumputils.o $(top_builddir)/src/backend/parser/keywords.o
-vacuumdb: vacuumdb.o common.o
+createdb: createdb.o common.o exec.o dumputils.o $(top_builddir)/src/backend/parser/keywords.o
+createlang: createlang.o common.o exec.o print.o mbprint.o
+createuser: createuser.o common.o exec.o dumputils.o $(top_builddir)/src/backend/parser/keywords.o
+dropdb: dropdb.o common.o exec.o dumputils.o $(top_builddir)/src/backend/parser/keywords.o
+droplang: droplang.o common.o exec.o print.o mbprint.o
+dropuser: dropuser.o common.o exec.o dumputils.o $(top_builddir)/src/backend/parser/keywords.o
+clusterdb: clusterdb.o common.o exec.o dumputils.o $(top_builddir)/src/backend/parser/keywords.o
+vacuumdb: vacuumdb.o common.o exec.o
+
+exec.c: % : $(top_srcdir)/src/port/%
+       rm -f $@ && $(LN_S) $< .
 
 dumputils.c: % : $(top_srcdir)/src/bin/pg_dump/%
        rm -f $@ && $(LN_S) $< .
@@ -60,4 +63,4 @@ uninstall:
 
 
 clean distclean maintainer-clean:
-       rm -f $(addsuffix $(X), $(PROGRAMS)) $(addsuffix .o, $(PROGRAMS)) common.o dumputils.o print.o mbprint.o dumputils.c print.c mbprint.c
+       rm -f $(addsuffix $(X), $(PROGRAMS)) $(addsuffix .o, $(PROGRAMS)) common.o dumputils.o print.o mbprint.o dumputils.c exec.c print.c mbprint.c
index 0fcab8ec6daca6ebe34d3b581610f9b22c5d103d..a912d0b1f9743385e1d9bd57076dec92a9cbe496 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Portions Copyright (c) 2002-2003, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/scripts/clusterdb.c,v 1.6 2004/05/12 13:38:46 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/scripts/clusterdb.c,v 1.7 2004/05/25 01:00:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -58,7 +58,7 @@ main(int argc, char *argv[])
        char       *table = NULL;
 
        progname = get_progname(argv[0]);
-       init_nls();
+       init_nls(argv[0]);
        handle_help_version_opts(argc, argv, "clusterdb", help);
 
        while ((c = getopt_long(argc, argv, "h:p:U:Weqd:at:", long_options, &optindex)) != -1)
index f14e0b206e18ab4a67f7a8a99d9761b1e1873341..715d7e3cdb19e82b0fb7ddfbf7d15c512852ae27 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/bin/scripts/common.c,v 1.7 2004/04/19 17:42:59 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/scripts/common.c,v 1.8 2004/05/25 01:00:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -51,13 +51,9 @@ get_user_name(const char *progname)
  * Initialized NLS if enabled.
  */
 void
-init_nls(void)
+init_nls(const char *argv0)
 {
-#ifdef ENABLE_NLS
-       setlocale(LC_ALL, "");
-       bindtextdomain("pgscripts", LOCALEDIR);
-       textdomain("pgscripts");
-#endif
+       set_pglocale(argv0, "pgscripts");
 }
 
 
index 3c9da3e0136c557c2cf6ca1f7c79bdbf94937315..8898fc5fe6d24de52aee5422d62a37ff9c065226 100644 (file)
@@ -11,7 +11,7 @@ int                   optreset;
 const char *get_user_name(const char *progname);
 
 #define _(x) gettext((x))
-void           init_nls(void);
+void           init_nls(const char *argv0);
 
 typedef void (*help_handler) (const char *);
 
index 8ee5fdca6516105d7856b2138905807cc7c39970..cf75e83c20f1bd69103b4433fbae8c4ee4936741 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/bin/scripts/createdb.c,v 1.8 2004/05/12 13:38:47 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/scripts/createdb.c,v 1.9 2004/05/25 01:00:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -60,7 +60,7 @@ main(int argc, char *argv[])
        PGresult   *result;
 
        progname = get_progname(argv[0]);
-       init_nls();
+       init_nls(argv[0]);
        handle_help_version_opts(argc, argv, "createdb", help);
 
        while ((c = getopt_long(argc, argv, "h:p:U:WeqO:D:T:E:", long_options, &optindex)) != -1)
index f75e9e07cdd5be67930ccc3ef0ac2d4ca550e744..89eef3aa6be0d681bfcd1f8d0ad2011ab1bbbc19 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/bin/scripts/createlang.c,v 1.9 2004/05/12 13:38:47 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/scripts/createlang.c,v 1.10 2004/05/25 01:00:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -61,7 +61,7 @@ main(int argc, char *argv[])
        PGresult   *result;
 
        progname = get_progname(argv[0]);
-       init_nls();
+       init_nls(argv[0]);
        handle_help_version_opts(argc, argv, "createlang", help);
 
        while ((c = getopt_long(argc, argv, "lh:p:U:Wd:L:e", long_options, &optindex)) != -1)
index 2a262ecb39bac4792467a7da233778f022a96874..d3b395f63057fea43332b2ec1dfe803ee4e8eb34 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/bin/scripts/createuser.c,v 1.10 2004/05/12 13:38:48 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/scripts/createuser.c,v 1.11 2004/05/25 01:00:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -63,7 +63,7 @@ main(int argc, char *argv[])
        PGresult   *result;
 
        progname = get_progname(argv[0]);
-       init_nls();
+       init_nls(argv[0]);
        handle_help_version_opts(argc, argv, "createuser", help);
 
        while ((c = getopt_long(argc, argv, "h:p:U:WeqaAdDi:PEN", long_options, &optindex)) != -1)
index 5b8540e4c38f745ca242d3299ff637af8cf7621f..08331a0f1336fd5b9818fdf18002d9c53f0bc253 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/bin/scripts/dropdb.c,v 1.9 2004/05/12 13:38:48 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/scripts/dropdb.c,v 1.10 2004/05/25 01:00:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -51,7 +51,7 @@ main(int argc, char *argv[])
        PGresult   *result;
 
        progname = get_progname(argv[0]);
-       init_nls();
+       init_nls(argv[0]);
        handle_help_version_opts(argc, argv, "dropdb", help);
 
        while ((c = getopt_long(argc, argv, "h:p:U:Weqi", long_options, &optindex)) != -1)
index 63fe0f7c32c2568442dd5703afd6e50c6dd7a53b..fc7a94241c3b694a2ae44618808a8b49c2ca7d02 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/bin/scripts/droplang.c,v 1.8 2004/05/12 13:38:48 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/scripts/droplang.c,v 1.9 2004/05/25 01:00:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -61,7 +61,7 @@ main(int argc, char *argv[])
        PGresult   *result;
 
        progname = get_progname(argv[0]);
-       init_nls();
+       init_nls(argv[0]);
        handle_help_version_opts(argc, argv, "droplang", help);
 
        while ((c = getopt_long(argc, argv, "lh:p:U:Wd:e", long_options, &optindex)) != -1)
index 352f913a06c93b473603deda6d0bcf3e1e693fa2..a901b64bbb1a86980ef1097352bedafb52f4326c 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/bin/scripts/dropuser.c,v 1.8 2004/05/12 13:38:48 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/scripts/dropuser.c,v 1.9 2004/05/25 01:00:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -51,7 +51,7 @@ main(int argc, char *argv[])
        PGresult   *result;
 
        progname = get_progname(argv[0]);
-       init_nls();
+       init_nls(argv[0]);
        handle_help_version_opts(argc, argv, "dropuser", help);
 
        while ((c = getopt_long(argc, argv, "h:p:U:Weqi", long_options, &optindex)) != -1)
index ae64f34ab92c193b71f130352929062bcaae5df5..eb4fb0d5e198eee62fd854d1ed1bec0ff5f7a273 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/bin/scripts/vacuumdb.c,v 1.6 2004/05/12 13:38:48 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/scripts/vacuumdb.c,v 1.7 2004/05/25 01:00:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -66,7 +66,7 @@ main(int argc, char *argv[])
        bool            verbose = false;
 
        progname = get_progname(argv[0]);
-       init_nls();
+       init_nls(argv[0]);
        handle_help_version_opts(argc, argv, "vacuumdb", help);
 
        while ((c = getopt_long(argc, argv, "h:p:U:Weqd:zat:fv", long_options, &optindex)) != -1)
index 9526a0ba386e6aebe18931a3272e409edf3949fc..1357984afbb8afd9dd2f35f320269c5a94c1d3ce 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/port.h,v 1.37 2004/05/21 16:06:22 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/port.h,v 1.38 2004/05/25 01:00:28 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -31,6 +31,8 @@ extern void get_etc_path(const char *my_exec_path, char *ret_path);
 extern void get_include_path(const char *my_exec_path, char *ret_path);
 extern void get_pkginclude_path(const char *my_exec_path, char *ret_path);
 extern void get_pkglib_path(const char *my_exec_path, char *ret_path);
+extern void get_locale_path(const char *my_exec_path, char *ret_path);
+extern void set_pglocale(const char *argv0, const char *app);
 
 /*
  *     is_absolute_path
index d484747b9c5e0adfcb7af160e51d569106c0a66d..abf2111a508b9d277f4f84c5c1ebdec3638c87c4 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.105 2004/03/15 10:41:26 ishii Exp $
+ *       $PostgreSQL: pgsql/src/interfaces/libpq/fe-misc.c,v 1.106 2004/05/25 01:00:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1131,6 +1131,7 @@ libpq_gettext(const char *msgid)
        if (!already_bound)
        {
                already_bound = 1;
+               /* No relocatable lookup here because the binary could be anywhere */
                bindtextdomain("libpq", LOCALEDIR);
        }
 
index 76f967ae6564087900ee5a208b45cc41fcfa2602..8540178de1eca4a8d043efde9ea71378638e5c31 100644 (file)
@@ -7,7 +7,7 @@
 # with broken/missing library files.
 
 # IDENTIFICATION
-#    $PostgreSQL: pgsql/src/port/Makefile,v 1.13 2004/05/22 02:15:08 tgl Exp $
+#    $PostgreSQL: pgsql/src/port/Makefile,v 1.14 2004/05/25 01:00:30 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -37,6 +37,7 @@ pg_config_paths.h: $(top_builddir)/src/Makefile.global
        echo "#define INCLUDEDIR \"$(includedir)\"" >>$@
        echo "#define PKGINCLUDEDIR \"$(pkgincludedir)\"" >>$@
        echo "#define PKGLIBDIR \"$(pkglibdir)\"" >>$@
+       echo "#define LOCALEDIR \"$(localedir)\"" >>$@
 
 clean distclean maintainer-clean:
        rm -f libpgport.a $(LIBOBJS) pg_config_paths.h
index 616be999b10959e8b0f3cb29cef3646ed6fba65a..af6cbf91bff1313005c4502df505d18cf1f21597 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/port/path.c,v 1.11 2004/05/21 20:56:50 tgl Exp $
+ *       $PostgreSQL: pgsql/src/port/path.c,v 1.12 2004/05/25 01:00:30 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -113,12 +113,14 @@ get_progname(const char *argv0)
 void
 get_share_path(const char *my_exec_path, char *ret_path)
 {
+       char path[MAXPGPATH];
+       
        if (relative_path(PGBINDIR, PGSHAREDIR))
        {
-               StrNCpy(ret_path, my_exec_path, MAXPGPATH);
-               trim_directory(ret_path);       /* trim off binary */
-               trim_directory(ret_path);       /* trim off /bin */
-               strcat(ret_path, "/share");     /* add /share */
+               StrNCpy(path, my_exec_path, MAXPGPATH);
+               trim_directory(path);   /* trim off binary */
+               trim_directory(path);   /* trim off /bin */
+               snprintf(ret_path, MAXPGPATH, "%s/share", path);
        }
        else
                StrNCpy(ret_path, PGSHAREDIR, MAXPGPATH);
@@ -132,12 +134,14 @@ get_share_path(const char *my_exec_path, char *ret_path)
 void
 get_etc_path(const char *my_exec_path, char *ret_path)
 {
+       char path[MAXPGPATH];
+       
        if (relative_path(PGBINDIR, SYSCONFDIR))
        {
-               StrNCpy(ret_path, my_exec_path, MAXPGPATH);
-               trim_directory(ret_path);
-               trim_directory(ret_path);
-               strcat(ret_path, "/etc");
+               StrNCpy(path, my_exec_path, MAXPGPATH);
+               trim_directory(path);
+               trim_directory(path);
+               snprintf(ret_path, MAXPGPATH, "%s/etc", path);
        }
        else
                StrNCpy(ret_path, SYSCONFDIR, MAXPGPATH);
@@ -151,12 +155,14 @@ get_etc_path(const char *my_exec_path, char *ret_path)
 void
 get_include_path(const char *my_exec_path, char *ret_path)
 {
+       char path[MAXPGPATH];
+       
        if (relative_path(PGBINDIR, INCLUDEDIR))
        {
-               StrNCpy(ret_path, my_exec_path, MAXPGPATH);
-               trim_directory(ret_path);
-               trim_directory(ret_path);
-               strcat(ret_path, "/include");
+               StrNCpy(path, my_exec_path, MAXPGPATH);
+               trim_directory(path);
+               trim_directory(path);
+               snprintf(ret_path, MAXPGPATH, "%s/include", path);
        }
        else
                StrNCpy(ret_path, INCLUDEDIR, MAXPGPATH);
@@ -170,12 +176,14 @@ get_include_path(const char *my_exec_path, char *ret_path)
 void
 get_pkginclude_path(const char *my_exec_path, char *ret_path)
 {
+       char path[MAXPGPATH];
+       
        if (relative_path(PGBINDIR, PKGINCLUDEDIR))
        {
-               StrNCpy(ret_path, my_exec_path, MAXPGPATH);
-               trim_directory(ret_path);
-               trim_directory(ret_path);
-               strcat(ret_path, "/include");
+               StrNCpy(path, my_exec_path, MAXPGPATH);
+               trim_directory(path);
+               trim_directory(path);
+               snprintf(ret_path, MAXPGPATH, "%s/include", path);
        }
        else
                StrNCpy(ret_path, PKGINCLUDEDIR, MAXPGPATH);
@@ -191,12 +199,14 @@ get_pkginclude_path(const char *my_exec_path, char *ret_path)
 void
 get_pkglib_path(const char *my_exec_path, char *ret_path)
 {
+       char path[MAXPGPATH];
+       
        if (relative_path(PGBINDIR, PKGLIBDIR))
        {
-               StrNCpy(ret_path, my_exec_path, MAXPGPATH);
-               trim_directory(ret_path);
-               trim_directory(ret_path);
-               strcat(ret_path, "/lib");
+               StrNCpy(path, my_exec_path, MAXPGPATH);
+               trim_directory(path);
+               trim_directory(path);
+               snprintf(ret_path, MAXPGPATH, "%s/lib", path);
        }
        else
                StrNCpy(ret_path, PKGLIBDIR, MAXPGPATH);
@@ -204,6 +214,55 @@ get_pkglib_path(const char *my_exec_path, char *ret_path)
 
 
 
+/*
+ *     get_locale_path
+ *
+ *     Return locale path, either relative to /bin or hardcoded
+ */
+void
+get_locale_path(const char *my_exec_path, char *ret_path)
+{
+       char path[MAXPGPATH];
+       
+       if (relative_path(PGBINDIR, LOCALEDIR))
+       {
+               StrNCpy(path, my_exec_path, MAXPGPATH);
+               trim_directory(path);
+               trim_directory(path);
+               snprintf(ret_path, MAXPGPATH, "%s/share/locale", path);
+       }
+       else
+               StrNCpy(ret_path, LOCALEDIR, MAXPGPATH);
+}
+
+
+
+/*
+ *     set_pglocale
+ *
+ *     Set application-specific locale
+ *
+ *     This function takes an argv[0] rather than a full path.
+ */
+void
+set_pglocale(const char *argv0, const char *app)
+{
+#ifdef ENABLE_NLS
+       char path[MAXPGPATH];
+       char my_exec_path[MAXPGPATH];
+
+       setlocale(LC_ALL, "");
+       if (find_my_exec(argv0, my_exec_path) < 0)
+               return;
+               
+       get_locale_path(argv0, path);
+       bindtextdomain(app, path);
+       textdomain(app);
+#endif
+}
+
+
+
 /*
  *     relative_path
  *