mirror of
https://github.com/openvswitch/ovs
synced 2025-10-25 15:07:05 +00:00
lockfile: Support \-delimited file names in lockfile_name().
Currently paths that have only forward slashes like the following "C:/package/binaries/conf.db" work seamlessly. If we try the native windows filepaths i.e. "C:\package\binaries\conf.db" we will hit the following problem: 2015-03-31T15:54:17Z|00001|lockfile|WARN|.c:\package\binaries\conf.db.~lock~: failed to open lock file: Invalid argument 2015-03-31T15:54:17Z|00002|lockfile|WARN|.c:\package\binaries\conf.db.~lock~: failed to lock file: Invalid argument ovsdb-server: I/O error: c:\package\binaries\conf.db: failed to lock lockfile (Invalid argument) In this patch we update the lockfile_name function to also look for backslashes, and also accommodate if we have a mix of backslashes and forward slashes. Signed-off-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> [blp@nicira.com simplified the code] Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
@@ -82,6 +82,14 @@ lockfile_name(const char *filename_)
|
||||
* symlink, not one for each. */
|
||||
filename = follow_symlinks(filename_);
|
||||
slash = strrchr(filename, '/');
|
||||
|
||||
#ifdef _WIN32
|
||||
char *backslash = strrchr(filename, '\\');
|
||||
if (backslash && (!slash || backslash > slash)) {
|
||||
slash = backslash;
|
||||
}
|
||||
#endif
|
||||
|
||||
lockname = (slash
|
||||
? xasprintf("%.*s/.%s.~lock~",
|
||||
(int) (slash - filename), filename, slash + 1)
|
||||
|
||||
Reference in New Issue
Block a user