From: Koine Yuusuke(koinec) Date: Mon, 18 Jan 2016 20:48:25 +0000 (+0900) Subject: *WorkBackup: 2016/01/19(Tue) AM 05:45 (Fixing LibGoblin_ReadBinary_File() function.) X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=8b570b0e0bf00a71e32c313b931c06f11f53ed15;p=drdeamon64%2Fdrdeamon64.git *WorkBackup: 2016/01/19(Tue) AM 05:45 (Fixing LibGoblin_ReadBinary_File() function.) --- 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 */