[Bf-blender-cvs] [1d1cade9a9a] master: BLI_path: remove trailing NULL argument to BLI_path_join

Campbell Barton noreply at git.blender.org
Mon Oct 17 02:18:24 CEST 2022


Commit: 1d1cade9a9a7f75034669520e39c56959917803a
Author: Campbell Barton
Date:   Mon Oct 17 11:16:41 2022 +1100
Branches: master
https://developer.blender.org/rB1d1cade9a9a7f75034669520e39c56959917803a

BLI_path: remove trailing NULL argument to BLI_path_join

Using varargs had the disadvantages, replace with a macro which has
some advantages.

- Arguments are type checked.
- Less verbose.
- Unintended NULL arguments would silently terminate joining paths.
- Passing in a NULL argument warns with GCC.

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

M	intern/mantaflow/intern/MANTA_main.cpp
M	source/blender/blenkernel/intern/appdir.c
M	source/blender/blenkernel/intern/asset_catalog.cc
M	source/blender/blenkernel/intern/blendfile.c
M	source/blender/blenkernel/intern/fluid.c
M	source/blender/blenkernel/intern/image_save.cc
M	source/blender/blenkernel/intern/packedFile.c
M	source/blender/blenkernel/intern/preferences.c
M	source/blender/blenlib/BLI_path_util.h
M	source/blender/blenlib/intern/path_util.c
M	source/blender/blenlib/tests/BLI_path_util_test.cc
M	source/blender/blenloader/tests/blendfile_loading_base_test.cc
M	source/blender/editors/physics/physics_fluid.c
M	source/blender/editors/space_file/file_ops.c
M	source/blender/editors/space_file/fsmenu.c
M	source/blender/editors/util/ed_util.c
M	source/blender/io/common/intern/path_util.cc
M	source/blender/io/usd/intern/usd_writer_material.cc
M	source/blender/io/usd/intern/usd_writer_volume.cc
M	source/blender/io/usd/tests/usd_tests_common.cc
M	source/blender/io/wavefront_obj/importer/obj_import_file_reader.cc
M	source/blender/windowmanager/intern/wm_files.c
M	source/blender/windowmanager/intern/wm_splash_screen.c

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

diff --git a/intern/mantaflow/intern/MANTA_main.cpp b/intern/mantaflow/intern/MANTA_main.cpp
index f5f22dc700b..ae584e6e590 100644
--- a/intern/mantaflow/intern/MANTA_main.cpp
+++ b/intern/mantaflow/intern/MANTA_main.cpp
@@ -1507,13 +1507,9 @@ bool MANTA::bakeData(FluidModifierData *fmd, int framenr)
 
   string volume_format = getCacheFileEnding(fds->cache_data_format);
 
+  BLI_path_join(cacheDirData, sizeof(cacheDirData), fds->cache_directory, FLUID_DOMAIN_DIR_DATA);
   BLI_path_join(
-      cacheDirData, sizeof(cacheDirData), fds->cache_directory, FLUID_DOMAIN_DIR_DATA, nullptr);
-  BLI_path_join(cacheDirGuiding,
-                sizeof(cacheDirGuiding),
-                fds->cache_directory,
-                FLUID_DOMAIN_DIR_GUIDE,
-                nullptr);
+      cacheDirGuiding, sizeof(cacheDirGuiding), fds->cache_directory, FLUID_DOMAIN_DIR_GUIDE);
   BLI_path_make_safe(cacheDirData);
   BLI_path_make_safe(cacheDirGuiding);
 
@@ -1540,7 +1536,7 @@ bool MANTA::bakeNoise(FluidModifierData *fmd, int framenr)
   string volume_format = getCacheFileEnding(fds->cache_data_format);
 
   BLI_path_join(
-      cacheDirNoise, sizeof(cacheDirNoise), fds->cache_directory, FLUID_DOMAIN_DIR_NOISE, nullptr);
+      cacheDirNoise, sizeof(cacheDirNoise), fds->cache_directory, FLUID_DOMAIN_DIR_NOISE);
   BLI_path_make_safe(cacheDirNoise);
 
   ss.str("");
@@ -1566,8 +1562,7 @@ bool MANTA::bakeMesh(FluidModifierData *fmd, int framenr)
   string volume_format = getCacheFileEnding(fds->cache_data_format);
   string mesh_format = getCacheFileEnding(fds->cache_mesh_format);
 
-  BLI_path_join(
-      cacheDirMesh, sizeof(cacheDirMesh), fds->cache_directory, FLUID_DOMAIN_DIR_MESH, nullptr);
+  BLI_path_join(cacheDirMesh, sizeof(cacheDirMesh), fds->cache_directory, FLUID_DOMAIN_DIR_MESH);
   BLI_path_make_safe(cacheDirMesh);
 
   ss.str("");
@@ -1596,8 +1591,7 @@ bool MANTA::bakeParticles(FluidModifierData *fmd, int framenr)
   BLI_path_join(cacheDirParticles,
                 sizeof(cacheDirParticles),
                 fds->cache_directory,
-                FLUID_DOMAIN_DIR_PARTICLES,
-                nullptr);
+                FLUID_DOMAIN_DIR_PARTICLES);
   BLI_path_make_safe(cacheDirParticles);
 
   ss.str("");
@@ -1623,11 +1617,8 @@ bool MANTA::bakeGuiding(FluidModifierData *fmd, int framenr)
   string volume_format = getCacheFileEnding(fds->cache_data_format);
   string resumable_cache = !(fds->flags & FLUID_DOMAIN_USE_RESUMABLE_CACHE) ? "False" : "True";
 
-  BLI_path_join(cacheDirGuiding,
-                sizeof(cacheDirGuiding),
-                fds->cache_directory,
-                FLUID_DOMAIN_DIR_GUIDE,
-                nullptr);
+  BLI_path_join(
+      cacheDirGuiding, sizeof(cacheDirGuiding), fds->cache_directory, FLUID_DOMAIN_DIR_GUIDE);
   BLI_path_make_safe(cacheDirGuiding);
 
   ss.str("");
@@ -1678,13 +1669,11 @@ bool MANTA::exportSmokeScript(FluidModifierData *fmd)
 
   FluidDomainSettings *fds = fmd->domain;
 
-  BLI_path_join(
-      cacheDir, sizeof(cacheDir), fds->cache_directory, FLUID_DOMAIN_DIR_SCRIPT, nullptr);
+  BLI_path_join(cacheDir, sizeof(cacheDir), fds->cache_directory, FLUID_DOMAIN_DIR_SCRIPT);
   BLI_path_make_safe(cacheDir);
   /* Create 'script' subdir if it does not exist already */
   BLI_dir_create_recursive(cacheDir);
-  BLI_path_join(
-      cacheDirScript, sizeof(cacheDirScript), cacheDir, FLUID_DOMAIN_SMOKE_SCRIPT, nullptr);
+  BLI_path_join(cacheDirScript, sizeof(cacheDirScript), cacheDir, FLUID_DOMAIN_SMOKE_SCRIPT);
   BLI_path_make_safe(cacheDir);
 
   bool noise = fds->flags & FLUID_DOMAIN_USE_NOISE;
@@ -1791,13 +1780,11 @@ bool MANTA::exportLiquidScript(FluidModifierData *fmd)
 
   FluidDomainSettings *fds = fmd->domain;
 
-  BLI_path_join(
-      cacheDir, sizeof(cacheDir), fds->cache_directory, FLUID_DOMAIN_DIR_SCRIPT, nullptr);
+  BLI_path_join(cacheDir, sizeof(cacheDir), fds->cache_directory, FLUID_DOMAIN_DIR_SCRIPT);
   BLI_path_make_safe(cacheDir);
   /* Create 'script' subdir if it does not exist already */
   BLI_dir_create_recursive(cacheDir);
-  BLI_path_join(
-      cacheDirScript, sizeof(cacheDirScript), cacheDir, FLUID_DOMAIN_LIQUID_SCRIPT, nullptr);
+  BLI_path_join(cacheDirScript, sizeof(cacheDirScript), cacheDir, FLUID_DOMAIN_LIQUID_SCRIPT);
   BLI_path_make_safe(cacheDirScript);
 
   bool mesh = fds->flags & FLUID_DOMAIN_USE_MESH;
@@ -2323,8 +2310,7 @@ bool MANTA::hasGuiding(FluidModifierData *fmd, int framenr, bool sourceDomain)
 string MANTA::getDirectory(FluidModifierData *fmd, string subdirectory)
 {
   char directory[FILE_MAX];
-  BLI_path_join(
-      directory, sizeof(directory), fmd->domain->cache_directory, subdirectory.c_str(), nullptr);
+  BLI_path_join(directory, sizeof(directory), fmd->domain->cache_directory, subdirectory.c_str());
   BLI_path_make_safe(directory);
   return directory;
 }
diff --git a/source/blender/blenkernel/intern/appdir.c b/source/blender/blenkernel/intern/appdir.c
index b2f1e75cd1d..21750980b53 100644
--- a/source/blender/blenkernel/intern/appdir.c
+++ b/source/blender/blenkernel/intern/appdir.c
@@ -191,7 +191,7 @@ bool BKE_appdir_folder_documents(char *dir)
 
   char try_documents_path[FILE_MAXDIR];
   /* Own attempt at getting a valid Documents path. */
-  BLI_path_join(try_documents_path, sizeof(try_documents_path), home_path, N_("Documents"), NULL);
+  BLI_path_join(try_documents_path, sizeof(try_documents_path), home_path, N_("Documents"));
   if (!BLI_is_dir(try_documents_path)) {
     return false;
   }
@@ -214,11 +214,11 @@ bool BKE_appdir_folder_caches(char *r_path, const size_t path_len)
 
 #ifdef WIN32
   BLI_path_join(
-      r_path, path_len, caches_root_path, "Blender Foundation", "Blender", "Cache", SEP_STR, NULL);
+      r_path, path_len, caches_root_path, "Blender Foundation", "Blender", "Cache", SEP_STR);
 #elif defined(__APPLE__)
-  BLI_path_join(r_path, path_len, caches_root_path, "Blender", SEP_STR, NULL);
+  BLI_path_join(r_path, path_len, caches_root_path, "Blender", SEP_STR);
 #else /* __linux__ */
-  BLI_path_join(r_path, path_len, caches_root_path, "blender", SEP_STR, NULL);
+  BLI_path_join(r_path, path_len, caches_root_path, "blender", SEP_STR);
 #endif
 
   return true;
@@ -281,7 +281,9 @@ static bool test_path(char *targetpath,
 
   /* Only the last argument should be NULL. */
   BLI_assert(!(folder_name == NULL && (subfolder_name != NULL)));
-  BLI_path_join(targetpath, targetpath_len, path_base, folder_name, subfolder_name, NULL);
+  const char *path_array[] = {path_base, folder_name, subfolder_name};
+  const int path_array_num = (folder_name ? (subfolder_name ? 3 : 2) : 1);
+  BLI_path_join_array(targetpath, targetpath_len, path_array, path_array_num);
   if (check_is_dir == false) {
     CLOG_INFO(&LOG, 3, "using without test: '%s'", targetpath);
     return true;
@@ -365,7 +367,9 @@ static bool get_path_local_ex(char *targetpath,
             STR_OR_FALLBACK(subfolder_name));
 
   if (folder_name) { /* `subfolder_name` may be NULL. */
-    BLI_path_join(relfolder, sizeof(relfolder), folder_name, subfolder_name, NULL);
+    const char *path_array[] = {folder_name, subfolder_name};
+    const int path_array_num = subfolder_name ? 2 : 1;
+    BLI_path_join_array(relfolder, sizeof(relfolder), path_array, path_array_num);
   }
   else {
     relfolder[0] = '\0';
@@ -379,8 +383,7 @@ static bool get_path_local_ex(char *targetpath,
    * we must move the blender_version dir with contents to Resources.
    * Add 4 + 9 for the temporary `/../` path & `Resources`. */
   char osx_resourses[FILE_MAX + 4 + 9];
-  BLI_path_join(
-      osx_resourses, sizeof(osx_resourses), g_app.program_dirname, "..", "Resources", NULL);
+  BLI_path_join(osx_resourses, sizeof(osx_resourses), g_app.program_dirname, "..", "Resources");
   /* Remove the '/../' added above. */
   BLI_path_normalize(NULL, osx_resourses);
   path_base = osx_resourses;
@@ -525,7 +528,9 @@ static bool get_path_system_ex(char *targetpath,
   char relfolder[FILE_MAX];
 
   if (folder_name) { /* `subfolder_name` may be NULL. */
-    BLI_path_join(relfolder, sizeof(relfolder), folder_name, subfolder_name, NULL);
+    const char *path_array[] = {folder_name, subfolder_name};
+    const int path_array_num = subfolder_name ? 2 : 1;
+    BLI_path_join_array(relfolder, sizeof(relfolder), path_array, path_array_num);
   }
   else {
     relfolder[0] = '\0';
@@ -1041,8 +1046,7 @@ bool BKE_appdir_app_template_has_userpref(const char *app_template)
   }
 
   char userpref_path[FILE_MAX];
-  BLI_path_join(
-      userpref_path, sizeof(userpref_path), app_template_path, BLENDER_USERPREF_FILE, NULL);
+  BLI_path_join(userpref_path, sizeof(userpref_path), app_template_path, BLENDER_USERPREF_FILE);
   return BLI_exists(userpref_path);
 }
 
diff --git a/source/blender/blenkernel/intern/asset_catalog.cc b/source/blender/blenkernel/intern/asset_catalog.cc
index f7b14cc3479..cedb0d8b4bf 100644
--- a/source/blender/blenkernel/intern/asset_catalog.cc
+++ b/source/blender/blenkernel/intern/asset_catalog.cc
@@ -515,8 +515,7 @@ CatalogFilePath AssetCatalogService::find_suitable_cdf_path_for_writing(
     BLI_path_join(asset_lib_cdf_path,
                   sizeof(asset_lib_cdf_path),
                   suitable_root_path,
-                  DEFAULT_CATALOG_FILENAME.c_str(),
-                  nullptr);
+                  DEFAULT_CATALOG_FILENAME.c_str());
     return asset_lib_cdf_path;
   }
 
diff --git a/source/blender/blenkernel/intern/blendfile.c b/source/blender/blenkernel/intern/blendfile.c
index 6546659f6cd..85a43b7c479 100644
--- a/source/blender/blenkernel/intern/blendfile.c
+++ b/source/blender/blenkernel/intern/blendfile.c
@@ -737,7 +737,7 @@ bool BKE_blendfile_userdef_write_all(ReportList *reports)
 
   if ((cfgdir = BKE_appdir_folder_id_create(BLENDER_USER_CONFIG, NULL))) {
     bool ok_write;
-    BLI_path_join(filepath, sizeof(filepath), cfgdir, BLENDER_USERPREF_FILE, NULL);
+    BLI_path_join(filepath, sizeof(filepath), cfgdir, BLENDER_USERPREF_FILE);
 
     printf("Writing userprefs: '%s' ", filepath);
     if (use_template_userpref) {
@@ -764,7 +764,7 @@ bool BKE_blendfile_userdef_write_all(ReportList *reports)
   if (use_template_userpref) {
     if ((cfgdir = BKE_appdir_folder_id_crea

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list