static XrmDatabase InitDefaults( Display *dpy) /* display for defaults.... */ { XrmDatabase userdb; XrmDatabase xdb; char fname[PATH_MAX]; /* longer than any conceivable size */ char *xenv; XrmInitialize(); /* * See lib/Xt/Initialize.c * * First, get the defaults from the server; if none, then load from * ~/.Xdefaults. Next, if there is an XENVIRONMENT environment variable, * then load that file. */ if (dpy->xdefaults == NULL) { #ifdef _MSC_VER const char *slashDotXdefaults = ".Xdefaults"; #else const char *slashDotXdefaults = "/.Xdefaults"; #endif (void) GetHomeDir (fname, PATH_MAX - strlen (slashDotXdefaults) - 1); (void) strcat (fname, slashDotXdefaults); xdb = XrmGetFileDatabase (fname); } else { xdb = XrmGetStringDatabase(dpy->xdefaults); } if (!(xenv = getenv ("XENVIRONMENT"))) { #ifdef _MSC_VER const char *slashDotXdefaultsDash = ".Xdefaults-"; #else const char *slashDotXdefaultsDash = "/.Xdefaults-"; #endif int len; (void) GetHomeDir (fname, PATH_MAX - strlen (slashDotXdefaultsDash) - 1); (void) strcat (fname, slashDotXdefaultsDash); len = strlen (fname); (void) _XGetHostname (fname+len, PATH_MAX-len); xenv = fname; } userdb = XrmGetFileDatabase (xenv); XrmMergeDatabases (userdb, &xdb); return (xdb); #ifdef old if (fname[0] != '\0') userdb = XrmGetFileDatabase(fname); xdb = XrmGetStringDatabase(dpy->xdefaults); XrmMergeDatabases(userdb, &xdb); return xdb; #endif }
static int FindXDPSNXInXrmDatabase( Display *dpy, char **host, int *transport, int *port) { XrmDatabase rDB = NULL; /* for merged database */ XrmDatabase serverDB; char filenamebuf[1024]; char *filename = &filenamebuf[0]; char *env, *str_type; char name[255]; XrmValue value; int retVal = !Success; XrmInitialize(); (void) strcpy(name, "/usr/lib/X11/app-defaults/"); (void) strcat(name, XDPSNX_X_CLASS_NAME); /* try to get application defaults file, if there is any */ XrmMergeDatabases(XrmGetFileDatabase(name), &rDB); /* try to merge the server defaults. if not defined then use .Xdefaults */ if (XResourceManagerString(dpy) != NULL) { serverDB = XrmGetStringDatabase(XResourceManagerString(dpy)); } else { /* use the .Xdefaults */ (void) getHomeDir(filename); (void) strcat(filename, "/.Xdefaults"); serverDB = XrmGetFileDatabase(filename); } XrmMergeDatabases(serverDB, &rDB); /* try the XENVIRONMENT file, or if not defined, then .Xdefaults */ if ((env = getenv("XENVIRONMENT")) == NULL) { int len; env = getHomeDir(filename); (void) strcat(filename, "/.Xdefaults-"); len = strlen(env); (void) gethostname(env+len, 1024-len); } XrmMergeDatabases(XrmGetFileDatabase(env), &rDB); /* Now that the database is built, try to extract the values we want. */ if (XrmGetResource(rDB, XDPSNX_X_RESOURCE, XDPSNX_X_CLASS_NAME, &str_type, &value) == True) { retVal = ParseAgentString((char *) value.addr, host, transport, port); } (void) XrmDestroyDatabase(rDB); return(retVal); }
void wxXMergeDatabases (wxApp * theApp, Display * display) { XrmDatabase homeDB, serverDB, applicationDB; char filenamebuf[1024]; char *filename = &filenamebuf[0]; char *environment; wxString classname = theApp->GetClassName(); char name[256]; (void) strcpy (name, "/usr/lib/X11/app-defaults/"); (void) strcat (name, classname.c_str()); /* Get application defaults file, if any */ applicationDB = XrmGetFileDatabase (name); (void) XrmMergeDatabases (applicationDB, &wxResourceDatabase); /* Merge server defaults, created by xrdb, loaded as a property of the root * window when the server initializes and loaded into the display * structure on XOpenDisplay; * if not defined, use .Xdefaults */ if (XResourceManagerString (display) != NULL) { serverDB = XrmGetStringDatabase (XResourceManagerString (display)); } else { (void) GetIniFile (filename, NULL); serverDB = XrmGetFileDatabase (filename); } XrmMergeDatabases (serverDB, &wxResourceDatabase); /* Open XENVIRONMENT file, or if not defined, the .Xdefaults, * and merge into existing database */ if ((environment = getenv ("XENVIRONMENT")) == NULL) { size_t len; environment = GetIniFile (filename, NULL); len = strlen (environment); wxString hostname = wxGetHostName(); if ( !!hostname ) strncat(environment, hostname, 1024 - len); } homeDB = XrmGetFileDatabase (environment); XrmMergeDatabases (homeDB, &wxResourceDatabase); }
void aX_open_second_disp(char *display_name, aX_default_resources *defres) { char *disp_res; XrmDatabase serverDB; if((defres->disp = XOpenDisplay(display_name)) == NULL) { fprintf(stderr, "%s: aX_open_second_disp: cannot connect to X server %s\n", prog_name, XDisplayName(display_name)); exit(-1); } disp_res = XResourceManagerString(defres->disp); if(disp_res) serverDB = XrmGetStringDatabase(disp_res); else serverDB = NULL; XrmMergeDatabases(serverDB, &rDB); get_def_res(defres); add_disp(defres); }
// Return a database of default settings XrmDatabase app_defaults(Display *display) { static XrmDatabase db = NULL; if (db != NULL) return db; // Add builtin fallback defaults. int i = 0; while (ddd_fallback_resources[i] != 0) XrmPutLineResource(&db, ddd_fallback_resources[i++]); // Add app-defaults file, overriding fallback defaults. static String app_name = 0; static String app_class = 0; if (app_name == 0) XtGetApplicationNameAndClass(display, &app_name, &app_class); String app_defaults_file = XtResolvePathname(display, NULL, app_class, NULL, NULL, NULL, 0, NULL); if (app_defaults_file != NULL) { XrmDatabase db2 = XrmGetFileDatabase(app_defaults_file); if (db2 != 0) XrmMergeDatabases(db2, &db); } return db; }
void MotifUI::SetDefaultResources(const Widget, const String *resources) { XrmDatabase rdb = NULL; int i; rdb = XrmGetStringDatabase(""); i = 0; while (resources[i]) { char *buf = new char[1000]; sprintf(buf, "%s%s", _name, resources[i]); XrmPutLineResource(&rdb, buf); i++; delete [] buf; } if (rdb) { XrmMergeDatabases(XtDatabase(display), &rdb); XrmSetDatabase(display, rdb); } }
/* * Not yet used but may be useful. * */ void wxSetDefaultResources (const Widget w, const char **resourceSpec, const char *name) { int i; Display *dpy = XtDisplay (w); // Retrieve the display pointer XrmDatabase rdb = NULL; // A resource data base // Create an empty resource database rdb = XrmGetStringDatabase (""); // Add the Component resources, prepending the name of the component i = 0; while (resourceSpec[i] != NULL) { char buf[1000]; sprintf (buf, "*%s%s", name, resourceSpec[i++]); XrmPutLineResource (&rdb, buf); } // Merge them into the Xt database, with lowest precendence if (rdb) { #if (XlibSpecificationRelease>=5) XrmDatabase db = XtDatabase (dpy); XrmCombineDatabase (rdb, &db, False); #else XrmMergeDatabases (dpy->db, &rdb); dpy->db = rdb; #endif } }
void Blackbox::timeout(bt::Timer *) { XrmDatabase new_blackboxrc = (XrmDatabase) 0; std::string style = "session.styleFile: "; style += _resource.styleFilename(); XrmPutLineResource(&new_blackboxrc, style.c_str()); XrmDatabase old_blackboxrc = XrmGetFileDatabase(_resource.rcFilename()); XrmMergeDatabases(new_blackboxrc, &old_blackboxrc); XrmPutFileDatabase(old_blackboxrc, _resource.rcFilename()); if (old_blackboxrc) XrmDestroyDatabase(old_blackboxrc); std::for_each(menuTimestamps.begin(), menuTimestamps.end(), bt::PointerAssassin()); menuTimestamps.clear(); std::for_each(screen_list, screen_list + screen_list_count, std::mem_fun(&BScreen::reconfigure)); bt::Font::clearCache(); bt::PixmapCache::clearCache(); bt::Pen::clearCache(); // clear the color cache here to allow the pen cache to deallocate // all unused colors bt::Color::clearCache(); }
void mergeDatabases(void) { /* using global rDB dsply */ XrmDatabase homeDB,serverDB,applicationDB; char filenamebuf[1024]; char *filename = &filenamebuf[0]; char *classname = "Axiom"; char name[255]; (void) XrmInitialize(); (void) strcpy(name, "/usr/lib/X11/app-defaults/"); (void) strcat(name, classname); applicationDB = XrmGetFileDatabase(name); (void) XrmMergeDatabases(applicationDB, &rDB); if (XResourceManagerString(dsply) != NULL) serverDB = XrmGetStringDatabase(XResourceManagerString(dsply)); else { (void) strcpy(filename,getenv("HOME")); (void) strcat(filename,"/.Xdefaults"); serverDB = XrmGetFileDatabase(filename); } XrmMergeDatabases(serverDB,&rDB); if ( getenv ("XENVIRONMENT") == NULL) { int len; (void) strcpy(filename,getenv("HOME")); (void) strcat(filename,"/.Xdefaults-"); len = strlen(filename); (void) gethostname(filename+len,1024-len); } else (void) strcpy (filename,getenv ("XENVIRONMENT")); homeDB = XrmGetFileDatabase(filename); XrmMergeDatabases(homeDB,&rDB); }
/* * Read the user preferences from xdvirc_filename and merge them into the * current resource database *and* into m_user_db so that all of them are * saved again when xdvi exits. */ void read_user_preferences(Widget toplevel, const char *filename) { char *fullpath; XrmDatabase db; #if XtSpecificationRelease == 4 XrmDatabase file_db; #endif fullpath = get_xdvirc_path(filename); TRACE_GUI((stderr, "Reading resources from `%s'", fullpath)); db = XtDatabase(XtDisplay(toplevel)); #if XtSpecificationRelease == 4 file_db = XrmGetFileDatabase(fullpath); XrmMergeDatabases(file_db, &db); XrmMergeDatabases(file_db, &m_user_db); #else /* Xt >= X11R5 */ XrmCombineFileDatabase(fullpath, &db, True); XrmCombineFileDatabase(fullpath, &m_user_db, True); #endif free(fullpath); }
int read_extra_resources(char *data_in) /* * Read in the data-specific resource file. */ { char fname[128]; int found = 0; int ok = 1; FILE *fp; static char *suffix = ".resources"; if (data_in != "" && strcmp(data_in, "stdin") != 0) { (void) strcpy(fname, data_in); (void) strcat(fname, suffix); if ( (fp = fopen(fname,"r")) != NULL) found = 1; } if (found) { XrmDatabase newdb; if ( (newdb = (XrmDatabase) XrmGetFileDatabase(fname)) != NULL ) { XrmDatabase dispdb; dispdb = XrmGetDatabase(display); XrmMergeDatabases(newdb, &dispdb); XrmSetDatabase(display, dispdb); } else { ok = 0; fprintf(stderr, "read_extra_resources: problem reading data-specific resource file\n"); exit(0); } /* * Close the data file */ if (fclose(fp) == EOF) fprintf(stderr, "read_extra_resources: error in fclose"); } return(ok); }
void theme_init(Display *display) { char b[1024], *tr; char *p, *q; XrmDatabase themedb, olddb; XrmValue vr; sprintf(b, "%s/theme", siag_basedir); themedb = XrmGetFileDatabase(b); if (!themedb) { /* use kde2 as default */ sprintf(b, "%s/common/themes/theme.kde2", datadir); themedb = XrmGetFileDatabase(b); } if (themedb) { olddb = XrmGetDatabase(display); XrmMergeDatabases(themedb, &olddb); XrmSetDatabase(display, olddb); if (XrmGetResource(olddb, "PIXPATH", XtNstring, &tr, &vr)) { strcpy(b, "PIXPATH="); p = b+strlen(b); q = vr.addr; while (*q) { if (q[0] == '.' && q[1] == '.' && q[2] == '.') { strcpy(p, datadir); p += strlen(p); q += 2; } else { *p++ = *q; } q++; } *p = '\0'; putenv(MwStrdup(b)); } if (XrmGetResource(olddb, "XAWM_THEME", XtNstring, &tr, &vr)) { sprintf(b, "XAWM_THEME=%s", vr.addr); putenv(MwStrdup(b)); } } }
/* * Merge the resource `name' with a value specified by `fmt' into * the database `db' (if db == NULL, use m_user_db). */ void store_preference(XrmDatabase *db, const char *name, const char *fmt, ...) { size_t offset = strlen("xdvi."); size_t name_len = strlen(name); char *name_buf = xmalloc(name_len + offset + 1); char *buf = NULL; XrmDatabase tmp_db = NULL; if (db == NULL) db = &m_user_db; XDVI_GET_STRING_ARGP(buf, fmt); memcpy(name_buf, "xdvi.", offset); strcpy(name_buf + offset, name); TRACE_GUI((stderr, "storing resource: `%s: %s'", name_buf, buf)); XrmPutStringResource(&tmp_db, name_buf, buf); XrmMergeDatabases(tmp_db, db); free(buf); free(name_buf); }
void Parse_options(int *argcp, char **argvp, char *realName, char *host, int *port, int *my_team, int *list, int *join, int *motd, char *nickName, char *dispName, char *shut_msg) { int i, j, firstKeyDef, num; keys_t key; KeySym ks; char *ptr, *str, *myName = "xpilot", *myClass = "XPilot", resValue[MAX_CHARS]; XrmDatabase argDB, rDB; XrmInitialize(); argDB = 0; XrmParseCommand(&argDB, opts, NELEM(opts), myName, argcp, argvp); /* * Check for bad arguments. */ for (i = 1; i < *argcp; i++) { if (argvp[i][0] == '-') { errno = 0; error("Unknown option '%s'", argvp[i]); error("Type: %s -help to see a list of options", argvp[0]); exit(1); } } if (Get_resource(argDB, myName, myClass, "help", NULL, resValue, sizeof resValue) != 0) { Usage(); } if (Get_resource(argDB, myName, myClass, "version", NULL, resValue, sizeof resValue) != 0) { puts(TITLE); exit(0); } Get_resource(argDB, myName, myClass, "shutdown", "", shut_msg, MAX_CHARS); if (Get_string_resource(argDB, myName, myClass, "display", NULL, dispName, MAX_DISP_LEN) == 0 || dispName[0] == '\0') { #ifdef VMS if ((ptr = getenv("DECW$DISPLAY")) != NULL) { #else if ((ptr = getenv("DISPLAY")) != NULL) { #endif strncpy(dispName, ptr, MAX_DISP_LEN); dispName[MAX_DISP_LEN - 1] = '\0'; } else { #ifdef VMS strcpy(dispName, "::0.0"); sprintf(dispName, "%s::0.0", host); #else strcpy(dispName, ":0.0"); #endif } } if ((dpy = XOpenDisplay(dispName)) == NULL) { error("Can't open display '%s'", dispName); exit(1); } Get_resource(argDB, myName, myClass, "visual", "", visualName, sizeof visualName); if (strncasecmp(visualName, "list", 4) == 0) { List_visuals(); exit(0); } Get_file_defaults(&rDB, myName, myClass); XrmMergeDatabases(argDB, &rDB); Get_string_resource(rDB, myName, myClass, "geometry", "", resValue, sizeof resValue); geometry = strdup(resValue); Get_resource(rDB, myName, myClass, "name", realName, nickName, MAX_NAME_LEN); CAP_LETTER(nickName[0]); if (nickName[0] < 'A' || nickName[0] > 'Z') { errno = 0; error("Your player name \"%s\" should start with an uppercase letter", nickName); exit(1); } strncpy(realname, realName, sizeof(realname) - 1); strncpy(name, nickName, sizeof(name) - 1); Get_int_resource(rDB, myName, myClass, "team", TEAM_NOT_SET, my_team); if (*my_team < 0 || *my_team > 9) { *my_team = TEAM_NOT_SET; } team = *my_team; Get_int_resource(rDB, myName, myClass, "port", SERVER_PORT, port); Get_bool_resource(rDB, myName, myClass, "list", "False", list); Get_bool_resource(rDB, myName, myClass, "join", "False", join); Get_bool_resource(rDB, myName, myClass, "motd", "True", motd); Get_float_resource(rDB, myName, myClass, "power", 45.0, &power); Get_float_resource(rDB, myName, myClass, "turnSpeed", 35.0, &turnspeed); Get_float_resource(rDB, myName, myClass, "turnResistance", 0.12, &turnresistance); Get_float_resource(rDB, myName, myClass, "altPower", 35.0, &power_s); Get_float_resource(rDB, myName, myClass, "altTurnSpeed", 25.0, &turnspeed_s); Get_float_resource(rDB, myName, myClass, "altTurnResistance", 0.12, &turnresistance_s); Get_float_resource(rDB, myName, myClass, "sparkProb", 0.50, &spark_prob); spark_rand = (int)(spark_prob * MAX_SPARK_RAND + 0.5f); Get_int_resource(rDB, myName, myClass, "charsPerSecond", 50, &charsPerSecond); Get_bool_resource(rDB, myName, myClass, "markingLights", "True", &i); markingLights = (i == false) ? false : true; Get_int_resource(rDB, myName, myClass, "backgroundPointDist", 8, &map_point_distance); Get_int_resource(rDB, myName, myClass, "backgroundPointSize", DEF_MAP_POINT_SIZE, &map_point_size); LIMIT(map_point_size, MIN_MAP_POINT_SIZE, MAX_MAP_POINT_SIZE); Get_int_resource(rDB, myName, myClass, "sparkSize", DEF_SPARK_SIZE, &spark_size); LIMIT(spark_size, MIN_SPARK_SIZE, MAX_SPARK_SIZE); Get_resource(rDB, myName, myClass, "visual", "", visualName, sizeof visualName); Get_bool_resource(rDB, myName, myClass, "mono", "False", &i); mono = (i != 0) ? true : false; Get_bool_resource(rDB, myName, myClass, "colorSwitch", "True", &i); colorSwitch = (i != 0) ? true : false; Get_int_resource(rDB, myName, myClass, "maxColors", 4, &maxColors); Get_string_resource(rDB, myName, myClass, "black", "", color_names[BLACK], sizeof(color_names[BLACK])); Get_string_resource(rDB, myName, myClass, "white", "", color_names[WHITE], sizeof(color_names[WHITE])); Get_string_resource(rDB, myName, myClass, "blue", "", color_names[BLUE], sizeof(color_names[BLUE])); Get_string_resource(rDB, myName, myClass, "red", "", color_names[RED], sizeof(color_names[RED])); for (i = 0; i < MAX_COLORS; i++) { char buf[8], def[MAX_COLOR_LEN]; sprintf(buf, "color%d", i); strcpy(def, (i < NUM_COLORS) ? color_names[i] : ""); Get_string_resource(rDB, myName, myClass, buf, def, color_names[i], sizeof(color_names[i])); } instruments = 0; Get_bool_resource(rDB, myName, myClass, "showShipName", "True", &i); if (i) { SET_BIT(instruments, SHOW_SHIP_NAME); } Get_bool_resource(rDB, myName, myClass, "showHUD", "True", &i); if (i) { SET_BIT(instruments, SHOW_HUD_INSTRUMENTS); } Get_bool_resource(rDB, myName, myClass, "verticalHUDLine", "False", &i); if (i) { SET_BIT(instruments, SHOW_HUD_VERTICAL); } Get_bool_resource(rDB, myName, myClass, "horizontalHUDLine", "True", &i); if (i) { SET_BIT(instruments, SHOW_HUD_HORIZONTAL); } Get_bool_resource(rDB, myName, myClass, "fuelMeter", "False", &i); if (i) { SET_BIT(instruments, SHOW_FUEL_METER); } Get_bool_resource(rDB, myName, myClass, "fuelGauge", "True", &i); if (i) { SET_BIT(instruments, SHOW_FUEL_GAUGE); } Get_bool_resource(rDB, myName, myClass, "turnSpeedMeter", "False", &i); if (i) { SET_BIT(instruments, SHOW_TURNSPEED_METER); } Get_bool_resource(rDB, myName, myClass, "powerMeter", "False", &i); if (i) { SET_BIT(instruments, SHOW_POWER_METER); } Get_bool_resource(rDB, myName, myClass, "packetSizeMeter", "False", &i); if (i) { SET_BIT(instruments, SHOW_PACKET_SIZE_METER); } Get_bool_resource(rDB, myName, myClass, "packetLossMeter", "False", &i); if (i) { SET_BIT(instruments, SHOW_PACKET_LOSS_METER); } Get_bool_resource(rDB, myName, myClass, "packetDropMeter", "False", &i); if (i) { SET_BIT(instruments, SHOW_PACKET_DROP_METER); } Get_bool_resource(rDB, myName, myClass, "slidingRadar", "False", &i); if (i) { SET_BIT(instruments, SHOW_SLIDING_RADAR); } Get_bool_resource(rDB, myName, myClass, "outlineWorld", "False", &i); if (i) { SET_BIT(instruments, SHOW_OUTLINE_WORLD); } Get_bool_resource(rDB, myName, myClass, "clock", "False", &i); if (i) { SET_BIT(instruments, SHOW_CLOCK); } Get_float_resource(rDB, myName, myClass, "speedFactHUD", 0.0, &hud_move_fact); Get_float_resource(rDB, myName, myClass, "speedFactPTR", 0.0, &ptr_move_fact); Get_int_resource(rDB, myName, myClass, "fuelNotify", 500, &fuelLevel3); Get_int_resource(rDB, myName, myClass, "fuelWarning", 200, &fuelLevel2); Get_int_resource(rDB, myName, myClass, "fuelCritical", 100, &fuelLevel1); Get_resource(rDB, myName, myClass, "gameFont", GAME_FONT, gameFontName, sizeof gameFontName); Get_resource(rDB, myName, myClass, "messageFont", MESSAGE_FONT, messageFontName, sizeof messageFontName); Get_resource(rDB, myName, myClass, "scoreListFont", SCORE_LIST_FONT, scoreListFontName, sizeof scoreListFontName); Get_resource(rDB, myName, myClass, "buttonFont", BUTTON_FONT, buttonFontName, sizeof buttonFontName); Get_resource(rDB, myName, myClass, "textFont", TEXT_FONT, textFontName, sizeof textFontName); Get_resource(rDB, myName, myClass, "talkFont", TALK_FONT, talkFontName, sizeof talkFontName); Get_int_resource(rDB, myName, myClass, "receiveWindowSize", DEF_RECEIVE_WINDOW_SIZE, &receive_window_size); LIMIT(receive_window_size, MIN_RECEIVE_WINDOW_SIZE, MAX_RECEIVE_WINDOW_SIZE); #ifdef SOUND Get_string_resource(rDB, myName, myClass, "sounds", SOUNDFILE, sounds, sizeof sounds); Get_int_resource(rDB, myName, myClass, "maxVolume", 100, &maxVolume); Get_resource(rDB, myName, myClass, "audioServer", NULL, audioServer, sizeof audioServer); #endif Get_bool_resource(rDB, myName, myClass, "toggleShield", "False", &toggle_shield); /* * Key bindings */ maxKeyDefs = 2 * NUM_KEYS; if ((keyDefs = (keydefs_t *) malloc(maxKeyDefs * sizeof(keydefs_t))) == NULL) { error("No memory for key bindings"); exit(1); } num = 0; for (i = 0; i < NELEM(keyResources); i++) { key = keyResources[i].key; Get_resource(rDB, myName, myClass, keyResources[i].resource, keyResources[i].fallback, resValue, sizeof resValue); firstKeyDef = num; for (str = strtok(resValue, " \t\r\n"); str != NULL; str = strtok(NULL, " \t\r\n")) { if ((ks = XStringToKeysym(str)) == NoSymbol) { printf("\"%s\" is not a valid keysym.\n", str); continue; } for (j = firstKeyDef; j < num; j++) { if (keyDefs[j].keysym == ks && keyDefs[j].key == key) { break; } } if (j < num) { continue; } if (num >= maxKeyDefs) { maxKeyDefs += NUM_KEYS; if ((keyDefs = (keydefs_t *) realloc(keyDefs, maxKeyDefs * sizeof(keydefs_t))) == NULL) { error("No memory for key bindings"); exit(1); } } keyDefs[num].keysym = ks; keyDefs[num].key = key; num++; } } if (num < maxKeyDefs) { maxKeyDefs = num; if ((keyDefs = (keydefs_t *) realloc(keyDefs, maxKeyDefs * sizeof(keydefs_t))) == NULL) { error("No memory for key bindings"); exit(1); } } XrmDestroyDatabase(rDB); #ifdef SOUND audioInit(dispName); #endif /* SOUND */ }
void merge_into_user_db(XrmDatabase db) { XrmMergeDatabases(db, &m_user_db); }
char* MpXResource (const char *Application, const char *Name, const char *Class) { const int STRLEN = 256; static int init = true; static XrmDatabase DefaultResource; char CompName[STRLEN], CompClass[STRLEN], *type; XrmValue result; // initialize X resource manager if (init) { init = false; XrmInitialize(); DefaultResource = (XrmDatabase) 0; char tmp[STRLEN]; XrmDatabase EnvironmentResource; // search file $HOME/.Xresources char *homedir = getenv("HOME"); if (!homedir) homedir = "."; sprintf(tmp,"%s/.Xresources", homedir); DefaultResource = XrmGetFileDatabase(tmp); #ifdef DEBUG cerr << "seaching HOME='" << tmp << "' " << (DefaultResource ? "was successful" : "failed") << endl; #endif // merge file given by $XENVIRONMENT char *xenviron = (char *) getenv("XENVIRONMENT"); if (xenviron) { EnvironmentResource = XrmGetFileDatabase(xenviron); #ifdef DEBUG cerr << "seaching XENVIRONMENT='" << xenviron << "' " << (EnvironmentResource ? "was successful" : "failed") << endl; #endif // merge both databases if (EnvironmentResource) { if (!DefaultResource) DefaultResource = EnvironmentResource; else XrmMergeDatabases(EnvironmentResource, &DefaultResource); } } } // no resource database available if (!DefaultResource) return 0; // now search resource in database strcpy (CompName, Application); strcat (CompName, "."); strcat (CompName, Name); strcpy (CompClass, "Program"); strcat (CompClass, "."); strcat (CompClass, Class); XrmGetResource(DefaultResource, CompName, CompClass, &type, &result); return result.addr; }
void aX_open_disp(aX_options *useropt, int useroptlen, int *argcp, char *argv[], aX_default_resources *defres) { XrmValue value; char *str_type; char *disp_res; char *environment; char *display_name = NULL; char filename[MAX_FILENAME_LEN]; int i; XrmDatabase commandlineDB = NULL, usercommandlineDB = NULL; XrmDatabase homeDB, serverDB, applicationDB; /* if(disp_start.next_disp != NULL) { fprintf(stderr, "aX_open_disp: Cannot open first display twice.\n"); exit(-1); } */ XrmInitialize(); class_name[0] = '\0'; class_name[MAX_CLASS_NAME_LEN] = '\0'; if(defres->class_name != NULL) strncpy(class_name, defres->class_name, MAX_CLASS_NAME_LEN); fill_event_info(); for(i = 1; i < *argcp; i++) if(strcmp(argv[i], "-name") == 0 && ++i < *argcp){ defres->prog_name = argv[i]; break; } prog_name[0] = '\0'; prog_name[MAX_PROG_NAME_LEN] = '\0'; if(defres->prog_name != NULL) strncpy(prog_name, defres->prog_name, MAX_PROG_NAME_LEN); else strncpy(prog_name, argv[0], MAX_PROG_NAME_LEN); defres->prog_name = prog_name; XrmParseCommand(&commandlineDB, (XrmOptionDescRec *) opTable, opTableEntries, prog_name, argcp, argv); if(useropt != NULL) XrmParseCommand(&usercommandlineDB, (XrmOptionDescRec *) useropt, useroptlen, prog_name, argcp, argv); else usercommandlineDB = NULL; /* if(*argcp != 1) { fprintf(stderr, "%s: aX_open_disp: Unrecognised options in command line!\n", prog_name); exit(-1); } */ if(XrmGetResource(commandlineDB, pname(".display"), pclass(".Display"), &str_type, &value)) display_name = (char *) value.addr; if((defres->disp = XOpenDisplay(display_name)) == NULL) { fprintf(stderr, "%s: aX_open_disp: cannot connect to X server %s\n", prog_name, XDisplayName(display_name)); exit(-1); } applicationDB = XrmGetFileDatabase( addstr("/usr/lib/X11/app-defaults/", class_name, filename, MAX_FILENAME_LEN)); /* if(defres->disp->xdefaults) serverDB = XrmGetStringDatabase(defres->disp->xdefaults); else serverDB = NULL; */ disp_res = XResourceManagerString(defres->disp); if(disp_res) serverDB = XrmGetStringDatabase(disp_res); else serverDB = NULL; if((environment = getenv("XENVIRONMENT")) != NULL) homeDB = XrmGetFileDatabase(environment); else homeDB = NULL; XrmMergeDatabases(applicationDB, &rDB); XrmMergeDatabases(serverDB, &rDB); XrmMergeDatabases(homeDB, &rDB); XrmMergeDatabases(commandlineDB, &rDB); XrmMergeDatabases(usercommandlineDB, &rDB); get_def_res(defres); add_disp(defres); }
static void Get_file_defaults(XrmDatabase *rDBptr, char *myName, char *myClass) { #ifdef VMS #define MAXPATHLEN 1024 #endif int len; char *ptr, *lang = getenv("LANG"), *home = getenv("HOME"), path[MAXPATHLEN]; XrmDatabase tmpDB; sprintf(path, "%s%s", LIBDIR, myClass); *rDBptr = XrmGetFileDatabase(path); #ifdef VMS /* * None of the paths generated will be valid VMS file names. */ tmpDB = XrmGetFileDatabase("SYS$LOGIN:decw$xdefaults.dat"); XrmMergeDatabases(tmpDB, rDBptr); tmpDB = XrmGetFileDatabase("DECW$USER_DEFAULTS:xpilot.dat"); XrmMergeDatabases(tmpDB, rDBptr); #else if (lang != NULL) { sprintf(path, "/usr/lib/X11/%s/app-defaults/%s", lang, myClass); if (access(path, 0) == -1) { sprintf(path, "/usr/lib/X11/app-defaults/%s", myClass); } } else { sprintf(path, "/usr/lib/X11/app-defaults/%s", myClass); } tmpDB = XrmGetFileDatabase(path); XrmMergeDatabases(tmpDB, rDBptr); if ((ptr = getenv("XUSERFILESEARCHPATH")) != NULL) { sprintf(path, "%s/%s", ptr, myClass); tmpDB = XrmGetFileDatabase(path); XrmMergeDatabases(tmpDB, rDBptr); } else if ((ptr = getenv("XAPPLRESDIR")) != NULL) { if (lang != NULL) { sprintf(path, "%s/%s/%s", ptr, lang, myClass); if (access(path, 0) == -1) { sprintf(path, "%s/%s", ptr, myClass); } } else { sprintf(path, "%s/%s", ptr, myClass); } tmpDB = XrmGetFileDatabase(path); XrmMergeDatabases(tmpDB, rDBptr); } else if (home != NULL) { if (lang != NULL) { sprintf(path, "%s/app-defaults/%s/%s", home, lang, myClass); if (access(path, 0) == -1) { sprintf(path, "%s/app-defaults/%s", home, myClass); } } else { sprintf(path, "%s/app-defaults/%s", home, myClass); } tmpDB = XrmGetFileDatabase(path); XrmMergeDatabases(tmpDB, rDBptr); } if ((ptr = XResourceManagerString(dpy)) != NULL) { tmpDB = XrmGetStringDatabase(ptr); XrmMergeDatabases(tmpDB, rDBptr); } else if (home != NULL) { sprintf(path, "%s/.Xdefaults", home); tmpDB = XrmGetFileDatabase(path); XrmMergeDatabases(tmpDB, rDBptr); } if ((ptr = getenv("XENVIRONMENT")) != NULL) { tmpDB = XrmGetFileDatabase(ptr); XrmMergeDatabases(tmpDB, rDBptr); } else if (home != NULL) { sprintf(path, "%s/.Xdefaults-", home); len = strlen(path); gethostname(&path[len], sizeof path - len); path[sizeof path - 1] = '\0'; tmpDB = XrmGetFileDatabase(path); XrmMergeDatabases(tmpDB, rDBptr); } if (home != NULL) { sprintf(path, "%s/.xpilotrc", home); tmpDB = XrmGetFileDatabase(path); XrmMergeDatabases(tmpDB, rDBptr); } #endif }