From 997bd71241173809bb908d2b696aedbfa9efea28 Mon Sep 17 00:00:00 2001 From: kamikawa Date: Tue, 20 May 2008 08:45:01 +0000 Subject: [PATCH] =?UTF-8?q?NAMUTi=5FDeleteNonprotectedTitle=20=E3=81=AE?= =?UTF-8?q?=E5=AE=9F=E8=A3=85=E3=82=92=E6=95=B4=E7=90=86=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1425 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../libraries_sysmenu/namut/ARM9/src/namut.c | 112 +++++------------- 1 file changed, 32 insertions(+), 80 deletions(-) diff --git a/build/libraries_sysmenu/namut/ARM9/src/namut.c b/build/libraries_sysmenu/namut/ARM9/src/namut.c index a101caf1..ca18bb39 100644 --- a/build/libraries_sysmenu/namut/ARM9/src/namut.c +++ b/build/libraries_sysmenu/namut/ARM9/src/namut.c @@ -34,7 +34,7 @@ // 擬似フォーマットで消去しないタイトルを // TitleProperty (TitleID Hiの下位16bit)のビットで指定します。 // どれか1つでもビットが立っていれば消去の対象から外します。 -#define PROTECT_TITLE_PROPERTY (TITLE_ID_HI_APP_TYPE_MASK) +#define PROTECT_TITLE_PROPERTY (TITLE_ID_APP_TYPE_MASK) #define DIRECTORY_DEPTH_MAX 16 // ディレクトリの深さの最大(NANDの正規構成としては最大6) #define TITLE_ID_HI_SIZE 8 @@ -51,16 +51,6 @@ static const char* sDeleteDirectoryList[] = "nand:/tmp" }; -// 擬似フォーマット実行時に -// 指定ディレクトリ以下のNonProtectedなタイトルは全て消去されます。 -// 指定ディレクトリ自体は残ります。 -static const char* sDeleteNonProtecedDirectoryList[] = -{ - "nand:/title", - "nand:/ticket", - "nand:/import" -}; - // 擬似フォーマット実行時に // 指定ファイルはランダムデータでFillされます。 static const char* sFillFileList[] = @@ -246,87 +236,50 @@ BOOL NAMUT_DeleteNandDirectory(const char *path) Returns: None *---------------------------------------------------------------------------*/ + static BOOL NAMUTi_DeleteNonprotectedTitle(void) { - BOOL ret = TRUE; - int i; + char dirPath[NAM_PATH_LEN]; + s32 title_num; + NAMTitleInfo namTitleInfo; + s32 result = TRUE; + s32 i; - for (i=0; i= ('a'-'0')) + // タイトル情報取得 + if( NAM_ReadTitleInfo(&namTitleInfo, sTitleIdArray[i]) == NAM_OK ) + { + // プロテクト対象以外であればtitleId_Hiディレクトリごと消去する + if (!(namTitleInfo.titleId & PROTECT_TITLE_PROPERTY)) { - titlePropety -= 0x27; - } - - // プロテクト対象でない場合ディレクトリごと消去する - if (!(titlePropety & PROTECT_TITLE_PROPERTY)) - { - STD_CopyLString( sCurrentFullPath, path, FS_ENTRY_LONGNAME_MAX ); - STD_ConcatenateLString(sCurrentFullPath, "/", FS_ENTRY_LONGNAME_MAX); - STD_ConcatenateLString(sCurrentFullPath, entryInfo.longname, FS_ENTRY_LONGNAME_MAX); - - if (!FS_DeleteDirectoryAuto(sCurrentFullPath)) + // nand:/title/titleID_Hi/ 以下を消去 + STD_TSNPrintf(dirPath, NAM_PATH_LEN, "nand:/title/%08x", NAM_GetTitleIdHi(namTitleInfo.titleId) ); + if ( !FS_DeleteDirectoryAuto( dirPath ) ) { - ret = FALSE; - OS_TWarning("Fail! FS_DeleteDirectoryAuto(%s) in %s\n", sCurrentFullPath, __func__); + result = FALSE; + } + // nand:/ticket/titleID_Hi/ 以下を消去 + STD_TSNPrintf(dirPath, NAM_PATH_LEN, "nand:/ticket/%08x", NAM_GetTitleIdHi(namTitleInfo.titleId) ); + if ( !FS_DeleteDirectoryAuto( dirPath ) ) + { + result = FALSE; } } } } - // ディレクトリを閉じる - if (!FS_CloseDirectory(&dir)) - { - ret = FALSE; - OS_TWarning("Fail! FS_CloseDirectory() in %s\n", __func__); - } - - return ret; + return result; } /*---------------------------------------------------------------------------* @@ -366,12 +319,12 @@ static BOOL NAMUTi_ClearSavedataAll( void ) // セーブファイルパス取得 if (NAM_GetTitleSaveFilePath(savePublicPath, savePrivatePath, sTitleIdArray[i]) == NAM_OK) { - // publicSaveSizeが0以上なら0xFFクリア&フォーマット + // publicSaveSizeが0以上なら乱数クリア&フォーマット if (namTitleInfo.publicSaveSize > 0) { ret &= NAMUTi_ClearSavedataPublic(savePublicPath, namTitleInfo.titleId); } - // privateSaveSizeが0以上なら0xFFクリア&フォーマット + // privateSaveSizeが0以上なら乱数クリア&フォーマット if (namTitleInfo.privateSaveSize > 0) { ret &= NAMUTi_ClearSavedataPrivate(savePrivatePath, namTitleInfo.titleId); @@ -496,7 +449,6 @@ BOOL NAMUTi_DestroySubBanner(const char* path) FS_SeekFile( file, 0, FS_SEEK_SET ); if( sizeof(BannerHeader) == FS_WriteFile(file, &pBanner->h, sizeof(BannerHeader)) ) { - OS_Warning("banner file write succeed.\n"); ret = TRUE; }else {