From 8b570b0e0bf00a71e32c313b931c06f11f53ed15 Mon Sep 17 00:00:00 2001 From: "Koine Yuusuke(koinec)" Date: Tue, 19 Jan 2016 05:48:25 +0900 Subject: [PATCH] *WorkBackup: 2016/01/19(Tue) AM 05:45 (Fixing LibGoblin_ReadBinary_File() function.) --- libgoblin/drd64_libgoblin_binfo.c | 29 +++++++++++++++++++++++++++++ libgoblin/drd64_libgoblin_binfo.h | 3 +++ libgoblin/drd64_libgoblin_readbin.c | 11 +++++++++-- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/libgoblin/drd64_libgoblin_binfo.c b/libgoblin/drd64_libgoblin_binfo.c index 67e14a9..67d5fb4 100644 --- a/libgoblin/drd64_libgoblin_binfo.c +++ b/libgoblin/drd64_libgoblin_binfo.c @@ -76,6 +76,35 @@ void /*---------------------------------------------------------------------- ----------------------------------------------------------------------*/ LIBGOBLIN_BINFO_EXTERN +int + LibGoblin_BinInfo_SetProgramName( + LibGoblin_BinaryInfo *p_binfo, + const char *pstr_program ) +{ + LibGoblin_BinaryFile *p_bfile; + assert( NULL != p_binfo ); + + if( LIBGOBLIN_BINFO_PHASE_ALLOCED < p_binfo->b_phase ) { + return -0x01; + } + + p_bfile = &(p_binfo->t_binfile[LIBGOBLIN_BINFO_FILE_EXEC]); + + if( '\0' != p_bfile->str_filepath[0] ) { + return -0x02; + } + + strncpy( p_bfile->str_filepath, pstr_program, DRD64_MAX_PATH ); + + p_binfo->b_phase = LIBGOBLIN_BINFO_PHASE_SETPROG; + + return 0x00; +} + + +/*---------------------------------------------------------------------- +----------------------------------------------------------------------*/ +LIBGOBLIN_BINFO_EXTERN LibGoblin_BinaryInfo * LibGoblin_BinInfo_AllocBinInfo( void) diff --git a/libgoblin/drd64_libgoblin_binfo.h b/libgoblin/drd64_libgoblin_binfo.h index 64bf3c2..45cc2e7 100644 --- a/libgoblin/drd64_libgoblin_binfo.h +++ b/libgoblin/drd64_libgoblin_binfo.h @@ -66,6 +66,9 @@ int gi_now_binary_info = 0; LIBGOBLIN_BINFO_EXTERN LibGoblin_BinaryInfo *LibGoblin_BinInfo_GetBinInfo( int i_bid ); LIBGOBLIN_BINFO_EXTERN + int LibGoblin_BinInfo_SetProgramName( + LibGoblin_BinaryInfo *p_binfo, const char *pstr_program ); +LIBGOBLIN_BINFO_EXTERN LibGoblin_BinaryInfo *LibDrd64_BinInfo_AllocBinInfo( void ); LIBGOBLIN_BINFO_EXTERN int LibGoblin_BinInfo_FreeBinInfo( LibGoblin_BinaryInfo *p_binfo ); diff --git a/libgoblin/drd64_libgoblin_readbin.c b/libgoblin/drd64_libgoblin_readbin.c index 67fb85c..bb6eec8 100644 --- a/libgoblin/drd64_libgoblin_readbin.c +++ b/libgoblin/drd64_libgoblin_readbin.c @@ -56,8 +56,15 @@ int assert( NULL != p_binfo ); - if( LIBGOBLIN_BINFO_PHASE_ALLOCED != p_binfo->b_phase ) { - return -0x01; + if( NULL == pstr_filepath ) { + if ( LIBGOBLIN_BINFO_PHASE_SETPROG != p_binfo->b_phase ) { + return -0x01; + } + } + else { + if( LIBGOBLIN_BINFO_PHASE_ALLOCED != p_binfo->b_phase ) { + return -0x02; + } } /* Open Test LM */ -- 2.11.0