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
#
TitleName "DispInfo"
TitleName "FatalChecker"
#
# MAKER CODE: Your company ID# in 2 ascii words
@ -95,7 +95,7 @@ Property
# BANNER FILE: generated from Banner Spec File
#
#BannerFile ./etc/myGameBanner.bnr
BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr
BannerFile ../banner/banner.bnr
#
# Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE]
@ -216,7 +216,7 @@ AppendProperty
#
# 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]

View File

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

View File

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