--- rxvt-unicode/src/xdefaults.C 2011/12/18 02:14:59 1.160 +++ rxvt-unicode/src/xdefaults.C 2012/05/25 08:27:47 1.164 @@ -49,6 +49,9 @@ #define INFO(opt, arg, desc) \ {0, Optflag_Info, -1, NULL, (opt), (arg), (desc)} +#define RINFO(kw, arg) \ + {0, Optflag_Info, -1, (kw), NULL, (arg), NULL} + /* STRG () - command-line option, with/without resource */ #define STRG(rsp, kw, opt, arg, desc) \ {0, 0, (rsp), (kw), (opt), (arg), (desc)} @@ -269,13 +272,17 @@ BOOL (Rs_iso14755, "iso14755", NULL, Opt_iso14755, 0, NULL), BOOL (Rs_iso14755_52, "iso14755_52", NULL, Opt_iso14755_52, 0, NULL), #endif -#ifdef HAVE_AFTERIMAGE - STRG (Rs_blendtype, "blendType", "blt", "string", "background image blending type - alpha, tint, etc..."), +#ifndef NO_RESOURCES + RINFO ("xrm", "string"), +#endif +#ifdef KEYSYM_RESOURCE + RINFO ("keysym.sym", "keysym"), #endif INFO ("e", "command arg ...", "command to execute") }; #undef INFO +#undef RINFO #undef STRG #undef RSTRG #undef SWCH @@ -328,9 +335,6 @@ "transparent," "tint," #endif -#if HAVE_AFTERIMAGE - "afterimage," -#endif #if HAVE_PIXBUF "pixbuf," #endif @@ -455,11 +459,6 @@ optList[i].kw, (INDENT - strlen (optList[i].kw)), "", /* XXX */ (optList_isBool (i) ? "boolean" : optList[i].arg)); -#ifdef KEYSYM_RESOURCE - rxvt_log (" " "keysym.sym" ": %*s%s\n", - (INDENT - sizeof ("keysym.sym") + 1), "", /* XXX */ - "keysym"); -#endif rxvt_log ("\n -help to list options"); break; } @@ -763,7 +762,6 @@ */ for (int entry = 0; entry < ecb_array_length (optList); entry++) { - int s; const char *kw = optList[entry].kw; if (kw == NULL || rs[optList[entry].doff] != NULL) @@ -779,10 +777,7 @@ if (optList_isBool (entry)) { - s = strcasecmp (p, "TRUE") == 0 - || strcasecmp (p, "YES") == 0 - || strcasecmp (p, "ON") == 0 - || strcasecmp (p, "1") == 0; + bool s = parse_bool_resource (p); if (optList_isReverse (entry)) s = !s; @@ -797,33 +792,39 @@ void rxvt_term::extract_keysym_resources () { -#ifndef NO_RESOURCES +#if !defined NO_RESOURCES && defined KEYSYM_RESOURCE + find_resources ("keysym", "Keysym", XrmEnumOneLevel, rxvt_define_key); +#endif +} + +#if !defined NO_RESOURCES && (defined KEYSYM_RESOURCE || defined BG_IMAGE_FROM_FILE) +void +rxvt_term::find_resources (const char *n_prefix, const char *c_prefix, int mode, + Bool (*proc)(XrmDatabase *, XrmBindingList, XrmQuarkList, XrmRepresentation *, XrmValue *, XPointer)) +{ /* * [R5 or later]: enumerate the resource database */ -# ifdef KEYSYM_RESOURCE XrmDatabase database = XrmGetDatabase (dpy); XrmName name_prefix[3]; XrmClass class_prefix[3]; name_prefix[0] = XrmStringToName (rs[Rs_name]); - name_prefix[1] = XrmStringToName ("keysym"); + name_prefix[1] = XrmStringToName (n_prefix); name_prefix[2] = NULLQUARK; class_prefix[0] = XrmStringToName (RESCLASS); - class_prefix[1] = XrmStringToName ("Keysym"); + class_prefix[1] = XrmStringToName (c_prefix); class_prefix[2] = NULLQUARK; /* XXX: Need to check sizeof (rxvt_t) == sizeof (XPointer) */ XrmEnumerateDatabase (database, name_prefix, class_prefix, - XrmEnumOneLevel, rxvt_define_key, NULL); + mode, proc, NULL); # ifdef RESFALLBACK name_prefix[0] = class_prefix[0] = XrmStringToName (RESFALLBACK); /* XXX: Need to check sizeof (rxvt_t) == sizeof (XPointer) */ XrmEnumerateDatabase (database, name_prefix, class_prefix, - XrmEnumOneLevel, rxvt_define_key, NULL); + mode, proc, NULL); # endif -# endif - -#endif /* NO_RESOURCES */ } +#endif /*----------------------- end-of-file (C source) -----------------------*/