util: Set program_name for windows correctly.
authorGurucharan Shetty <gshetty@nicira.com>
Mon, 6 Jan 2014 16:47:57 +0000 (08:47 -0800)
committerGurucharan Shetty <gshetty@nicira.com>
Tue, 14 Jan 2014 16:34:48 +0000 (08:34 -0800)
Windows path uses backward slashes. Also, the executable name
has a .exe extension in it. While creating log files, we use
the program name to create log file names. It feels a little odd
to have log file names like ovsdb-server.exe.log etc. Using
_splitpath_s() is a way to have same log file names on both
windows and linux platforms.

Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
lib/util.c

index 984ab45..0ebf085 100644 (file)
@@ -373,11 +373,18 @@ void
 set_program_name__(const char *argv0, const char *version, const char *date,
                    const char *time)
 {
+#ifdef _WIN32
+    char *basename;
+    size_t max_len = strlen(argv0) + 1;
+    basename = xmalloc(max_len);
+    _splitpath_s(argv0, NULL, 0, NULL, 0, basename, max_len, NULL, 0);
+    assert_single_threaded();
+    program_name = basename;
+#else
     const char *slash = strrchr(argv0, '/');
-
     assert_single_threaded();
-
     program_name = slash ? slash + 1 : argv0;
+#endif
 
     free(program_version);