path.c does not in itself force linking of both exec.c and libintl.
Should fix current ecpglib build failure on pickier platforms.
* 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);
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) \
)
#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);
#
# 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 $
#
#-------------------------------------------------------------------------
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
# 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
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
*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
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));
+ }
+}
*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
}
-/*
- * 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
*