orl_file_handle ORLENTRY ORLFileInit( orl_handle orl_hnd, void * file, orl_file_format type ) { orl_file_handle orl_file_hnd; switch( type ) { case( ORL_ELF ): orl_file_hnd = (orl_file_handle) orl_hnd->funcs->alloc( sizeof( orl_file_handle_struct ) ); if( !orl_file_hnd ) { orl_hnd->error = ORL_OUT_OF_MEMORY; return( NULL ); } orl_file_hnd->type = ORL_ELF; orl_file_hnd->file_hnd.elf = ElfFileInit( orl_hnd->elf_hnd, file ); if( orl_file_hnd->file_hnd.elf == NULL ) { orl_hnd->error = ORL_OUT_OF_MEMORY; orl_hnd->funcs->free( orl_file_hnd ); return( NULL ); } ORLAddFileLinks( orl_hnd, orl_file_hnd ); return( orl_file_hnd ); case( ORL_COFF ): orl_file_hnd = (orl_file_handle) orl_hnd->funcs->alloc( sizeof( orl_file_handle_struct ) ); if( !orl_file_hnd ) return( NULL ); orl_file_hnd->type = ORL_COFF; orl_file_hnd->file_hnd.coff = CoffFileInit( orl_hnd->coff_hnd, file ); if( orl_file_hnd->file_hnd.coff == NULL ) { orl_hnd->error = ORL_OUT_OF_MEMORY; orl_hnd->funcs->free( orl_file_hnd ); return( NULL ); } ORLAddFileLinks( orl_hnd, orl_file_hnd ); return( orl_file_hnd ); case( ORL_OMF ): orl_file_hnd = (orl_file_handle) orl_hnd->funcs->alloc( sizeof( orl_file_handle_struct ) ); if( !orl_file_hnd ) { orl_hnd->error = ORL_OUT_OF_MEMORY; return( NULL ); } orl_file_hnd->type = ORL_OMF; orl_file_hnd->file_hnd.omf = OmfFileInit( orl_hnd->omf_hnd, file ); if( orl_file_hnd->file_hnd.omf == NULL ) { orl_hnd->error = ORL_OUT_OF_MEMORY; orl_hnd->funcs->free( orl_file_hnd ); return( NULL ); } ORLAddFileLinks( orl_hnd, orl_file_hnd ); return( orl_file_hnd ); default: break;//ORL_UNRECOGNIZED_FORMAT } return( NULL ); }
orl_file_handle ORLENTRY ORLFileInit( orl_handle orl_hnd, void *file, orl_file_format type ) { orl_file_handle orl_file_hnd; switch( type ) { case( ORL_ELF ): case( ORL_COFF ): case( ORL_OMF ): orl_file_hnd = (orl_file_handle)orl_hnd->funcs->alloc( sizeof( orl_file_handle_struct ) ); if( orl_file_hnd == NULL ) { orl_hnd->error = ORL_OUT_OF_MEMORY; break; } orl_file_hnd->type = type; switch( type ) { case ORL_ELF: orl_hnd->error = ElfFileInit( orl_hnd->elf_hnd, file, &orl_file_hnd->file_hnd.elf ); break; case ORL_COFF: orl_hnd->error = CoffFileInit( orl_hnd->coff_hnd, file, &orl_file_hnd->file_hnd.coff ); break; case ORL_OMF: orl_hnd->error = OmfFileInit( orl_hnd->omf_hnd, file, &orl_file_hnd->file_hnd.omf ); break; default: break; } if( orl_hnd->error != ORL_OKAY ) { orl_hnd->funcs->free( orl_file_hnd ); break; } ORLAddFileLinks( orl_hnd, orl_file_hnd ); return( orl_file_hnd ); default: //ORL_UNRECOGNIZED_FORMAT break; } return( NULL ); }