home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Shareware 1999 March
/
PCShareware-3-99.iso
/
IMPLE
/
DJGPP.RAR
/
DJGPP2
/
XLIB-SR0.ZIP
/
SRC
/
XLIBEMU
/
ERROR.C
< prev
next >
Wrap
C/C++ Source or Header
|
1994-01-14
|
3KB
|
111 lines
/* $Id: error.c 1.2 1994/01/15 02:06:12 ulrich Exp $ */
/*
* error.c
*
* X library error functions.
*/
#include "Xlibemu.h"
#include <stdio.h>
extern char *strerror();
#define _SysErrorMsg(n) strerror(n)
int _XDefaultError(Display *, XErrorEvent *);
int _XDefaultIOError(Display *);
XErrorHandler _XErrorFunction = _XDefaultError;
XIOErrorHandler _XIOErrorFunction = _XDefaultIOError;
XErrorHandler _WErrorFunctions[MAX_CONN] = { 0 };
int
_WError (Display *dpy, XID resourceid, int error_code, int request_code)
{
XErrorEvent error;
error.type = 0;
error.display = dpy;
error.resourceid = resourceid;
error.serial = ++dpy->request;
error.error_code = error_code;
error.request_code = request_code;
error.minor_code = 0;
if (_WErrorFunctions[ConnectionNumber(dpy)])
return (*_WErrorFunctions[ConnectionNumber(dpy)]) (dpy, &error);
return (*_XErrorFunction) (dpy, & error);
}
void
_WIDValid (Display *dpy, XID resourceid, int error_code, int request_code)
{
if (resourceid == None)
_WError (dpy, resourceid, error_code, request_code);
}
int _XDefaultError (Display *dpy, XErrorEvent *event)
{
GrSetMode (GR_default_text);
fprintf (stderr, "X Error:\n");
fprintf (stderr, "Resource ID: %08x\n", event->resourceid);
fprintf (stderr, "Serial:\t%d\n", event->serial);
if (event->error_code <= BadImplementation)
fprintf (stderr, "Error code:\t%d\n", event->error_code);
else
fprintf (stderr, "Error code:\t%d\n", event->error_code);
fprintf (stderr, "Request code:\t%d\n", event->request_code);
fprintf (stderr, "Minor code:\t%d\n", event->minor_code);
exit (1);
}
/*
* _XDefaultIOError - Default fatal system error reporting routine. Called
* when an X internal system error is encountered.
*/
_XDefaultIOError (dpy)
Display *dpy;
{
(void) fprintf (stderr,
"XIO: fatal IO error %d (%s) on X server \"%s\"\r\n",
errno, _SysErrorMsg (errno), DisplayString (dpy));
(void) fprintf (stderr,
" after %lu requests (%lu known processed) with %d events remaining.\r\n",
NextRequest(dpy) - 1, LastKnownRequestProcessed(dpy),
QLength(dpy));
if (errno == EPIPE) {
(void) fprintf (stderr,
" The connection was probably broken by a server shutdown or KillClient.\r\n");
}
exit(1);
}
/*
* _XIOError - call user connection error handler and exit
*/
int _XIOError (dpy)
Display *dpy;
{
dpy->flags |= XlibDisplayIOError;
if (_XIOErrorFunction != NULL)
(*_XIOErrorFunction)(dpy);
else
_XDefaultIOError(dpy);
exit (1);
}
XErrorHandler
XSetDisplayErrorHandler (Display *dpy, XErrorHandler handler)
{
int i;
XErrorHandler oldhandler;
i = ConnectionNumber (dpy);
oldhandler = _WErrorFunctions[i];
_WErrorFunctions[i] = handler;
return oldhandler;
}