]> Kevux Git Server - fll/commitdiff
Update: Improve f_file_name_directory() and f_file_name_base().
authorKevin Day <thekevinday@gmail.com>
Wed, 16 Feb 2022 01:06:00 +0000 (19:06 -0600)
committerKevin Day <thekevinday@gmail.com>
Wed, 16 Feb 2022 01:06:00 +0000 (19:06 -0600)
Have both of these functions include a NULL at the end to make compatibility with NULL terminated strings easier.

The directory name should not return "." when the directory is the current directory.
Replace this with an empty string.

level_0/f_file/c/file.c
level_0/f_file/c/file.h

index 1e2f35fbbaf8e73b85ae5900fd1f4717b52a1e1b..5bc8ff1fc8663f566a48b601eef75ffd880a878e 100644 (file)
@@ -1400,13 +1400,14 @@ extern "C" {
 
     path_to_name = basename(path_argument);
 
-    f_array_length_t size = strnlen(path_to_name, path.used);
+    const f_array_length_t size = strnlen(path_to_name, path.used);
 
-    const f_status_t status = f_string_dynamic_increase_by(size, name_base);
+    const f_status_t status = f_string_dynamic_increase_by(size + 1, name_base);
     if (F_status_is_error(status)) return status;
 
     memcpy(name_base->string + name_base->used, path_to_name, size);
     name_base->used += size;
+    name_base->string[name_base->used] = 0;
 
     return F_none;
   }
@@ -1431,15 +1432,21 @@ extern "C" {
 
     path_to_name = dirname(path_argument);
 
-    f_array_length_t size = strnlen(path_to_name, path.used);
+    const f_array_length_t size = strnlen(path_to_name, path.used);
+
+    // Do not treat '.' as a directory.
+    if (size == 1 && f_string_ascii_plus_s.string[0]) {
+      return F_none;
+    }
 
     {
-      const f_status_t status = f_string_dynamic_increase_by(size, name_directory);
+      const f_status_t status = f_string_dynamic_increase_by(size + 1, name_directory);
       if (F_status_is_error(status)) return status;
     }
 
     memcpy(name_directory->string + name_directory->used, path_to_name, size);
     name_directory->used += size;
+    name_directory->string[name_directory->used] = 0;
 
     return F_none;
   }
index 6cba705ba47e2cb6d429c6216ca49d240336c4eb..61ca77527edb97b258693b37adda3ee514e54ba1 100644 (file)
@@ -1235,6 +1235,7 @@ extern "C" {
  * @param name_base
  *   The resulting base name as per basename().
  *   The base name is appended onto this.
+ *   This is NULL terminated after the name_directory.used.
  *
  * @return
  *   F_none on success.
@@ -1263,6 +1264,7 @@ extern "C" {
  * @param name_directory
  *   The resulting base name as per dirname().
  *   The directory name is appended onto this.
+ *   This is NULL terminated after the name_directory.used.
  *
  * @return
  *   F_none on success.