|
|
1.1 ! root 1: #include "copyright.h" ! 2: ! 3: /* $Header: XErrDes.c,v 11.15 87/06/14 18:00:13 jg Exp $ */ ! 4: /* Copyright Massachusetts Institute of Technology 1986 */ ! 5: ! 6: #include <stdio.h> ! 7: #include "Xlibint.h" ! 8: #include "Xresource.h" ! 9: #include "Quarks.h" ! 10: #include <strings.h> ! 11: ! 12: char *XErrorList[] = { ! 13: /* No error */ "", ! 14: /* BadRequest */ "bad request code", ! 15: /* BadValue */ "integer parameter out of range", ! 16: /* BadWindow */ "parameter not a Window", ! 17: /* BadPixmap */ "parameter not a Pixmap", ! 18: /* BadAtom */ "parameter not an Atom", ! 19: /* BadCursor */ "parameter not a Cursor", ! 20: /* BadFont */ "parameter not a Font", ! 21: /* BadMatch */ "parameter mismatch", ! 22: /* BadDrawable */ "parameter not a Pixmap or Window", ! 23: /* BadAccess */ "attempt to access private resource", ! 24: /* BadAlloc */ "insufficient resources", ! 25: /* BadColor */ "no such colormap", ! 26: /* BadGC */ "parameter not a GC", ! 27: /* BadIDChoice */ "invalid resource ID for this connection", ! 28: /* BadName */ "font or color name does not exist", ! 29: /* BadLength */ "request length incorrect; internal Xlib error", ! 30: /* BadImplementation */ "server does not implement function", ! 31: }; ! 32: ! 33: XGetErrorText(dpy, code, buffer, nbytes) ! 34: register int code; ! 35: register Display *dpy; ! 36: char *buffer; ! 37: int nbytes; ! 38: { ! 39: ! 40: char *defaultp = NULL; ! 41: char buf[32]; ! 42: register _XExtension *ext; ! 43: ! 44: sprintf(buf, "%d\0", code); ! 45: ! 46: ! 47: if (code <= (sizeof(XErrorList)/ sizeof (char *)) && code > 0) { ! 48: defaultp = XErrorList[code]; ! 49: XGetErrorDatabaseText(dpy, "XProtoError", buf, defaultp, buffer, nbytes); ! 50: } ! 51: ext = dpy->ext_procs; ! 52: while (ext) { /* call out to any extensions interested */ ! 53: if (ext->error_string != NULL) ! 54: (*ext->error_string)(dpy, code, &ext->codes, buffer, nbytes); ! 55: ext = ext->next; ! 56: } ! 57: return; ! 58: } ! 59: ! 60: XGetErrorDatabaseText(dpy, name, type, defaultp, buffer, nbytes) ! 61: register char *name, *type; ! 62: char *defaultp; ! 63: register Display *dpy; ! 64: char *buffer; ! 65: int nbytes; ! 66: { ! 67: static XrmResourceDataBase db; ! 68: XrmName namelist[5]; ! 69: XrmClass classlist[5]; ! 70: XrmValue result; ! 71: static int initialized = False; ! 72: char temp[BUFSIZ]; ! 73: ! 74: if (initialized == False) { ! 75: _XInitErrorHandling (&db); ! 76: initialized = True; ! 77: } ! 78: sprintf(temp, "%s.%s", name, type); ! 79: XrmStringToNameList(temp, namelist); ! 80: XrmStringToClassList("ErrorType.ErrorNumber", classlist); ! 81: ! 82: XrmGetResource(DefaultScreen(dpy), db, ! 83: namelist, classlist, XrmQString, &result); ! 84: if (result.addr) { ! 85: (void) strncpy (buffer, result.addr, nbytes); ! 86: if (result.size < nbytes) buffer[result.size] = 0; ! 87: } else (void) strncpy(buffer, defaultp, nbytes); ! 88: } ! 89: ! 90: ! 91: _XInitErrorHandling (db) ! 92: XrmResourceDataBase *db; ! 93: { ! 94: XrmResourceDataBase errordb; ! 95: ! 96: XrmInitialize(); ! 97: ! 98: errordb = XrmGetDataBase(ErrorDataBase); ! 99: XrmMergeDataBases(errordb, db); ! 100: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.