Index: src/backend/main/main.c =================================================================== RCS file: /cvsroot/pgsql-server/src/backend/main/main.c,v retrieving revision 1.81 diff -c -c -r1.81 main.c *** src/backend/main/main.c 24 May 2004 02:47:44 -0000 1.81 --- src/backend/main/main.c 25 May 2004 00:54:53 -0000 *************** *** 150,155 **** --- 150,157 ---- * startup error messages to be localized. */ + set_pglocale(argv[0], "postgres"); + #ifdef WIN32 /* * Windows uses codepages rather than the environment, so we work around *************** *** 184,194 **** setlocale(LC_MONETARY, "C"); 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 --- 186,191 ---- Index: src/bin/initdb/initdb.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/initdb/initdb.c,v retrieving revision 1.32 diff -c -c -r1.32 initdb.c *** src/bin/initdb/initdb.c 18 May 2004 03:36:36 -0000 1.32 --- src/bin/initdb/initdb.c 25 May 2004 00:54:56 -0000 *************** *** 167,173 **** static bool chklocale(const char *locale); static void setlocales(void); static void usage(const char *progname); ! static void init_nls(void); /* --- 167,173 ---- static bool chklocale(const char *locale); static void setlocales(void); static void usage(const char *progname); ! static void init_nls(const char *argv0); /* *************** *** 1754,1766 **** * Initialized NLS if enabled. */ static void ! init_nls(void) { ! #ifdef ENABLE_NLS ! setlocale(LC_ALL, ""); ! bindtextdomain("initdb", LOCALEDIR); ! textdomain("initdb"); ! #endif } --- 1754,1762 ---- * Initialized NLS if enabled. */ static void ! init_nls(const char *argv0) { ! set_pglocale(argv0, "initdb"); } *************** *** 1801,1807 **** * environment */ char *subdirs[] = {"global", "pg_xlog", "pg_clog", "base", "base/1"}; ! init_nls(); progname = get_progname(argv[0]); --- 1797,1803 ---- * environment */ char *subdirs[] = {"global", "pg_xlog", "pg_clog", "base", "base/1"}; ! init_nls(argv[0]); progname = get_progname(argv[0]); Index: src/bin/pg_controldata/Makefile =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/pg_controldata/Makefile,v retrieving revision 1.7 diff -c -c -r1.7 Makefile *** src/bin/pg_controldata/Makefile 30 Apr 2004 20:01:39 -0000 1.7 --- src/bin/pg_controldata/Makefile 25 May 2004 00:54:56 -0000 *************** *** 14,20 **** override CPPFLAGS += -DFRONTEND ! OBJS= pg_controldata.o pg_crc.o all: submake-libpgport pg_controldata --- 14,20 ---- override CPPFLAGS += -DFRONTEND ! OBJS= pg_controldata.o pg_crc.o exec.o all: submake-libpgport pg_controldata *************** *** 24,29 **** --- 24,32 ---- 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,37 **** 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 --- 37,40 ---- 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 exec.c Index: src/bin/pg_controldata/pg_controldata.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/pg_controldata/pg_controldata.c,v retrieving revision 1.15 diff -c -c -r1.15 pg_controldata.c *** src/bin/pg_controldata/pg_controldata.c 12 May 2004 13:38:43 -0000 1.15 --- src/bin/pg_controldata/pg_controldata.c 25 May 2004 00:54:57 -0000 *************** *** 77,87 **** char *strftime_fmt = "%c"; const char *progname; ! setlocale(LC_ALL, ""); ! #ifdef ENABLE_NLS ! bindtextdomain("pg_controldata", LOCALEDIR); ! textdomain("pg_controldata"); ! #endif progname = get_progname(argv[0]); --- 77,83 ---- char *strftime_fmt = "%c"; const char *progname; ! set_pglocale(argv[0], "pg_controldata"); progname = get_progname(argv[0]); Index: src/bin/pg_dump/Makefile =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/pg_dump/Makefile,v retrieving revision 1.51 diff -c -c -r1.51 Makefile *** src/bin/pg_dump/Makefile 24 May 2004 01:01:37 -0000 1.51 --- src/bin/pg_dump/Makefile 25 May 2004 00:54:57 -0000 *************** *** 17,24 **** 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 EXTRA_OBJS = $(top_builddir)/src/backend/parser/keywords.o --- 17,23 ---- 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 exec.o EXTRA_OBJS = $(top_builddir)/src/backend/parser/keywords.o *************** *** 31,38 **** 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) # We need our own build of exec.c so it gets made with -DFRONTEND exec.c: % : $(top_srcdir)/src/port/% --- 30,37 ---- 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 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,58 **** 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 --- 54,57 ---- 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_dump.o common.o pg_dump_sort.o pg_restore.o pg_dumpall.o exec.c Index: src/bin/pg_dump/pg_dump.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/pg_dump/pg_dump.c,v retrieving revision 1.370 diff -c -c -r1.370 pg_dump.c *** src/bin/pg_dump/pg_dump.c 24 Mar 2004 03:06:08 -0000 1.370 --- src/bin/pg_dump/pg_dump.c 25 May 2004 00:55:02 -0000 *************** *** 242,252 **** }; int optindex; ! #ifdef ENABLE_NLS ! setlocale(LC_ALL, ""); ! bindtextdomain("pg_dump", LOCALEDIR); ! textdomain("pg_dump"); ! #endif g_verbose = false; --- 242,248 ---- }; int optindex; ! set_pglocale(argv[0], "pg_dump"); g_verbose = false; Index: src/bin/pg_dump/pg_dumpall.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/pg_dump/pg_dumpall.c,v retrieving revision 1.34 diff -c -c -r1.34 pg_dumpall.c *** src/bin/pg_dump/pg_dumpall.c 19 May 2004 21:21:26 -0000 1.34 --- src/bin/pg_dump/pg_dumpall.c 25 May 2004 00:55:03 -0000 *************** *** 101,111 **** int optindex; ! #ifdef ENABLE_NLS ! setlocale(LC_ALL, ""); ! bindtextdomain("pg_dump", LOCALEDIR); ! textdomain("pg_dump"); ! #endif progname = get_progname(argv[0]); --- 101,107 ---- int optindex; ! set_pglocale(argv[0], "pg_dump"); progname = get_progname(argv[0]); Index: src/bin/pg_dump/pg_restore.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/pg_dump/pg_restore.c,v retrieving revision 1.56 diff -c -c -r1.56 pg_restore.c *** src/bin/pg_dump/pg_restore.c 22 Apr 2004 02:39:10 -0000 1.56 --- src/bin/pg_dump/pg_restore.c 25 May 2004 00:55:03 -0000 *************** *** 121,131 **** {NULL, 0, NULL, 0} }; ! #ifdef ENABLE_NLS ! setlocale(LC_ALL, ""); ! bindtextdomain("pg_dump", LOCALEDIR); ! textdomain("pg_dump"); ! #endif opts = NewRestoreOptions(); --- 121,127 ---- {NULL, 0, NULL, 0} }; ! set_pglocale(argv[0], "pg_dump"); opts = NewRestoreOptions(); Index: src/bin/pg_resetxlog/Makefile =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/pg_resetxlog/Makefile,v retrieving revision 1.9 diff -c -c -r1.9 Makefile *** src/bin/pg_resetxlog/Makefile 24 May 2004 01:01:37 -0000 1.9 --- src/bin/pg_resetxlog/Makefile 25 May 2004 00:55:03 -0000 *************** *** 14,20 **** override CPPFLAGS += -DFRONTEND ! OBJS= pg_resetxlog.o pg_crc.o dirmod.o all: submake-libpgport pg_resetxlog --- 14,20 ---- override CPPFLAGS += -DFRONTEND ! OBJS= pg_resetxlog.o pg_crc.o dirmod.o exec.o all: submake-libpgport pg_resetxlog *************** *** 27,32 **** --- 27,35 ---- 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,40 **** rm -f $(DESTDIR)$(bindir)/pg_resetxlog$(X) clean distclean maintainer-clean: ! rm -f pg_resetxlog$(X) pg_crc.c dirmod.c $(OBJS) --- 40,43 ---- rm -f $(DESTDIR)$(bindir)/pg_resetxlog$(X) clean distclean maintainer-clean: ! rm -f pg_resetxlog$(X) pg_crc.c dirmod.c exec.c $(OBJS) Index: src/bin/pg_resetxlog/pg_resetxlog.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/pg_resetxlog/pg_resetxlog.c,v retrieving revision 1.18 diff -c -c -r1.18 pg_resetxlog.c *** src/bin/pg_resetxlog/pg_resetxlog.c 12 May 2004 13:38:44 -0000 1.18 --- src/bin/pg_resetxlog/pg_resetxlog.c 25 May 2004 00:55:03 -0000 *************** *** 102,112 **** int fd; char path[MAXPGPATH]; ! setlocale(LC_ALL, ""); ! #ifdef ENABLE_NLS ! bindtextdomain("pg_resetxlog", LOCALEDIR); ! textdomain("pg_resetxlog"); ! #endif progname = get_progname(argv[0]); --- 102,108 ---- int fd; char path[MAXPGPATH]; ! set_pglocale(argv[0], "pg_resetxlog"); progname = get_progname(argv[0]); Index: src/bin/psql/startup.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/psql/startup.c,v retrieving revision 1.93 diff -c -c -r1.93 startup.c *** src/bin/psql/startup.c 17 May 2004 14:35:33 -0000 1.93 --- src/bin/psql/startup.c 25 May 2004 00:55:04 -0000 *************** *** 102,112 **** char *password = NULL; bool need_pass; ! setlocale(LC_ALL, ""); ! #ifdef ENABLE_NLS ! bindtextdomain("psql", LOCALEDIR); ! textdomain("psql"); ! #endif pset.progname = get_progname(argv[0]); --- 102,108 ---- char *password = NULL; bool need_pass; ! set_pglocale(argv[0], "psql"); pset.progname = get_progname(argv[0]); Index: src/bin/scripts/Makefile =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/scripts/Makefile,v retrieving revision 1.26 diff -c -c -r1.26 Makefile *** src/bin/scripts/Makefile 26 Apr 2004 17:40:48 -0000 1.26 --- src/bin/scripts/Makefile 25 May 2004 00:55:04 -0000 *************** *** 15,35 **** 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) 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 dumputils.c: % : $(top_srcdir)/src/bin/pg_dump/% rm -f $@ && $(LN_S) $< . --- 15,38 ---- PROGRAMS = createdb createlang createuser dropdb droplang dropuser clusterdb vacuumdb ! 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 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,63 **** 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 --- 63,66 ---- clean distclean maintainer-clean: ! 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: src/bin/scripts/clusterdb.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/scripts/clusterdb.c,v retrieving revision 1.6 diff -c -c -r1.6 clusterdb.c *** src/bin/scripts/clusterdb.c 12 May 2004 13:38:46 -0000 1.6 --- src/bin/scripts/clusterdb.c 25 May 2004 00:55:04 -0000 *************** *** 58,64 **** char *table = NULL; progname = get_progname(argv[0]); ! init_nls(); handle_help_version_opts(argc, argv, "clusterdb", help); while ((c = getopt_long(argc, argv, "h:p:U:Weqd:at:", long_options, &optindex)) != -1) --- 58,64 ---- char *table = NULL; progname = get_progname(argv[0]); ! 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: src/bin/scripts/common.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/scripts/common.c,v retrieving revision 1.7 diff -c -c -r1.7 common.c *** src/bin/scripts/common.c 19 Apr 2004 17:42:59 -0000 1.7 --- src/bin/scripts/common.c 25 May 2004 00:55:04 -0000 *************** *** 51,63 **** * Initialized NLS if enabled. */ void ! init_nls(void) { ! #ifdef ENABLE_NLS ! setlocale(LC_ALL, ""); ! bindtextdomain("pgscripts", LOCALEDIR); ! textdomain("pgscripts"); ! #endif } --- 51,59 ---- * Initialized NLS if enabled. */ void ! init_nls(const char *argv0) { ! set_pglocale(argv0, "pgscripts"); } Index: src/bin/scripts/common.h =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/scripts/common.h,v retrieving revision 1.6 diff -c -c -r1.6 common.h *** src/bin/scripts/common.h 8 Aug 2003 04:52:21 -0000 1.6 --- src/bin/scripts/common.h 25 May 2004 00:55:04 -0000 *************** *** 11,17 **** const char *get_user_name(const char *progname); #define _(x) gettext((x)) ! void init_nls(void); typedef void (*help_handler) (const char *); --- 11,17 ---- const char *get_user_name(const char *progname); #define _(x) gettext((x)) ! void init_nls(const char *argv0); typedef void (*help_handler) (const char *); Index: src/bin/scripts/createdb.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/scripts/createdb.c,v retrieving revision 1.8 diff -c -c -r1.8 createdb.c *** src/bin/scripts/createdb.c 12 May 2004 13:38:47 -0000 1.8 --- src/bin/scripts/createdb.c 25 May 2004 00:55:04 -0000 *************** *** 60,66 **** PGresult *result; progname = get_progname(argv[0]); ! init_nls(); 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) --- 60,66 ---- PGresult *result; progname = get_progname(argv[0]); ! 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: src/bin/scripts/createlang.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/scripts/createlang.c,v retrieving revision 1.9 diff -c -c -r1.9 createlang.c *** src/bin/scripts/createlang.c 12 May 2004 13:38:47 -0000 1.9 --- src/bin/scripts/createlang.c 25 May 2004 00:55:04 -0000 *************** *** 61,67 **** PGresult *result; progname = get_progname(argv[0]); ! init_nls(); handle_help_version_opts(argc, argv, "createlang", help); while ((c = getopt_long(argc, argv, "lh:p:U:Wd:L:e", long_options, &optindex)) != -1) --- 61,67 ---- PGresult *result; progname = get_progname(argv[0]); ! 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: src/bin/scripts/createuser.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/scripts/createuser.c,v retrieving revision 1.10 diff -c -c -r1.10 createuser.c *** src/bin/scripts/createuser.c 12 May 2004 13:38:48 -0000 1.10 --- src/bin/scripts/createuser.c 25 May 2004 00:55:04 -0000 *************** *** 63,69 **** PGresult *result; progname = get_progname(argv[0]); ! init_nls(); handle_help_version_opts(argc, argv, "createuser", help); while ((c = getopt_long(argc, argv, "h:p:U:WeqaAdDi:PEN", long_options, &optindex)) != -1) --- 63,69 ---- PGresult *result; progname = get_progname(argv[0]); ! 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: src/bin/scripts/dropdb.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/scripts/dropdb.c,v retrieving revision 1.9 diff -c -c -r1.9 dropdb.c *** src/bin/scripts/dropdb.c 12 May 2004 13:38:48 -0000 1.9 --- src/bin/scripts/dropdb.c 25 May 2004 00:55:04 -0000 *************** *** 51,57 **** PGresult *result; progname = get_progname(argv[0]); ! init_nls(); handle_help_version_opts(argc, argv, "dropdb", help); while ((c = getopt_long(argc, argv, "h:p:U:Weqi", long_options, &optindex)) != -1) --- 51,57 ---- PGresult *result; progname = get_progname(argv[0]); ! 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: src/bin/scripts/droplang.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/scripts/droplang.c,v retrieving revision 1.8 diff -c -c -r1.8 droplang.c *** src/bin/scripts/droplang.c 12 May 2004 13:38:48 -0000 1.8 --- src/bin/scripts/droplang.c 25 May 2004 00:55:04 -0000 *************** *** 61,67 **** PGresult *result; progname = get_progname(argv[0]); ! init_nls(); handle_help_version_opts(argc, argv, "droplang", help); while ((c = getopt_long(argc, argv, "lh:p:U:Wd:e", long_options, &optindex)) != -1) --- 61,67 ---- PGresult *result; progname = get_progname(argv[0]); ! 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: src/bin/scripts/dropuser.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/scripts/dropuser.c,v retrieving revision 1.8 diff -c -c -r1.8 dropuser.c *** src/bin/scripts/dropuser.c 12 May 2004 13:38:48 -0000 1.8 --- src/bin/scripts/dropuser.c 25 May 2004 00:55:04 -0000 *************** *** 51,57 **** PGresult *result; progname = get_progname(argv[0]); ! init_nls(); handle_help_version_opts(argc, argv, "dropuser", help); while ((c = getopt_long(argc, argv, "h:p:U:Weqi", long_options, &optindex)) != -1) --- 51,57 ---- PGresult *result; progname = get_progname(argv[0]); ! 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: src/bin/scripts/vacuumdb.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/scripts/vacuumdb.c,v retrieving revision 1.6 diff -c -c -r1.6 vacuumdb.c *** src/bin/scripts/vacuumdb.c 12 May 2004 13:38:48 -0000 1.6 --- src/bin/scripts/vacuumdb.c 25 May 2004 00:55:05 -0000 *************** *** 66,72 **** bool verbose = false; progname = get_progname(argv[0]); ! init_nls(); handle_help_version_opts(argc, argv, "vacuumdb", help); while ((c = getopt_long(argc, argv, "h:p:U:Weqd:zat:fv", long_options, &optindex)) != -1) --- 66,72 ---- bool verbose = false; progname = get_progname(argv[0]); ! 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: src/include/port.h =================================================================== RCS file: /cvsroot/pgsql-server/src/include/port.h,v retrieving revision 1.37 diff -c -c -r1.37 port.h *** src/include/port.h 21 May 2004 16:06:22 -0000 1.37 --- src/include/port.h 25 May 2004 00:55:05 -0000 *************** *** 31,36 **** --- 31,38 ---- 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: src/interfaces/libpq/fe-misc.c =================================================================== RCS file: /cvsroot/pgsql-server/src/interfaces/libpq/fe-misc.c,v retrieving revision 1.105 diff -c -c -r1.105 fe-misc.c *** src/interfaces/libpq/fe-misc.c 15 Mar 2004 10:41:26 -0000 1.105 --- src/interfaces/libpq/fe-misc.c 25 May 2004 00:55:06 -0000 *************** *** 1131,1136 **** --- 1131,1137 ---- if (!already_bound) { already_bound = 1; + /* No relocatable lookup here because the binary could be anywhere */ bindtextdomain("libpq", LOCALEDIR); } Index: src/port/Makefile =================================================================== RCS file: /cvsroot/pgsql-server/src/port/Makefile,v retrieving revision 1.13 diff -c -c -r1.13 Makefile *** src/port/Makefile 22 May 2004 02:15:08 -0000 1.13 --- src/port/Makefile 25 May 2004 00:55:06 -0000 *************** *** 37,42 **** --- 37,43 ---- 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: src/port/path.c =================================================================== RCS file: /cvsroot/pgsql-server/src/port/path.c,v retrieving revision 1.11 diff -c -c -r1.11 path.c *** src/port/path.c 21 May 2004 20:56:50 -0000 1.11 --- src/port/path.c 25 May 2004 00:55:06 -0000 *************** *** 113,124 **** void get_share_path(const char *my_exec_path, char *ret_path) { 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 */ } else StrNCpy(ret_path, PGSHAREDIR, MAXPGPATH); --- 113,126 ---- void get_share_path(const char *my_exec_path, char *ret_path) { + char path[MAXPGPATH]; + if (relative_path(PGBINDIR, PGSHAREDIR)) { ! 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,143 **** void get_etc_path(const char *my_exec_path, char *ret_path) { if (relative_path(PGBINDIR, SYSCONFDIR)) { ! StrNCpy(ret_path, my_exec_path, MAXPGPATH); ! trim_directory(ret_path); ! trim_directory(ret_path); ! strcat(ret_path, "/etc"); } else StrNCpy(ret_path, SYSCONFDIR, MAXPGPATH); --- 134,147 ---- void get_etc_path(const char *my_exec_path, char *ret_path) { + char path[MAXPGPATH]; + if (relative_path(PGBINDIR, SYSCONFDIR)) { ! 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,162 **** void get_include_path(const char *my_exec_path, char *ret_path) { if (relative_path(PGBINDIR, INCLUDEDIR)) { ! StrNCpy(ret_path, my_exec_path, MAXPGPATH); ! trim_directory(ret_path); ! trim_directory(ret_path); ! strcat(ret_path, "/include"); } else StrNCpy(ret_path, INCLUDEDIR, MAXPGPATH); --- 155,168 ---- void get_include_path(const char *my_exec_path, char *ret_path) { + char path[MAXPGPATH]; + if (relative_path(PGBINDIR, INCLUDEDIR)) { ! 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,181 **** void get_pkginclude_path(const char *my_exec_path, char *ret_path) { if (relative_path(PGBINDIR, PKGINCLUDEDIR)) { ! StrNCpy(ret_path, my_exec_path, MAXPGPATH); ! trim_directory(ret_path); ! trim_directory(ret_path); ! strcat(ret_path, "/include"); } else StrNCpy(ret_path, PKGINCLUDEDIR, MAXPGPATH); --- 176,189 ---- void get_pkginclude_path(const char *my_exec_path, char *ret_path) { + char path[MAXPGPATH]; + if (relative_path(PGBINDIR, PKGINCLUDEDIR)) { ! 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,205 **** void get_pkglib_path(const char *my_exec_path, char *ret_path) { if (relative_path(PGBINDIR, PKGLIBDIR)) { ! StrNCpy(ret_path, my_exec_path, MAXPGPATH); ! trim_directory(ret_path); ! trim_directory(ret_path); ! strcat(ret_path, "/lib"); } else StrNCpy(ret_path, PKGLIBDIR, MAXPGPATH); } --- 199,264 ---- void get_pkglib_path(const char *my_exec_path, char *ret_path) { + char path[MAXPGPATH]; + if (relative_path(PGBINDIR, PKGLIBDIR)) { ! 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); + } + + + + /* + * 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 }