/*
- Copyright (C) 1999-2007 id Software, Inc. and contributors.
+ Copyright (C) 1999-2006 Id Software, Inc. and contributors.
For a list of contributors, see the accompanying CONTRIBUTORS file.
This file is part of GtkRadiant.
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#define UNICODE
-#include "stdafx.h"
+#include "error.h"
+#include "globaldefs.h"
+
+#include "debugging/debugging.h"
+#include "igl.h"
+
+#include "gtkutil/messagebox.h"
+#include "console.h"
+#include "preferences.h"
-#if defined ( __linux__ ) || defined ( __APPLE__ )
+
+#if GDEF_OS_WINDOWS
+#define UNICODE
+#include <windows.h>
+#else
+#include <errno.h>
#include <unistd.h>
#endif
+
+
/*
=================
Error
strcat( text, "\n" );
-#if defined ( __linux__ ) || defined ( __APPLE__ )
- if ( errno != 0 ) {
- strcat( text, "errno: " );
- strcat( text, strerror( errno ) );
- strcat( text, "\n" );
- }
-#endif
-
-#ifdef _WIN32
+#if GDEF_OS_WINDOWS
if ( GetLastError() != 0 ) {
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
+ 0,
GetLastError(),
MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), // Default language
(LPTSTR) &lpMsgBuf,
0,
- NULL
+ 0
);
strcat( text, "GetLastError: " );
/*
Gtk will only crunch 0<=char<=127
this is a bit hackish, but I didn't find useful functions in win32 API for this
+ http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=516
*/
TCHAR *scan, *next = (TCHAR*)lpMsgBuf;
do
scan = next;
text[strlen( text ) + 1] = '\0';
if ( ( scan[0] >= 0 ) && ( scan[0] <= 127 ) ) {
- text[strlen( text )] = scan[0];
+ text[strlen( text )] = char(scan[0]);
}
else{
text[strlen( text )] = '?';
strcat( text, "\n" );
LocalFree( lpMsgBuf );
}
+#else
+ if ( errno != 0 ) {
+ strcat( text, "errno: " );
+ strcat( text, strerror( errno ) );
+ strcat( text, "\n" );
+ }
#endif
+
+#if 0
// we need to have a current context to call glError()
- if ( g_qeglobals_gui.d_glBase != NULL ) {
- // qglGetError .. can record several errors, clears after calling
+ if ( g_glwindow_globals.d_glBase != 0 ) {
+ // glGetError .. can record several errors, clears after calling
//++timo TODO: be able to deal with several errors if necessary, for now I'm just warning about pending error messages
// NOTE: forget that, most boards don't seem to follow the OpenGL standard
- GLenum iGLError = qglGetError();
+ GLenum iGLError = glGetError();
if ( iGLError != GL_NO_ERROR ) {
// use our own gluErrorString
- strcat( text, "qgluErrorString: " );
- strcat( text, (char*)qgluErrorString( iGLError ) );
+ strcat( text, "gluErrorString: " );
+ strcat( text, (char*)gluErrorString( iGLError ) );
strcat( text, "\n" );
}
}
+#endif
- strcat( text, "An unrecoverable error has occured.\n"
- "Would you like to edit Preferences before exiting Radiant?" );
-
- Sys_Printf( text );
-
- if ( gtk_MessageBox( NULL, text, "Error", MB_YESNO ) == IDYES ) {
- Sys_Printf( "Doing prefs..\n" );
- g_PrefsDlg.LoadPrefs();
- g_PrefsDlg.DoModal();
- }
-
- QGL_Shutdown();
+ strcat( text, "An unrecoverable error has occured.\n" );
- g_PrefsDlg.Destroy();
- g_dlgSurface.Destroy();
- g_dlgFind.Destroy();
+ ERROR_MESSAGE( text );
// force close logging if necessary
- g_PrefsDlg.mGamesDialog.m_bLogConsole = false;
- Sys_LogFile();
+ Sys_EnableLogFile( false );
_exit( 1 );
}
-
-void WINAPI Error( char *error, ... ){
- va_list argptr;
- char text[1024];
-
- va_start( argptr,error );
- vsprintf( text, error,argptr );
- va_end( argptr );
-
- Error( (const char *)text );
-}