From 218b4e8dd86016f82c3a71dec9d339240e866505 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Thu, 11 Dec 2008 07:34:09 +0000 Subject: [PATCH] Append major version number and for libraries soname major version number to the gettext domain name, to simplify parallel installations. Also, rename set_text_domain() to pg_bindtextdomain(), because that is what it does. --- configure | 13 ++++++++++-- configure.in | 5 ++++- doc/src/sgml/Makefile | 4 ++-- src/Makefile.global.in | 3 ++- src/Makefile.shlib | 6 +++++- src/backend/main/main.c | 4 ++-- src/backend/utils/init/miscinit.c | 4 ++-- src/bin/initdb/initdb.c | 4 ++-- src/bin/pg_config/pg_config.c | 4 ++-- src/bin/pg_controldata/pg_controldata.c | 4 ++-- src/bin/pg_ctl/pg_ctl.c | 4 ++-- src/bin/pg_dump/pg_dump.c | 4 ++-- src/bin/pg_dump/pg_dumpall.c | 4 ++-- src/bin/pg_dump/pg_restore.c | 4 ++-- src/bin/pg_resetxlog/pg_resetxlog.c | 4 ++-- src/bin/psql/startup.c | 4 ++-- src/bin/scripts/clusterdb.c | 4 ++-- src/bin/scripts/createdb.c | 4 ++-- src/bin/scripts/createlang.c | 4 ++-- src/bin/scripts/createuser.c | 4 ++-- src/bin/scripts/dropdb.c | 4 ++-- src/bin/scripts/droplang.c | 4 ++-- src/bin/scripts/dropuser.c | 4 ++-- src/bin/scripts/reindexdb.c | 4 ++-- src/bin/scripts/vacuumdb.c | 4 ++-- src/include/c.h | 28 ++++++++++++++++++++++++- src/include/miscadmin.h | 4 ++-- src/include/pg_config.h.in | 3 +++ src/interfaces/ecpg/ecpglib/misc.c | 6 +++--- src/interfaces/ecpg/preproc/ecpg.c | 4 ++-- src/interfaces/libpq/fe-misc.c | 6 +++--- src/nls-global.mk | 7 ++++--- src/pl/plperl/plperl.c | 6 +++--- src/pl/plpgsql/src/pl_handler.c | 4 ++-- src/pl/plpgsql/src/plpgsql.h | 4 ++-- src/pl/plpython/plpython.c | 6 +++--- src/pl/tcl/pltcl.c | 6 +++--- src/port/exec.c | 4 ++-- src/test/regress/pg_regress.c | 4 ++-- 39 files changed, 125 insertions(+), 78 deletions(-) diff --git a/configure b/configure index d4fde181c1..063a6de40e 100755 --- a/configure +++ b/configure @@ -656,6 +656,7 @@ build_alias host_alias target_alias configure_args +PG_MAJORVERSION build build_cpu build_vendor @@ -1910,6 +1911,13 @@ cat >>confdefs.h <<_ACEOF #define PG_VERSION "$PACKAGE_VERSION" _ACEOF +PG_MAJORVERSION=`expr "$PACKAGE_VERSION" : '\([0-9][0-9]*\.[0-9][0-9]*\)'` + + +cat >>confdefs.h <<_ACEOF +#define PG_MAJORVERSION "$PG_MAJORVERSION" +_ACEOF + # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || @@ -27183,6 +27191,7 @@ build_alias!$build_alias$ac_delim host_alias!$host_alias$ac_delim target_alias!$target_alias$ac_delim configure_args!$configure_args$ac_delim +PG_MAJORVERSION!$PG_MAJORVERSION$ac_delim build!$build$ac_delim build_cpu!$build_cpu$ac_delim build_vendor!$build_vendor$ac_delim @@ -27241,7 +27250,6 @@ EGREP!$EGREP$ac_delim ELF_SYS!$ELF_SYS$ac_delim LDFLAGS_SL!$LDFLAGS_SL$ac_delim LD!$LD$ac_delim -with_gnu_ld!$with_gnu_ld$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then @@ -27283,6 +27291,7 @@ _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF +with_gnu_ld!$with_gnu_ld$ac_delim ld_R_works!$ld_R_works$ac_delim RANLIB!$RANLIB$ac_delim STRIP!$STRIP$ac_delim @@ -27343,7 +27352,7 @@ vpath_build!$vpath_build$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 58; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 59; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 diff --git a/configure.in b/configure.in index eaccedfb72..3f589441b4 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $PostgreSQL: pgsql/configure.in,v 1.576 2008/12/07 08:36:21 petere Exp $ +dnl $PostgreSQL: pgsql/configure.in,v 1.577 2008/12/11 07:34:07 petere Exp $ dnl dnl Developers, please strive to achieve this order: dnl @@ -30,6 +30,9 @@ AC_PREFIX_DEFAULT(/usr/local/pgsql) AC_SUBST(configure_args, [$ac_configure_args]) AC_DEFINE_UNQUOTED(PG_VERSION, "$PACKAGE_VERSION", [PostgreSQL version as a string]) +[PG_MAJORVERSION=`expr "$PACKAGE_VERSION" : '\([0-9][0-9]*\.[0-9][0-9]*\)'`] +AC_SUBST(PG_MAJORVERSION) +AC_DEFINE_UNQUOTED(PG_MAJORVERSION, "$PG_MAJORVERSION", [PostgreSQL major version as a string]) AC_CANONICAL_HOST diff --git a/doc/src/sgml/Makefile b/doc/src/sgml/Makefile index abf6811442..a61d541a4c 100644 --- a/doc/src/sgml/Makefile +++ b/doc/src/sgml/Makefile @@ -2,7 +2,7 @@ # # PostgreSQL documentation makefile # -# $PostgreSQL: pgsql/doc/src/sgml/Makefile,v 1.113 2008/11/26 11:26:54 petere Exp $ +# $PostgreSQL: pgsql/doc/src/sgml/Makefile,v 1.114 2008/12/11 07:34:07 petere Exp $ # #---------------------------------------------------------------------------- @@ -126,7 +126,7 @@ HTML.index: version.sgml: $(top_builddir)/src/Makefile.global { \ echo ""; \ - echo ""; \ + echo ""; \ } >$@ features-supported.sgml: $(top_srcdir)/src/backend/catalog/sql_feature_packages.txt $(top_srcdir)/src/backend/catalog/sql_features.txt diff --git a/src/Makefile.global.in b/src/Makefile.global.in index 58f2d83074..a1fc846ac8 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -1,5 +1,5 @@ # -*-makefile-*- -# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.248 2008/12/07 08:36:22 petere Exp $ +# $PostgreSQL: pgsql/src/Makefile.global.in,v 1.249 2008/12/11 07:34:07 petere Exp $ #------------------------------------------------------------------------------ # All PostgreSQL makefiles include this file and use the variables it sets, @@ -30,6 +30,7 @@ all: # PostgreSQL version number VERSION = @PACKAGE_VERSION@ +MAJORVERSION = @PG_MAJORVERSION@ # Support for VPATH builds vpath_build = @vpath_build@ diff --git a/src/Makefile.shlib b/src/Makefile.shlib index f6136a7a87..37a99dbf95 100644 --- a/src/Makefile.shlib +++ b/src/Makefile.shlib @@ -6,7 +6,7 @@ # Copyright (c) 1998, Regents of the University of California # # IDENTIFICATION -# $PostgreSQL: pgsql/src/Makefile.shlib,v 1.118 2008/11/24 11:59:37 petere Exp $ +# $PostgreSQL: pgsql/src/Makefile.shlib,v 1.119 2008/12/11 07:34:07 petere Exp $ # #------------------------------------------------------------------------- @@ -115,6 +115,10 @@ endif # Try to keep the sections in some kind of order, folks... override CFLAGS += $(CFLAGS_SL) +ifdef SO_MAJOR_VERSION +# libraries ought to use this to refer to versioned gettext domain names +override CPPFLAGS += -DSO_MAJOR_VERSION=$(SO_MAJOR_VERSION) +endif ifeq ($(PORTNAME), aix) ifdef SO_MAJOR_VERSION diff --git a/src/backend/main/main.c b/src/backend/main/main.c index 53604da03c..3f5aa34479 100644 --- a/src/backend/main/main.c +++ b/src/backend/main/main.c @@ -13,7 +13,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/main/main.c,v 1.110 2008/01/01 19:45:49 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/main/main.c,v 1.111 2008/12/11 07:34:07 petere Exp $ * *------------------------------------------------------------------------- */ @@ -87,7 +87,7 @@ main(int argc, char *argv[]) * error messages to be localized. */ - set_pglocale_pgservice(argv[0], "postgres"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("postgres")); #ifdef WIN32 diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c index c3b26698e2..6490122b55 100644 --- a/src/backend/utils/init/miscinit.c +++ b/src/backend/utils/init/miscinit.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/init/miscinit.c,v 1.168 2008/10/09 17:24:05 alvherre Exp $ + * $PostgreSQL: pgsql/src/backend/utils/init/miscinit.c,v 1.169 2008/12/11 07:34:07 petere Exp $ * *------------------------------------------------------------------------- */ @@ -1214,7 +1214,7 @@ process_local_preload_libraries(void) } void -set_text_domain(const char *domain) +pg_bindtextdomain(const char *domain) { #ifdef ENABLE_NLS if (my_exec_path[0] != '\0') diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c index 04c29bec59..1e75a3436c 100644 --- a/src/bin/initdb/initdb.c +++ b/src/bin/initdb/initdb.c @@ -42,7 +42,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * Portions taken from FreeBSD. * - * $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.164 2008/11/14 02:09:51 tgl Exp $ + * $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.165 2008/12/11 07:34:07 petere Exp $ * *------------------------------------------------------------------------- */ @@ -2511,7 +2511,7 @@ main(int argc, char *argv[]) }; progname = get_progname(argv[0]); - set_pglocale_pgservice(argv[0], "initdb"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("initdb")); if (argc > 1) { diff --git a/src/bin/pg_config/pg_config.c b/src/bin/pg_config/pg_config.c index db3f9f1e08..2a297b2af5 100644 --- a/src/bin/pg_config/pg_config.c +++ b/src/bin/pg_config/pg_config.c @@ -17,7 +17,7 @@ * * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/bin/pg_config/pg_config.c,v 1.28 2008/03/27 03:57:33 tgl Exp $ + * $PostgreSQL: pgsql/src/bin/pg_config/pg_config.c,v 1.29 2008/12/11 07:34:07 petere Exp $ * *------------------------------------------------------------------------- */ @@ -465,7 +465,7 @@ main(int argc, char **argv) int j; int ret; - set_pglocale_pgservice(argv[0], "pg_config"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_config")); progname = get_progname(argv[0]); diff --git a/src/bin/pg_controldata/pg_controldata.c b/src/bin/pg_controldata/pg_controldata.c index 96827c3aac..e375057bfa 100644 --- a/src/bin/pg_controldata/pg_controldata.c +++ b/src/bin/pg_controldata/pg_controldata.c @@ -6,7 +6,7 @@ * copyright (c) Oliver Elphick , 2001; * licence: BSD * - * $PostgreSQL: pgsql/src/bin/pg_controldata/pg_controldata.c,v 1.41 2008/09/24 08:59:42 mha Exp $ + * $PostgreSQL: pgsql/src/bin/pg_controldata/pg_controldata.c,v 1.42 2008/12/11 07:34:08 petere Exp $ */ #include "postgres_fe.h" @@ -76,7 +76,7 @@ main(int argc, char *argv[]) const char *strftime_fmt = "%c"; const char *progname; - set_pglocale_pgservice(argv[0], "pg_controldata"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_controldata")); progname = get_progname(argv[0]); diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c index 7dc57aae6e..52545ce8dc 100644 --- a/src/bin/pg_ctl/pg_ctl.c +++ b/src/bin/pg_ctl/pg_ctl.c @@ -4,7 +4,7 @@ * * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.104 2008/09/30 12:51:07 tgl Exp $ + * $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.105 2008/12/11 07:34:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -1648,7 +1648,7 @@ main(int argc, char **argv) #endif progname = get_progname(argv[0]); - set_pglocale_pgservice(argv[0], "pg_ctl"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_ctl")); /* * save argv[0] so do_start() can look for the postmaster if necessary. we diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index de01df421d..0f7419a653 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -12,7 +12,7 @@ * by PostgreSQL * * IDENTIFICATION - * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.506 2008/12/04 17:51:27 petere Exp $ + * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.507 2008/12/11 07:34:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -274,7 +274,7 @@ main(int argc, char **argv) {NULL, 0, NULL, 0} }; - set_pglocale_pgservice(argv[0], "pg_dump"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_dump")); g_verbose = false; diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c index 889ed4eae6..73e133ff52 100644 --- a/src/bin/pg_dump/pg_dumpall.c +++ b/src/bin/pg_dump/pg_dumpall.c @@ -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.108 2008/11/21 20:14:27 mha Exp $ + * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.109 2008/12/11 07:34:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -127,7 +127,7 @@ main(int argc, char *argv[]) int optindex; - set_pglocale_pgservice(argv[0], "pg_dump"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_dump")); progname = get_progname(argv[0]); diff --git a/src/bin/pg_dump/pg_restore.c b/src/bin/pg_dump/pg_restore.c index 89eb3b4371..95bb61b72f 100644 --- a/src/bin/pg_dump/pg_restore.c +++ b/src/bin/pg_dump/pg_restore.c @@ -34,7 +34,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.88 2008/04/13 03:49:22 tgl Exp $ + * $PostgreSQL: pgsql/src/bin/pg_dump/pg_restore.c,v 1.89 2008/12/11 07:34:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -119,7 +119,7 @@ main(int argc, char **argv) {NULL, 0, NULL, 0} }; - set_pglocale_pgservice(argv[0], "pg_dump"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_dump")); opts = NewRestoreOptions(); diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c index da18910b47..30baab704d 100644 --- a/src/bin/pg_resetxlog/pg_resetxlog.c +++ b/src/bin/pg_resetxlog/pg_resetxlog.c @@ -23,7 +23,7 @@ * Portions Copyright (c) 1996-2008, 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.69 2008/11/14 21:45:07 tgl Exp $ + * $PostgreSQL: pgsql/src/bin/pg_resetxlog/pg_resetxlog.c,v 1.70 2008/12/11 07:34:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -96,7 +96,7 @@ main(int argc, char *argv[]) int fd; char path[MAXPGPATH]; - set_pglocale_pgservice(argv[0], "pg_resetxlog"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_resetxlog")); progname = get_progname(argv[0]); diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c index b18eb44518..c8602161c0 100644 --- a/src/bin/psql/startup.c +++ b/src/bin/psql/startup.c @@ -3,7 +3,7 @@ * * Copyright (c) 2000-2008, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.151 2008/07/20 06:08:38 momjian Exp $ + * $PostgreSQL: pgsql/src/bin/psql/startup.c,v 1.152 2008/12/11 07:34:08 petere Exp $ */ #include "postgres_fe.h" @@ -96,7 +96,7 @@ main(int argc, char *argv[]) char *password_prompt = NULL; bool new_pass; - set_pglocale_pgservice(argv[0], "psql"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("psql")); if (argc > 1) { diff --git a/src/bin/scripts/clusterdb.c b/src/bin/scripts/clusterdb.c index c815cf2a4f..d7fedc4cdb 100644 --- a/src/bin/scripts/clusterdb.c +++ b/src/bin/scripts/clusterdb.c @@ -4,7 +4,7 @@ * * Portions Copyright (c) 2002-2008, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/bin/scripts/clusterdb.c,v 1.21 2008/11/24 08:46:04 petere Exp $ + * $PostgreSQL: pgsql/src/bin/scripts/clusterdb.c,v 1.22 2008/12/11 07:34:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -58,7 +58,7 @@ main(int argc, char *argv[]) bool verbose = false; progname = get_progname(argv[0]); - set_pglocale_pgservice(argv[0], "pgscripts"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pgscripts")); handle_help_version_opts(argc, argv, "clusterdb", help); diff --git a/src/bin/scripts/createdb.c b/src/bin/scripts/createdb.c index ee172ad187..8c42f36f15 100644 --- a/src/bin/scripts/createdb.c +++ b/src/bin/scripts/createdb.c @@ -5,7 +5,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/bin/scripts/createdb.c,v 1.28 2008/11/10 16:25:41 alvherre Exp $ + * $PostgreSQL: pgsql/src/bin/scripts/createdb.c,v 1.29 2008/12/11 07:34:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -63,7 +63,7 @@ main(int argc, char *argv[]) PGresult *result; progname = get_progname(argv[0]); - set_pglocale_pgservice(argv[0], "pgscripts"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pgscripts")); handle_help_version_opts(argc, argv, "createdb", help); diff --git a/src/bin/scripts/createlang.c b/src/bin/scripts/createlang.c index f27e0d2542..e25a42618f 100644 --- a/src/bin/scripts/createlang.c +++ b/src/bin/scripts/createlang.c @@ -5,7 +5,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/bin/scripts/createlang.c,v 1.30 2008/07/14 22:00:04 momjian Exp $ + * $PostgreSQL: pgsql/src/bin/scripts/createlang.c,v 1.31 2008/12/11 07:34:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -52,7 +52,7 @@ main(int argc, char *argv[]) PGresult *result; progname = get_progname(argv[0]); - set_pglocale_pgservice(argv[0], "pgscripts"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pgscripts")); handle_help_version_opts(argc, argv, "createlang", help); diff --git a/src/bin/scripts/createuser.c b/src/bin/scripts/createuser.c index 7bdf3244c4..c6e7b6ea9e 100644 --- a/src/bin/scripts/createuser.c +++ b/src/bin/scripts/createuser.c @@ -5,7 +5,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/bin/scripts/createuser.c,v 1.38 2008/01/01 19:45:56 momjian Exp $ + * $PostgreSQL: pgsql/src/bin/scripts/createuser.c,v 1.39 2008/12/11 07:34:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -81,7 +81,7 @@ main(int argc, char *argv[]) PGresult *result; progname = get_progname(argv[0]); - set_pglocale_pgservice(argv[0], "pgscripts"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pgscripts")); handle_help_version_opts(argc, argv, "createuser", help); diff --git a/src/bin/scripts/dropdb.c b/src/bin/scripts/dropdb.c index d7fde3d6e5..aca4ada448 100644 --- a/src/bin/scripts/dropdb.c +++ b/src/bin/scripts/dropdb.c @@ -5,7 +5,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/bin/scripts/dropdb.c,v 1.22 2008/01/01 19:45:56 momjian Exp $ + * $PostgreSQL: pgsql/src/bin/scripts/dropdb.c,v 1.23 2008/12/11 07:34:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -50,7 +50,7 @@ main(int argc, char *argv[]) PGresult *result; progname = get_progname(argv[0]); - set_pglocale_pgservice(argv[0], "pgscripts"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pgscripts")); handle_help_version_opts(argc, argv, "dropdb", help); diff --git a/src/bin/scripts/droplang.c b/src/bin/scripts/droplang.c index 308bef7135..ebdb4849ee 100644 --- a/src/bin/scripts/droplang.c +++ b/src/bin/scripts/droplang.c @@ -5,7 +5,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/bin/scripts/droplang.c,v 1.27 2008/07/14 22:00:04 momjian Exp $ + * $PostgreSQL: pgsql/src/bin/scripts/droplang.c,v 1.28 2008/12/11 07:34:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -63,7 +63,7 @@ main(int argc, char *argv[]) PGresult *result; progname = get_progname(argv[0]); - set_pglocale_pgservice(argv[0], "pgscripts"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pgscripts")); handle_help_version_opts(argc, argv, "droplang", help); diff --git a/src/bin/scripts/dropuser.c b/src/bin/scripts/dropuser.c index 9facf92334..45b08f85ab 100644 --- a/src/bin/scripts/dropuser.c +++ b/src/bin/scripts/dropuser.c @@ -5,7 +5,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/bin/scripts/dropuser.c,v 1.23 2008/01/01 19:45:56 momjian Exp $ + * $PostgreSQL: pgsql/src/bin/scripts/dropuser.c,v 1.24 2008/12/11 07:34:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -50,7 +50,7 @@ main(int argc, char *argv[]) PGresult *result; progname = get_progname(argv[0]); - set_pglocale_pgservice(argv[0], "pgscripts"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pgscripts")); handle_help_version_opts(argc, argv, "dropuser", help); diff --git a/src/bin/scripts/reindexdb.c b/src/bin/scripts/reindexdb.c index f94a964179..5fdfd6b91c 100644 --- a/src/bin/scripts/reindexdb.c +++ b/src/bin/scripts/reindexdb.c @@ -4,7 +4,7 @@ * * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/bin/scripts/reindexdb.c,v 1.13 2008/01/01 19:45:56 momjian Exp $ + * $PostgreSQL: pgsql/src/bin/scripts/reindexdb.c,v 1.14 2008/12/11 07:34:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -64,7 +64,7 @@ main(int argc, char *argv[]) const char *index = NULL; progname = get_progname(argv[0]); - set_pglocale_pgservice(argv[0], "pgscripts"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pgscripts")); handle_help_version_opts(argc, argv, "reindexdb", help); diff --git a/src/bin/scripts/vacuumdb.c b/src/bin/scripts/vacuumdb.c index 7f960a4559..ca96129744 100644 --- a/src/bin/scripts/vacuumdb.c +++ b/src/bin/scripts/vacuumdb.c @@ -5,7 +5,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/bin/scripts/vacuumdb.c,v 1.20 2008/01/01 19:45:56 momjian Exp $ + * $PostgreSQL: pgsql/src/bin/scripts/vacuumdb.c,v 1.21 2008/12/11 07:34:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -64,7 +64,7 @@ main(int argc, char *argv[]) bool verbose = false; progname = get_progname(argv[0]); - set_pglocale_pgservice(argv[0], "pgscripts"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pgscripts")); handle_help_version_opts(argc, argv, "vacuumdb", help); diff --git a/src/include/c.h b/src/include/c.h index ca86067b9f..4493fb9103 100644 --- a/src/include/c.h +++ b/src/include/c.h @@ -12,7 +12,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/c.h,v 1.230 2008/10/09 22:23:46 tgl Exp $ + * $PostgreSQL: pgsql/src/include/c.h,v 1.231 2008/12/11 07:34:08 petere Exp $ * *------------------------------------------------------------------------- */ @@ -715,6 +715,32 @@ typedef NameData *Name; #define STATUS_WAITING (2) +/* gettext domain name mangling */ + +/* + * To better support parallel installations of major PostgeSQL + * versions as well as parallel installations of major library soname + * versions, we mangle the gettext domain name by appending those + * version numbers. The coding rule ought to be that whereever the + * domain name is mentioned as a literal, it must be wrapped into + * PG_TEXTDOMAIN(). The macros below do not work on non-literals; but + * that is somewhat intentional because it avoids having to worry + * about multiple states of premangling and postmangling as the values + * are being passed around. + * + * Make sure this matches the installation rules in nls-global.mk. + */ + +/* need a second indirection because we want to stringize the macro value, not the name */ +#define CppAsString2(x) CppAsString(x) + +#ifdef SO_MAJOR_VERSION +# define PG_TEXTDOMAIN(domain) (domain CppAsString2(SO_MAJOR_VERSION) "-" PG_MAJORVERSION) +#else +# define PG_TEXTDOMAIN(domain) (domain "-" PG_MAJORVERSION) +#endif + + /* ---------------------------------------------------------------- * Section 8: system-specific hacks * diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h index 3a3f383099..821f864736 100644 --- a/src/include/miscadmin.h +++ b/src/include/miscadmin.h @@ -13,7 +13,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/miscadmin.h,v 1.205 2008/11/11 02:42:32 tgl Exp $ + * $PostgreSQL: pgsql/src/include/miscadmin.h,v 1.206 2008/12/11 07:34:08 petere Exp $ * * NOTES * some of the information in this file should be moved to other files. @@ -343,7 +343,7 @@ extern void RecordSharedMemoryInLockFile(unsigned long id1, extern void ValidatePgVersion(const char *path); extern void process_shared_preload_libraries(void); extern void process_local_preload_libraries(void); -extern void set_text_domain(const char *domain); +extern void pg_bindtextdomain(const char *domain); /* in access/transam/xlog.c */ extern bool BackupInProgress(void); diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in index 9f6f21bf81..5ba3ca8260 100644 --- a/src/include/pg_config.h.in +++ b/src/include/pg_config.h.in @@ -642,6 +642,9 @@ (--with-krb-srvnam=NAME) */ #undef PG_KRB_SRVNAM +/* PostgreSQL major version as a string */ +#undef PG_MAJORVERSION + /* PostgreSQL version as a string */ #undef PG_VERSION diff --git a/src/interfaces/ecpg/ecpglib/misc.c b/src/interfaces/ecpg/ecpglib/misc.c index dbeb448f21..29c391612e 100644 --- a/src/interfaces/ecpg/ecpglib/misc.c +++ b/src/interfaces/ecpg/ecpglib/misc.c @@ -1,4 +1,4 @@ -/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/misc.c,v 1.43 2008/11/01 19:53:35 meskes Exp $ */ +/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/misc.c,v 1.44 2008/12/11 07:34:09 petere Exp $ */ #define POSTGRES_ECPG_INTERNAL #include "postgres_fe.h" @@ -474,7 +474,7 @@ ecpg_gettext(const char *msgid) ldir = getenv("PGLOCALEDIR"); if (!ldir) ldir = LOCALEDIR; - bindtextdomain("ecpg", ldir); + bindtextdomain(PG_TEXTDOMAIN("ecpg"), ldir); #ifdef WIN32 SetLastError(save_errno); #else @@ -482,7 +482,7 @@ ecpg_gettext(const char *msgid) #endif } - return dgettext("ecpg", msgid); + return dgettext(PG_TEXTDOMAIN("ecpg"), msgid); } #endif /* ENABLE_NLS */ diff --git a/src/interfaces/ecpg/preproc/ecpg.c b/src/interfaces/ecpg/preproc/ecpg.c index 5c3245bd88..70317fcf0c 100644 --- a/src/interfaces/ecpg/preproc/ecpg.c +++ b/src/interfaces/ecpg/preproc/ecpg.c @@ -1,4 +1,4 @@ -/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.c,v 1.105 2008/05/16 15:20:04 petere Exp $ */ +/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.c,v 1.106 2008/12/11 07:34:09 petere Exp $ */ /* New main for ecpg, the PostgreSQL embedded SQL precompiler. */ /* (C) Michael Meskes Feb 5th, 1998 */ @@ -138,7 +138,7 @@ main(int argc, char *const argv[]) char my_exec_path[MAXPGPATH]; char include_path[MAXPGPATH]; - set_pglocale_pgservice(argv[0], "ecpg"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("ecpg")); progname = get_progname(argv[0]); diff --git a/src/interfaces/libpq/fe-misc.c b/src/interfaces/libpq/fe-misc.c index 691262cf8a..c7fd13a09c 100644 --- a/src/interfaces/libpq/fe-misc.c +++ b/src/interfaces/libpq/fe-misc.c @@ -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.136 2008/10/27 09:42:31 mha Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/fe-misc.c,v 1.137 2008/12/11 07:34:09 petere Exp $ * *------------------------------------------------------------------------- */ @@ -1166,7 +1166,7 @@ libpq_gettext(const char *msgid) ldir = getenv("PGLOCALEDIR"); if (!ldir) ldir = LOCALEDIR; - bindtextdomain("libpq", ldir); + bindtextdomain(PG_TEXTDOMAIN("libpq"), ldir); #ifdef WIN32 SetLastError(save_errno); #else @@ -1174,7 +1174,7 @@ libpq_gettext(const char *msgid) #endif } - return dgettext("libpq", msgid); + return dgettext(PG_TEXTDOMAIN("libpq"), msgid); } #endif /* ENABLE_NLS */ diff --git a/src/nls-global.mk b/src/nls-global.mk index c6fed12936..8487b58c9d 100644 --- a/src/nls-global.mk +++ b/src/nls-global.mk @@ -1,4 +1,4 @@ -# $PostgreSQL: pgsql/src/nls-global.mk,v 1.14 2008/05/17 21:27:12 momjian Exp $ +# $PostgreSQL: pgsql/src/nls-global.mk,v 1.15 2008/12/11 07:34:07 petere Exp $ # Common rules for Native Language Support (NLS) # @@ -62,10 +62,11 @@ else # not XGETTEXT endif # not XGETTEXT +# catalog name extentions must match behavior of PG_TEXTDOMAIN() in c.h install-po: all-po installdirs-po ifneq (,$(LANGUAGES)) for lang in $(LANGUAGES); do \ - $(INSTALL_DATA) po/$$lang.mo '$(DESTDIR)$(localedir)'/$$lang/LC_MESSAGES/$(CATALOG_NAME).mo || exit 1; \ + $(INSTALL_DATA) po/$$lang.mo '$(DESTDIR)$(localedir)'/$$lang/LC_MESSAGES/$(CATALOG_NAME)$(SO_MAJOR_VERSION)-$(MAJORVERSION).mo || exit 1; \ done endif @@ -73,7 +74,7 @@ installdirs-po: $(mkinstalldirs) $(foreach lang, $(LANGUAGES), '$(DESTDIR)$(localedir)'/$(lang)/LC_MESSAGES) uninstall-po: - rm -f $(foreach lang, $(LANGUAGES), '$(DESTDIR)$(localedir)'/$(lang)/LC_MESSAGES/$(CATALOG_NAME).mo) + rm -f $(foreach lang, $(LANGUAGES), '$(DESTDIR)$(localedir)'/$(lang)/LC_MESSAGES/$(CATALOG_NAME)$(SO_MAJOR_VERSION)-$(MAJORVERSION).mo) clean-po: diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c index a221b92a2f..e2df129f52 100644 --- a/src/pl/plperl/plperl.c +++ b/src/pl/plperl/plperl.c @@ -1,7 +1,7 @@ /********************************************************************** * plperl.c - perl as a procedural language for PostgreSQL * - * $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.142 2008/11/19 01:10:24 tgl Exp $ + * $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.143 2008/12/11 07:34:09 petere Exp $ * **********************************************************************/ @@ -32,7 +32,7 @@ /* define our text domain for translations */ #undef TEXTDOMAIN -#define TEXTDOMAIN "plperl" +#define TEXTDOMAIN PG_TEXTDOMAIN("plperl") /* perl stuff */ #include "plperl.h" @@ -190,7 +190,7 @@ _PG_init(void) if (inited) return; - set_text_domain(TEXTDOMAIN); + pg_bindtextdomain(TEXTDOMAIN); DefineCustomBoolVariable("plperl.use_strict", gettext_noop("If true, will compile trusted and untrusted perl code in strict mode"), diff --git a/src/pl/plpgsql/src/pl_handler.c b/src/pl/plpgsql/src/pl_handler.c index 223d06f7b6..f2f52561fe 100644 --- a/src/pl/plpgsql/src/pl_handler.c +++ b/src/pl/plpgsql/src/pl_handler.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/pl/plpgsql/src/pl_handler.c,v 1.41 2008/10/09 17:24:05 alvherre Exp $ + * $PostgreSQL: pgsql/src/pl/plpgsql/src/pl_handler.c,v 1.42 2008/12/11 07:34:09 petere Exp $ * *------------------------------------------------------------------------- */ @@ -42,7 +42,7 @@ _PG_init(void) if (inited) return; - set_text_domain(TEXTDOMAIN); + pg_bindtextdomain(TEXTDOMAIN); plpgsql_HashTableInit(); RegisterXactCallback(plpgsql_xact_cb, NULL); diff --git a/src/pl/plpgsql/src/plpgsql.h b/src/pl/plpgsql/src/plpgsql.h index df03f23ecc..c114ff9a9f 100644 --- a/src/pl/plpgsql/src/plpgsql.h +++ b/src/pl/plpgsql/src/plpgsql.h @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/pl/plpgsql/src/plpgsql.h,v 1.105 2008/11/05 00:07:54 tgl Exp $ + * $PostgreSQL: pgsql/src/pl/plpgsql/src/plpgsql.h,v 1.106 2008/12/11 07:34:09 petere Exp $ * *------------------------------------------------------------------------- */ @@ -30,7 +30,7 @@ /* define our text domain for translations */ #undef TEXTDOMAIN -#define TEXTDOMAIN "plpgsql" +#define TEXTDOMAIN PG_TEXTDOMAIN("plpgsql") /* ---------- * Compiler's namestack item types diff --git a/src/pl/plpython/plpython.c b/src/pl/plpython/plpython.c index 1e136b22c6..b8658837f4 100644 --- a/src/pl/plpython/plpython.c +++ b/src/pl/plpython/plpython.c @@ -1,7 +1,7 @@ /********************************************************************** * plpython.c - python as a procedural language for PostgreSQL * - * $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.116 2008/11/04 15:16:48 tgl Exp $ + * $PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.117 2008/12/11 07:34:09 petere Exp $ * ********************************************************************* */ @@ -66,7 +66,7 @@ typedef int Py_ssize_t; /* define our text domain for translations */ #undef TEXTDOMAIN -#define TEXTDOMAIN "plpython" +#define TEXTDOMAIN PG_TEXTDOMAIN("plpython") #include #include @@ -2750,7 +2750,7 @@ _PG_init(void) if (inited) return; - set_text_domain(TEXTDOMAIN); + pg_bindtextdomain(TEXTDOMAIN); Py_Initialize(); PLy_init_interp(); diff --git a/src/pl/tcl/pltcl.c b/src/pl/tcl/pltcl.c index 722c7ed43b..f71af5c725 100644 --- a/src/pl/tcl/pltcl.c +++ b/src/pl/tcl/pltcl.c @@ -2,7 +2,7 @@ * pltcl.c - PostgreSQL support for Tcl as * procedural language (PL) * - * $PostgreSQL: pgsql/src/pl/tcl/pltcl.c,v 1.123 2008/10/11 00:09:33 alvherre Exp $ + * $PostgreSQL: pgsql/src/pl/tcl/pltcl.c,v 1.124 2008/12/11 07:34:09 petere Exp $ * **********************************************************************/ @@ -44,7 +44,7 @@ /* define our text domain for translations */ #undef TEXTDOMAIN -#define TEXTDOMAIN "pltcl" +#define TEXTDOMAIN PG_TEXTDOMAIN("pltcl") #if defined(UNICODE_CONVERSION) && HAVE_TCL_VERSION(8,1) @@ -268,7 +268,7 @@ _PG_init(void) if (pltcl_pm_init_done) return; - set_text_domain(TEXTDOMAIN); + pg_bindtextdomain(TEXTDOMAIN); #ifdef WIN32 /* Required on win32 to prevent error loading init.tcl */ diff --git a/src/port/exec.c b/src/port/exec.c index ce0a701794..6b917857ac 100644 --- a/src/port/exec.c +++ b/src/port/exec.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/port/exec.c,v 1.60 2008/04/16 22:16:00 adunstan Exp $ + * $PostgreSQL: pgsql/src/port/exec.c,v 1.61 2008/12/11 07:34:09 petere Exp $ * *------------------------------------------------------------------------- */ @@ -630,7 +630,7 @@ set_pglocale_pgservice(const char *argv0, const char *app) * PGLOCALEDIR */ /* don't set LC_ALL in the backend */ - if (strcmp(app, "postgres") != 0) + if (strcmp(app, PG_TEXTDOMAIN("postgres")) != 0) setlocale(LC_ALL, ""); if (find_my_exec(argv0, my_exec_path) < 0) diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c index ed8dbf4c35..6075b5a7d3 100644 --- a/src/test/regress/pg_regress.c +++ b/src/test/regress/pg_regress.c @@ -11,7 +11,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/test/regress/pg_regress.c,v 1.54 2008/11/28 12:45:34 petere Exp $ + * $PostgreSQL: pgsql/src/test/regress/pg_regress.c,v 1.55 2008/12/11 07:34:09 petere Exp $ * *------------------------------------------------------------------------- */ @@ -1894,7 +1894,7 @@ regression_main(int argc, char *argv[], init_function ifunc, test_function tfunc }; progname = get_progname(argv[0]); - set_pglocale_pgservice(argv[0], "pg_regress"); + set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_regress")); #ifndef HAVE_UNIX_SOCKETS /* no unix domain sockets available, so change default */