[Bf-blender-cvs] [246485b213f] master: BLI_path: make BLI_path_slash_is_native_compat into a public function

Campbell Barton noreply at git.blender.org
Tue Jan 24 14:25:17 CET 2023


Commit: 246485b213fa5cdab17f2dd4f9b307070080df0c
Author: Campbell Barton
Date:   Wed Jan 25 00:21:11 2023 +1100
Branches: master
https://developer.blender.org/rB246485b213fa5cdab17f2dd4f9b307070080df0c

BLI_path: make BLI_path_slash_is_native_compat into a public function

===================================================================

M	source/blender/blenlib/BLI_path_util.h
M	source/blender/blenlib/intern/path_util.c

===================================================================

diff --git a/source/blender/blenlib/BLI_path_util.h b/source/blender/blenlib/BLI_path_util.h
index 4ea059391b6..78f8e529740 100644
--- a/source/blender/blenlib/BLI_path_util.h
+++ b/source/blender/blenlib/BLI_path_util.h
@@ -516,6 +516,24 @@ int BLI_path_cmp_normalized(const char *p1, const char *p2)
 #  define ALTSEP_STR "\\"
 #endif
 
+/**
+ * Return true if the slash can be used as a separator on this platform.
+ */
+BLI_INLINE bool BLI_path_slash_is_native_compat(const char ch)
+{
+  /* On UNIX it only makes sense to treat `/` as a path separator.
+   * On WIN32 either may be used. */
+  if (ch == SEP) {
+    return true;
+  }
+#ifdef WIN32
+  if (ch == ALTSEP) {
+    return true;
+  }
+#endif
+  return false;
+}
+
 /* Parent and current dir helpers. */
 #define FILENAME_PARENT ".."
 #define FILENAME_CURRENT "."
diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c
index cba2377161a..a985e18cff5 100644
--- a/source/blender/blenlib/intern/path_util.c
+++ b/source/blender/blenlib/intern/path_util.c
@@ -51,23 +51,6 @@ static bool BLI_path_is_abs(const char *name);
 
 // #define DEBUG_STRSIZE
 
-/**
- * On UNIX it only makes sense to treat `/` as a path separator.
- * On WIN32 either may be used.
- */
-static bool is_sep_native_compat(const char ch)
-{
-  if (ch == SEP) {
-    return true;
-  }
-#ifdef WIN32
-  if (ch == ALTSEP) {
-    return true;
-  }
-#endif
-  return false;
-}
-
 /* implementation */
 
 int BLI_path_sequence_decode(const char *string, char *head, char *tail, ushort *r_digits_len)
@@ -1467,7 +1450,7 @@ size_t BLI_path_append(char *__restrict dst, const size_t maxlen, const char *__
   size_t dirlen = BLI_strnlen(dst, maxlen);
 
   /* Inline #BLI_path_slash_ensure. */
-  if ((dirlen > 0) && !is_sep_native_compat(dst[dirlen - 1])) {
+  if ((dirlen > 0) && !BLI_path_slash_is_native_compat(dst[dirlen - 1])) {
     dst[dirlen++] = SEP;
     dst[dirlen] = '\0';
   }
@@ -1484,7 +1467,7 @@ size_t BLI_path_append_dir(char *__restrict dst, const size_t maxlen, const char
   size_t dirlen = BLI_path_append(dst, maxlen, dir);
   if (dirlen + 1 < maxlen) {
     /* Inline #BLI_path_slash_ensure. */
-    if ((dirlen > 0) && !is_sep_native_compat(dst[dirlen - 1])) {
+    if ((dirlen > 0) && !BLI_path_slash_is_native_compat(dst[dirlen - 1])) {
       dst[dirlen++] = SEP;
       dst[dirlen] = '\0';
     }
@@ -1539,7 +1522,7 @@ size_t BLI_path_join_array(char *__restrict dst,
   bool has_trailing_slash = false;
   if (ofs != 0) {
     size_t len = ofs;
-    while ((len != 0) && is_sep_native_compat(path[len - 1])) {
+    while ((len != 0) && BLI_path_slash_is_native_compat(path[len - 1])) {
       len -= 1;
     }
 
@@ -1553,18 +1536,18 @@ size_t BLI_path_join_array(char *__restrict dst,
     path = path_array[path_index];
     has_trailing_slash = false;
     const char *path_init = path;
-    while (is_sep_native_compat(path[0])) {
+    while (BLI_path_slash_is_native_compat(path[0])) {
       path++;
     }
     size_t len = strlen(path);
     if (len != 0) {
-      while ((len != 0) && is_sep_native_compat(path[len - 1])) {
+      while ((len != 0) && BLI_path_slash_is_native_compat(path[len - 1])) {
         len -= 1;
       }
 
       if (len != 0) {
         /* the very first path may have a slash at the end */
-        if (ofs && !is_sep_native_compat(dst[ofs - 1])) {
+        if (ofs && !BLI_path_slash_is_native_compat(dst[ofs - 1])) {
           dst[ofs++] = SEP;
           if (ofs == dst_last) {
             break;
@@ -1587,7 +1570,7 @@ size_t BLI_path_join_array(char *__restrict dst,
   }
 
   if (has_trailing_slash) {
-    if ((ofs != dst_last) && (ofs != 0) && !is_sep_native_compat(dst[ofs - 1])) {
+    if ((ofs != dst_last) && (ofs != 0) && !BLI_path_slash_is_native_compat(dst[ofs - 1])) {
       dst[ofs++] = SEP;
     }
   }
@@ -1615,7 +1598,7 @@ static bool path_name_at_index_forward(const char *__restrict path,
   int i = 0;
   while (true) {
     const char c = path[i];
-    if ((c == '\0') || is_sep_native_compat(c)) {
+    if ((c == '\0') || BLI_path_slash_is_native_compat(c)) {
       if (prev + 1 != i) {
         prev += 1;
         /* Skip '/./' (behave as if they don't exist). */
@@ -1650,7 +1633,7 @@ static bool path_name_at_index_backward(const char *__restrict path,
   int i = prev - 1;
   while (true) {
     const char c = i >= 0 ? path[i] : '\0';
-    if ((c == '\0') || is_sep_native_compat(c)) {
+    if ((c == '\0') || BLI_path_slash_is_native_compat(c)) {
       if (prev - 1 != i) {
         i += 1;
         /* Skip '/./' (behave as if they don't exist). */
@@ -1749,7 +1732,7 @@ int BLI_path_slash_ensure(char *string, size_t string_maxlen)
 {
   int len = strlen(string);
   BLI_assert(len < string_maxlen);
-  if (len == 0 || !is_sep_native_compat(string[len - 1])) {
+  if (len == 0 || !BLI_path_slash_is_native_compat(string[len - 1])) {
     /* Avoid unlikely buffer overflow. */
     if (len + 1 < string_maxlen) {
       string[len] = SEP;
@@ -1764,7 +1747,7 @@ void BLI_path_slash_rstrip(char *string)
 {
   int len = strlen(string);
   while (len) {
-    if (is_sep_native_compat(string[len - 1])) {
+    if (BLI_path_slash_is_native_compat(string[len - 1])) {
       string[len - 1] = '\0';
       len--;
     }



More information about the Bf-blender-cvs mailing list