STATIC void findRtnFromRow( sio_data *curr_sio, int row ) /*******************************************************/ { file_info *curr_file; rtn_info *curr_rtn; cue_handle *ch; sym_handle *sh; int index; mod_handle mh; address addr; index = 0; ch = alloca( DIPHandleSize( HK_CUE ) ); curr_file = curr_sio->curr_file; mh = curr_sio->curr_mod->mh; if( LineCue( mh, curr_sio->curr_file->fid, row, 0, ch ) == SR_NONE ) { if( LineCue( mh, curr_sio->curr_file->fid, 0, 0, ch ) == SR_NONE ) return; } sh = alloca( DIPHandleSize( HK_SYM ) ); addr = CueAddr( ch ); if( AddrSym( mh, addr, sh ) == SR_NONE ) return; while( index < curr_file->rtn_count ) { curr_rtn = curr_file->routine[index]; if( curr_rtn->sh != NULL && SymCmp( curr_rtn->sh, sh ) == 0 ) { curr_sio->curr_rtn = curr_rtn; break; } index++; } }
STATIC rtn_info *findCurrRtn( mod_info *curr_mod, sym_handle *sh ) /****************************************************************/ { file_info *curr_file; rtn_info *curr_rtn; int file_count; int rtn_count; file_count = 0; while( file_count < curr_mod->file_count ) { curr_file = curr_mod->mod_file[file_count]; rtn_count = 0; while( rtn_count < curr_file->rtn_count ) { curr_rtn = curr_file->routine[rtn_count]; if( curr_rtn->sh != NULL && SymCmp( curr_rtn->sh, sh ) == 0 ) { return( curr_rtn ); } rtn_count++; } file_count++; } return( NULL ); }