]> Shamusworld >> Repos - rmac/commitdiff
Treat ':' as a path separator on non-Windows platforms
authorJames Jones <atari@theinnocuous.com>
Thu, 27 Aug 2020 05:46:16 +0000 (22:46 -0700)
committerShamus Hammons <jlhamm@acm.org>
Tue, 8 Jun 2021 23:34:07 +0000 (18:34 -0500)
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.

rmac.c
rmac.h

diff --git a/rmac.c b/rmac.c
index 2f12bca48293dc6d946e35f274ec78704adb79b9..ef190ec0fc959434839d45cfb8a7a2c34ab89f46 100644 (file)
--- 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 039d187c139f5e711c2ebae7708083cedb09060f..6ce90c09e38fb94bb9418d0ea1aad74db9122a2a 100644 (file)
--- 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))