mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
Simplify code used in is_absolute_path() macro; also add comment about
'E:abc' Win32 path handling.
This commit is contained in:
parent
76129e7f14
commit
35b0a6b205
@ -68,17 +68,27 @@ extern void pgfnames_cleanup(char **filenames);
|
||||
* By making this a macro we avoid needing to include path.c in libpq.
|
||||
*/
|
||||
#ifndef WIN32
|
||||
#define IS_DIR_SEP(ch) ((ch) == '/')
|
||||
|
||||
#define is_absolute_path(filename) \
|
||||
( \
|
||||
((filename)[0] == '/') \
|
||||
IS_DIR_SEP((filename)[0]) \
|
||||
)
|
||||
#else
|
||||
#define IS_DIR_SEP(ch) ((ch) == '/' || (ch) == '\\')
|
||||
|
||||
/*
|
||||
* On Win32, a drive letter _not_ followed by a slash, e.g. 'E:abc', is
|
||||
* relative to the cwd on that drive, or the drive's root directory
|
||||
* if that drive has no cwd. Because the path itself cannot tell us
|
||||
* which is the case, we have to assume the worst, i.e. that it is not
|
||||
* absolute; this check is done by IS_DIR_SEP(filename[2]).
|
||||
*/
|
||||
#define is_absolute_path(filename) \
|
||||
( \
|
||||
((filename)[0] == '/') || \
|
||||
(filename)[0] == '\\' || \
|
||||
IS_DIR_SEP((filename)[0]) || \
|
||||
(isalpha((unsigned char) ((filename)[0])) && (filename)[1] == ':' && \
|
||||
((filename)[2] == '\\' || (filename)[2] == '/')) \
|
||||
IS_DIR_SEP((filename)[2])) \
|
||||
)
|
||||
#endif
|
||||
|
||||
|
@ -34,12 +34,6 @@
|
||||
#include "pg_config_paths.h"
|
||||
|
||||
|
||||
#ifndef WIN32
|
||||
#define IS_DIR_SEP(ch) ((ch) == '/')
|
||||
#else
|
||||
#define IS_DIR_SEP(ch) ((ch) == '/' || (ch) == '\\')
|
||||
#endif
|
||||
|
||||
#ifndef WIN32
|
||||
#define IS_PATH_VAR_SEP(ch) ((ch) == ':')
|
||||
#else
|
||||
|
Loading…
Reference in New Issue
Block a user