Пример #1
0
static bool loadResDirFromRES( WRInfo *info, const char *filename, bool *is_wres )
{
    WResFileID  fid;
    bool        dup_discarded;
    bool        ok;

    ok = ((fid = ResOpenFileRO( filename )) != WRES_NIL_HANDLE);

    if( ok ) {
        *is_wres = WResIsWResFile( fid );
    }

    if( ok ) {
        ok = ((info->dir = WResInitDir()) != NULL);
    }

    if( ok ) {
        ok = !WResReadDir( fid, info->dir, &dup_discarded );
        if( ok && dup_discarded ) {
            WRDisplayErrorMsg( WR_DUPRESDISCARD );
        }
    }

    if( fid != WRES_NIL_HANDLE ) {
        ResCloseFile( fid );
    }

    return( ok );
}
Пример #2
0
int ConvertFiles( void )
/**********************/
{
    WResFileID      infile;
    int             error;
    int             fileerror;      /* error while deleting or renaming */

    infile = ResOpenFileRO( CmdLineParms.InFileName );
    if (infile == -1) {
        perror( "Error (input file): " );
        return( TRUE );
    }

    if (WResIsWResFile( infile )) {
        /* the input file is in Open Watcom format so convert to MS format */
        error = ConvertFileWResToMRes( infile );
    } else {
        /* the input file is in MS format so convert to Open Watcom format */
        error = ConvertFileMResToWRes( infile );
    }

    ResCloseFile( infile );

    if (error) {
        puts("Error writing to output file");
        fileerror = remove( TMP_FILENAME );
        if (fileerror) {
            perror( NULL );
        }
    } else {
        error = ChangeTmpToOutFile();
    }

    return( error );
} /* ConvertFiles */
Пример #3
0
DepInfo *WResGetAutoDep( const char *fname )
{
    WResFileID      handle;
    WResDir         dir;
    bool            dup_discarded;
    WResID          *name;
    WResID          *type;
    WResDirWindow   window;
    WResLangInfo    *info;
    DepInfo         *ret;
    WResFileSSize   numread;

    ret = NULL;
    handle = ResOpenFileRO( fname );
    if( handle != WRES_NIL_HANDLE ) {
        if( WResIsWResFile( handle ) && (dir = WResInitDir()) != NULL ) {
            if( !WResReadDir( handle, dir, &dup_discarded ) ) {
                name = WResIDFromStr( DEP_LIST_NAME );
                type = WResIDFromNum( DEP_LIST_TYPE );
                if( name != NULL && type != NULL ) {
                    window = WResFindResource( type, name, dir, NULL );
                    if( WResIsEmptyWindow( window ) ) {
                        WRES_ERROR( WRS_RES_NOT_FOUND );
                    } else {
                        info = WResGetLangInfo( window );
                        if( WRESSEEK( handle, info->Offset, SEEK_SET ) == -1 ) {
                            WRES_ERROR( WRS_SEEK_FAILED );
                        } else {
                            ret = WRESALLOC( info->Length );
                            if( ret == NULL ) {
                                WRES_ERROR( WRS_MALLOC_FAILED );
                            } else {
                                numread = WRESREAD( handle, ret, info->Length );
                                if( numread != (WResFileSSize)info->Length ) {
                                    WRES_ERROR( WRESIOERR( handle, numread ) ? WRS_READ_FAILED : WRS_READ_INCOMPLETE );
                                    ret = NULL;
                                }
                            }
                        }
                    }
                }
                if( name != NULL ) {
                    WResIDFree( name );
                }
                if( type != NULL ) {
                    WResIDFree( type );
                }
            }
            WResFreeDir( dir );
        }
        ResCloseFile( handle );
    }
    return( ret );
}
Пример #4
0
static int OpenFiles( WResFileID * fileid1, WResFileID * fileid2 )
/****************************************************************/
/* opens the files named in CmdLineParms and puts their file ids in */
/* fileid1 and fileid2 */
{
    int         error;

    *fileid1 = ResOpenFileRO( CmdLineParms.FileName1 );
    if (*fileid1 == -1) {
        printf( "Unable to open %s\n", CmdLineParms.FileName1 );
        *fileid2 = -1;
        return( true );
    }

    *fileid2 = ResOpenFileRO( CmdLineParms.FileName2 );
    if (*fileid2 == -1) {
        printf( "Unable to open %s\n", CmdLineParms.FileName2 );
        ResCloseFile( *fileid1 );
        *fileid1 = -1;
        return( true );
    }

    error = (!WResIsWResFile( *fileid1 ));
    if (error) {
        printf( "File %s is not a Open Watcom .RES file\n",
                    CmdLineParms.FileName1 );
    } else {
        error = (!WResIsWResFile( *fileid2 ));
        if (error) {
            printf( "File %s is not a Open Watcom .RES file\n",
                    CmdLineParms.FileName2 );
        }
    }

    return( error );
}
Пример #5
0
extern int DumpFile( void )
/*************************/
{
    int             error;
    int             retcode;
    WResFileID      handle;
    WResDir         dir;

    handle = ResOpenFileRO( CmdLineParms.FileName );
    if (handle == -1) {
        return( 2 );
    }

    if (WResIsWResFile( handle )) {
        puts( "WATCOM format .RES file" );
    } else {
        puts( "MS format .RES file" );
    }

    dir = WResInitDir();
    if (dir == NULL) {
        FatalError( "Out of memory" );
    }

    error = WResReadDir( handle, dir, NULL );
    if (error) {
        puts( "Unable to read directory" );
        retcode = 2;
    } else {
        if( WResGetTargetOS( dir ) == WRES_OS_WIN16 ) {
            puts( "Target OS: Win16" );
        } else {
            puts( "Target OS: Win32" );
        }
        puts( "Type                  Name             Language     Flags" );
        puts( "====                  ====             ========     =====" );
        retcode = DumpDir( dir, handle );
    }

    WResFreeDir( dir );

    ResCloseFile( handle );

    return( retcode );
}