|
|
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.