/* xscreensaver, Copyright © 1991-2021 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation. No representations are made about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. */ #ifdef HAVE_CONFIG_H # include "config.h" #endif #include #include #include "xmu.h" extern const char *progname; int XmuPrintDefaultErrorMessage (Display *dpy, XErrorEvent *event, FILE *fp) { /* The real libXmu version of this does localization and uses private, undocumented fields inside the Display struct to print things about errors from server-extension events. But the following is sufficient. */ char xerr[1024], opname[1024], num[20]; const char *b = progname; /* Convert the error code to its name, e.g. "BadWindow" */ XGetErrorText (dpy, event->error_code, xerr, sizeof(xerr)-1); /* Convert the request's ID number to its name, e.g., "XGetProperty" */ sprintf (num, "%d", event->request_code); XGetErrorDatabaseText (dpy, "XRequest", num, "", opname, sizeof(opname)-1); fprintf (fp, "%s: Failed request: %s\n", b, xerr); fprintf (fp, "%s: Major opcode: %d (%s)\n", b, event->request_code, opname); fprintf (fp, "%s: Resource id: 0x%lx\n", b, event->resourceid); fprintf (fp, "%s: Serial number: %ld / %ld\n\n", b, event->serial, NextRequest(dpy)-1); return 1; }