102 lines · 2.1 KB · C
RawDownload
/* Copyright (c) 1994-1996 David Hogan, see README for licence details */#include <stdio.h>#include <stdlib.h>#include <X11/X.h>#include <X11/Xlib.h>#include <X11/Xutil.h>#include <X11/Xproto.h>#include "dat.h"#include "fns.h" int 	ignore_badwindow; voidfatal(char *s){	fprintf(stderr, "rio: ");	perror(s);	fprintf(stderr, "\n");	exit(1);} inthandler(Display *d, XErrorEvent *e){	char msg[80], req[80], number[80]; 	if(initting && (e->request_code == X_ChangeWindowAttributes) && (e->error_code == BadAccess)){		fprintf(stderr, "rio: it looks like there's already a window manager running;  rio not started\n");		exit(1);	} 	if(ignore_badwindow && (e->error_code == BadWindow || e->error_code == BadColor))		return 0; 	XGetErrorText(d, e->error_code, msg, sizeof(msg));	sprintf(number, "%d", e->request_code);	XGetErrorDatabaseText(d, "XRequest", number, "", req, sizeof(req));	if(req[0] == '\0')		sprintf(req, "<request-code-%d>", (int)e->request_code); 	fprintf(stderr, "rio: %s(0x%x): %s\n", req, (int)e->resourceid, msg); 	if(initting){		fprintf(stderr, "rio: failure during initialisation; aborting\n");		exit(1);	}	return 0;} voidgraberror(char *f, int err){#ifdef	DEBUG	/* sick of "bug" reports; grab errors "just happen" */	char *s; 	switch (err){	case GrabNotViewable:		s = "not viewable";		break;	case AlreadyGrabbed:		s = "already grabbed";		break;	case GrabFrozen:		s = "grab frozen";		break;	case GrabInvalidTime:		s = "invalid time";		break;	case GrabSuccess:		return;	default:		fprintf(stderr, "rio: %s: grab error: %d\n", f, err);		return;	}	fprintf(stderr, "rio: %s: grab error: %s\n", f, s);#endif} #ifdef	DEBUG_EV#include "showevent/ShowEvent.c"#endif #ifdef	DEBUG voiddotrace(char *s, Client *c, XEvent *e){	if(debug == 0)		return;setbuf(stdout, 0);	fprintf(stderr, "rio: %s: c=%p", s, (void*)c);	if(c)		fprintf(stderr, " x %d y %d dx %d dy %d w 0x%x parent 0x%x", c->x, c->y, c->dx, c->dy, (int)c->window, (int)c->parent);#ifdef	DEBUG_EV	if(e){		fprintf(stderr, "\n\t");		ShowEvent(e);	}#endif	fprintf(stderr, "\n");}#endif