Fix decoding UTF-8 filenames on unzipping.
(cherry picked from commit d2573c1636
)
This commit is contained in:
parent
8d3e16676d
commit
d2558bdc8c
|
@ -124,7 +124,7 @@ void EditorAssetInstaller::open(const String &p_path, int p_depth) {
|
||||||
char fname[16384];
|
char fname[16384];
|
||||||
unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
||||||
|
|
||||||
String name = fname;
|
String name = String::utf8(fname);
|
||||||
files_sorted.insert(name);
|
files_sorted.insert(name);
|
||||||
|
|
||||||
ret = unzGoToNextFile(pkg);
|
ret = unzGoToNextFile(pkg);
|
||||||
|
@ -304,7 +304,7 @@ void EditorAssetInstaller::ok_pressed() {
|
||||||
char fname[16384];
|
char fname[16384];
|
||||||
ret = unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
ret = unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
||||||
|
|
||||||
String name = fname;
|
String name = String::utf8(fname);
|
||||||
|
|
||||||
if (status_map.has(name) && status_map[name]->is_checked(0)) {
|
if (status_map.has(name) && status_map[name]->is_checked(0)) {
|
||||||
String path = status_map[name]->get_metadata(0);
|
String path = status_map[name]->get_metadata(0);
|
||||||
|
|
|
@ -404,7 +404,7 @@ bool ExportTemplateManager::_install_file_selected(const String &p_file, bool p_
|
||||||
char fname[16384];
|
char fname[16384];
|
||||||
ret = unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
ret = unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
||||||
|
|
||||||
String file = fname;
|
String file = String::utf8(fname);
|
||||||
if (file.ends_with("version.txt")) {
|
if (file.ends_with("version.txt")) {
|
||||||
Vector<uint8_t> data;
|
Vector<uint8_t> data;
|
||||||
data.resize(info.uncompressed_size);
|
data.resize(info.uncompressed_size);
|
||||||
|
@ -465,7 +465,7 @@ bool ExportTemplateManager::_install_file_selected(const String &p_file, bool p_
|
||||||
char fname[16384];
|
char fname[16384];
|
||||||
unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
||||||
|
|
||||||
String file_path(String(fname).simplify_path());
|
String file_path(String::utf8(fname).simplify_path());
|
||||||
|
|
||||||
String file = file_path.get_file();
|
String file = file_path.get_file();
|
||||||
|
|
||||||
|
@ -711,7 +711,7 @@ Error ExportTemplateManager::install_android_template_from_file(const String &p_
|
||||||
char fpath[16384];
|
char fpath[16384];
|
||||||
ret = unzGetCurrentFileInfo(pkg, &info, fpath, 16384, nullptr, 0, nullptr, 0);
|
ret = unzGetCurrentFileInfo(pkg, &info, fpath, 16384, nullptr, 0, nullptr, 0);
|
||||||
|
|
||||||
String path = fpath;
|
String path = String::utf8(fpath);
|
||||||
String base_dir = path.get_base_dir();
|
String base_dir = path.get_base_dir();
|
||||||
|
|
||||||
if (!path.ends_with("/")) {
|
if (!path.ends_with("/")) {
|
||||||
|
|
|
@ -204,7 +204,7 @@ private:
|
||||||
char fname[16384];
|
char fname[16384];
|
||||||
ret = unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
ret = unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
||||||
|
|
||||||
if (String(fname).ends_with("project.godot")) {
|
if (String::utf8(fname).ends_with("project.godot")) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -514,7 +514,7 @@ private:
|
||||||
char fname[16384];
|
char fname[16384];
|
||||||
unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
||||||
|
|
||||||
String name = fname;
|
String name = String::utf8(fname);
|
||||||
if (name.ends_with("project.godot")) {
|
if (name.ends_with("project.godot")) {
|
||||||
zip_root = name.substr(0, name.rfind("project.godot"));
|
zip_root = name.substr(0, name.rfind("project.godot"));
|
||||||
break;
|
break;
|
||||||
|
@ -534,7 +534,7 @@ private:
|
||||||
char fname[16384];
|
char fname[16384];
|
||||||
ret = unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
ret = unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
||||||
|
|
||||||
String path = fname;
|
String path = String::utf8(fname);
|
||||||
|
|
||||||
if (path == String() || path == zip_root || !zip_root.is_subsequence_of(path)) {
|
if (path == String() || path == zip_root || !zip_root.is_subsequence_of(path)) {
|
||||||
//
|
//
|
||||||
|
|
|
@ -3114,7 +3114,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
|
||||||
|
|
||||||
bool skip = false;
|
bool skip = false;
|
||||||
|
|
||||||
String file = fname;
|
String file = String::utf8(fname);
|
||||||
|
|
||||||
Vector<uint8_t> data;
|
Vector<uint8_t> data;
|
||||||
data.resize(info.uncompressed_size);
|
data.resize(info.uncompressed_size);
|
||||||
|
@ -3297,7 +3297,7 @@ Error EditorExportPlatformAndroid::export_project_helper(const Ref<EditorExportP
|
||||||
char extra[16384];
|
char extra[16384];
|
||||||
ret = unzGetCurrentFileInfo(tmp_unaligned, &info, fname, 16384, extra, 16384 - ZIP_ALIGNMENT, nullptr, 0);
|
ret = unzGetCurrentFileInfo(tmp_unaligned, &info, fname, 16384, extra, 16384 - ZIP_ALIGNMENT, nullptr, 0);
|
||||||
|
|
||||||
String file = fname;
|
String file = String::utf8(fname);
|
||||||
|
|
||||||
Vector<uint8_t> data;
|
Vector<uint8_t> data;
|
||||||
data.resize(info.compressed_size);
|
data.resize(info.compressed_size);
|
||||||
|
|
|
@ -1755,7 +1755,7 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
|
||||||
char fname[16384];
|
char fname[16384];
|
||||||
ret = unzGetCurrentFileInfo(src_pkg_zip, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
ret = unzGetCurrentFileInfo(src_pkg_zip, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
||||||
|
|
||||||
String file = fname;
|
String file = String::utf8(fname);
|
||||||
|
|
||||||
print_line("READ: " + file);
|
print_line("READ: " + file);
|
||||||
Vector<uint8_t> data;
|
Vector<uint8_t> data;
|
||||||
|
|
|
@ -375,7 +375,7 @@ Error EditorExportPlatformJavaScript::_extract_template(const String &p_template
|
||||||
char fname[16384];
|
char fname[16384];
|
||||||
unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
||||||
|
|
||||||
String file = fname;
|
String file = String::utf8(fname);
|
||||||
|
|
||||||
// Skip service worker and offline page if not exporting pwa.
|
// Skip service worker and offline page if not exporting pwa.
|
||||||
if (!pwa && (file == "godot.service.worker.js" || file == "godot.offline.html")) {
|
if (!pwa && (file == "godot.service.worker.js" || file == "godot.offline.html")) {
|
||||||
|
|
|
@ -657,7 +657,7 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
|
||||||
char fname[16384];
|
char fname[16384];
|
||||||
ret = unzGetCurrentFileInfo(src_pkg_zip, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
ret = unzGetCurrentFileInfo(src_pkg_zip, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
||||||
|
|
||||||
String file = fname;
|
String file = String::utf8(fname);
|
||||||
|
|
||||||
Vector<uint8_t> data;
|
Vector<uint8_t> data;
|
||||||
data.resize(info.uncompressed_size);
|
data.resize(info.uncompressed_size);
|
||||||
|
|
|
@ -1265,10 +1265,10 @@ public:
|
||||||
while (ret == UNZ_OK) {
|
while (ret == UNZ_OK) {
|
||||||
// get file name
|
// get file name
|
||||||
unz_file_info info;
|
unz_file_info info;
|
||||||
char fname[16834];
|
char fname[16384];
|
||||||
ret = unzGetCurrentFileInfo(pkg, &info, fname, 16834, nullptr, 0, nullptr, 0);
|
ret = unzGetCurrentFileInfo(pkg, &info, fname, 16384, nullptr, 0, nullptr, 0);
|
||||||
|
|
||||||
String path = fname;
|
String path = String::utf8(fname);
|
||||||
|
|
||||||
if (path.ends_with("/")) {
|
if (path.ends_with("/")) {
|
||||||
// Ignore directories
|
// Ignore directories
|
||||||
|
|
Loading…
Reference in New Issue