]> granicus.if.org Git - postgresql/commitdiff
Move set_pglocale_pgservice() from path.c to exec.c, so that pulling in
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 11 Sep 2006 20:10:30 +0000 (20:10 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 11 Sep 2006 20:10:30 +0000 (20:10 +0000)
path.c does not in itself force linking of both exec.c and libintl.
Should fix current ecpglib build failure on pickier platforms.

src/include/port.h
src/interfaces/ecpg/ecpglib/Makefile
src/port/exec.c
src/port/path.c

index 5f692db88653dc3e3380506ac2e3ce19ebfc5508..792ff28d7df01579b19d6ea445ec298a87e8861d 100644 (file)
@@ -6,21 +6,20 @@
  * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/port.h,v 1.97 2006/08/30 18:06:27 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/port.h,v 1.98 2006/09/11 20:10:30 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
 
-#include <pwd.h>
-#include <netdb.h>
-
 #include <ctype.h>
+#include <netdb.h>
+#include <pwd.h>
 
 /* non-blocking */
 extern bool pg_set_noblock(int sock);
 extern bool pg_set_block(int sock);
 
-/* Portable path handling for Unix/Win32 */
+/* Portable path handling for Unix/Win32 (in path.c) */
 
 extern char *first_dir_separator(const char *filename);
 extern char *last_dir_separator(const char *filename);
@@ -42,15 +41,13 @@ 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 get_doc_path(const char *my_exec_path, char *ret_path);
 extern void get_man_path(const char *my_exec_path, char *ret_path);
-extern void set_pglocale_pgservice(const char *argv0, const char *app);
 extern bool get_home_path(char *ret_path);
 extern void get_parent_directory(char *path);
 
 /*
  *     is_absolute_path
  *
- *     By making this a macro we prevent the need for libpq to include
- *     path.c which uses exec.c.
+ *     By making this a macro we avoid needing to include path.c in libpq.
  */
 #ifndef WIN32
 #define is_absolute_path(filename) \
@@ -67,8 +64,10 @@ extern void get_parent_directory(char *path);
 )
 #endif
 
+/* Portable locale initialization (in exec.c) */
+extern void set_pglocale_pgservice(const char *argv0, const char *app);
 
-/* Portable way to find binaries */
+/* Portable way to find binaries (in exec.c) */
 extern int     find_my_exec(const char *argv0, char *retpath);
 extern int find_other_exec(const char *argv0, const char *target,
                                const char *versionstr, char *retpath);
index 374432dd66e2979916adadd369cc1dd807e14f4b..c8d1c437f5bf24968e67f45b26948df38664edb3 100644 (file)
@@ -4,7 +4,7 @@
 #
 # Copyright (c) 1994, Regents of the University of California
 #
-# $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/Makefile,v 1.42 2006/09/10 22:07:02 tgl Exp $
+# $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/Makefile,v 1.43 2006/09/11 20:10:30 tgl Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -26,7 +26,7 @@ override CFLAGS += $(PTHREAD_CFLAGS)
 LIBS := $(filter-out -lpgport, $(LIBS))
 
 OBJS= execute.o typename.o descriptor.o data.o error.o prepare.o memory.o \
-       connect.o misc.o path.o exec.o \
+       connect.o misc.o path.o \
        $(filter snprintf.o, $(LIBOBJS))
 
 # thread.c is needed only for non-WIN32 implementation of path.c
@@ -51,7 +51,7 @@ include $(top_srcdir)/src/Makefile.shlib
 # necessarily use the same object files as the backend uses. Instead,
 # symlink the source files in here and build our own object file.
 
-path.c exec.c snprintf.c thread.c: % : $(top_srcdir)/src/port/%
+path.c snprintf.c thread.c: % : $(top_srcdir)/src/port/%
        rm -f $@ && $(LN_S) $< .
 
 path.o: path.c $(top_builddir)/src/port/pg_config_paths.h
@@ -67,7 +67,7 @@ installdirs:
 uninstall: uninstall-lib
 
 clean distclean maintainer-clean: clean-lib
-       rm -f $(OBJS) path.c exec.c snprintf.c thread.c
+       rm -f $(OBJS) path.c snprintf.c thread.c
 
 depend dep:
        $(CC) -MM $(CFLAGS) *.c >depend
index 7abc3d650b6def297797b3862e1b54a3adb751d3..642bd5fdc9eae42c70f6097f3716c60fcbd45e40 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/port/exec.c,v 1.42 2006/06/07 22:24:46 momjian Exp $
+ *       $PostgreSQL: pgsql/src/port/exec.c,v 1.43 2006/09/11 20:10:30 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -590,3 +590,55 @@ pclose_check(FILE *stream)
 
        return -1;
 }
+
+
+/*
+ *     set_pglocale_pgservice
+ *
+ *     Set application-specific locale and service directory
+ *
+ *     This function takes the value of argv[0] rather than a full path.
+ *
+ * (You may be wondering why this is in exec.c.  It requires this module's
+ * services and doesn't introduce any new dependencies, so this seems as
+ * good as anyplace.)
+ */
+void
+set_pglocale_pgservice(const char *argv0, const char *app)
+{
+       char            path[MAXPGPATH];
+       char            my_exec_path[MAXPGPATH];
+       char            env_path[MAXPGPATH + sizeof("PGSYSCONFDIR=")];  /* longer than
+                                                                                                                                * PGLOCALEDIR */
+
+       /* don't set LC_ALL in the backend */
+       if (strcmp(app, "postgres") != 0)
+               setlocale(LC_ALL, "");
+
+       if (find_my_exec(argv0, my_exec_path) < 0)
+               return;
+
+#ifdef ENABLE_NLS
+       get_locale_path(my_exec_path, path);
+       bindtextdomain(app, path);
+       textdomain(app);
+
+       if (getenv("PGLOCALEDIR") == NULL)
+       {
+               /* set for libpq to use */
+               snprintf(env_path, sizeof(env_path), "PGLOCALEDIR=%s", path);
+               canonicalize_path(env_path + 12);
+               putenv(strdup(env_path));
+       }
+#endif
+
+       if (getenv("PGSYSCONFDIR") == NULL)
+       {
+               get_etc_path(my_exec_path, path);
+
+               /* set for libpq to use */
+               snprintf(env_path, sizeof(env_path), "PGSYSCONFDIR=%s", path);
+               canonicalize_path(env_path + 13);
+               putenv(strdup(env_path));
+       }
+}
index cb7ab9eb22b5a3b267f8fb0a92c77d10d695ccd4..818b3212c43dc4712a52cae5514f18c4135e57c2 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/port/path.c,v 1.66 2006/03/05 15:59:10 momjian Exp $
+ *       $PostgreSQL: pgsql/src/port/path.c,v 1.67 2006/09/11 20:10:30 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -652,54 +652,6 @@ get_parent_directory(char *path)
 }
 
 
-/*
- *     set_pglocale_pgservice
- *
- *     Set application-specific locale and service directory
- *
- *     This function takes an argv[0] rather than a full path.
- */
-void
-set_pglocale_pgservice(const char *argv0, const char *app)
-{
-       char            path[MAXPGPATH];
-       char            my_exec_path[MAXPGPATH];
-       char            env_path[MAXPGPATH + sizeof("PGSYSCONFDIR=")];  /* longer than
-                                                                                                                                * PGLOCALEDIR */
-
-       /* don't set LC_ALL in the backend */
-       if (strcmp(app, "postgres") != 0)
-               setlocale(LC_ALL, "");
-
-       if (find_my_exec(argv0, my_exec_path) < 0)
-               return;
-
-#ifdef ENABLE_NLS
-       get_locale_path(my_exec_path, path);
-       bindtextdomain(app, path);
-       textdomain(app);
-
-       if (getenv("PGLOCALEDIR") == NULL)
-       {
-               /* set for libpq to use */
-               snprintf(env_path, sizeof(env_path), "PGLOCALEDIR=%s", path);
-               canonicalize_path(env_path + 12);
-               putenv(strdup(env_path));
-       }
-#endif
-
-       if (getenv("PGSYSCONFDIR") == NULL)
-       {
-               get_etc_path(my_exec_path, path);
-
-               /* set for libpq to use */
-               snprintf(env_path, sizeof(env_path), "PGSYSCONFDIR=%s", path);
-               canonicalize_path(env_path + 13);
-               putenv(strdup(env_path));
-       }
-}
-
-
 /*
  *     trim_directory
  *