SemOffset SemStartResource( void ) /********************************/ { if( StopInvoked ) { RcFatalError( ERR_STOP_REQUESTED ); } if (CurrResFile.IsWatcomRes) { return( ResTell( CurrResFile.handle ) ); } else { /* open a temporary file and trade handles with the RES file */ RcTmpFileName( MSFormatTmpFile ); MSFormatHandle = CurrResFile.handle; CurrResFile.handle = MResOpenNewFile( MSFormatTmpFile ); if (CurrResFile.handle == -1) { CurrResFile.handle = MSFormatHandle; ResCloseFile( CurrResFile.handle ); remove( CurrResFile.filename ); RcFatalError( ERR_OPENING_TMP, MSFormatTmpFile, LastWresErrStr() ); } else { RegisterTmpFile( MSFormatTmpFile ); CurrResFile.filename = MSFormatTmpFile; } /* The start position should be 0 but to be safe call ResTell */ return( ResTell( CurrResFile.handle ) ); } }
static bool ConvertFileWResToMRes( WResFileID infile ) /***************************************************/ { WResFileID tempfile; bool error; tempfile = MResOpenNewFile( TMP_FILENAME ); if( tempfile == -1 ) { perror( "Error (temp file): " ); ResCloseFile( infile ); return( true ); } /* put a message out if quiet option not selected */ if( !CmdLineParms.Quiet ) { puts( "Converting Open Watcom .RES to Microsoft .RES" ); } error = ConvertWResToMRes( infile, tempfile ); ResCloseFile( tempfile ); return( error ); } /* ConvertFileWResToMRes */
static int Pass1InitRes( void ) /*****************************/ { WResID null_id; ResMemFlags null_memflags; ResLocation null_loc; /* put the temporary file in the same location as the output file */ CurrResFile.filename = CurrResFile.namebuf; #ifdef USE_TEMPFILE MakeTmpInSameDir( CmdLineParms.OutResFileName, CurrResFile.filename, "res" ); #else strcpy( CurrResFile.filename, CmdLineParms.OutResFileName ); #endif /* initialize the directory */ CurrResFile.dir = WResInitDir(); if( CurrResFile.dir == NULL ) { RcError( ERR_OUT_OF_MEMORY ); CurrResFile.IsOpen = false; return( TRUE ); } if( CmdLineParms.TargetOS == RC_TARGET_OS_WIN16 ) { WResSetTargetOS( CurrResFile.dir, WRES_OS_WIN16 ); } else if( CmdLineParms.TargetOS == RC_TARGET_OS_WIN32 ) { WResSetTargetOS( CurrResFile.dir, WRES_OS_WIN32 ); } else { WResSetTargetOS( CurrResFile.dir, WRES_OS_OS2 ); } /* open the temporary file */ if( CmdLineParms.MSResFormat ) { CurrResFile.IsWatcomRes = FALSE; CurrResFile.handle = MResOpenNewFile( CurrResFile.filename ); /* write null header here if it is win32 */ if( CmdLineParms.TargetOS == RC_TARGET_OS_WIN32 && CmdLineParms.MSResFormat ) { null_loc.start = SemStartResource(); null_loc.len = SemEndResource( null_loc.start ); null_id.IsName = FALSE; null_id.ID.Num = 0; null_memflags = 0; SemAddResource( &null_id, &null_id, null_memflags, null_loc ); } } else { CurrResFile.IsWatcomRes = TRUE; CurrResFile.handle = WResOpenNewFile( CurrResFile.filename ); } if( CurrResFile.handle == NIL_HANDLE ) { RcError( ERR_OPENING_TMP, CurrResFile.filename, LastWresErrStr() ); CurrResFile.IsOpen = false; return( TRUE ); } RegisterTmpFile( CurrResFile.filename ); CurrResFile.IsOpen = true; CurrResFile.StringTable = NULL; CurrResFile.ErrorTable = NULL; CurrResFile.FontDir = NULL; CurrResFile.NextCurOrIcon = 1; return( FALSE ); } /* Pass1InitRes */