ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/main.C
(Generate patch)

Comparing rxvt-unicode/src/main.C (file contents):
Revision 1.379 by root, Tue Jun 5 11:10:58 2012 UTC vs.
Revision 1.380 by root, Tue Jun 5 11:35:58 2012 UTC

362} 362}
363 363
364/*----------------------------------------------------------------------*/ 364/*----------------------------------------------------------------------*/
365/* 365/*
366 * Exit gracefully, clearing the utmp entry and restoring tty attributes 366 * Exit gracefully, clearing the utmp entry and restoring tty attributes
367 * TODO: if debugging, this should free up any known resources if we can
368 */ 367 */
369static XErrorHandler old_xerror_handler; 368static XErrorHandler old_xerror_handler;
370 369
371static void 370static void
372rxvt_emergency_cleanup () 371rxvt_emergency_cleanup ()
380print_x_error (Display *dpy, XErrorEvent *event) 379print_x_error (Display *dpy, XErrorEvent *event)
381{ 380{
382 char buffer[BUFSIZ]; 381 char buffer[BUFSIZ];
383 char mesg[BUFSIZ]; 382 char mesg[BUFSIZ];
384 char number[32]; 383 char number[32];
385 const char mtype[] = "XlibMessage"; 384
385 rxvt_warn ("An X Error occurred, trying to continue after report.\n");
386
387 XGetErrorDatabaseText (dpy, "XlibMessage", "ErrorSerial", "Error Serial #%d", mesg, BUFSIZ);
388 snprintf (buffer, BUFSIZ, "+ %s\n", mesg); rxvt_warn (buffer, event->serial);
386 389
387 XGetErrorText (dpy, event->error_code, buffer, BUFSIZ); 390 XGetErrorText (dpy, event->error_code, buffer, BUFSIZ);
388 XGetErrorDatabaseText (dpy, mtype, "XError", "X Error", mesg, BUFSIZ); 391 XGetErrorDatabaseText (dpy, "XlibMessage", "XError", "X Error", mesg, BUFSIZ);
389 rxvt_warn ("An X Error occurred, trying to continue after report.\n");
390 rxvt_warn ("%s: %s\n", mesg, buffer); 392 rxvt_warn ("+ %s: %s\n", mesg, buffer);
393
391 XGetErrorDatabaseText (dpy, mtype, "MajorCode", "Request Major code %d", mesg, BUFSIZ); 394 XGetErrorDatabaseText (dpy, "XlibMessage", "MajorCode", "Request Major code %d", mesg, BUFSIZ);
392 rxvt_warn (strncat (mesg, "\n", BUFSIZ), event->request_code); 395 snprintf (buffer, BUFSIZ, "+ %s\n", mesg); rxvt_warn (buffer, event->request_code);
396
393 sprintf (number, "%d", event->request_code); 397 sprintf (number, "%d", event->request_code);
394 XGetErrorDatabaseText (dpy, "XRequest", number, "", buffer, BUFSIZ); 398 XGetErrorDatabaseText (dpy, "XRequest", number, "", buffer, BUFSIZ);
395 rxvt_warn ("(which is %s)\n", buffer); 399 rxvt_warn ("+ (which is %s)\n", buffer);
396 400
397 if (event->request_code >= 128) 401 if (event->request_code >= 128)
398 { 402 {
399 XGetErrorDatabaseText (dpy, mtype, "MinorCode", "Request Minor code %d", mesg, BUFSIZ); 403 XGetErrorDatabaseText (dpy, "XlibMessage", "MinorCode", "Request Minor code %d", mesg, BUFSIZ);
400 rxvt_warn (strncat (mesg, "\n", BUFSIZ), event->minor_code); 404 snprintf (buffer, BUFSIZ, "+ %s\n", mesg); rxvt_warn (buffer, event->minor_code);
401 } 405 }
402 406
403 if (event->error_code == BadWindow 407 if (event->error_code == BadWindow
404 || event->error_code == BadPixmap 408 || event->error_code == BadPixmap
405 || event->error_code == BadCursor 409 || event->error_code == BadCursor
410 || event->error_code == BadIDChoice 414 || event->error_code == BadIDChoice
411 || event->error_code == BadValue 415 || event->error_code == BadValue
412 || event->error_code == BadAtom) 416 || event->error_code == BadAtom)
413 { 417 {
414 if (event->error_code == BadValue) 418 if (event->error_code == BadValue)
415 XGetErrorDatabaseText (dpy, mtype, "Value", "Value 0x%x", mesg, BUFSIZ); 419 XGetErrorDatabaseText (dpy, "XlibMessage", "Value", "Value 0x%x", mesg, BUFSIZ);
416 else if (event->error_code == BadAtom) 420 else if (event->error_code == BadAtom)
417 XGetErrorDatabaseText (dpy, mtype, "AtomID", "AtomID 0x%x", mesg, BUFSIZ); 421 XGetErrorDatabaseText (dpy, "XlibMessage", "AtomID", "AtomID 0x%x", mesg, BUFSIZ);
418 else 422 else
419 XGetErrorDatabaseText (dpy, mtype, "ResourceID", "ResourceID 0x%x", mesg, BUFSIZ); 423 XGetErrorDatabaseText (dpy, "XlibMessage", "ResourceID", "ResourceID 0x%x", mesg, BUFSIZ);
420 424
421 rxvt_warn (strncat (mesg, "\n", BUFSIZ), event->resourceid); 425 snprintf (buffer, BUFSIZ, "+ %s\n", mesg); rxvt_warn (buffer, event->resourceid);
422 } 426 }
423
424 XGetErrorDatabaseText (dpy, mtype, "ErrorSerial", "Error Serial #%d", mesg, BUFSIZ);
425 rxvt_warn (strncat (mesg, "\n", BUFSIZ), event->serial);
426} 427}
427#endif 428#endif
428 429
429int ecb_cold 430int ecb_cold
430rxvt_xerror_handler (Display *display, XErrorEvent *event) 431rxvt_xerror_handler (Display *display, XErrorEvent *event)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines