Пример #1
0
WResFileID res_open( const char * file_name, wres_open_mode omode )
/*****************************************************************/
{
    WResFileID  fid;
    int         i;

    switch( omode ) {
    default:
    case WRES_OPEN_RO:
        fid = WRES_PH2FID( open( file_name, O_BINARY | O_RDONLY ) );
        break;
    case WRES_OPEN_RW:
        fid = WRES_PH2FID( open( file_name, O_BINARY | O_RDWR | O_CREAT, PMODE_RW ) );
        break;
    case WRES_OPEN_NEW:
        fid = WRES_PH2FID( open( file_name, O_BINARY | O_WRONLY | O_CREAT | O_TRUNC, PMODE_RW ) );
        break;
    }
    if( fid != WRES_NIL_HANDLE ) {
        RegisterOpenFile( fid );
        if( !RcIoNoBuffer ) {
            for( i = 0; i < RC_MAX_FILES; i++ ) {
                if( !RcFileList[i].HasRcBuffer ) {
                    RcFileList[i].HasRcBuffer = true;
                    RcFileList[i].fid = fid;
                    RcFileList[i].Buffer = NewRcBuffer();
                    break;
                }
            }
        }
    }
    return( fid );

} /* RcOpen */
Пример #2
0
int InitRcMsgs( void )
{
    int         error;
    WResFileID  (* oldopen)(const char *, int, ...);
    char        testbuf[1];
#if defined( IDE_PGM ) || !defined( __WATCOMC__ )
    char        imageName[_MAX_PATH];
#else
    char        *imageName;
#endif

#if defined( IDE_PGM )
    _cmdname( imageName );
#elif !defined( __WATCOMC__ )
    get_dllname( imageName, sizeof( imageName ) );
#else
    imageName = _LpDllName;
#endif
    /*
     * swap open functions so this file handle is not buffered.
     * This makes it easier for layer0 to fool WRES into thinking
     * that the resource information starts at offset 0
     */
    oldopen = WResRtns.open;
    WResRtns.open = open;
    error = OpenResFile( &Instance, imageName );
    WResRtns.open = oldopen;
    if( !error ) {
        RegisterOpenFile( Instance.handle );
        error = FindResources( &Instance );
        if( !error ) {
            error = InitResources( &Instance );
        }
        if( error ) {
            CloseResFile( &Instance );
            UnRegisterOpenFile( Instance.handle );
        }
    }
    MsgShift = _WResLanguage() * MSG_LANG_SPACING;
    if( !error && !GetRcMsg( USAGE_MSG_FIRST, testbuf, sizeof( testbuf ) ) ) {
        error = TRUE;
    }
    if( error ) {
        RcFatalError( ERR_RCSTR_NOT_FOUND );
    }
    return( 1 );
}