From: James Jones Date: Thu, 27 Aug 2020 05:46:16 +0000 (-0700) Subject: Treat ':' as a path separator on non-Windows platforms X-Git-Tag: v2.1.2~1 X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=commitdiff_plain;h=b1d365c4672af85701b66b2b4cdeb7ef8dc523a1 Treat ':' as a path separator on non-Windows platforms In addition to ';', allow the use of ':' as a path separator in RMACPATH, the -i parameter, and any other uses of nthpath. This makes rmac more consistent with standard Unix tool behavior on Unix-like systems. --- diff --git a/rmac.c b/rmac.c index 2f12bca..ef190ec 100644 --- a/rmac.c +++ b/rmac.c @@ -101,6 +101,17 @@ char * fext(char * name, char * extension, int stripp) return name; } +static int is_sep(char c) +{ + const char *seps = PATH_SEPS; + + for (seps = PATH_SEPS; *seps; seps++) { + if (*seps == c) + return 1; + } + + return 0; +} // // Return 'item'nth element of semicolon-seperated pathnames specified in the @@ -120,13 +131,13 @@ int nthpath(char * env_var, int itemno, char * buf) return 0; while (itemno--) - while (*s != EOS && *s++ != ';') + while (*s != EOS && !is_sep(*s++)) ; if (*s == EOS) return 0; - while (*s != EOS && *s != ';') + while (*s != EOS && !is_sep(*s)) *buf++ = *s++; *buf++ = EOS; diff --git a/rmac.h b/rmac.h index 039d187..6ce90c0 100644 --- a/rmac.h +++ b/rmac.h @@ -27,6 +27,7 @@ #define _OPEN_FLAGS _O_TRUNC|_O_CREAT|_O_BINARY|_O_RDWR #define _OPEN_INC _O_RDONLY|_O_BINARY #define _PERM_MODE _S_IREAD|_S_IWRITE + #define PATH_SEPS ";" #ifdef _MSC_VER #if _MSC_VER > 1000 @@ -64,6 +65,7 @@ #define _OPEN_FLAGS O_TRUNC|O_CREAT|O_RDWR #define _OPEN_INC O_RDONLY #define _PERM_MODE S_IRUSR|S_IWUSR + #define PATH_SEPS ";:" #ifdef __MINGW32__ #define off64_t long @@ -86,6 +88,7 @@ #define _OPEN_FLAGS O_TRUNC|O_CREAT|O_RDWR #define _OPEN_INC O_RDONLY #define _PERM_MODE S_IREAD|S_IWRITE + #define PATH_SEPS ":;" // Defined here, even though the platform may not support it... #define DO_PRAGMA(x) _Pragma (#x) #define WARNING(desc) DO_PRAGMA(message (#desc))