void Fatal( int reason, char *insert ) /* the reason doesn't have to be good */ { char msg_buffer[RESOURCE_MAX_SIZE]; int i = 0; Msg_Get( reason, msg_buffer ); while( msg_buffer[i] != '\0' ) { if( msg_buffer[i] == '%' ) { if( msg_buffer[i+1] == 's' ) { Outs( 0, insert ); } else { Outc( msg_buffer[i+1] ); } i++; } else { Outc( msg_buffer[i] ); } i++; } Msg_Get( MSG_WSTRIP_ABORT, msg_buffer ); Outs( 1, msg_buffer ); Msg_Fini(); exit( -1 ); }
void Banner( void ) { Outs( 1, banner1w( "Executable Strip Utility", _WSTRIP_VERSION_ ) ); Outs( 1, banner2 ); Outs( 1, banner2a( "1988" ) ); Outs( 1, banner3 ); Outs( 1, banner3a ); }
void Usage( void ) { char msg_buffer[RESOURCE_MAX_SIZE]; int i; for( i = MSG_USAGE_FIRST; i <= MSG_USAGE_LAST; i++ ) { Msg_Get( i, msg_buffer ); Outs( 1, msg_buffer ); } Msg_Fini(); exit( -1 ); }
// -------------------------------------------------------------------------------- // wxString GetUrlContent( const wxString &url, const wxString &referer, bool gzipped ) { wxCurlHTTP http; //char * Buffer; wxString RetVal = wxEmptyString; http.AddHeader( wxT( "User-Agent: " ) guDEFAULT_BROWSER_USER_AGENT ); http.AddHeader( wxT( "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" ) ); if( gzipped ) { http.AddHeader( wxT( "Accept Encoding: gzip,deflate" ) ); } http.AddHeader( wxT( "Accept-Charset: utf-8" ) ); if( !referer.IsEmpty() ) { http.AddHeader( wxT( "Referer: " ) + referer ); } //guLogMessage( wxT( "Getting content for %s" ), url.c_str() ); wxMemoryOutputStream Buffer; http.SetOpt( CURLOPT_FOLLOWLOCATION, 1 ); http.Get( Buffer, url ); if( Buffer.IsOk() ) { int ResponseCode = http.GetResponseCode(); //guLogMessage( wxT( "ResponseCode: %i" ), ResponseCode ); if( ResponseCode >= 300 && ResponseCode < 400 ) { //guLogMessage( wxT( "Response %u:\n%s\n%s" ), http.GetResponseCode(), http.GetResponseHeader().c_str(), http.GetResponseBody().c_str() ); wxString Location = http.GetResponseHeader(); int Pos = Location.Lower().Find( wxT( "location: " ) ); if( Pos != wxNOT_FOUND ) { Location = Location.Mid( Pos + 10 ); Location.Truncate( Location.Find( wxT( "\r\n" ) ) ); if( Location.StartsWith( wxT( "/" ) ) ) { wxURI Uri( url ); wxString NewURL; if( Uri.HasScheme() ) NewURL = Uri.GetScheme() + wxT( "://" ); NewURL += Uri.GetServer(); NewURL += Location; Location = NewURL; } return GetUrlContent( Location, referer, gzipped ); } } else if( ResponseCode >= 400 ) return wxEmptyString; wxString ResponseHeaders = http.GetResponseHeader(); //guLogMessage( wxT( "Response %u:\n%s\n%s" ), http.GetResponseCode(), http.GetResponseHeader().c_str(), http.GetResponseBody().c_str() ); if( ResponseHeaders.Lower().Find( wxT( "content-encoding: gzip" ) ) != wxNOT_FOUND ) { //guLogMessage( wxT( "Response Headers:\n%s" ), ResponseHeaders.c_str() ); wxMemoryInputStream Ins( Buffer ); wxZlibInputStream ZIn( Ins ); wxStringOutputStream Outs( &RetVal ); ZIn.Read( Outs ); } else { //RetVal = wxString( Buffer, wxConvUTF8 ); // wxStringOutputStream Outs( &RetVal ); // wxMemoryInputStream Ins( Buffer ); // Ins.Read( Outs ); if( Buffer.GetLength() ) { size_t Count = Buffer.GetLength(); const char * pData = ( const char * ) Buffer.GetOutputStreamBuffer()->GetBufferStart(); RetVal = wxString( pData, wxConvUTF8, Count ); if( RetVal.IsEmpty() ) { RetVal = wxString( pData, wxConvISO8859_1, Count ); if( RetVal.IsEmpty() ) { RetVal = wxString( pData, wxConvLibc, Count ); } } } } //free( Buffer ); } else { guLogError( wxT( "Could not get '%s'" ), url.c_str() ); } //guLogMessage( wxT( "Response:\n%s\n###############" ), RetVal.c_str() ); return RetVal; }