progname: Port to Windows

Define the directory separator depending on the system targetted.

Reported-by: Progyan Bhattacharya <progyanb@acm.org>
This commit is contained in:
Guillem Jover 2018-03-05 00:37:47 +01:00
parent 0093ca2b0e
commit 5ba8c5bab0

View File

@ -34,6 +34,12 @@
#include <string.h>
#include <stdlib.h>
#if defined(_WIN32) || defined(__WIN32__) || defined(__WINDOWS__)
#define LIBBSD_IS_PATHNAME_SEPARATOR(c) ((c) == '/' || (c) == '\\')
#else
#define LIBBSD_IS_PATHNAME_SEPARATOR(c) ((c) == '/')
#endif
#ifdef HAVE___PROGNAME
extern const char *__progname;
#else
@ -58,11 +64,13 @@ getprogname(void)
void
setprogname(const char *progname)
{
const char *last_slash;
size_t i;
last_slash = strrchr(progname, '/');
if (last_slash == NULL)
__progname = progname;
else
__progname = last_slash + 1;
for (i = strlen(progname); i > 0; i--) {
if (LIBBSD_IS_PATHNAME_SEPARATOR(progname[i - 1])) {
__progname = progname + i;
return;
}
}
__progname = progname;
}