From ff0b706b13b85738c97fea5b2fec2ffa4fd07687 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 21 May 2004 16:06:23 +0000 Subject: [PATCH] Fix random breakage in exec.c for platforms where strdup is a macro. --- src/include/port.h | 4 ++-- src/port/exec.c | 40 ++++++++++++++++++++-------------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/include/port.h b/src/include/port.h index 3c98955177c..9526a0ba386 100644 --- a/src/include/port.h +++ b/src/include/port.h @@ -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.36 2004/05/21 05:08:03 tgl Exp $ + * $PostgreSQL: pgsql/src/include/port.h,v 1.37 2004/05/21 16:06:22 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -60,7 +60,7 @@ extern void get_pkglib_path(const char *my_exec_path, char *ret_path); /* Portable way to find binaries */ extern int find_my_exec(const char *argv0, char *retpath); -extern int find_other_exec(const char *argv0, char const *target, +extern int find_other_exec(const char *argv0, const char *target, const char *versionstr, char *retpath); #if defined(__CYGWIN__) || defined(WIN32) #define EXE ".exe" diff --git a/src/port/exec.c b/src/port/exec.c index f45e44e723d..74930b284fb 100644 --- a/src/port/exec.c +++ b/src/port/exec.c @@ -7,16 +7,13 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/port/exec.c,v 1.12 2004/05/20 15:38:11 momjian Exp $ + * $PostgreSQL: pgsql/src/port/exec.c,v 1.13 2004/05/21 16:06:23 tgl Exp $ * *------------------------------------------------------------------------- */ #ifndef FRONTEND #include "postgres.h" -#define malloc(l) palloc(l) -#define free(p) pfree(p) -#define strdup(p) pstrdup(p) #else #include "postgres_fe.h" #endif @@ -24,14 +21,19 @@ #include #include #include +#include #include -#include - -#define _(x) gettext((x)) - #include "miscadmin.h" +#define _(x) gettext(x) + +#ifdef FRONTEND +#undef pstrdup +#define pstrdup(p) strdup(p) +#define pfree(p) free(p) +#endif + /* $PATH (or %PATH%) path separator */ #ifdef WIN32 #define PATHSEP ';' @@ -58,8 +60,10 @@ #define log_error(str, param) fprintf(stderr, (str), (param)) #endif + static void win32_make_absolute(char *path); + /* * validate_exec -- validate "path" as an executable file * @@ -243,7 +247,7 @@ find_my_exec(const char *argv0, char *retpath) */ if ((p = getenv("PATH")) && *p) { - path = strdup(p); /* make a modifiable copy */ + path = pstrdup(p); /* make a modifiable copy */ for (startp = path, endp = strchr(path, PATHSEP); startp && *startp; startp = endp + 1, endp = strchr(startp, PATHSEP)) @@ -263,19 +267,19 @@ find_my_exec(const char *argv0, char *retpath) { case 0: /* found ok */ win32_make_absolute(retpath); - free(path); + pfree(path); return 0; case -1: /* wasn't even a candidate, keep looking */ break; case -2: /* found but disqualified */ log_error("could not read binary \"%s\"", retpath); - free(path); + pfree(path); return -1; } if (!endp) /* last one */ break; } - free(path); + pfree(path); } log_error("could not find a \"%s\" to execute", argv0); @@ -296,8 +300,9 @@ find_my_exec(const char *argv0, char *retpath) * Find our binary directory, then make sure the "target" executable * is the proper version. */ -int find_other_exec(const char *argv0, char const *target, - const char *versionstr, char *retpath) +int +find_other_exec(const char *argv0, const char *target, + const char *versionstr, char *retpath) { char cmd[MAXPGPATH]; char line[100]; @@ -380,8 +385,6 @@ pclose_check(FILE *stream) /* * Windows doesn't like relative paths to executables (other things work fine) * so we call its builtin function to expand them. Elsewhere this is a NOOP - * - * Returns malloc'ed memory. */ static void win32_make_absolute(char *path) @@ -391,14 +394,11 @@ win32_make_absolute(char *path) if (_fullpath(abspath, path, MAXPGPATH) == NULL) { - log_error("Win32 path expansion failed: %s", strerror(errno)); + log_error("Win32 path expansion failed: %s", strerror(errno)); StrNCpy(abspath, path, MAXPGPATH); } canonicalize_path(abspath); StrNCpy(path, abspath, MAXPGPATH); #endif - return; } - -