Rename String plus_file to path_join
This commit is contained in:
parent
051f24b067
commit
10a56981dc
100 changed files with 519 additions and 519 deletions
|
|
@ -169,7 +169,7 @@ String DirAccessJAndroid::get_absolute_path(String p_path) {
|
|||
}
|
||||
|
||||
if (p_path.is_relative_path()) {
|
||||
p_path = get_current_dir().plus_file(p_path);
|
||||
p_path = get_current_dir().path_join(p_path);
|
||||
}
|
||||
|
||||
p_path = fix_path(p_path);
|
||||
|
|
|
|||
|
|
@ -624,7 +624,7 @@ Vector<String> EditorExportPlatformAndroid::list_gdap_files(const String &p_path
|
|||
Vector<PluginConfigAndroid> EditorExportPlatformAndroid::get_plugins() {
|
||||
Vector<PluginConfigAndroid> loaded_plugins;
|
||||
|
||||
String plugins_dir = ProjectSettings::get_singleton()->get_resource_path().plus_file("android/plugins");
|
||||
String plugins_dir = ProjectSettings::get_singleton()->get_resource_path().path_join("android/plugins");
|
||||
|
||||
// Add the prebuilt plugins
|
||||
loaded_plugins.append_array(PluginConfigAndroid::get_prebuilt_plugins(plugins_dir));
|
||||
|
|
@ -635,7 +635,7 @@ Vector<PluginConfigAndroid> EditorExportPlatformAndroid::get_plugins() {
|
|||
if (!plugins_filenames.is_empty()) {
|
||||
Ref<ConfigFile> config_file = memnew(ConfigFile);
|
||||
for (int i = 0; i < plugins_filenames.size(); i++) {
|
||||
PluginConfigAndroid config = PluginConfigAndroid::load_plugin_config(config_file, plugins_dir.plus_file(plugins_filenames[i]));
|
||||
PluginConfigAndroid config = PluginConfigAndroid::load_plugin_config(config_file, plugins_dir.path_join(plugins_filenames[i]));
|
||||
if (config.valid_config) {
|
||||
loaded_plugins.push_back(config);
|
||||
} else {
|
||||
|
|
@ -696,7 +696,7 @@ Error EditorExportPlatformAndroid::save_apk_so(void *p_userdata, const SharedObj
|
|||
if (abi_index != -1) {
|
||||
exported = true;
|
||||
String abi = abis[abi_index];
|
||||
String dst_path = String("lib").plus_file(abi).plus_file(p_so.path.get_file());
|
||||
String dst_path = String("lib").path_join(abi).path_join(p_so.path.get_file());
|
||||
Vector<uint8_t> array = FileAccess::get_file_as_array(p_so.path);
|
||||
Error store_err = store_in_apk(ed, dst_path, array);
|
||||
ERR_FAIL_COND_V_MSG(store_err, store_err, "Cannot store in apk file '" + dst_path + "'.");
|
||||
|
|
@ -737,7 +737,7 @@ Error EditorExportPlatformAndroid::copy_gradle_so(void *p_userdata, const Shared
|
|||
String type = export_data->debug ? "debug" : "release";
|
||||
String abi = abis[abi_index];
|
||||
String filename = p_so.path.get_file();
|
||||
String dst_path = base.plus_file(type).plus_file(abi).plus_file(filename);
|
||||
String dst_path = base.path_join(type).path_join(abi).path_join(filename);
|
||||
Vector<uint8_t> data = FileAccess::get_file_as_array(p_so.path);
|
||||
print_verbose("Copying .so file from " + p_so.path + " to " + dst_path);
|
||||
Error err = store_file_at_path(dst_path, data);
|
||||
|
|
@ -1851,7 +1851,7 @@ Error EditorExportPlatformAndroid::run(const Ref<EditorExportPreset> &p_preset,
|
|||
p_debug_flags |= DEBUG_FLAG_REMOTE_DEBUG_LOCALHOST;
|
||||
}
|
||||
|
||||
String tmp_export_path = EditorPaths::get_singleton()->get_cache_dir().plus_file("tmpexport." + uitos(OS::get_singleton()->get_unix_time()) + ".apk");
|
||||
String tmp_export_path = EditorPaths::get_singleton()->get_cache_dir().path_join("tmpexport." + uitos(OS::get_singleton()->get_unix_time()) + ".apk");
|
||||
|
||||
#define CLEANUP_AND_RETURN(m_err) \
|
||||
{ \
|
||||
|
|
@ -2004,7 +2004,7 @@ String EditorExportPlatformAndroid::get_adb_path() {
|
|||
exe_ext = ".exe";
|
||||
}
|
||||
String sdk_path = EditorSettings::get_singleton()->get("export/android/android_sdk_path");
|
||||
return sdk_path.plus_file("platform-tools/adb" + exe_ext);
|
||||
return sdk_path.path_join("platform-tools/adb" + exe_ext);
|
||||
}
|
||||
|
||||
String EditorExportPlatformAndroid::get_apksigner_path() {
|
||||
|
|
@ -2017,7 +2017,7 @@ String EditorExportPlatformAndroid::get_apksigner_path() {
|
|||
String apksigner_path = "";
|
||||
|
||||
Error errn;
|
||||
String build_tools_dir = sdk_path.plus_file("build-tools");
|
||||
String build_tools_dir = sdk_path.path_join("build-tools");
|
||||
Ref<DirAccess> da = DirAccess::open(build_tools_dir, &errn);
|
||||
if (errn != OK) {
|
||||
print_error("Unable to open Android 'build-tools' directory.");
|
||||
|
|
@ -2030,7 +2030,7 @@ String EditorExportPlatformAndroid::get_apksigner_path() {
|
|||
while (!sub_dir.is_empty()) {
|
||||
if (!sub_dir.begins_with(".") && da->current_is_dir()) {
|
||||
// Check if the tool is here.
|
||||
String tool_path = build_tools_dir.plus_file(sub_dir).plus_file(apksigner_command_name);
|
||||
String tool_path = build_tools_dir.path_join(sub_dir).path_join(apksigner_command_name);
|
||||
if (FileAccess::exists(tool_path)) {
|
||||
apksigner_path = tool_path;
|
||||
break;
|
||||
|
|
@ -2135,7 +2135,7 @@ bool EditorExportPlatformAndroid::has_valid_export_configuration(const Ref<Edito
|
|||
} else {
|
||||
Error errn;
|
||||
// Check for the platform-tools directory.
|
||||
Ref<DirAccess> da = DirAccess::open(sdk_path.plus_file("platform-tools"), &errn);
|
||||
Ref<DirAccess> da = DirAccess::open(sdk_path.path_join("platform-tools"), &errn);
|
||||
if (errn != OK) {
|
||||
err += TTR("Invalid Android SDK path in Editor Settings.");
|
||||
err += TTR("Missing 'platform-tools' directory!");
|
||||
|
|
@ -2153,7 +2153,7 @@ bool EditorExportPlatformAndroid::has_valid_export_configuration(const Ref<Edito
|
|||
}
|
||||
|
||||
// Check for the build-tools directory.
|
||||
Ref<DirAccess> build_tools_da = DirAccess::open(sdk_path.plus_file("build-tools"), &errn);
|
||||
Ref<DirAccess> build_tools_da = DirAccess::open(sdk_path.path_join("build-tools"), &errn);
|
||||
if (errn != OK) {
|
||||
err += TTR("Invalid Android SDK path in Editor Settings.");
|
||||
err += TTR("Missing 'build-tools' directory!");
|
||||
|
|
@ -2310,7 +2310,7 @@ String EditorExportPlatformAndroid::get_apk_expansion_fullpath(const Ref<EditorE
|
|||
int version_code = p_preset->get("version/code");
|
||||
String package_name = p_preset->get("package/unique_name");
|
||||
String apk_file_name = "main." + itos(version_code) + "." + get_package_name(package_name) + ".obb";
|
||||
String fullpath = p_path.get_base_dir().plus_file(apk_file_name);
|
||||
String fullpath = p_path.get_base_dir().path_join(apk_file_name);
|
||||
return fullpath;
|
||||
}
|
||||
|
||||
|
|
@ -2671,8 +2671,8 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
|
|||
build_command = "gradlew";
|
||||
#endif
|
||||
|
||||
String build_path = ProjectSettings::get_singleton()->get_resource_path().plus_file("android/build");
|
||||
build_command = build_path.plus_file(build_command);
|
||||
String build_path = ProjectSettings::get_singleton()->get_resource_path().path_join("android/build");
|
||||
build_command = build_path.path_join(build_command);
|
||||
|
||||
String package_name = get_package_name(p_preset->get("package/unique_name"));
|
||||
String version_code = itos(p_preset->get("version/code"));
|
||||
|
|
@ -2742,7 +2742,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
|
|||
debug_user = EditorSettings::get_singleton()->get("export/android/debug_keystore_user");
|
||||
}
|
||||
if (debug_keystore.is_relative_path()) {
|
||||
debug_keystore = OS::get_singleton()->get_resource_dir().plus_file(debug_keystore).simplify_path();
|
||||
debug_keystore = OS::get_singleton()->get_resource_dir().path_join(debug_keystore).simplify_path();
|
||||
}
|
||||
if (!FileAccess::exists(debug_keystore)) {
|
||||
add_message(EXPORT_MESSAGE_ERROR, TTR("Code Signing"), TTR("Could not find keystore, unable to export."));
|
||||
|
|
@ -2758,7 +2758,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
|
|||
String release_username = p_preset->get("keystore/release_user");
|
||||
String release_password = p_preset->get("keystore/release_password");
|
||||
if (release_keystore.is_relative_path()) {
|
||||
release_keystore = OS::get_singleton()->get_resource_dir().plus_file(release_keystore).simplify_path();
|
||||
release_keystore = OS::get_singleton()->get_resource_dir().path_join(release_keystore).simplify_path();
|
||||
}
|
||||
if (!FileAccess::exists(release_keystore)) {
|
||||
add_message(EXPORT_MESSAGE_ERROR, TTR("Code Signing"), TTR("Could not find keystore, unable to export."));
|
||||
|
|
@ -2793,7 +2793,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
|
|||
String export_filename = p_path.get_file();
|
||||
String export_path = p_path.get_base_dir();
|
||||
if (export_path.is_relative_path()) {
|
||||
export_path = OS::get_singleton()->get_resource_dir().plus_file(export_path);
|
||||
export_path = OS::get_singleton()->get_resource_dir().path_join(export_path);
|
||||
}
|
||||
export_path = ProjectSettings::get_singleton()->globalize_path(export_path).simplify_path();
|
||||
|
||||
|
|
@ -2852,7 +2852,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
|
|||
Ref<FileAccess> io2_fa;
|
||||
zlib_filefunc_def io2 = zipio_create_io(&io2_fa);
|
||||
|
||||
String tmp_unaligned_path = EditorPaths::get_singleton()->get_cache_dir().plus_file("tmpexport-unaligned." + uitos(OS::get_singleton()->get_unix_time()) + ".apk");
|
||||
String tmp_unaligned_path = EditorPaths::get_singleton()->get_cache_dir().path_join("tmpexport-unaligned." + uitos(OS::get_singleton()->get_unix_time()) + ".apk");
|
||||
|
||||
#define CLEANUP_AND_RETURN(m_err) \
|
||||
{ \
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ String PluginConfigAndroid::resolve_local_dependency_path(String plugin_config_d
|
|||
if (dependency_path.is_absolute_path()) {
|
||||
absolute_path = ProjectSettings::get_singleton()->globalize_path(dependency_path);
|
||||
} else {
|
||||
absolute_path = plugin_config_dir.plus_file(dependency_path);
|
||||
absolute_path = plugin_config_dir.path_join(dependency_path);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -362,7 +362,7 @@ void OS_Android::vibrate_handheld(int p_duration_ms) {
|
|||
}
|
||||
|
||||
String OS_Android::get_config_path() const {
|
||||
return get_user_data_dir().plus_file("config");
|
||||
return get_user_data_dir().path_join("config");
|
||||
}
|
||||
|
||||
bool OS_Android::_check_internal_feature_support(const String &p_feature) {
|
||||
|
|
|
|||
|
|
@ -649,7 +649,7 @@ Error EditorExportPlatformIOS::_export_loading_screen_file(const Ref<EditorExpor
|
|||
|
||||
if (custom_launch_image_2x.length() > 0 && custom_launch_image_3x.length() > 0) {
|
||||
Ref<Image> image;
|
||||
String image_path = p_dest_dir.plus_file("splash@2x.png");
|
||||
String image_path = p_dest_dir.path_join("splash@2x.png");
|
||||
image.instantiate();
|
||||
Error err = image->load(custom_launch_image_2x);
|
||||
|
||||
|
|
@ -663,7 +663,7 @@ Error EditorExportPlatformIOS::_export_loading_screen_file(const Ref<EditorExpor
|
|||
}
|
||||
|
||||
image.unref();
|
||||
image_path = p_dest_dir.plus_file("splash@3x.png");
|
||||
image_path = p_dest_dir.path_join("splash@3x.png");
|
||||
image.instantiate();
|
||||
err = image->load(custom_launch_image_3x);
|
||||
|
||||
|
|
@ -696,8 +696,8 @@ Error EditorExportPlatformIOS::_export_loading_screen_file(const Ref<EditorExpor
|
|||
// because Godot's own boot logo uses single image for all resolutions.
|
||||
// Also not using @1x image, because devices using this image variant
|
||||
// are not supported by iOS 9, which is minimal target.
|
||||
const String splash_png_path_2x = p_dest_dir.plus_file("splash@2x.png");
|
||||
const String splash_png_path_3x = p_dest_dir.plus_file("splash@3x.png");
|
||||
const String splash_png_path_2x = p_dest_dir.path_join("splash@2x.png");
|
||||
const String splash_png_path_3x = p_dest_dir.path_join("splash@3x.png");
|
||||
|
||||
if (splash->save_png(splash_png_path_2x) != OK) {
|
||||
return ERR_FILE_CANT_WRITE;
|
||||
|
|
@ -812,7 +812,7 @@ Error EditorExportPlatformIOS::_walk_dir_recursive(Ref<DirAccess> &p_da, FileHan
|
|||
dirs.push_back(path);
|
||||
}
|
||||
} else {
|
||||
Error err = p_handler(current_dir.plus_file(path), p_userdata);
|
||||
Error err = p_handler(current_dir.path_join(path), p_userdata);
|
||||
if (err) {
|
||||
p_da->list_dir_end();
|
||||
return err;
|
||||
|
|
@ -1028,7 +1028,7 @@ Error EditorExportPlatformIOS::_copy_asset(const String &p_out_dir, const String
|
|||
if (p_is_framework && p_asset.ends_with(".dylib")) {
|
||||
// For iOS we need to turn .dylib into .framework
|
||||
// to be able to send application to AppStore
|
||||
asset_path = String("dylibs").plus_file(base_dir);
|
||||
asset_path = String("dylibs").path_join(base_dir);
|
||||
|
||||
String file_name;
|
||||
|
||||
|
|
@ -1040,12 +1040,12 @@ Error EditorExportPlatformIOS::_copy_asset(const String &p_out_dir, const String
|
|||
|
||||
String framework_name = file_name + ".framework";
|
||||
|
||||
asset_path = asset_path.plus_file(framework_name);
|
||||
destination_dir = p_out_dir.plus_file(asset_path);
|
||||
destination = destination_dir.plus_file(file_name);
|
||||
asset_path = asset_path.path_join(framework_name);
|
||||
destination_dir = p_out_dir.path_join(asset_path);
|
||||
destination = destination_dir.path_join(file_name);
|
||||
create_framework = true;
|
||||
} else if (p_is_framework && (p_asset.ends_with(".framework") || p_asset.ends_with(".xcframework"))) {
|
||||
asset_path = String("dylibs").plus_file(base_dir);
|
||||
asset_path = String("dylibs").path_join(base_dir);
|
||||
|
||||
String file_name;
|
||||
|
||||
|
|
@ -1055,8 +1055,8 @@ Error EditorExportPlatformIOS::_copy_asset(const String &p_out_dir, const String
|
|||
file_name = *p_custom_file_name;
|
||||
}
|
||||
|
||||
asset_path = asset_path.plus_file(file_name);
|
||||
destination_dir = p_out_dir.plus_file(asset_path);
|
||||
asset_path = asset_path.path_join(file_name);
|
||||
destination_dir = p_out_dir.path_join(asset_path);
|
||||
destination = destination_dir;
|
||||
} else {
|
||||
asset_path = base_dir;
|
||||
|
|
@ -1069,9 +1069,9 @@ Error EditorExportPlatformIOS::_copy_asset(const String &p_out_dir, const String
|
|||
file_name = *p_custom_file_name;
|
||||
}
|
||||
|
||||
destination_dir = p_out_dir.plus_file(asset_path);
|
||||
asset_path = asset_path.plus_file(file_name);
|
||||
destination = p_out_dir.plus_file(asset_path);
|
||||
destination_dir = p_out_dir.path_join(asset_path);
|
||||
asset_path = asset_path.path_join(file_name);
|
||||
destination = p_out_dir.path_join(asset_path);
|
||||
}
|
||||
|
||||
Ref<DirAccess> filesystem_da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
|
|
@ -1088,7 +1088,7 @@ Error EditorExportPlatformIOS::_copy_asset(const String &p_out_dir, const String
|
|||
if (err) {
|
||||
return err;
|
||||
}
|
||||
IOSExportAsset exported_asset = { binary_name.plus_file(asset_path), p_is_framework, p_should_embed };
|
||||
IOSExportAsset exported_asset = { binary_name.path_join(asset_path), p_is_framework, p_should_embed };
|
||||
r_exported_assets.push_back(exported_asset);
|
||||
|
||||
if (create_framework) {
|
||||
|
|
@ -1106,7 +1106,7 @@ Error EditorExportPlatformIOS::_copy_asset(const String &p_out_dir, const String
|
|||
{
|
||||
List<String> install_name_args;
|
||||
install_name_args.push_back("-id");
|
||||
install_name_args.push_back(String("@rpath").plus_file(framework_name).plus_file(file_name));
|
||||
install_name_args.push_back(String("@rpath").path_join(framework_name).path_join(file_name));
|
||||
install_name_args.push_back(destination);
|
||||
|
||||
OS::get_singleton()->execute("install_name_tool", install_name_args);
|
||||
|
|
@ -1141,7 +1141,7 @@ Error EditorExportPlatformIOS::_copy_asset(const String &p_out_dir, const String
|
|||
|
||||
String info_plist = info_plist_format.replace("$name", file_name);
|
||||
|
||||
Ref<FileAccess> f = FileAccess::open(destination_dir.plus_file("Info.plist"), FileAccess::WRITE);
|
||||
Ref<FileAccess> f = FileAccess::open(destination_dir.path_join("Info.plist"), FileAccess::WRITE);
|
||||
if (f.is_valid()) {
|
||||
f->store_string(info_plist);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -238,9 +238,9 @@ public:
|
|||
|
||||
if (da->current_is_dir()) {
|
||||
if (p_check_directories) {
|
||||
Vector<String> directory_files = list_plugin_config_files(p_path.plus_file(file), false);
|
||||
Vector<String> directory_files = list_plugin_config_files(p_path.path_join(file), false);
|
||||
for (int i = 0; i < directory_files.size(); ++i) {
|
||||
dir_files.push_back(file.plus_file(directory_files[i]));
|
||||
dir_files.push_back(file.path_join(directory_files[i]));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -260,7 +260,7 @@ public:
|
|||
static Vector<PluginConfigIOS> get_plugins() {
|
||||
Vector<PluginConfigIOS> loaded_plugins;
|
||||
|
||||
String plugins_dir = ProjectSettings::get_singleton()->get_resource_path().plus_file("ios/plugins");
|
||||
String plugins_dir = ProjectSettings::get_singleton()->get_resource_path().path_join("ios/plugins");
|
||||
|
||||
if (DirAccess::exists(plugins_dir)) {
|
||||
Vector<String> plugins_filenames = list_plugin_config_files(plugins_dir, true);
|
||||
|
|
@ -268,7 +268,7 @@ public:
|
|||
if (!plugins_filenames.is_empty()) {
|
||||
Ref<ConfigFile> config_file = memnew(ConfigFile);
|
||||
for (int i = 0; i < plugins_filenames.size(); i++) {
|
||||
PluginConfigIOS config = PluginConfigIOS::load_plugin_config(config_file, plugins_dir.plus_file(plugins_filenames[i]));
|
||||
PluginConfigIOS config = PluginConfigIOS::load_plugin_config(config_file, plugins_dir.path_join(plugins_filenames[i]));
|
||||
if (config.valid_config) {
|
||||
loaded_plugins.push_back(config);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ String PluginConfigIOS::resolve_local_dependency_path(String plugin_config_dir,
|
|||
}
|
||||
|
||||
String res_path = ProjectSettings::get_singleton()->globalize_path("res://");
|
||||
absolute_path = plugin_config_dir.plus_file(dependency_path);
|
||||
absolute_path = plugin_config_dir.path_join(dependency_path);
|
||||
|
||||
return absolute_path.replace(res_path, "res://");
|
||||
}
|
||||
|
|
@ -64,7 +64,7 @@ String PluginConfigIOS::resolve_system_dependency_path(String dependency_path) {
|
|||
|
||||
String system_path = "/System/Library/Frameworks";
|
||||
|
||||
return system_path.plus_file(dependency_path);
|
||||
return system_path.path_join(dependency_path);
|
||||
}
|
||||
|
||||
Vector<String> PluginConfigIOS::resolve_local_dependencies(String plugin_config_dir, Vector<String> p_paths) {
|
||||
|
|
@ -121,8 +121,8 @@ bool PluginConfigIOS::validate_plugin(PluginConfigIOS &plugin_config) {
|
|||
String file_path = plugin_config.binary.get_base_dir();
|
||||
String file_name = plugin_config.binary.get_basename().get_file();
|
||||
String file_extension = plugin_config.binary.get_extension();
|
||||
String release_file_name = file_path.plus_file(file_name + ".release." + file_extension);
|
||||
String debug_file_name = file_path.plus_file(file_name + ".debug." + file_extension);
|
||||
String release_file_name = file_path.path_join(file_name + ".release." + file_extension);
|
||||
String debug_file_name = file_path.path_join(file_name + ".debug." + file_extension);
|
||||
|
||||
if ((plugin_extension == "a" && FileAccess::exists(release_file_name) && FileAccess::exists(debug_file_name)) ||
|
||||
(plugin_extension == "xcframework" && DirAccess::exists(release_file_name) && DirAccess::exists(debug_file_name))) {
|
||||
|
|
@ -144,7 +144,7 @@ String PluginConfigIOS::get_plugin_main_binary(PluginConfigIOS &plugin_config, b
|
|||
String plugin_extension = plugin_config.binary.get_extension();
|
||||
String plugin_file = plugin_name_prefix + "." + (p_debug ? "debug" : "release") + "." + plugin_extension;
|
||||
|
||||
return plugin_binary_dir.plus_file(plugin_file);
|
||||
return plugin_binary_dir.path_join(plugin_file);
|
||||
}
|
||||
|
||||
uint64_t PluginConfigIOS::get_plugin_modification_time(const PluginConfigIOS &plugin_config, const String &config_path) {
|
||||
|
|
@ -156,8 +156,8 @@ uint64_t PluginConfigIOS::get_plugin_modification_time(const PluginConfigIOS &pl
|
|||
String file_path = plugin_config.binary.get_base_dir();
|
||||
String file_name = plugin_config.binary.get_basename().get_file();
|
||||
String plugin_extension = plugin_config.binary.get_extension();
|
||||
String release_file_name = file_path.plus_file(file_name + ".release." + plugin_extension);
|
||||
String debug_file_name = file_path.plus_file(file_name + ".debug." + plugin_extension);
|
||||
String release_file_name = file_path.path_join(file_name + ".release." + plugin_extension);
|
||||
String debug_file_name = file_path.path_join(file_name + ".debug." + plugin_extension);
|
||||
|
||||
last_updated = MAX(last_updated, FileAccess::get_modified_time(release_file_name));
|
||||
last_updated = MAX(last_updated, FileAccess::get_modified_time(debug_file_name));
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ void OS_LinuxBSD::alert(const String &p_alert, const String &p_title) {
|
|||
|
||||
for (int i = 0; i < path_elems.size(); i++) {
|
||||
for (uint64_t k = 0; k < sizeof(message_programs) / sizeof(char *); k++) {
|
||||
String tested_path = path_elems[i].plus_file(message_programs[k]);
|
||||
String tested_path = path_elems[i].path_join(message_programs[k]);
|
||||
|
||||
if (FileAccess::exists(tested_path)) {
|
||||
program = tested_path;
|
||||
|
|
@ -432,10 +432,10 @@ String OS_LinuxBSD::get_config_path() const {
|
|||
return get_environment("XDG_CONFIG_HOME");
|
||||
} else {
|
||||
WARN_PRINT_ONCE("`XDG_CONFIG_HOME` is a relative path. Ignoring its value and falling back to `$HOME/.config` or `.` per the XDG Base Directory specification.");
|
||||
return has_environment("HOME") ? get_environment("HOME").plus_file(".config") : ".";
|
||||
return has_environment("HOME") ? get_environment("HOME").path_join(".config") : ".";
|
||||
}
|
||||
} else if (has_environment("HOME")) {
|
||||
return get_environment("HOME").plus_file(".config");
|
||||
return get_environment("HOME").path_join(".config");
|
||||
} else {
|
||||
return ".";
|
||||
}
|
||||
|
|
@ -447,10 +447,10 @@ String OS_LinuxBSD::get_data_path() const {
|
|||
return get_environment("XDG_DATA_HOME");
|
||||
} else {
|
||||
WARN_PRINT_ONCE("`XDG_DATA_HOME` is a relative path. Ignoring its value and falling back to `$HOME/.local/share` or `get_config_path()` per the XDG Base Directory specification.");
|
||||
return has_environment("HOME") ? get_environment("HOME").plus_file(".local/share") : get_config_path();
|
||||
return has_environment("HOME") ? get_environment("HOME").path_join(".local/share") : get_config_path();
|
||||
}
|
||||
} else if (has_environment("HOME")) {
|
||||
return get_environment("HOME").plus_file(".local/share");
|
||||
return get_environment("HOME").path_join(".local/share");
|
||||
} else {
|
||||
return get_config_path();
|
||||
}
|
||||
|
|
@ -462,10 +462,10 @@ String OS_LinuxBSD::get_cache_path() const {
|
|||
return get_environment("XDG_CACHE_HOME");
|
||||
} else {
|
||||
WARN_PRINT_ONCE("`XDG_CACHE_HOME` is a relative path. Ignoring its value and falling back to `$HOME/.cache` or `get_config_path()` per the XDG Base Directory specification.");
|
||||
return has_environment("HOME") ? get_environment("HOME").plus_file(".cache") : get_config_path();
|
||||
return has_environment("HOME") ? get_environment("HOME").path_join(".cache") : get_config_path();
|
||||
}
|
||||
} else if (has_environment("HOME")) {
|
||||
return get_environment("HOME").plus_file(".cache");
|
||||
return get_environment("HOME").path_join(".cache");
|
||||
} else {
|
||||
return get_config_path();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ String DirAccessMacOS::get_drive(int p_drive) {
|
|||
}
|
||||
|
||||
bool DirAccessMacOS::is_hidden(const String &p_name) {
|
||||
String f = get_current_dir().plus_file(p_name);
|
||||
String f = get_current_dir().path_join(p_name);
|
||||
NSURL *url = [NSURL fileURLWithPath:@(f.utf8().get_data())];
|
||||
NSNumber *hidden = nil;
|
||||
if (![url getResourceValue:&hidden forKey:NSURLIsHiddenKey error:nil]) {
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ bool CodeSignCodeResources::add_file1(const String &p_root, const String &p_path
|
|||
f.name = p_path;
|
||||
f.optional = (found == CRMatch::CR_MATCH_OPTIONAL);
|
||||
f.nested = false;
|
||||
f.hash = hash_sha1_base64(p_root.plus_file(p_path));
|
||||
f.hash = hash_sha1_base64(p_root.path_join(p_path));
|
||||
print_verbose(vformat("CodeSign/CodeResources: File(V1) %s hash1:%s", f.name, f.hash));
|
||||
|
||||
files1.push_back(f);
|
||||
|
|
@ -182,7 +182,7 @@ bool CodeSignCodeResources::add_file1(const String &p_root, const String &p_path
|
|||
bool CodeSignCodeResources::add_file2(const String &p_root, const String &p_path) {
|
||||
CRMatch found = match_rules2(p_path);
|
||||
if (found == CRMatch::CR_MATCH_NESTED) {
|
||||
return add_nested_file(p_root, p_path, p_root.plus_file(p_path));
|
||||
return add_nested_file(p_root, p_path, p_root.path_join(p_path));
|
||||
}
|
||||
if (found != CRMatch::CR_MATCH_YES && found != CRMatch::CR_MATCH_OPTIONAL) {
|
||||
return true; // No match.
|
||||
|
|
@ -192,8 +192,8 @@ bool CodeSignCodeResources::add_file2(const String &p_root, const String &p_path
|
|||
f.name = p_path;
|
||||
f.optional = (found == CRMatch::CR_MATCH_OPTIONAL);
|
||||
f.nested = false;
|
||||
f.hash = hash_sha1_base64(p_root.plus_file(p_path));
|
||||
f.hash2 = hash_sha256_base64(p_root.plus_file(p_path));
|
||||
f.hash = hash_sha1_base64(p_root.path_join(p_path));
|
||||
f.hash2 = hash_sha256_base64(p_root.path_join(p_path));
|
||||
|
||||
print_verbose(vformat("CodeSign/CodeResources: File(V2) %s hash1:%s hash2:%s", f.name, f.hash, f.hash2));
|
||||
|
||||
|
|
@ -214,17 +214,17 @@ bool CodeSignCodeResources::add_nested_file(const String &p_root, const String &
|
|||
|
||||
Vector<String> files_to_add;
|
||||
if (LipO::is_lipo(p_exepath)) {
|
||||
String tmp_path_name = EditorPaths::get_singleton()->get_cache_dir().plus_file("_lipo");
|
||||
String tmp_path_name = EditorPaths::get_singleton()->get_cache_dir().path_join("_lipo");
|
||||
Error err = da->make_dir_recursive(tmp_path_name);
|
||||
ERR_FAIL_COND_V_MSG(err != OK, false, vformat("CodeSign/CodeResources: Failed to create \"%s\" subfolder.", tmp_path_name));
|
||||
LipO lip;
|
||||
if (lip.open_file(p_exepath)) {
|
||||
for (int i = 0; i < lip.get_arch_count(); i++) {
|
||||
if (!lip.extract_arch(i, tmp_path_name.plus_file("_rqexe_" + itos(i)))) {
|
||||
if (!lip.extract_arch(i, tmp_path_name.path_join("_rqexe_" + itos(i)))) {
|
||||
CLEANUP();
|
||||
ERR_FAIL_V_MSG(false, "CodeSign/CodeResources: Failed to extract thin binary.");
|
||||
}
|
||||
files_to_add.push_back(tmp_path_name.plus_file("_rqexe_" + itos(i)));
|
||||
files_to_add.push_back(tmp_path_name.path_join("_rqexe_" + itos(i)));
|
||||
}
|
||||
}
|
||||
} else if (MachO::is_macho(p_exepath)) {
|
||||
|
|
@ -285,7 +285,7 @@ bool CodeSignCodeResources::add_nested_file(const String &p_root, const String &
|
|||
bool CodeSignCodeResources::add_folder_recursive(const String &p_root, const String &p_path, const String &p_main_exe_path) {
|
||||
Ref<DirAccess> da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
ERR_FAIL_COND_V(da.is_null(), false);
|
||||
Error err = da->change_dir(p_root.plus_file(p_path));
|
||||
Error err = da->change_dir(p_root.path_join(p_path));
|
||||
ERR_FAIL_COND_V(err != OK, false);
|
||||
|
||||
bool ret = true;
|
||||
|
|
@ -293,27 +293,27 @@ bool CodeSignCodeResources::add_folder_recursive(const String &p_root, const Str
|
|||
String n = da->get_next();
|
||||
while (n != String()) {
|
||||
if (n != "." && n != "..") {
|
||||
String path = p_root.plus_file(p_path).plus_file(n);
|
||||
String path = p_root.path_join(p_path).path_join(n);
|
||||
if (path == p_main_exe_path) {
|
||||
n = da->get_next();
|
||||
continue; // Skip main executable.
|
||||
}
|
||||
if (da->current_is_dir()) {
|
||||
CRMatch found = match_rules2(p_path.plus_file(n));
|
||||
CRMatch found = match_rules2(p_path.path_join(n));
|
||||
String fmw_ver = "Current"; // Framework version (default).
|
||||
String info_path;
|
||||
String main_exe;
|
||||
bool bundle = false;
|
||||
if (da->file_exists(path.plus_file("Contents/Info.plist"))) {
|
||||
info_path = path.plus_file("Contents/Info.plist");
|
||||
main_exe = path.plus_file("Contents/MacOS");
|
||||
if (da->file_exists(path.path_join("Contents/Info.plist"))) {
|
||||
info_path = path.path_join("Contents/Info.plist");
|
||||
main_exe = path.path_join("Contents/MacOS");
|
||||
bundle = true;
|
||||
} else if (da->file_exists(path.plus_file(vformat("Versions/%s/Resources/Info.plist", fmw_ver)))) {
|
||||
info_path = path.plus_file(vformat("Versions/%s/Resources/Info.plist", fmw_ver));
|
||||
main_exe = path.plus_file(vformat("Versions/%s", fmw_ver));
|
||||
} else if (da->file_exists(path.path_join(vformat("Versions/%s/Resources/Info.plist", fmw_ver)))) {
|
||||
info_path = path.path_join(vformat("Versions/%s/Resources/Info.plist", fmw_ver));
|
||||
main_exe = path.path_join(vformat("Versions/%s", fmw_ver));
|
||||
bundle = true;
|
||||
} else if (da->file_exists(path.plus_file("Info.plist"))) {
|
||||
info_path = path.plus_file("Info.plist");
|
||||
} else if (da->file_exists(path.path_join("Info.plist"))) {
|
||||
info_path = path.path_join("Info.plist");
|
||||
main_exe = path;
|
||||
bundle = true;
|
||||
}
|
||||
|
|
@ -322,20 +322,20 @@ bool CodeSignCodeResources::add_folder_recursive(const String &p_root, const Str
|
|||
PList info_plist;
|
||||
if (info_plist.load_file(info_path)) {
|
||||
if (info_plist.get_root()->data_type == PList::PLNodeType::PL_NODE_TYPE_DICT && info_plist.get_root()->data_dict.has("CFBundleExecutable")) {
|
||||
main_exe = main_exe.plus_file(String::utf8(info_plist.get_root()->data_dict["CFBundleExecutable"]->data_string.get_data()));
|
||||
main_exe = main_exe.path_join(String::utf8(info_plist.get_root()->data_dict["CFBundleExecutable"]->data_string.get_data()));
|
||||
} else {
|
||||
ERR_FAIL_V_MSG(false, "CodeSign/CodeResources: Invalid Info.plist, no exe name.");
|
||||
}
|
||||
} else {
|
||||
ERR_FAIL_V_MSG(false, "CodeSign/CodeResources: Invalid Info.plist, can't load.");
|
||||
}
|
||||
ret = ret && add_nested_file(p_root, p_path.plus_file(n), main_exe);
|
||||
ret = ret && add_nested_file(p_root, p_path.path_join(n), main_exe);
|
||||
} else {
|
||||
ret = ret && add_folder_recursive(p_root, p_path.plus_file(n), p_main_exe_path);
|
||||
ret = ret && add_folder_recursive(p_root, p_path.path_join(n), p_main_exe_path);
|
||||
}
|
||||
} else {
|
||||
ret = ret && add_file1(p_root, p_path.plus_file(n));
|
||||
ret = ret && add_file2(p_root, p_path.plus_file(n));
|
||||
ret = ret && add_file1(p_root, p_path.path_join(n));
|
||||
ret = ret && add_file2(p_root, p_path.path_join(n));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1222,7 +1222,7 @@ Error CodeSign::_codesign_file(bool p_use_hardened_runtime, bool p_force, const
|
|||
}
|
||||
|
||||
if (info_plist.get_root()->data_type == PList::PLNodeType::PL_NODE_TYPE_DICT && info_plist.get_root()->data_dict.has("CFBundleExecutable")) {
|
||||
main_exe = p_exe_path.plus_file(String::utf8(info_plist.get_root()->data_dict["CFBundleExecutable"]->data_string.get_data()));
|
||||
main_exe = p_exe_path.path_join(String::utf8(info_plist.get_root()->data_dict["CFBundleExecutable"]->data_string.get_data()));
|
||||
} else {
|
||||
r_error_msg = TTR("Invalid Info.plist, no exe name.");
|
||||
ERR_FAIL_V_MSG(FAILED, "CodeSign: Invalid Info.plist, no exe name.");
|
||||
|
|
@ -1244,7 +1244,7 @@ Error CodeSign::_codesign_file(bool p_use_hardened_runtime, bool p_force, const
|
|||
Vector<String> files_to_sign;
|
||||
if (LipO::is_lipo(main_exe)) {
|
||||
print_verbose(vformat("CodeSign: Executable is fat, extracting..."));
|
||||
String tmp_path_name = EditorPaths::get_singleton()->get_cache_dir().plus_file("_lipo");
|
||||
String tmp_path_name = EditorPaths::get_singleton()->get_cache_dir().path_join("_lipo");
|
||||
Error err = da->make_dir_recursive(tmp_path_name);
|
||||
if (err != OK) {
|
||||
r_error_msg = vformat(TTR("Failed to create \"%s\" subfolder."), tmp_path_name);
|
||||
|
|
@ -1253,12 +1253,12 @@ Error CodeSign::_codesign_file(bool p_use_hardened_runtime, bool p_force, const
|
|||
LipO lip;
|
||||
if (lip.open_file(main_exe)) {
|
||||
for (int i = 0; i < lip.get_arch_count(); i++) {
|
||||
if (!lip.extract_arch(i, tmp_path_name.plus_file("_exe_" + itos(i)))) {
|
||||
if (!lip.extract_arch(i, tmp_path_name.path_join("_exe_" + itos(i)))) {
|
||||
CLEANUP();
|
||||
r_error_msg = TTR("Failed to extract thin binary.");
|
||||
ERR_FAIL_V_MSG(FAILED, "CodeSign: Failed to extract thin binary.");
|
||||
}
|
||||
files_to_sign.push_back(tmp_path_name.plus_file("_exe_" + itos(i)));
|
||||
files_to_sign.push_back(tmp_path_name.path_join("_exe_" + itos(i)));
|
||||
}
|
||||
}
|
||||
} else if (MachO::is_macho(main_exe)) {
|
||||
|
|
@ -1338,15 +1338,15 @@ Error CodeSign::_codesign_file(bool p_use_hardened_runtime, bool p_force, const
|
|||
r_error_msg = TTR("Failed to process nested resources.");
|
||||
ERR_FAIL_V_MSG(FAILED, "CodeSign: Failed to process nested resources.");
|
||||
}
|
||||
Error err = da->make_dir_recursive(p_bundle_path.plus_file("_CodeSignature"));
|
||||
Error err = da->make_dir_recursive(p_bundle_path.path_join("_CodeSignature"));
|
||||
if (err != OK) {
|
||||
CLEANUP();
|
||||
r_error_msg = TTR("Failed to create _CodeSignature subfolder.");
|
||||
ERR_FAIL_V_MSG(FAILED, "CodeSign: Failed to create _CodeSignature subfolder.");
|
||||
}
|
||||
cr.save_to_file(p_bundle_path.plus_file("_CodeSignature").plus_file("CodeResources"));
|
||||
res_hash1 = file_hash_sha1(p_bundle_path.plus_file("_CodeSignature").plus_file("CodeResources"));
|
||||
res_hash2 = file_hash_sha256(p_bundle_path.plus_file("_CodeSignature").plus_file("CodeResources"));
|
||||
cr.save_to_file(p_bundle_path.path_join("_CodeSignature").path_join("CodeResources"));
|
||||
res_hash1 = file_hash_sha1(p_bundle_path.path_join("_CodeSignature").path_join("CodeResources"));
|
||||
res_hash2 = file_hash_sha256(p_bundle_path.path_join("_CodeSignature").path_join("CodeResources"));
|
||||
if (res_hash1.is_empty() || res_hash2.is_empty()) {
|
||||
CLEANUP();
|
||||
r_error_msg = TTR("Failed to get CodeResources hash.");
|
||||
|
|
@ -1530,18 +1530,18 @@ Error CodeSign::codesign(bool p_use_hardened_runtime, bool p_force, const String
|
|||
String bundle_path;
|
||||
bool bundle = false;
|
||||
bool ios_bundle = false;
|
||||
if (da->file_exists(p_path.plus_file("Contents/Info.plist"))) {
|
||||
info_path = p_path.plus_file("Contents/Info.plist");
|
||||
main_exe = p_path.plus_file("Contents/MacOS");
|
||||
bundle_path = p_path.plus_file("Contents");
|
||||
if (da->file_exists(p_path.path_join("Contents/Info.plist"))) {
|
||||
info_path = p_path.path_join("Contents/Info.plist");
|
||||
main_exe = p_path.path_join("Contents/MacOS");
|
||||
bundle_path = p_path.path_join("Contents");
|
||||
bundle = true;
|
||||
} else if (da->file_exists(p_path.plus_file(vformat("Versions/%s/Resources/Info.plist", fmw_ver)))) {
|
||||
info_path = p_path.plus_file(vformat("Versions/%s/Resources/Info.plist", fmw_ver));
|
||||
main_exe = p_path.plus_file(vformat("Versions/%s", fmw_ver));
|
||||
bundle_path = p_path.plus_file(vformat("Versions/%s", fmw_ver));
|
||||
} else if (da->file_exists(p_path.path_join(vformat("Versions/%s/Resources/Info.plist", fmw_ver)))) {
|
||||
info_path = p_path.path_join(vformat("Versions/%s/Resources/Info.plist", fmw_ver));
|
||||
main_exe = p_path.path_join(vformat("Versions/%s", fmw_ver));
|
||||
bundle_path = p_path.path_join(vformat("Versions/%s", fmw_ver));
|
||||
bundle = true;
|
||||
} else if (da->file_exists(p_path.plus_file("Info.plist"))) {
|
||||
info_path = p_path.plus_file("Info.plist");
|
||||
} else if (da->file_exists(p_path.path_join("Info.plist"))) {
|
||||
info_path = p_path.path_join("Info.plist");
|
||||
main_exe = p_path;
|
||||
bundle_path = p_path;
|
||||
bundle = true;
|
||||
|
|
|
|||
|
|
@ -305,7 +305,7 @@ void EditorExportPlatformMacOS::_make_icon(const Ref<Image> &p_icon, Vector<uint
|
|||
if (icon_infos[i].is_png) {
|
||||
// Encode PNG icon.
|
||||
it->set_image(copy);
|
||||
String path = EditorPaths::get_singleton()->get_cache_dir().plus_file("icon.png");
|
||||
String path = EditorPaths::get_singleton()->get_cache_dir().path_join("icon.png");
|
||||
ResourceSaver::save(it, path);
|
||||
|
||||
{
|
||||
|
|
@ -766,7 +766,7 @@ Error EditorExportPlatformMacOS::_code_sign_directory(const Ref<EditorExportPres
|
|||
dir_access->list_dir_begin();
|
||||
String current_file{ dir_access->get_next() };
|
||||
while (!current_file.is_empty()) {
|
||||
String current_file_path{ p_path.plus_file(current_file) };
|
||||
String current_file_path{ p_path.path_join(current_file) };
|
||||
|
||||
if (current_file == ".." || current_file == ".") {
|
||||
current_file = dir_access->get_next();
|
||||
|
|
@ -980,9 +980,9 @@ Error EditorExportPlatformMacOS::export_project(const Ref<EditorExportPreset> &p
|
|||
tmp_app_path_name = p_path;
|
||||
scr_path = p_path.get_basename() + ".command";
|
||||
} else {
|
||||
tmp_base_path_name = EditorPaths::get_singleton()->get_cache_dir().plus_file(pkg_name);
|
||||
tmp_app_path_name = tmp_base_path_name.plus_file(tmp_app_dir_name);
|
||||
scr_path = tmp_base_path_name.plus_file(pkg_name + ".command");
|
||||
tmp_base_path_name = EditorPaths::get_singleton()->get_cache_dir().path_join(pkg_name);
|
||||
tmp_app_path_name = tmp_base_path_name.path_join(tmp_app_dir_name);
|
||||
scr_path = tmp_base_path_name.path_join(pkg_name + ".command");
|
||||
}
|
||||
|
||||
print_verbose("Exporting to " + tmp_app_path_name);
|
||||
|
|
@ -1189,7 +1189,7 @@ Error EditorExportPlatformMacOS::export_project(const Ref<EditorExportPreset> &p
|
|||
add_message(EXPORT_MESSAGE_INFO, TTR("Export"), TTR("Relative symlinks are not supported on this OS, the exported project might be broken!"));
|
||||
#endif
|
||||
// Handle symlinks in the archive.
|
||||
file = tmp_app_path_name.plus_file(file);
|
||||
file = tmp_app_path_name.path_join(file);
|
||||
if (err == OK) {
|
||||
err = tmp_app_dir->make_dir_recursive(file.get_base_dir());
|
||||
if (err != OK) {
|
||||
|
|
@ -1273,7 +1273,7 @@ Error EditorExportPlatformMacOS::export_project(const Ref<EditorExportPreset> &p
|
|||
print_verbose("ADDING: " + file + " size: " + itos(data.size()));
|
||||
|
||||
// Write it into our application bundle.
|
||||
file = tmp_app_path_name.plus_file(file);
|
||||
file = tmp_app_path_name.path_join(file);
|
||||
if (err == OK) {
|
||||
err = tmp_app_dir->make_dir_recursive(file.get_base_dir());
|
||||
if (err != OK) {
|
||||
|
|
@ -1332,9 +1332,9 @@ Error EditorExportPlatformMacOS::export_project(const Ref<EditorExportPreset> &p
|
|||
bool sign_enabled = (p_preset->get("codesign/codesign").operator int() > 0);
|
||||
|
||||
String ent_path = p_preset->get("codesign/entitlements/custom_file");
|
||||
String hlp_ent_path = EditorPaths::get_singleton()->get_cache_dir().plus_file(pkg_name + "_helper.entitlements");
|
||||
String hlp_ent_path = EditorPaths::get_singleton()->get_cache_dir().path_join(pkg_name + "_helper.entitlements");
|
||||
if (sign_enabled && (ent_path.is_empty())) {
|
||||
ent_path = EditorPaths::get_singleton()->get_cache_dir().plus_file(pkg_name + ".entitlements");
|
||||
ent_path = EditorPaths::get_singleton()->get_cache_dir().path_join(pkg_name + ".entitlements");
|
||||
|
||||
Ref<FileAccess> ent_f = FileAccess::open(ent_path, FileAccess::WRITE);
|
||||
if (ent_f.is_valid()) {
|
||||
|
|
@ -1529,7 +1529,7 @@ Error EditorExportPlatformMacOS::export_project(const Ref<EditorExportPreset> &p
|
|||
String path_in_app = tmp_app_path_name + "/Contents/Frameworks/" + src_path.get_file();
|
||||
err = _copy_and_sign_files(da, src_path, path_in_app, sign_enabled, p_preset, ent_path, true);
|
||||
} else {
|
||||
String path_in_app = tmp_app_path_name.plus_file(shared_objects[i].target).plus_file(src_path.get_file());
|
||||
String path_in_app = tmp_app_path_name.path_join(shared_objects[i].target).path_join(src_path.get_file());
|
||||
err = _copy_and_sign_files(da, src_path, path_in_app, sign_enabled, p_preset, ent_path, false);
|
||||
}
|
||||
if (err != OK) {
|
||||
|
|
@ -1630,7 +1630,7 @@ Error EditorExportPlatformMacOS::export_project(const Ref<EditorExportPreset> &p
|
|||
}
|
||||
|
||||
void EditorExportPlatformMacOS::_zip_folder_recursive(zipFile &p_zip, const String &p_root_path, const String &p_folder, const String &p_pkg_name) {
|
||||
String dir = p_folder.is_empty() ? p_root_path : p_root_path.plus_file(p_folder);
|
||||
String dir = p_folder.is_empty() ? p_root_path : p_root_path.path_join(p_folder);
|
||||
|
||||
Ref<DirAccess> da = DirAccess::open(dir);
|
||||
da->list_dir_begin();
|
||||
|
|
@ -1660,7 +1660,7 @@ void EditorExportPlatformMacOS::_zip_folder_recursive(zipFile &p_zip, const Stri
|
|||
zipfi.internal_fa = 0;
|
||||
|
||||
zipOpenNewFileInZip4(p_zip,
|
||||
p_folder.plus_file(f).utf8().get_data(),
|
||||
p_folder.path_join(f).utf8().get_data(),
|
||||
&zipfi,
|
||||
nullptr,
|
||||
0,
|
||||
|
|
@ -1682,7 +1682,7 @@ void EditorExportPlatformMacOS::_zip_folder_recursive(zipFile &p_zip, const Stri
|
|||
zipWriteInFileInZip(p_zip, target.utf8().get_data(), target.utf8().size());
|
||||
zipCloseFileInZip(p_zip);
|
||||
} else if (da->current_is_dir()) {
|
||||
_zip_folder_recursive(p_zip, p_root_path, p_folder.plus_file(f), p_pkg_name);
|
||||
_zip_folder_recursive(p_zip, p_root_path, p_folder.path_join(f), p_pkg_name);
|
||||
} else {
|
||||
bool is_executable = (p_folder.ends_with("MacOS") && (f == p_pkg_name)) || p_folder.ends_with("Helpers") || f.ends_with(".command");
|
||||
|
||||
|
|
@ -1705,7 +1705,7 @@ void EditorExportPlatformMacOS::_zip_folder_recursive(zipFile &p_zip, const Stri
|
|||
zipfi.internal_fa = 0;
|
||||
|
||||
zipOpenNewFileInZip4(p_zip,
|
||||
p_folder.plus_file(f).utf8().get_data(),
|
||||
p_folder.path_join(f).utf8().get_data(),
|
||||
&zipfi,
|
||||
nullptr,
|
||||
0,
|
||||
|
|
@ -1723,9 +1723,9 @@ void EditorExportPlatformMacOS::_zip_folder_recursive(zipFile &p_zip, const Stri
|
|||
0x0314, // "version made by", 0x03 - Unix, 0x14 - ZIP specification version 2.0, required to store Unix file permissions
|
||||
0);
|
||||
|
||||
Ref<FileAccess> fa = FileAccess::open(dir.plus_file(f), FileAccess::READ);
|
||||
Ref<FileAccess> fa = FileAccess::open(dir.path_join(f), FileAccess::READ);
|
||||
if (fa.is_null()) {
|
||||
add_message(EXPORT_MESSAGE_ERROR, TTR("ZIP Creation"), vformat(TTR("Could not open file to read from path \"%s\"."), dir.plus_file(f)));
|
||||
add_message(EXPORT_MESSAGE_ERROR, TTR("ZIP Creation"), vformat(TTR("Could not open file to read from path \"%s\"."), dir.path_join(f)));
|
||||
return;
|
||||
}
|
||||
const int bufsize = 16384;
|
||||
|
|
|
|||
|
|
@ -48,8 +48,8 @@
|
|||
_FORCE_INLINE_ String OS_MacOS::get_framework_executable(const String &p_path) {
|
||||
// Append framework executable name, or return as is if p_path is not a framework.
|
||||
Ref<DirAccess> da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
if (da->dir_exists(p_path) && da->file_exists(p_path.plus_file(p_path.get_file().get_basename()))) {
|
||||
return p_path.plus_file(p_path.get_file().get_basename());
|
||||
if (da->dir_exists(p_path) && da->file_exists(p_path.path_join(p_path.get_file().get_basename()))) {
|
||||
return p_path.path_join(p_path.get_file().get_basename());
|
||||
} else {
|
||||
return p_path;
|
||||
}
|
||||
|
|
@ -155,12 +155,12 @@ Error OS_MacOS::open_dynamic_library(const String p_path, void *&p_library_handl
|
|||
|
||||
if (!FileAccess::exists(path)) {
|
||||
// Load .dylib or framework from within the executable path.
|
||||
path = get_framework_executable(get_executable_path().get_base_dir().plus_file(p_path.get_file()));
|
||||
path = get_framework_executable(get_executable_path().get_base_dir().path_join(p_path.get_file()));
|
||||
}
|
||||
|
||||
if (!FileAccess::exists(path)) {
|
||||
// Load .dylib or framework from a standard macOS location.
|
||||
path = get_framework_executable(get_executable_path().get_base_dir().plus_file("../Frameworks").plus_file(p_path.get_file()));
|
||||
path = get_framework_executable(get_executable_path().get_base_dir().path_join("../Frameworks").path_join(p_path.get_file()));
|
||||
}
|
||||
|
||||
p_library_handle = dlopen(path.utf8().get_data(), RTLD_NOW);
|
||||
|
|
@ -187,7 +187,7 @@ String OS_MacOS::get_config_path() const {
|
|||
}
|
||||
}
|
||||
if (has_environment("HOME")) {
|
||||
return get_environment("HOME").plus_file("Library/Application Support");
|
||||
return get_environment("HOME").path_join("Library/Application Support");
|
||||
}
|
||||
return ".";
|
||||
}
|
||||
|
|
@ -214,7 +214,7 @@ String OS_MacOS::get_cache_path() const {
|
|||
}
|
||||
}
|
||||
if (has_environment("HOME")) {
|
||||
return get_environment("HOME").plus_file("Library/Caches");
|
||||
return get_environment("HOME").path_join("Library/Caches");
|
||||
}
|
||||
return get_config_path();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -408,7 +408,7 @@ void AppxPackager::finish() {
|
|||
// Create and add block map file
|
||||
EditorNode::progress_task_step("export", "Creating block map...", 4);
|
||||
|
||||
const String &tmp_blockmap_file_path = EditorPaths::get_singleton()->get_cache_dir().plus_file("tmpblockmap.xml");
|
||||
const String &tmp_blockmap_file_path = EditorPaths::get_singleton()->get_cache_dir().path_join("tmpblockmap.xml");
|
||||
make_block_map(tmp_blockmap_file_path);
|
||||
|
||||
{
|
||||
|
|
@ -425,7 +425,7 @@ void AppxPackager::finish() {
|
|||
|
||||
EditorNode::progress_task_step("export", "Setting content types...", 5);
|
||||
|
||||
const String &tmp_content_types_file_path = EditorPaths::get_singleton()->get_cache_dir().plus_file("tmpcontenttypes.xml");
|
||||
const String &tmp_content_types_file_path = EditorPaths::get_singleton()->get_cache_dir().path_join("tmpcontenttypes.xml");
|
||||
make_content_types(tmp_content_types_file_path);
|
||||
|
||||
{
|
||||
|
|
|
|||
|
|
@ -329,7 +329,7 @@ class EditorExportPlatformUWP : public EditorExportPlatform {
|
|||
return data;
|
||||
}
|
||||
|
||||
String tmp_path = EditorPaths::get_singleton()->get_cache_dir().plus_file("uwp_tmp_logo.png");
|
||||
String tmp_path = EditorPaths::get_singleton()->get_cache_dir().path_join("uwp_tmp_logo.png");
|
||||
|
||||
Error err = texture->get_image()->save_png(tmp_path);
|
||||
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ void WebToolsEditorPlugin::_download_zip(Variant p_v) {
|
|||
const String datetime_safe =
|
||||
Time::get_singleton()->get_datetime_string_from_system(false, true).replace(" ", "_");
|
||||
const String output_name = OS::get_singleton()->get_safe_dir_name(vformat("%s_%s.zip"));
|
||||
const String output_path = String("/tmp").plus_file(output_name);
|
||||
const String output_path = String("/tmp").path_join(output_name);
|
||||
|
||||
zipFile zip = zipOpen2(output_path.utf8().get_data(), APPEND_STATUS_CREATE, nullptr, &io);
|
||||
const String base_path = resource_path.substr(0, resource_path.rfind("/")) + "/";
|
||||
|
|
@ -131,7 +131,7 @@ void WebToolsEditorPlugin::_zip_recursive(String p_path, String p_base_path, zip
|
|||
String cur = dir->get_next();
|
||||
String project_data_dir_name = ProjectSettings::get_singleton()->get_project_data_dir_name();
|
||||
while (!cur.is_empty()) {
|
||||
String cs = p_path.plus_file(cur);
|
||||
String cs = p_path.path_join(cur);
|
||||
if (cur == "." || cur == ".." || cur == project_data_dir_name) {
|
||||
// Skip
|
||||
} else if (dir->current_is_dir()) {
|
||||
|
|
|
|||
|
|
@ -62,8 +62,8 @@ private:
|
|||
|
||||
void _set_internal_certs(Ref<Crypto> p_crypto) {
|
||||
const String cache_path = EditorPaths::get_singleton()->get_cache_dir();
|
||||
const String key_path = cache_path.plus_file("html5_server.key");
|
||||
const String crt_path = cache_path.plus_file("html5_server.crt");
|
||||
const String key_path = cache_path.path_join("html5_server.key");
|
||||
const String crt_path = cache_path.path_join("html5_server.crt");
|
||||
bool regen = !FileAccess::exists(key_path) || !FileAccess::exists(crt_path);
|
||||
if (!regen) {
|
||||
key = Ref<CryptoKey>(CryptoKey::create());
|
||||
|
|
@ -139,8 +139,8 @@ public:
|
|||
|
||||
const String req_file = path.get_file();
|
||||
const String req_ext = path.get_extension();
|
||||
const String cache_path = EditorPaths::get_singleton()->get_cache_dir().plus_file("web");
|
||||
const String filepath = cache_path.plus_file(req_file);
|
||||
const String cache_path = EditorPaths::get_singleton()->get_cache_dir().path_join("web");
|
||||
const String filepath = cache_path.path_join(req_file);
|
||||
|
||||
if (!mimes.has(req_ext) || !FileAccess::exists(filepath)) {
|
||||
String s = "HTTP/1.1 404 Not Found\r\n";
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ Error EditorExportPlatformWeb::_extract_template(const String &p_template, const
|
|||
unzCloseCurrentFile(pkg);
|
||||
|
||||
//write
|
||||
String dst = p_dir.plus_file(file.replace("godot", p_name));
|
||||
String dst = p_dir.path_join(file.replace("godot", p_name));
|
||||
Ref<FileAccess> f = FileAccess::open(dst, FileAccess::WRITE);
|
||||
if (f.is_null()) {
|
||||
add_message(EXPORT_MESSAGE_ERROR, TTR("Prepare Templates"), vformat(TTR("Could not write file: \"%s\"."), dst));
|
||||
|
|
@ -162,7 +162,7 @@ void EditorExportPlatformWeb::_fix_html(Vector<uint8_t> &p_html, const Ref<Edito
|
|||
Error EditorExportPlatformWeb::_add_manifest_icon(const String &p_path, const String &p_icon, int p_size, Array &r_arr) {
|
||||
const String name = p_path.get_file().get_basename();
|
||||
const String icon_name = vformat("%s.%dx%d.png", name, p_size, p_size);
|
||||
const String icon_dest = p_path.get_base_dir().plus_file(icon_name);
|
||||
const String icon_dest = p_path.get_base_dir().path_join(icon_name);
|
||||
|
||||
Ref<Image> icon;
|
||||
if (!p_icon.is_empty()) {
|
||||
|
|
@ -234,7 +234,7 @@ Error EditorExportPlatformWeb::_build_pwa(const Ref<EditorExportPreset> &p_prese
|
|||
}
|
||||
replaces["@GODOT_OPT_CACHE@"] = Variant(opt_cache_files).to_json_string();
|
||||
|
||||
const String sw_path = dir.plus_file(name + ".service.worker.js");
|
||||
const String sw_path = dir.path_join(name + ".service.worker.js");
|
||||
Vector<uint8_t> sw;
|
||||
{
|
||||
Ref<FileAccess> f = FileAccess::open(sw_path, FileAccess::READ);
|
||||
|
|
@ -246,7 +246,7 @@ Error EditorExportPlatformWeb::_build_pwa(const Ref<EditorExportPreset> &p_prese
|
|||
f->get_buffer(sw.ptrw(), sw.size());
|
||||
}
|
||||
_replace_strings(replaces, sw);
|
||||
Error err = _write_or_error(sw.ptr(), sw.size(), dir.plus_file(name + ".service.worker.js"));
|
||||
Error err = _write_or_error(sw.ptr(), sw.size(), dir.path_join(name + ".service.worker.js"));
|
||||
if (err != OK) {
|
||||
return err;
|
||||
}
|
||||
|
|
@ -255,7 +255,7 @@ Error EditorExportPlatformWeb::_build_pwa(const Ref<EditorExportPreset> &p_prese
|
|||
const String offline_page = p_preset->get("progressive_web_app/offline_page");
|
||||
if (!offline_page.is_empty()) {
|
||||
Ref<DirAccess> da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
const String offline_dest = dir.plus_file(name + ".offline.html");
|
||||
const String offline_dest = dir.path_join(name + ".offline.html");
|
||||
err = da->copy(ProjectSettings::get_singleton()->globalize_path(offline_page), offline_dest);
|
||||
if (err != OK) {
|
||||
add_message(EXPORT_MESSAGE_ERROR, TTR("PWA"), vformat(TTR("Could not read file: \"%s\"."), offline_dest));
|
||||
|
|
@ -295,7 +295,7 @@ Error EditorExportPlatformWeb::_build_pwa(const Ref<EditorExportPreset> &p_prese
|
|||
manifest["icons"] = icons_arr;
|
||||
|
||||
CharString cs = Variant(manifest).to_json_string().utf8();
|
||||
err = _write_or_error((const uint8_t *)cs.get_data(), cs.length(), dir.plus_file(name + ".manifest.json"));
|
||||
err = _write_or_error((const uint8_t *)cs.get_data(), cs.length(), dir.path_join(name + ".manifest.json"));
|
||||
if (err != OK) {
|
||||
return err;
|
||||
}
|
||||
|
|
@ -481,7 +481,7 @@ Error EditorExportPlatformWeb::export_project(const Ref<EditorExportPreset> &p_p
|
|||
{
|
||||
Ref<DirAccess> da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
for (int i = 0; i < shared_objects.size(); i++) {
|
||||
String dst = base_dir.plus_file(shared_objects[i].path.get_file());
|
||||
String dst = base_dir.path_join(shared_objects[i].path.get_file());
|
||||
error = da->copy(shared_objects[i].path, dst);
|
||||
if (error != OK) {
|
||||
add_message(EXPORT_MESSAGE_ERROR, TTR("Export"), vformat(TTR("Could not write file: \"%s\"."), shared_objects[i].path.get_file()));
|
||||
|
|
@ -601,7 +601,7 @@ Error EditorExportPlatformWeb::run(const Ref<EditorExportPreset> &p_preset, int
|
|||
return OK;
|
||||
}
|
||||
|
||||
const String dest = EditorPaths::get_singleton()->get_cache_dir().plus_file("web");
|
||||
const String dest = EditorPaths::get_singleton()->get_cache_dir().path_join("web");
|
||||
Ref<DirAccess> da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
if (!da->dir_exists(dest)) {
|
||||
Error err = da->make_dir_recursive(dest);
|
||||
|
|
@ -611,7 +611,7 @@ Error EditorExportPlatformWeb::run(const Ref<EditorExportPreset> &p_preset, int
|
|||
}
|
||||
}
|
||||
|
||||
const String basepath = dest.plus_file("tmp_js_export");
|
||||
const String basepath = dest.path_join("tmp_js_export");
|
||||
Error err = export_project(p_preset, true, basepath + ".html", p_debug_flags);
|
||||
if (err != OK) {
|
||||
// Export generates several files, clean them up on failure.
|
||||
|
|
|
|||
|
|
@ -237,7 +237,7 @@ Error OS_Windows::open_dynamic_library(const String p_path, void *&p_library_han
|
|||
|
||||
if (!FileAccess::exists(path)) {
|
||||
//this code exists so gdnative can load .dll files from within the executable path
|
||||
path = get_executable_path().get_base_dir().plus_file(p_path.get_file());
|
||||
path = get_executable_path().get_base_dir().path_join(p_path.get_file());
|
||||
}
|
||||
|
||||
typedef DLL_DIRECTORY_COOKIE(WINAPI * PAddDllDirectory)(PCWSTR);
|
||||
|
|
@ -1071,13 +1071,13 @@ String OS_Windows::get_user_data_dir() const {
|
|||
if (custom_dir.is_empty()) {
|
||||
custom_dir = appname;
|
||||
}
|
||||
return get_data_path().plus_file(custom_dir).replace("\\", "/");
|
||||
return get_data_path().path_join(custom_dir).replace("\\", "/");
|
||||
} else {
|
||||
return get_data_path().plus_file(get_godot_dir_name()).plus_file("app_userdata").plus_file(appname).replace("\\", "/");
|
||||
return get_data_path().path_join(get_godot_dir_name()).path_join("app_userdata").path_join(appname).replace("\\", "/");
|
||||
}
|
||||
}
|
||||
|
||||
return get_data_path().plus_file(get_godot_dir_name()).plus_file("app_userdata").plus_file("[unnamed project]");
|
||||
return get_data_path().path_join(get_godot_dir_name()).path_join("app_userdata").path_join("[unnamed project]");
|
||||
}
|
||||
|
||||
String OS_Windows::get_unique_id() const {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue