mirror of
https://github.com/J-D-K/JKSV.git
synced 2026-09-14 13:35:31 -05:00
Small fixes and tweaks.
This commit is contained in:
Submodule Libraries/FsLib updated: ebd3747271...833cc56182
@@ -32,6 +32,9 @@ namespace fs
|
||||
} __attribute__((packed));
|
||||
// clang-format on
|
||||
|
||||
// I didn't want a separate file for this.
|
||||
bool read_save_data_extra_info(const FsSaveDataInfo *saveInfo, FsSaveDataExtraData &dataOut);
|
||||
|
||||
/// @brief Didn't feel like a whole new file just for this. Fills an fs::SaveMetaData struct.
|
||||
bool fill_save_meta_data(const FsSaveDataInfo *saveInfo, SaveMetaData &meta);
|
||||
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"12: Fehler beim Erstellen des Zielverzeichnisses!",
|
||||
"13: Backup muss eine ZIP sein, um hochgeladen zu werden!",
|
||||
"14: Fehler beim Einbinden der Speicherdaten!",
|
||||
"15: Fehler beim Schließen der Speicherdaten!"
|
||||
"15: Fehler beim Schließen der Speicherdaten!",
|
||||
"16: Die Sicherung enthält keine Metadatei!"
|
||||
],
|
||||
"BackupMenuStatus": [
|
||||
"0: Verarbeite Metadatei der Speicherdaten..."
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"12: Error creating target directory!",
|
||||
"13: Backup must be a zip to upload!",
|
||||
"14: Error mounting save data!",
|
||||
"15: Error closing save data!"
|
||||
"15: Error closing save data!",
|
||||
"16: Backup contains no meta file!"
|
||||
],
|
||||
"BackupMenuStatus": [
|
||||
"0: Processing save data meta file..."
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"12: Error creating target directory!",
|
||||
"13: Backup must be a zip to upload!",
|
||||
"14: Error mounting save data!",
|
||||
"15: Error closing save data!"
|
||||
"15: Error closing save data!",
|
||||
"16: Backup contains no meta file!"
|
||||
],
|
||||
"BackupMenuStatus": [
|
||||
"0: Processing save data meta file..."
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"12: ¡Error al crear el directorio de destino!",
|
||||
"13: ¡La copia de seguridad debe ser un zip para subirla!",
|
||||
"14: ¡Error al montar los datos guardados!",
|
||||
"15: ¡Error al cerrar los datos guardados!"
|
||||
"15: ¡Error al cerrar los datos guardados!",
|
||||
"16: ¡La copia de seguridad no contiene ningún archivo meta!"
|
||||
],
|
||||
"BackupMenuStatus": [
|
||||
"0: Procesando el archivo de metadatos de los datos guardados..."
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"12: ¡Error al crear el directorio destino!",
|
||||
"13: ¡La copia de seguridad debe ser un archivo zip para subir!",
|
||||
"14: ¡Error al montar los datos guardados!",
|
||||
"15: ¡Error al cerrar los datos guardados!"
|
||||
"15: ¡Error al cerrar los datos guardados!",
|
||||
"16: ¡La copia de seguridad no contiene ningún archivo meta!"
|
||||
],
|
||||
"BackupMenuStatus": [
|
||||
"0: Procesando el archivo de metadatos de datos guardados..."
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"12: Erreur lors de la création du répertoire cible !",
|
||||
"13: La sauvegarde doit être un zip pour être téléversée !",
|
||||
"14: Erreur lors du montage des données sauvegardées !",
|
||||
"15: Erreur lors de la fermeture des données sauvegardées !"
|
||||
"15: Erreur lors de la fermeture des données sauvegardées !",
|
||||
"16: La sauvegarde ne contient aucun fichier méta !"
|
||||
],
|
||||
"BackupMenuStatus": [
|
||||
"0: Traitement du fichier méta des données sauvegardées..."
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"12: Erreur lors de la création du répertoire cible !",
|
||||
"13: La sauvegarde doit être un fichier zip pour être téléversée !",
|
||||
"14: Erreur lors du montage des données sauvegardées !",
|
||||
"15: Erreur lors de la fermeture des données sauvegardées !"
|
||||
"15: Erreur lors de la fermeture des données sauvegardées !",
|
||||
"16: La sauvegarde ne contient aucun fichier méta !"
|
||||
],
|
||||
"BackupMenuStatus": [
|
||||
"0: Traitement du fichier méta des données sauvegardées..."
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"12: Errore durante la creazione della directory di destinazione!",
|
||||
"13: Il backup deve essere uno zip per poter essere caricato!",
|
||||
"14: Errore durante il montaggio dei dati di salvataggio!",
|
||||
"15: Errore durante la chiusura dei dati di salvataggio!"
|
||||
"15: Errore durante la chiusura dei dati di salvataggio!",
|
||||
"16: Il backup non contiene alcun file meta!"
|
||||
],
|
||||
"BackupMenuStatus": [
|
||||
"0: Elaborazione del file meta dei dati di salvataggio..."
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"12: ターゲット ディレクトリの 作成中に エラーが 発生しました!",
|
||||
"13: アップロードには バックアップは ZIP 形式で ある必要があります!",
|
||||
"14: セーブデータの マウント中に エラーが 発生しました!",
|
||||
"15: セーブデータの クローズ中に エラーが 発生しました!"
|
||||
"15: セーブデータの クローズ中に エラーが 発生しました!",
|
||||
"16: バックアップにメタファイルが含まれていません!"
|
||||
],
|
||||
"BackupMenuStatus": [
|
||||
"0: セーブ データ メタ ファイルを 処理中..."
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"12: 대상 디렉터리 생성 오류!",
|
||||
"13: 업로드할 백업은 ZIP 형식이어야 합니다!",
|
||||
"14: 저장 데이터 마운트 오류!",
|
||||
"15: 저장 데이터 닫기 오류!"
|
||||
"15: 저장 데이터 닫기 오류!",
|
||||
"16: 백업에 메타 파일이 없습니다!"
|
||||
],
|
||||
"BackupMenuStatus": [
|
||||
"0: 저장 데이터 메타 파일 처리 중..."
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"12: Fout bij het maken van doelmap!",
|
||||
"13: Back-up moet een zip zijn om te uploaden!",
|
||||
"14: Fout bij het koppelen van opslaggegevens!",
|
||||
"15: Fout bij het sluiten van opslaggegevens!"
|
||||
"15: Fout bij het sluiten van opslaggegevens!",
|
||||
"16: Back-up bevat geen metabestand!"
|
||||
],
|
||||
"BackupMenuStatus": [
|
||||
"0: Opslag meta gegevensbestand verwerken..."
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"12: Erro ao criar diretório de destino!",
|
||||
"13: O backup tem de ser um zip para enviar!",
|
||||
"14: Erro ao montar dados guardados!",
|
||||
"15: Erro ao fechar dados guardados!"
|
||||
"15: Erro ao fechar dados guardados!",
|
||||
"16: O backup não contém nenhum ficheiro meta!"
|
||||
],
|
||||
"BackupMenuStatus": [
|
||||
"0: A processar ficheiro de metadados do save..."
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"12: Erro ao criar diretório alvo!",
|
||||
"13: Backup precisa ser um zip para enviar!",
|
||||
"14: Erro ao montar dados salvos!",
|
||||
"15: Erro ao fechar dados salvos!"
|
||||
"15: Erro ao fechar dados salvos!",
|
||||
"16: O backup não contém nenhum arquivo meta!"
|
||||
],
|
||||
"BackupMenuStatus": [
|
||||
"0: Processando arquivo de metadados do save..."
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"12: Ошибка при создании целевого каталога!",
|
||||
"13: Резервная копия должна быть zip-файлом для загрузки!",
|
||||
"14: Ошибка при монтировании данных сохранения!",
|
||||
"15: Ошибка при закрытии данных сохранения!"
|
||||
"15: Ошибка при закрытии данных сохранения!",
|
||||
"16: Резервная копия не содержит метафайла!"
|
||||
],
|
||||
"BackupMenuStatus": [
|
||||
"0: Обработка файла метаданных сохранения..."
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"12: 创建目标目录时出错!",
|
||||
"13: 备份必须是zip格式才能上传!",
|
||||
"14: 挂载存档时出错!",
|
||||
"15: 关闭存档时出错!"
|
||||
"15: 关闭存档时出错!",
|
||||
"16: 备份不包含元文件!"
|
||||
],
|
||||
"BackupMenuStatus": [
|
||||
"0: 正在处理存档元数据文件..."
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"12: 建立目標資料夾時發生錯誤!",
|
||||
"13: 備份必須為 zip 格式才能上傳!",
|
||||
"14: 掛載存檔時發生錯誤!",
|
||||
"15: 關閉存檔時發生錯誤!"
|
||||
"15: 關閉存檔時發生錯誤!",
|
||||
"16: 備份不包含元文件!"
|
||||
],
|
||||
"BackupMenuStatus": [
|
||||
"0: 正在處理存檔元資料檔案..."
|
||||
|
||||
@@ -11,15 +11,22 @@ namespace
|
||||
constexpr size_t SIZE_EXTRA_DATA = sizeof(FsSaveDataExtraData);
|
||||
}
|
||||
|
||||
bool fs::fill_save_meta_data(const FsSaveDataInfo *saveInfo, fs::SaveMetaData &meta)
|
||||
bool fs::read_save_data_extra_info(const FsSaveDataInfo *saveInfo, FsSaveDataExtraData &dataOut)
|
||||
{
|
||||
const FsSaveDataSpaceId spaceID = static_cast<FsSaveDataSpaceId>(saveInfo->save_data_space_id);
|
||||
const uint64_t saveID = saveInfo->save_data_id;
|
||||
const uint64_t saveDataID = saveInfo->save_data_id;
|
||||
|
||||
FsSaveDataExtraData extraData{};
|
||||
const bool readError =
|
||||
error::libnx(fsReadSaveDataFileSystemExtraDataBySaveDataSpaceId(&extraData, SIZE_EXTRA_DATA, spaceID, saveID));
|
||||
error::libnx(fsReadSaveDataFileSystemExtraDataBySaveDataSpaceId(&dataOut, SIZE_EXTRA_DATA, spaceID, saveDataID));
|
||||
if (readError) { return false; }
|
||||
return true;
|
||||
}
|
||||
|
||||
bool fs::fill_save_meta_data(const FsSaveDataInfo *saveInfo, fs::SaveMetaData &meta)
|
||||
{
|
||||
FsSaveDataExtraData extraData{};
|
||||
const bool extraRead = fs::read_save_data_extra_info(saveInfo, extraData);
|
||||
if (!extraRead) { return false; }
|
||||
|
||||
meta = {.magic = fs::SAVE_META_MAGIC,
|
||||
.revision = 0x00,
|
||||
@@ -41,15 +48,10 @@ bool fs::fill_save_meta_data(const FsSaveDataInfo *saveInfo, fs::SaveMetaData &m
|
||||
|
||||
bool fs::process_save_meta_data(const FsSaveDataInfo *saveInfo, const SaveMetaData &meta)
|
||||
{
|
||||
const FsSaveDataSpaceId spaceID = static_cast<FsSaveDataSpaceId>(saveInfo->save_data_space_id);
|
||||
const uint64_t saveID = saveInfo->save_data_id;
|
||||
|
||||
FsSaveDataExtraData extraData{};
|
||||
const bool readError =
|
||||
error::libnx(fsReadSaveDataFileSystemExtraDataBySaveDataSpaceId(&extraData, SIZE_EXTRA_DATA, spaceID, saveID));
|
||||
if (readError) { return false; }
|
||||
const bool extraRead = fs::read_save_data_extra_info(saveInfo, extraData);
|
||||
if (!extraRead) { return false; }
|
||||
|
||||
// We need to close this temporarily. To do: Look for a way to make this not needed?
|
||||
const bool needsExtend = extraData.data_size < meta.saveDataSize;
|
||||
const bool extended = needsExtend && fs::extend_save_data(saveInfo, meta.saveDataSize, meta.journalSize);
|
||||
if (needsExtend && !extended) { return false; }
|
||||
|
||||
@@ -473,7 +473,7 @@ static bool read_and_process_meta(const fslib::Path &targetDir, BackupMenuState:
|
||||
fslib::File metaFile{metaPath, FsOpenMode_Read};
|
||||
if (!metaFile.is_open())
|
||||
{
|
||||
const char *popErrorProcessing = strings::get_by_name(strings::names::BACKUPMENU_POPS, 11);
|
||||
const char *popErrorProcessing = strings::get_by_name(strings::names::BACKUPMENU_POPS, 16);
|
||||
ui::PopMessageManager::push_message(popTicks, popErrorProcessing);
|
||||
return false;
|
||||
}
|
||||
@@ -514,10 +514,17 @@ static bool read_and_process_meta(fs::MiniUnzip &unzip, BackupMenuState::TaskDat
|
||||
}
|
||||
|
||||
fs::SaveMetaData saveMeta{};
|
||||
const bool metaFound = unzip.locate_file(fs::NAME_SAVE_META);
|
||||
const bool metaFound = unzip.locate_file(fs::NAME_SAVE_META);
|
||||
if (!metaFound)
|
||||
{
|
||||
const char *popNotFound = strings::get_by_name(strings::names::BACKUPMENU_POPS, 16);
|
||||
ui::PopMessageManager::push_message(popTicks, popNotFound);
|
||||
return false;
|
||||
}
|
||||
|
||||
const bool metaRead = metaFound && unzip.read(&saveMeta, SIZE_SAVE_META) == SIZE_SAVE_META;
|
||||
const bool metaProcessed = metaRead && fs::process_save_meta_data(saveInfo, saveMeta);
|
||||
if (!metaFound || !metaRead || !metaProcessed)
|
||||
if (!metaRead || !metaProcessed)
|
||||
{
|
||||
const char *popErrorProcessing = strings::get_by_name(strings::names::BACKUPMENU_POPS, 11);
|
||||
ui::PopMessageManager::push_message(popTicks, popErrorProcessing);
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "error.hpp"
|
||||
#include "fs/fs.hpp"
|
||||
#include "keyboard.hpp"
|
||||
#include "logger.hpp"
|
||||
#include "remote/remote.hpp"
|
||||
#include "strings.hpp"
|
||||
#include "stringutil.hpp"
|
||||
@@ -192,8 +193,7 @@ void tasks::titleoptions::delete_save_data_from_system(sys::Task *task, TitleOpt
|
||||
|
||||
void tasks::titleoptions::extend_save_data(sys::Task *task, TitleOptionState::TaskData taskData)
|
||||
{
|
||||
static constexpr size_t SIZE_EXTRA_DATA = sizeof(FsSaveDataExtraData);
|
||||
static constexpr size_t SIZE_MB = 0x100000;
|
||||
static constexpr int SIZE_MB = 0x100000;
|
||||
|
||||
if (error::is_null(task)) { return; }
|
||||
|
||||
@@ -208,18 +208,18 @@ void tasks::titleoptions::extend_save_data(sys::Task *task, TitleOptionState::Ta
|
||||
|
||||
std::array<char, 5> sizeBuffer = {0};
|
||||
FsSaveDataExtraData extraData{};
|
||||
const FsSaveDataSpaceId spaceId = static_cast<FsSaveDataSpaceId>(saveInfo->save_data_space_id);
|
||||
const uint64_t saveDataId = saveInfo->save_data_id;
|
||||
const bool readExtra = fs::read_save_data_extra_info(saveInfo, extraData);
|
||||
|
||||
const int sizeMB = extraData.data_size / SIZE_MB;
|
||||
const char *keyboardHeader = strings::get_by_name(strings::names::KEYBOARD, 8);
|
||||
const std::string keyboardDefault = stringutil::get_formatted_string("%u", (extraData.data_size / SIZE_MB) + SIZE_MB);
|
||||
const bool extraError =
|
||||
error::libnx(fsReadSaveDataFileSystemExtraDataBySaveDataSpaceId(&extraData, SIZE_EXTRA_DATA, spaceId, saveDataId));
|
||||
const std::string keyboardDefault = stringutil::get_formatted_string("%lli", sizeMB + 1);
|
||||
|
||||
const bool validInput = keyboard::get_input(SwkbdType_NumPad, keyboardDefault, keyboardHeader, sizeBuffer.data(), 5);
|
||||
if (!validInput) { TASK_FINISH_RETURN(task); }
|
||||
|
||||
const uint8_t saveType = saveInfo->save_data_type;
|
||||
const int64_t size = std::strtoll(sizeBuffer.data(), nullptr, 10) * SIZE_MB;
|
||||
const int64_t journal = extraError ? titleInfo->get_journal_size(saveType) : extraData.journal_size;
|
||||
const int64_t journal = !readExtra ? titleInfo->get_journal_size(saveType) : extraData.journal_size;
|
||||
const bool saveExtended = fs::extend_save_data(saveInfo, size, journal);
|
||||
if (saveExtended)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user