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 ); }
int res_close( WResFileID fid ) /*****************************/ { RcBuffer *buff; int i; i = RcFindIndex( fid ); if( i < RC_MAX_FILES ) { buff = RcFileList[i].Buffer; if( buff->IsDirty ) { if( FlushRcBuffer( fid, buff ) ) { return( -1 ); } } RcMemFree( buff ); RcFileList[i].HasRcBuffer = false; RcFileList[i].fid = WRES_NIL_HANDLE; RcFileList[i].Buffer = NULL; } UnRegisterOpenFile( fid ); return( close( WRES_FID2PH( fid ) ) ); } /* RcClose */
void FiniRcMsgs( void ) { CloseResFile( &Instance ); UnRegisterOpenFile( Instance.handle ); }