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 ); }
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 */
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 ); }
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 ); }
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 ); }