From 79e25eded48d2fe33f31441ab7a034f902e335f8 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sun, 8 Feb 2009 10:37:50 +0200 Subject: [PATCH] Support both slash and backslash as path component separator on Windows when parsing argv[0]. --- src/xz/args.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/xz/args.c b/src/xz/args.c index c9d1dc14..93cd220a 100644 --- a/src/xz/args.c +++ b/src/xz/args.c @@ -425,11 +425,20 @@ args_parse(args_info *args, int argc, char **argv) // Check how we were called. { // Remove the leading path name, if any. +#ifdef _WIN32 + // Some systems support both / and \ to separate path + // components. + const char *name = argv[0] + strlen(argv[0]); + while (argv[0] < name && name[-1] != '/' && name[-1] != '\\') + --name; +#else + // POSIX const char *name = strrchr(argv[0], '/'); if (name == NULL) name = argv[0]; else ++name; +#endif // NOTE: It's possible that name[0] is now '\0' if argv[0] // is weird, but it doesn't matter here.