SDカードへの書き出しにLFをCRLFに置換

エラー文字列の一部がメモリに乗っていなかったのを修正

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2394 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
aoki_ryoma 2008-09-04 04:30:58 +00:00
parent a02a01e2ac
commit b3d17a2938
3 changed files with 94 additions and 60 deletions

View File

@ -57,7 +57,7 @@ Property
# #
# TITLE NAME: Your product name within 12bytes # TITLE NAME: Your product name within 12bytes
# #
TitleName "DispInfo" TitleName "FatalChecker"
# #
# MAKER CODE: Your company ID# in 2 ascii words # MAKER CODE: Your company ID# in 2 ascii words
@ -95,7 +95,7 @@ Property
# BANNER FILE: generated from Banner Spec File # BANNER FILE: generated from Banner Spec File
# #
#BannerFile ./etc/myGameBanner.bnr #BannerFile ./etc/myGameBanner.bnr
BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr BannerFile ../banner/banner.bnr
# #
# Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE]
@ -216,7 +216,7 @@ AppendProperty
# #
# GameCode for TitleID : Your GameCode in 4 ascii words # GameCode for TitleID : Your GameCode in 4 ascii words
# #
GameCode ABCZ GameCode 0G6A
# #
# Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M]

View File

@ -21,6 +21,8 @@
#include "graphics.h" #include "graphics.h"
#include "keypad.h" #include "keypad.h"
#define BUFSIZE 256
#define FATAL_ERROR_MAX 49 #define FATAL_ERROR_MAX 49
#define NUM_ENTRY_PER_PAGE 5 #define NUM_ENTRY_PER_PAGE 5
#define NUM_LINE_PER_ENTRY 4 #define NUM_LINE_PER_ENTRY 4
@ -58,6 +60,7 @@ static void drawMessage( void );
static void kamiFontPrintfWrap( s16 x, s16 y, u8 color, char *fmt, ... ); static void kamiFontPrintfWrap( s16 x, s16 y, u8 color, char *fmt, ... );
static s16 kamiFontPrintfWrapSub( s16 x, s16 y, u8 color, char *str ); static s16 kamiFontPrintfWrapSub( s16 x, s16 y, u8 color, char *str );
static BOOL copyLogToSD( void ); static BOOL copyLogToSD( void );
int convertLF( char *dst, char *src );
static void drawMenu( void ); static void drawMenu( void );
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: TwlMain Name: TwlMain
@ -356,17 +359,17 @@ static void removeLC( char *dst, const char *src )
static void kamiFontPrintfWrap( s16 x, s16 y, u8 color, char *fmt, ... ) static void kamiFontPrintfWrap( s16 x, s16 y, u8 color, char *fmt, ... )
{ {
va_list vlist; va_list vlist;
char temp[256 + 2]; char temp[BUFSIZE + 1];
char *head, *tail; char *head, *tail;
va_start(vlist, fmt); va_start(vlist, fmt);
(void)vsnprintf(temp, 256, fmt, vlist); (void)vsnprintf(temp, BUFSIZE+1, fmt, vlist);
va_end(vlist); va_end(vlist);
head = temp; head = temp;
// 終端追加 // 終端追加
temp[256] = '\0'; temp[BUFSIZE] = '\0';
// 自前でctok的な事をして改行を別々に出力する // 自前でctok的な事をして改行を別々に出力する
tail = STD_StrChr( temp, '\n' ); tail = STD_StrChr( temp, '\n' );
@ -424,7 +427,9 @@ static BOOL deleteLogfile( void )
static BOOL copyLogToSD( void ) static BOOL copyLogToSD( void )
{ {
FSFile src, dst; FSFile src, dst;
char buf[256 + 1]; // 最悪で読み込んだサイズの倍の文字列になる可能性がある
char buf[BUFSIZE + 1];
char winbuf[BUFSIZE*2 +1];
s32 readSize; s32 readSize;
buf[256] = '\0'; buf[256] = '\0';
@ -479,7 +484,10 @@ static BOOL copyLogToSD( void )
while( ( readSize = FS_ReadFile( &src, buf, 256 )) > 0 ) while( ( readSize = FS_ReadFile( &src, buf, 256 )) > 0 )
{ {
if( FS_WriteFile( &dst, buf, readSize ) < 0 ) int size;
size = convertLF( winbuf, buf );
if( FS_WriteFile( &dst, winbuf, size ) < 0 )
{ {
kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ; kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ;
kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_WriteFile" ); kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_WriteFile" );
@ -513,6 +521,32 @@ static void drawMenu( void )
kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "+-----------------------------+"); kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "+-----------------------------+");
} }
// LFをLFCRに置換して書き戻す
// dstは最悪時でsrcの二倍の領域が必要
int convertLF( char *dst, char *src )
{
char *head = src, *tail;
int writesize = 0;
tail = STD_StrChr( src, '\n' );
while( tail != NULL )
{
*tail = '\0';
writesize += STD_StrLCpy( &dst[writesize], head,BUFSIZE );
dst[writesize] = 0x0d;
dst[writesize+1] = 0x0a;
writesize += 2;
head = tail + 1;
tail = STD_StrChr( head, '\n' );
}
writesize += STD_StrLCpy( &dst[writesize], head, BUFSIZE );
return writesize;
}
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: VBlankIntr Name: VBlankIntr
@ -554,53 +588,53 @@ static void InitAllocation(void)
static char *s_strError[ FATAL_ERROR_MAX ] = { static char *s_strError[ FATAL_ERROR_MAX ] = {
"FATAL_ERROR_UNDEFINED", "UNDEFINED",
"FATAL_ERROR_NAND", "NAND",
"FATAL_ERROR_HWINFO_NORMAL", "HWINFO_NORMAL",
"FATAL_ERROR_HWINFO_SECURE", "HWINFO_SECURE",
"FATAL_ERROR_TWLSETTINGS", "TWLSETTINGS",
"FATAL_ERROR_SHARED_FONT", "SHARED_FONT",
"FATAL_ERROR_WLANFIRM_AUTH", "WLANFIRM_AUTH",
"FATAL_ERROR_WLANFIRM_LOAD", "WLANFIRM_LOAD",
"FATAL_ERROR_TITLE_LOAD_FAILED", "TITLE_LOAD_FAILED",
"FATAL_ERROR_TITLE_POINTER_ERROR", "TITLE_POINTER_ERROR",
"FATAL_ERROR_AUTHENTICATE_FAILED", "AUTHENTICATE_FAILED",
"FATAL_ERROR_ENTRY_ADDRESS_ERROR", "ENTRY_ADDRESS_ERROR",
"FATAL_ERROR_TITLE_BOOTTYPE_ERROR", "TITLE_BOOTTYPE_ERROR",
"FATAL_ERROR_SIGN_DECRYPTION_FAILED", "SIGN_DECRYPTION_FAILED",
"FATAL_ERROR_SIGN_COMPARE_FAILED", "SIGN_COMPARE_FAILED",
"FATAL_ERROR_HEADER_HASH_CALC_FAILED", "HEADER_HASH_CALC_FAILED",
"FATAL_ERROR_TITLEID_COMPARE_FAILED", "TITLEID_COMPARE_FAILED",
"FATAL_ERROR_VALID_SIGN_FLAG_OFF", "VALID_SIGN_FLAG_OFF",
"FATAL_ERROR_CHECK_TITLE_LAUNCH_RIGHTS_FAILED", "CHECK_TITLE_LAUNCH_RIGHTS_FAILED",
"FATAL_ERROR_MODULE_HASH_CHECK_FAILED", "MODULE_HASH_CHECK_FAILED",
"FATAL_ERROR_MODULE_HASH_CALC_FAILED", "MODULE_HASH_CALC_FAILED",
"FATAL_ERROR_MEDIA_CHECK_FAILED", "MEDIA_CHECK_FAILED",
"FATAL_ERROR_DL_MAGICCODE_CHECK_FAILED", "DL_MAGICCODE_CHECK_FAILED",
"FATAL_ERROR_DL_SIGN_DECRYPTION_FAILED", "DL_SIGN_DECRYPTION_FAILED",
"FATAL_ERROR_DL_HASH_CALC_FAILED", "DL_HASH_CALC_FAILED",
"FATAL_ERROR_DL_SIGN_COMPARE_FAILED", "DL_SIGN_COMPARE_FAILED",
"FATAL_ERROR_WHITELIST_INITDB_FAILED", "WHITELIST_INITDB_FAILED",
"FATAL_ERROR_WHITELIST_NOTFOUND", "WHITELIST_NOTFOUND",
"FATAL_ERROR_DHT_PHASE1_FAILED", "DHT_PHASE1_FAILED",
"FATAL_ERROR_DHT_PHASE2_FAILED", "DHT_PHASE2_FAILED",
"FATAL_ERROR_LANDING_TMP_JUMP_FLAG_OFF", "LANDING_TMP_JUMP_FLAG_OFF",
"FATAL_ERROR_TWL_BOOTTYPE_UNKNOWN", "TWL_BOOTTYPE_UNKNOWN",
"FATAL_ERROR_NTR_BOOTTYPE_UNKNOWN", "NTR_BOOTTYPE_UNKNOWN",
"FATAL_ERROR_PLATFORM_UNKNOWN", "PLATFORM_UNKNOWN",
"FATAL_ERROR_LOAD_UNFINISHED", "LOAD_UNFINISHED",
"FATAL_ERROR_LOAD_OPENFILE_FAILED", "LOAD_OPENFILE_FAILED",
"FATAL_ERROR_LOAD_MEMALLOC_FAILED", "LOAD_MEMALLOC_FAILED",
"FATAL_ERROR_LOAD_SEEKFILE_FAILED", "LOAD_SEEKFILE_FAILED",
"FATAL_ERROR_LOAD_READHEADER_FAILED", "LOAD_READHEADER_FAILED",
"FATAL_ERROR_LOAD_LOGOCRC_ERROR = 39", "LOAD_LOGOCRC_ERROR = 39",
"FATAL_ERROR_LOAD_READDLSIGN_FAILED", "LOAD_READDLSIGN_FAILED",
"FATAL_ERROR_LOAD_RELOCATEINFO_FAILED", "LOAD_RELOCATEINFO_FAILED",
"FATAL_ERROR_LOAD_READMODULE_FAILED", "LOAD_READMODULE_FAILED",
"FATAL_ERROR_NINTENDO_LOGO_CHECK_FAILED", "NINTENDO_LOGO_CHECK_FAILED",
"FATAL_ERROR_SYSMENU_VERSION", "SYSMENU_VERSION",
"FATAL_ERROR_DHT_PHASE1_CALC_FAILED", "DHT_PHASE1_CALC_FAILED",
"FATAL_ERROR_LOAD_UNKNOWN_BOOTTYPE", "LOAD_UNKNOWN_BOOTTYPE",
"FATAL_ERROR_LOAD_AUTH_HEADER_FAILED", "LOAD_AUTH_HEADER_FAILED",
"FATAL_ERROR_LOAD_NEVER_STARTED", "LOAD_NEVER_STARTED"
}; };

View File

@ -18,9 +18,9 @@
include $(TWLSDK_ROOT)/build/buildtools/commondefs include $(TWLSDK_ROOT)/build/buildtools/commondefs
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
SUBDIRS = ARM9 SUBDIRS = banner ARM9
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------