/* returns the path if found, NULL string if not */ const char *BKE_appdir_folder_id(const int folder_id, const char *subfolder) { const int ver = BLENDER_VERSION; static char path[FILE_MAX] = ""; switch (folder_id) { case BLENDER_DATAFILES: /* general case */ if (get_path_user(path, "datafiles", subfolder, "BLENDER_USER_DATAFILES", ver)) break; if (get_path_local(path, "datafiles", subfolder, ver)) break; if (get_path_system(path, "datafiles", subfolder, "BLENDER_SYSTEM_DATAFILES", ver)) break; return NULL; case BLENDER_USER_DATAFILES: if (get_path_user(path, "datafiles", subfolder, "BLENDER_USER_DATAFILES", ver)) break; return NULL; case BLENDER_SYSTEM_DATAFILES: if (get_path_local(path, "datafiles", subfolder, ver)) break; if (get_path_system(path, "datafiles", subfolder, "BLENDER_SYSTEM_DATAFILES", ver)) break; return NULL; case BLENDER_USER_AUTOSAVE: if (get_path_user(path, "autosave", subfolder, "BLENDER_USER_DATAFILES", ver)) break; return NULL; case BLENDER_USER_CONFIG: if (get_path_user(path, "config", subfolder, "BLENDER_USER_CONFIG", ver)) break; return NULL; case BLENDER_USER_SCRIPTS: if (get_path_user(path, "scripts", subfolder, "BLENDER_USER_SCRIPTS", ver)) break; return NULL; case BLENDER_SYSTEM_SCRIPTS: if (get_path_local(path, "scripts", subfolder, ver)) break; if (get_path_system(path, "scripts", subfolder, "BLENDER_SYSTEM_SCRIPTS", ver)) break; return NULL; case BLENDER_SYSTEM_PYTHON: if (get_path_local(path, "python", subfolder, ver)) break; if (get_path_system(path, "python", subfolder, "BLENDER_SYSTEM_PYTHON", ver)) break; return NULL; default: BLI_assert(0); break; } return path; }
char *BLI_get_folder_version(const int id, const int ver, const int do_check) { static char path[FILE_MAX] = ""; int ok; switch (id) { case BLENDER_RESOURCE_PATH_USER: ok = get_path_user(path, NULL, NULL, NULL, ver); break; case BLENDER_RESOURCE_PATH_LOCAL: ok = get_path_local(path, NULL, NULL, ver); break; case BLENDER_RESOURCE_PATH_SYSTEM: ok = get_path_system(path, NULL, NULL, NULL, ver); break; default: path[0] = '\0'; /* in case do_check is false */ ok = FALSE; BLI_assert(!"incorrect ID"); } if ((ok == FALSE) && do_check) { return NULL; } return path; }
/** * Returns the path of the top-level version-specific local, user or system directory. * If do_check, then the result will be NULL if the directory doesn't exist. */ const char *BKE_appdir_folder_id_version(const int folder_id, const int ver, const bool do_check) { static char path[FILE_MAX] = ""; bool ok; switch (folder_id) { case BLENDER_RESOURCE_PATH_USER: ok = get_path_user(path, NULL, NULL, NULL, ver); break; case BLENDER_RESOURCE_PATH_LOCAL: ok = get_path_local(path, NULL, NULL, ver); break; case BLENDER_RESOURCE_PATH_SYSTEM: ok = get_path_system(path, NULL, NULL, NULL, ver); break; default: path[0] = '\0'; /* in case do_check is false */ ok = false; BLI_assert(!"incorrect ID"); break; } if (!ok && do_check) { return NULL; } return path; }