OSDN Git Service

*WorkBackup: 2016/01/19(Tue) AM 05:45 (Fixing LibGoblin_ReadBinary_File() function.)
authorKoine Yuusuke(koinec) <koinec@users.osdn.me>
Mon, 18 Jan 2016 20:48:25 +0000 (05:48 +0900)
committerKoine Yuusuke(koinec) <koinec@users.osdn.me>
Mon, 18 Jan 2016 20:48:25 +0000 (05:48 +0900)
libgoblin/drd64_libgoblin_binfo.c
libgoblin/drd64_libgoblin_binfo.h
libgoblin/drd64_libgoblin_readbin.c

index 67e14a9..67d5fb4 100644 (file)
@@ -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)
index 64bf3c2..45cc2e7 100644 (file)
@@ -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 );
index 67fb85c..bb6eec8 100644 (file)
@@ -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 */