Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
ff0b706b
Commit
ff0b706b
authored
May 21, 2004
by
Tom Lane
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix random breakage in exec.c for platforms where strdup is a macro.
parent
79c3bf49
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
21 additions
and
21 deletions
+21
-21
src/include/port.h
src/include/port.h
+2
-2
src/port/exec.c
src/port/exec.c
+19
-19
No files found.
src/include/port.h
View file @
ff0b706b
...
...
@@ -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.3
6 2004/05/21 05:08:03
tgl Exp $
* $PostgreSQL: pgsql/src/include/port.h,v 1.3
7 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
,
c
har
const
*
target
,
extern
int
find_other_exec
(
const
char
*
argv0
,
c
onst
char
*
target
,
const
char
*
versionstr
,
char
*
retpath
);
#if defined(__CYGWIN__) || defined(WIN32)
#define EXE ".exe"
...
...
src/port/exec.c
View file @
ff0b706b
...
...
@@ -7,16 +7,13 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/port/exec.c,v 1.1
2 2004/05/20 15:38:11 momjian
Exp $
* $PostgreSQL: pgsql/src/port/exec.c,v 1.1
3 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,13 +21,18 @@
#include <grp.h>
#include <pwd.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <unistd.h>
#include
<sys/wait.h>
#include
"miscadmin.h"
#define _(x) gettext(
(x)
)
#define _(x) gettext(
x
)
#include "miscadmin.h"
#ifdef FRONTEND
#undef pstrdup
#define pstrdup(p) strdup(p)
#define pfree(p) free(p)
#endif
/* $PATH (or %PATH%) path separator */
#ifdef WIN32
...
...
@@ -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
=
p
strdup
(
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
);
p
free
(
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
);
p
free
(
path
);
return
-
1
;
}
if
(
!
endp
)
/* last one */
break
;
}
free
(
path
);
p
free
(
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
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment