diff options
author | Ben Pfaff <blp@ovn.org> | 2018-07-24 09:48:45 -0700 |
---|---|---|
committer | Ben Pfaff <blp@ovn.org> | 2018-08-03 09:21:54 -0700 |
commit | 4d8f04b3e93d7a853619e664abde955d0dfe0c48 (patch) | |
tree | 41d397cb0619de331b58b7735dc6a86c458796d8 /lib/util.h | |
parent | 7491caa37f3bead9420e7fcc6a3e74b0ec18da00 (diff) | |
download | openvswitch-4d8f04b3e93d7a853619e664abde955d0dfe0c48.tar.gz |
util: Fix abs_file_name() bugs on Windows.
abs_file_name() believed that a file name that begins with / or contains :
is absolute and that any other file name is relative. On Windows, this is
wrong in at least the following ways:
* / and \ are interchangeable on Windows.
* A name that begins with \\ or // is also absolute.
* A name that begins with X: but not X:\ is not absolute.
* A name with : in some position other than the second position is
not absolute (although it might not be valid either?).
Furthermore, Windows has more than one current working directory (one per
volume letter), so trying to make a file name absolute by just prefixing
the current working directory for the current volume results in silliness.
This patch attempts to fix the problem.
This makes OVS link against shlwapi, which is needed to use
PathIsRelative().
Found by inspection.
Acked-by: Alin Gabriel Serdean <aserdean@ovn.org>
Signed-off-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'lib/util.h')
-rw-r--r-- | lib/util.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/util.h b/lib/util.h index 0061bb986..fd414489c 100644 --- a/lib/util.h +++ b/lib/util.h @@ -231,6 +231,7 @@ char *dir_name(const char *file_name); char *base_name(const char *file_name); #endif char *abs_file_name(const char *dir, const char *file_name); +bool is_file_name_absolute(const char *); char *follow_symlinks(const char *filename); |