static void _initXrm(void) { if (!xrmInitialized) { XrmInitialize(); /* Just in case. */ anyQuark = XrmStringToQuark("?"); XSMPName[0] = proxyName[0] = anyQuark; XSMPClass[0] = XrmStringToClass("Client"); proxyClass[0] = XrmStringToClass("ProxyClient"); XSMPName[1] = XSMPClass[1] = proxyName[1] = proxyClass[1] = NULLQUARK; xrmInitialized = True; } }
char * XGetDefault( Display *dpy, /* display for defaults.... */ char _Xconst *prog, /* name of program for option */ register _Xconst char *name) /* name of option program wants */ { /* to get, for example, "font" */ XrmName names[3]; XrmClass classes[3]; XrmRepresentation fromType; XrmValue result; char *progname; #ifdef WIN32 char *progname2; #endif #ifdef __UNIXOS2__ char *progname2; char *dotpos; #endif /* * strip path off of program name (XXX - this is OS specific) */ progname = strrchr (prog, '/'); #ifdef WIN32 progname2 = strrchr (prog, '\\'); if (progname2 && (!progname || progname < progname2)) progname = progname2; #endif #ifdef __UNIXOS2__ /* Very similar to WIN32 */ progname2 = strrchr (prog, '\\'); if (progname2 && (!progname || progname < progname2)) progname = progname2; dotpos = strrchr (prog, '.'); if (dotpos && (dotpos>progname2)) *dotpos='\0'; #endif /* We take out the .exe suffix */ if (progname) progname++; else progname = (char *)prog; /* * see if database has ever been initialized. Lookups can be done * without locks held. */ LockDisplay(dpy); if (dpy->db == NULL) { dpy->db = InitDefaults(dpy); dpy->flags |= XlibDisplayDfltRMDB; } UnlockDisplay(dpy); names[0] = XrmStringToName(progname); names[1] = XrmStringToName(name); names[2] = NULLQUARK; classes[0] = XrmStringToClass("Program"); classes[1] = XrmStringToClass("Name"); classes[2] = NULLQUARK; (void)XrmQGetResource(dpy->db, names, classes, &fromType, &result); return (result.addr); }