LibGoblin_SrcFile *
SrcFile_SearchSrcFile(
LibGoblin_BinaryFile *p_bfile,
- char *pstr_filename )
+ char *pstr_filepath )
{
int i_cnt;
int i_result;
DWord dw_hash;
+ char str_temp[DRD64_MAX_PATH + 1];
+ char *pstr_filename;
+ char *pstr_pathname;
LibGoblin_SrcFile *p_srcfile;
assert( NULL != p_bfile );
- assert( NULL != pstr_filename);
+ assert( NULL != pstr_filepath );
+ strncpy( str_temp, pstr_filepath, DRD64_MAX_PATH );
+ pstr_filename = basename( str_temp );
dw_hash = Common_CalcDJBhash( pstr_filename );
+ pstr_pathname = dirname( str_temp );
+
for( i_cnt = 0; i_cnt < p_bfile->srcfile.i_max; i_cnt++ ) {
p_srcfile = SRCFILE( p_bfile, i_cnt );
if( -0x01 == p_srcfile->i_id ) { continue; }
- if( dw_hash != p_srcfile->dw_hash ) { continue; }
+ if( dw_hash != p_srcfile->dw_hash_filename ) { continue; }
i_result = strncmp( pstr_filename, p_srcfile->str_filename, DRD64_MAX_PATH );
if( 0x00 != i_result ) { continue; }
assert( NULL != p_srcfile );
strncpy( p_srcfile->str_filename, pstr_filename, DRD64_MAX_PATH );
- p_srcfile->dw_hash = Common_CalcDJBhash( pstr_filename );
+ p_srcfile->dw_hash_filename = Common_CalcDJBhash( pstr_filename );
return p_srcfile;
}
/*=====================================================================*/
typedef struct {
int i_id;
- DWord dw_hash;
+ DWord dw_hash_filename;
+ DWord dw_hash_localpath;
char str_filename[DRD64_MAX_PATH];
char str_localpath[DRD64_MAX_PATH];
char str_remotepath[DRD64_MAX_PATH];
p_srcfile = SrcFile_GetSrcFile( p_bfile, i_cnt );
CU_ASSERT( NULL != p_srcfile );
CU_ASSERT( i_cnt == p_srcfile->i_id );
- CU_ASSERT( p_now->dw_hash == p_srcfile->dw_hash );
+ CU_ASSERT( p_now->dw_hash == p_srcfile->dw_hash_filename );
}
for( i_cnt = 500; i_cnt > 0; i_cnt-- ) {