bool WRLoadResourceFromRES( WRInfo *info ) { WResTargetOS target_os; WRFileType target; bool is_wres; bool ok; ok = WRLoadResDirFromRES( info, &is_wres ); if( ok ) { target_os = WResGetTargetOS( info->dir ); target = WR_INVALID_FILE; switch( target_os ) { case WRES_OS_WIN16: target = WR_WIN16M_RES; if( is_wres ) { target = WR_WIN16W_RES; } break; case WRES_OS_WIN32: target = WR_WINNTM_RES; if( is_wres ) { target = WR_WINNTW_RES; } break; } if( target == WR_INVALID_FILE ) { WRDisplayErrorMsg( WR_INVALIDFILE ); ok = false; } else if( target != info->file_type ) { if( target == WR_WIN16W_RES ) { WRDisplayErrorMsg( WR_BADFILEWWIN16 ); } else if( target == WR_WINNTW_RES ) { WRDisplayErrorMsg( WR_BADFILEWWINNT ); } else if( target == WR_WIN16M_RES ) { WRDisplayErrorMsg( WR_BADFILEMWIN16 ); } else if( target == WR_WINNTM_RES ) { WRDisplayErrorMsg( WR_BADFILEMWINNT ); } ok = false; } } return( ok ); }
WRFileType WRIdentifyRESFile( const char *file ) { WRFileType ftype; WRInfo info; bool is_wres; bool ok; memset( &info, 0, sizeof( WRInfo ) ); info.file_name = (char *)file; ok = WRLoadResDirFromRES( &info, &is_wres ); if( ok ) { switch( WResGetTargetOS( info.dir ) ) { case WRES_OS_WIN16: if( is_wres ) { ftype = WR_WIN16W_RES; } else { ftype = WR_WIN16M_RES; } break; case WRES_OS_WIN32: if( is_wres ) { ftype = WR_WINNTW_RES; } else { ftype = WR_WINNTM_RES; } break; default: ftype = WR_INVALID_FILE; break; } if( info.dir != NULL ) { WResFreeDir( info.dir ); } } if( ok ) { return( ftype ); } else { return( WR_INVALID_FILE ); } }