--- rxvt-unicode/src/xdefaults.C 2008/01/08 15:01:15 1.130 +++ rxvt-unicode/src/xdefaults.C 2008/01/27 16:52:13 1.134 @@ -65,8 +65,8 @@ { (option), (Optflag_Switch | (flag)), -1, NULL, (opt), NULL, (desc)} /* convenient macros */ -#define optList_strlen(i) \ - (optList[i].flag ? 0 : (optList[i].arg ? strlen (optList[i].arg) : 1)) +#define optList_isString(i) \ + (optList[i].flag == 0) #define optList_isBool(i) \ (optList[i].flag & Optflag_Boolean) #define optList_isReverse(i) \ @@ -174,10 +174,12 @@ #if ENABLE_FRILLS RSTRG (Rs_color + Color_underline, "underlineColor", "color"), #endif -#ifdef KEEP_SCROLLCOLOR +#ifdef HAVE_SCROLLBARS RSTRG (Rs_color + Color_scroll, "scrollColor", "color"), +#endif +#ifdef RXVT_SCROLLBAR RSTRG (Rs_color + Color_trough, "troughColor", "color"), -#endif /* KEEP_SCROLLCOLOR */ +#endif #ifdef OPTION_HC STRG (Rs_color + Color_HC, "highlightColor", "hc", "color", "highlight color"), #endif @@ -217,6 +219,7 @@ #endif #if XFT STRG (Rs_depth, "depth", "depth", "number", "depth of visual to request"), + BOOL (Rs_buffered, "buffered", NULL, Opt_buffered, 0, NULL), #endif #if ENABLE_FRILLS RSTRG (Rs_transient_for, "transient-for", "windowid"), @@ -415,12 +418,8 @@ { int len = 0; - if (!optList_isBool (i)) - { - len = optList_strlen (i); - if (len > 0) - len++; /* account for space */ - } + if (optList[i].arg) + len = strlen (optList[i].arg) + 1; #ifdef DEBUG_STRICT assert (optList[i].opt != NULL); #endif @@ -434,7 +433,7 @@ } rxvt_log (" [-%s%s", (optList_isBool (i) ? "/+" : ""), optList[i].opt); - if (optList_strlen (i)) + if (optList[i].arg) rxvt_log (" %s]", optList[i].arg); else rxvt_log ("]"); @@ -496,20 +495,21 @@ for (i = 1; i < argc; i++) { unsigned int entry, longopt = 0; - const char *flag, *opt; + const char *opt; + int flag; opt = argv[i]; if (*opt == '-') { - flag = resval_on; + flag = 1; if (*++opt == '-') longopt = *opt++; /* long option */ } else if (*opt == '+') { - flag = resval_off; + flag = 0; if (*++opt == '+') longopt = *opt++; /* long option */ @@ -537,9 +537,9 @@ if (entry < optList_size) { if (optList_isReverse (entry)) - flag = flag == resval_on ? resval_off : resval_on; + flag = !flag; - if (optList_strlen (entry)) + if (optList_isString (entry)) { /* * special cases are handled in main.c:main () to allow @@ -549,19 +549,19 @@ if (optList[entry].doff != -1) { - if (flag == resval_on && i+1 == argc) + if (flag && i+1 == argc) rxvt_fatal ("option '%s' requires an argument, aborting.\n", argv [i]); - rs[optList[entry].doff] = flag == resval_on ? argv[++i] : resval_undef; + rs[optList[entry].doff] = flag ? argv[++i] : resval_undef; } } else { /* boolean value */ - set_option (optList[entry].index, flag == resval_on); + set_option (optList[entry].index, flag); if (optList[entry].doff != -1) - rs[optList[entry].doff] = flag; + rs[optList[entry].doff] = flag ? resval_on : resval_off; } } #ifndef NO_RESOURCES