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
7b0f060d
Commit
7b0f060d
authored
Jul 11, 2004
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use canonicalize_path for -D, GUC paths, and paths coming in from
environment variables.
parent
8801110b
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
71 additions
and
39 deletions
+71
-39
src/backend/postmaster/postmaster.c
src/backend/postmaster/postmaster.c
+3
-2
src/backend/utils/misc/guc.c
src/backend/utils/misc/guc.c
+25
-10
src/bin/psql/command.c
src/bin/psql/command.c
+6
-3
src/bin/psql/copy.c
src/bin/psql/copy.c
+3
-1
src/port/path.c
src/port/path.c
+34
-23
No files found.
src/backend/postmaster/postmaster.c
View file @
7b0f060d
...
...
@@ -37,7 +37,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.40
7 2004/07/11 00:18:43
momjian Exp $
* $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.40
8 2004/07/11 21:33:59
momjian Exp $
*
* NOTES
*
...
...
@@ -372,7 +372,8 @@ PostmasterMain(int argc, char *argv[])
InitializeGUCOptions
();
userPGDATA
=
getenv
(
"PGDATA"
);
/* default value */
canonicalize_path
(
userPGDATA
);
opterr
=
1
;
while
((
opt
=
getopt
(
argc
,
argv
,
"A:a:B:b:c:D:d:Fh:ik:lm:MN:no:p:Ss-:"
))
!=
-
1
)
...
...
src/backend/utils/misc/guc.c
View file @
7b0f060d
...
...
@@ -10,7 +10,7 @@
* Written by Peter Eisentraut <peter_e@gmx.net>.
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.21
4 2004/07/11 00:18:44
momjian Exp $
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.21
5 2004/07/11 21:34:00
momjian Exp $
*
*--------------------------------------------------------------------
*/
...
...
@@ -113,6 +113,7 @@ static const char *assign_custom_variable_classes(const char *newval, bool doit,
static
bool
assign_stage_log_stats
(
bool
newval
,
bool
doit
,
GucSource
source
);
static
bool
assign_log_stats
(
bool
newval
,
bool
doit
,
GucSource
source
);
static
bool
assign_transaction_read_only
(
bool
newval
,
bool
doit
,
GucSource
source
);
static
const
char
*
assign_canonical_path
(
const
char
*
newval
,
bool
doit
,
GucSource
source
);
static
void
ReadConfigFile
(
char
*
filename
,
GucContext
context
);
...
...
@@ -1470,7 +1471,7 @@ static struct config_string ConfigureNamesString[] =
"the specified file."
)
},
&
Dynamic_library_path
,
"$libdir"
,
NULL
,
NULL
"$libdir"
,
assign_canonical_path
,
NULL
},
{
...
...
@@ -1556,7 +1557,7 @@ static struct config_string ConfigureNamesString[] =
GUC_LIST_INPUT
|
GUC_LIST_QUOTE
},
&
preload_libraries_string
,
""
,
NULL
,
NULL
""
,
assign_canonical_path
,
NULL
},
{
...
...
@@ -1678,7 +1679,7 @@ static struct config_string ConfigureNamesString[] =
NULL
},
&
UnixSocketDir
,
""
,
NULL
,
NULL
""
,
assign_canonical_path
,
NULL
},
{
...
...
@@ -1712,25 +1713,25 @@ static struct config_string ConfigureNamesString[] =
{
{
"pgdata"
,
PGC_POSTMASTER
,
0
,
gettext_noop
(
"Sets the location of the data directory"
),
NULL
},
&
guc_pgdata
,
NULL
,
NULL
,
NULL
NULL
,
assign_canonical_path
,
NULL
},
{
{
"hba_conf"
,
PGC_SIGHUP
,
0
,
gettext_noop
(
"Sets the location of the
\"
hba
\"
configuration file"
),
NULL
},
&
guc_hbafile
,
NULL
,
NULL
,
NULL
NULL
,
assign_canonical_path
,
NULL
},
{
{
"ident_conf"
,
PGC_SIGHUP
,
0
,
gettext_noop
(
"Sets the location of the
\"
ident
\"
configuration file"
),
NULL
},
&
guc_identfile
,
NULL
,
NULL
,
NULL
NULL
,
assign_canonical_path
,
NULL
},
{
{
"external_pidfile"
,
PGC_POSTMASTER
,
0
,
gettext_noop
(
"Writes the postmaster PID to the specified file"
),
NULL
},
&
external_pidfile
,
NULL
,
NULL
,
NULL
NULL
,
assign_canonical_path
,
NULL
},
/* End-of-list marker */
...
...
@@ -5160,8 +5161,7 @@ assign_log_min_messages(const char *newval,
}
static
const
char
*
assign_client_min_messages
(
const
char
*
newval
,
bool
doit
,
GucSource
source
)
assign_client_min_messages
(
const
char
*
newval
,
bool
doit
,
GucSource
source
)
{
return
(
assign_msglvl
(
&
client_min_messages
,
newval
,
doit
,
source
));
}
...
...
@@ -5430,4 +5430,19 @@ assign_transaction_read_only(bool newval, bool doit, GucSource source)
return
true
;
}
static
const
char
*
assign_canonical_path
(
const
char
*
newval
,
bool
doit
,
GucSource
source
)
{
if
(
doit
)
{
/* We have to create a new pointer to force the change */
char
*
canon_val
=
guc_strdup
(
FATAL
,
newval
);
canonicalize_path
(
canon_val
);
return
canon_val
;
}
else
return
newval
;
}
#include "guc-file.c"
src/bin/psql/command.c
View file @
7b0f060d
...
...
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.1
19 2004/07/11 13:29:15
momjian Exp $
* $PostgreSQL: pgsql/src/bin/psql/command.c,v 1.1
20 2004/07/11 21:34:03
momjian Exp $
*/
#include "postgres_fe.h"
#include "command.h"
...
...
@@ -375,6 +375,7 @@ exec_command(const char *cmd,
fname
=
psql_scan_slash_option
(
scan_state
,
OT_NORMAL
,
NULL
,
true
);
expand_tilde
(
&
fname
);
canonicalize_path
(
fname
);
status
=
do_edit
(
fname
,
query_buf
)
?
CMD_NEWEDIT
:
CMD_ERROR
;
free
(
fname
);
}
...
...
@@ -777,8 +778,10 @@ exec_command(const char *cmd,
fd
=
popen
(
&
fname
[
1
],
"w"
);
}
else
{
canonicalize_path
(
fname
);
fd
=
fopen
(
fname
,
"w"
);
}
if
(
!
fd
)
{
psql_error
(
"%s: %s
\n
"
,
fname
,
strerror
(
errno
));
...
...
@@ -1122,7 +1125,6 @@ do_edit(const char *filename_arg, PQExpBuffer query_buf)
if
(
filename_arg
)
fname
=
filename_arg
;
else
{
/* make a temp file to edit */
...
...
@@ -1262,6 +1264,7 @@ process_file(char *filename)
if
(
!
filename
)
return
false
;
canonicalize_path
(
filename
);
fd
=
fopen
(
filename
,
PG_BINARY_R
);
if
(
!
fd
)
...
...
src/bin/psql/copy.c
View file @
7b0f060d
...
...
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2003, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/bin/psql/copy.c,v 1.
49 2004/07/11 13:29:15
momjian Exp $
* $PostgreSQL: pgsql/src/bin/psql/copy.c,v 1.
50 2004/07/11 21:34:03
momjian Exp $
*/
#include "postgres_fe.h"
#include "copy.h"
...
...
@@ -513,6 +513,8 @@ do_copy(const char *args)
appendPQExpBuffer
(
&
query
,
" FORCE NOT NULL %s"
,
options
->
force_notnull_list
);
}
canonicalize_path
(
options
->
file
);
if
(
options
->
from
)
{
if
(
options
->
file
)
...
...
src/port/path.c
View file @
7b0f060d
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/port/path.c,v 1.2
2 2004/07/11 02:59:42
momjian Exp $
* $PostgreSQL: pgsql/src/port/path.c,v 1.2
3 2004/07/11 21:34:04
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -33,6 +33,7 @@
#endif
const
static
char
*
relative_path
(
const
char
*
bin_path
,
const
char
*
other_path
);
static
void
make_relative
(
const
char
*
my_exec_path
,
const
char
*
p
,
char
*
ret_path
);
static
void
trim_directory
(
char
*
path
);
static
void
trim_trailing_separator
(
char
*
path
);
...
...
@@ -43,15 +44,6 @@ static void trim_trailing_separator(char *path);
(p)++; \
}
/* Macro creates a relative path */
#define MAKE_RELATIVE \
do { \
StrNCpy(path, my_exec_path, MAXPGPATH); \
trim_directory(path); \
trim_directory(path); \
snprintf(ret_path, MAXPGPATH, "%s/%s", path, p); \
} while (0)
/*
* first_dir_separator
*/
...
...
@@ -140,13 +132,13 @@ get_progname(const char *argv0)
void
get_share_path
(
const
char
*
my_exec_path
,
char
*
ret_path
)
{
char
path
[
MAXPGPATH
];
const
char
*
p
;
if
((
p
=
relative_path
(
PGBINDIR
,
PGSHAREDIR
)))
MAKE_RELATIVE
;
make_relative
(
my_exec_path
,
p
,
ret_path
)
;
else
StrNCpy
(
ret_path
,
PGSHAREDIR
,
MAXPGPATH
);
canonicalize_path
(
ret_path
);
}
...
...
@@ -157,13 +149,13 @@ get_share_path(const char *my_exec_path, char *ret_path)
void
get_etc_path
(
const
char
*
my_exec_path
,
char
*
ret_path
)
{
char
path
[
MAXPGPATH
];
const
char
*
p
;
if
((
p
=
relative_path
(
PGBINDIR
,
SYSCONFDIR
)))
MAKE_RELATIVE
;
make_relative
(
my_exec_path
,
p
,
ret_path
)
;
else
StrNCpy
(
ret_path
,
SYSCONFDIR
,
MAXPGPATH
);
canonicalize_path
(
ret_path
);
}
...
...
@@ -174,13 +166,13 @@ get_etc_path(const char *my_exec_path, char *ret_path)
void
get_include_path
(
const
char
*
my_exec_path
,
char
*
ret_path
)
{
char
path
[
MAXPGPATH
];
const
char
*
p
;
if
((
p
=
relative_path
(
PGBINDIR
,
INCLUDEDIR
)))
MAKE_RELATIVE
;
make_relative
(
my_exec_path
,
p
,
ret_path
)
;
else
StrNCpy
(
ret_path
,
INCLUDEDIR
,
MAXPGPATH
);
canonicalize_path
(
ret_path
);
}
...
...
@@ -191,13 +183,13 @@ get_include_path(const char *my_exec_path, char *ret_path)
void
get_pkginclude_path
(
const
char
*
my_exec_path
,
char
*
ret_path
)
{
char
path
[
MAXPGPATH
];
const
char
*
p
;
if
((
p
=
relative_path
(
PGBINDIR
,
PKGINCLUDEDIR
)))
MAKE_RELATIVE
;
make_relative
(
my_exec_path
,
p
,
ret_path
)
;
else
StrNCpy
(
ret_path
,
PKGINCLUDEDIR
,
MAXPGPATH
);
canonicalize_path
(
ret_path
);
}
...
...
@@ -210,13 +202,13 @@ get_pkginclude_path(const char *my_exec_path, char *ret_path)
void
get_pkglib_path
(
const
char
*
my_exec_path
,
char
*
ret_path
)
{
char
path
[
MAXPGPATH
];
const
char
*
p
;
if
((
p
=
relative_path
(
PGBINDIR
,
PKGLIBDIR
)))
MAKE_RELATIVE
;
make_relative
(
my_exec_path
,
p
,
ret_path
)
;
else
StrNCpy
(
ret_path
,
PKGLIBDIR
,
MAXPGPATH
);
canonicalize_path
(
ret_path
);
}
...
...
@@ -229,13 +221,13 @@ get_pkglib_path(const char *my_exec_path, char *ret_path)
void
get_locale_path
(
const
char
*
my_exec_path
,
char
*
ret_path
)
{
char
path
[
MAXPGPATH
];
const
char
*
p
;
if
((
p
=
relative_path
(
PGBINDIR
,
LOCALEDIR
)))
MAKE_RELATIVE
;
make_relative
(
my_exec_path
,
p
,
ret_path
)
;
else
StrNCpy
(
ret_path
,
LOCALEDIR
,
MAXPGPATH
);
canonicalize_path
(
ret_path
);
}
...
...
@@ -270,6 +262,7 @@ set_pglocale_pgservice(const char *argv0, const char *app)
{
/* set for libpq to use */
snprintf
(
env_path
,
sizeof
(
env_path
),
"PGLOCALEDIR=%s"
,
path
);
canonicalize_path
(
env_path
);
putenv
(
strdup
(
env_path
));
}
#endif
...
...
@@ -280,11 +273,26 @@ set_pglocale_pgservice(const char *argv0, const char *app)
/* set for libpq to use */
snprintf
(
env_path
,
sizeof
(
env_path
),
"PGSYSCONFDIR=%s"
,
path
);
canonicalize_path
(
env_path
);
putenv
(
strdup
(
env_path
));
}
}
/*
* make_relative - adjust path to be relative to bin/
*/
static
void
make_relative
(
const
char
*
my_exec_path
,
const
char
*
p
,
char
*
ret_path
)
{
char
path
[
MAXPGPATH
];
StrNCpy
(
path
,
my_exec_path
,
MAXPGPATH
);
trim_directory
(
path
);
trim_directory
(
path
);
snprintf
(
ret_path
,
MAXPGPATH
,
"%s/%s"
,
path
,
p
);
}
/*
* relative_path
...
...
@@ -391,7 +399,10 @@ trim_trailing_separator(char *path)
char
*
p
=
path
+
strlen
(
path
);
#ifdef WIN32
/* Skip over network and drive specifiers for win32 */
/*
* Skip over network and drive specifiers for win32.
* Set 'path' to point to the last character to keep.
*/
if
(
strlen
(
path
)
>=
2
)
{
if
(
IS_DIR_SEP
(
path
[
0
])
&&
IS_DIR_SEP
(
path
[
1
]))
...
...
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