--- rxvt-unicode/src/xdefaults.C 2004/02/22 08:09:38 1.12 +++ rxvt-unicode/src/xdefaults.C 2004/03/14 17:33:08 1.17 @@ -1,7 +1,7 @@ /*--------------------------------*-C-*---------------------------------* * File: xdefaults.c *----------------------------------------------------------------------* - * $Id: xdefaults.C,v 1.12 2004/02/22 08:09:38 pcg Exp $ + * $Id: xdefaults.C,v 1.17 2004/03/14 17:33:08 pcg Exp $ * * All portions of code are copyright by their respective author/s. * Copyright (c) 1994 Robert Nation @@ -133,10 +133,6 @@ BOOL (Rs_mouseWheelScrollPage, "mouseWheelScrollPage", NULL, Opt_mouseWheelScrollPage, NULL), #endif -#ifdef MULTICHAR_SET - BOOL (Rs_mc_hack, "multibyte_cursor", "mcc", Opt_mc_hack, - "Multibyte character cursor movement"), -#endif #ifndef NO_FRILLS BOOL (Rs_tripleclickwords, "tripleclickwords", "tcw", Opt_tripleclickwords, "triple click word selection"), @@ -246,19 +242,12 @@ #ifdef PRINTPIPE RSTRG (Rs_print_pipe, "print-pipe", "string"), #endif -#if defined (HOTKEY_CTRL) || defined (HOTKEY_META) - RSTRG (Rs_bigfont_key, "bigfont_key", "keysym"), - RSTRG (Rs_smallfont_key, "smallfont_key", "keysym"), -#endif STRG (Rs_modifier, "modifier", "mod", "modifier", "meta modifier = alt|meta|hyper|super|mod1|...|mod5"), INFO ("xrm", "string", "X resource"), #ifdef CUTCHAR_RESOURCE RSTRG (Rs_cutchars, "cutchars", "string"), #endif /* CUTCHAR_RESOURCE */ -#ifdef ACS_ASCII - RSTRG (Rs_acs_chars, "acsChars", "string"), -#endif /* ACS_ASCII */ RSTRG (Rs_answerbackstring, "answerbackString", "string"), INFO ("e", "command arg ...", "command to execute") }; @@ -296,13 +285,16 @@ #if defined(USE_XIM) "XIM," #endif -#if defined(MULTICHAR_SET) - "multichar_languages," -#endif "scrollbars=" #if !defined(HAVE_SCROLLBARS) "NONE" #else +# if defined(PLAIN_SCROLLBAR) + "plain" +# if defined(RXVT_SCROLLBAR) || defined(NEXT_SCROLLBAR) || defined(XTERM_SCROLLBAR) + "+" +# endif +# endif # if defined(RXVT_SCROLLBAR) "rxvt" # if defined(NEXT_SCROLLBAR) || defined(XTERM_SCROLLBAR) @@ -354,7 +346,7 @@ write (STDERR_FILENO, releasestring, sizeof (releasestring) - 1); write (STDERR_FILENO, optionsstring, sizeof (optionsstring) - 1); - write (STDERR_FILENO, APL_NAME, sizeof (APL_NAME) - 1); + write (STDERR_FILENO, RESNAME, sizeof (RESNAME) - 1); switch (type) { @@ -561,8 +553,13 @@ * value will be a string */ /* ARGSUSED */ -bool -rxvt_define_key(XrmDatabase *database __attribute__((unused)), XrmBindingList bindings __attribute__((unused)), XrmQuarkList quarks, XrmRepresentation *type __attribute__((unused)), XrmValue *value, XPointer closure __attribute__((unused))) +int +rxvt_define_key (XrmDatabase *database __attribute__((unused)), + XrmBindingList bindings __attribute__((unused)), + XrmQuarkList quarks, + XrmRepresentation *type __attribute__((unused)), + XrmValue *value, + XPointer closure __attribute__((unused))) { int last; @@ -668,8 +665,8 @@ void rxvt_term::get_xdefaults (FILE *stream, const char *name) { - unsigned int len; - char *str, buffer[256]; + unsigned int len; + char *str, buffer[256]; if (stream == NULL) return; @@ -699,16 +696,34 @@ if (str[n] == ':' && rxvt_Str_match (str, kw)) { /* skip `keyword:' */ - str += (n + 1); + str += n + 1; rxvt_Str_trim (str); n = STRLEN (str); if (n && rs[optList[entry].doff] == NULL) { /* not already set */ - int s; - char *p = (char *)rxvt_malloc ((n + 1) * sizeof (char)); + int s; + char *p = 0; + + for (int o = 0;;) + { + p = (char *)rxvt_realloc (p, o + n + 1); + MEMCPY (p + o, str, n); + o += n; + p[o] = 0; + + if (o == 0 || p[o - 1] != '\\') // continuation line + break; + + o--; // eat "\" + + if ((str = fgets (buffer, sizeof (buffer), stream)) == NULL) + break; + + rxvt_Str_trim (str); + n = STRLEN (str); + } - STRCPY (p, str); rs[optList[entry].doff] = p; if (optList_isBool (entry)) { @@ -753,8 +768,8 @@ if (locale != NULL) { /* XXX: must limit length of string */ localepath = (char *)rxvt_malloc (256); - sprintf (localepath, XAPPLOADDIRLOCALE "/" APL_SUBCLASS, - (int) (258 - sizeof (XAPPLOADDIRLOCALE) - sizeof (APL_SUBCLASS)), + sprintf (localepath, XAPPLOADDIRLOCALE "/" RESCLASS, + (int) (258 - sizeof (XAPPLOADDIRLOCALE) - sizeof (RESCLASS)), locale); /* 258 = 255 + 4 (-.*s) - 1 (/) */ } @@ -819,15 +834,16 @@ # if defined(HAVE_XSETLOCALE) || defined(HAVE_SETLOCALE) if (localepath == NULL || (rdb1 = XrmGetFileDatabase (localepath)) == NULL) # endif - rdb1 = XrmGetFileDatabase (XAPPLOADDIR "/" APL_SUBCLASS); + rdb1 = XrmGetFileDatabase (XAPPLOADDIR "/" RESCLASS); + if (rdb1 != NULL) XrmMergeDatabases (rdb1, &database); /* Add in $XAPPLRESDIR/Rxvt only; not bothering with XUSERFILESEARCHPATH */ if ((xe = (char *)getenv ("XAPPLRESDIR")) != NULL) { - sprintf (fname, "%-.*s/" APL_SUBCLASS, sizeof (fname) - - sizeof (APL_SUBCLASS) - 2, xe); + sprintf (fname, "%-.*s/" RESCLASS, sizeof (fname) + - sizeof (RESCLASS) - 2, xe); if ((rdb1 = XrmGetFileDatabase (fname)) != NULL) XrmMergeDatabases (rdb1, &database); } @@ -851,12 +867,16 @@ p0 = XGetDefault (display, "!INVALIDPROGRAMMENAMEDONTMATCH!", kw); if (p == NULL || (p0 && STRCMP (p, p0) == 0)) { - p = XGetDefault (display, APL_SUBCLASS, kw); + p = XGetDefault (display, RESCLASS, kw); +#ifdef RESFALLBACK if (p == NULL || (p0 && STRCMP (p, p0) == 0)) - p = XGetDefault (display, APL_CLASS, kw); + p = XGetDefault (display, RESFALLBACK, kw); +#endif } + if (p == NULL && p0) p = p0; + if (p) { rs[optList[entry].doff] = p; @@ -885,19 +905,21 @@ name_prefix[0] = XrmStringToName (name); name_prefix[1] = XrmStringToName ("keysym"); name_prefix[2] = NULLQUARK; - class_prefix[0] = XrmStringToName (APL_SUBCLASS); + class_prefix[0] = XrmStringToName (RESCLASS); class_prefix[1] = XrmStringToName ("Keysym"); class_prefix[2] = NULLQUARK; /* XXX: Need to check sizeof (rxvt_t) == sizeof (XPointer) */ XrmEnumerateDatabase (XrmGetDatabase (display), name_prefix, class_prefix, - XrmEnumOneLevel, rxvt_define_key, NULL); - name_prefix[0] = XrmStringToName (APL_CLASS); + XrmEnumOneLevel, rxvt_define_key, NULL); +# ifdef RESFALLBACK + name_prefix[0] = XrmStringToName (RESFALLBACK); name_prefix[1] = XrmStringToName ("keysym"); - class_prefix[0] = XrmStringToName (APL_CLASS); + class_prefix[0] = XrmStringToName (RESFALLBACK); class_prefix[1] = XrmStringToName ("Keysym"); /* XXX: Need to check sizeof (rxvt_t) == sizeof (XPointer) */ XrmEnumerateDatabase (XrmGetDatabase (display), name_prefix, class_prefix, - XrmEnumOneLevel, rxvt_define_key, NULL); + XrmEnumOneLevel, rxvt_define_key, NULL); +# endif # endif # endif @@ -945,27 +967,28 @@ */ get_xdefaults (fd, name); - get_xdefaults (fd, APL_SUBCLASS); + get_xdefaults (fd, RESCLASS); +# ifdef RESFALLBACK + get_xdefaults (fd, RESFALLBACK); +# endif # if defined(XAPPLOADDIR) && defined(USE_XAPPLOADDIR) - { - FILE *ad = NULL; + FILE *ad = NULL; # if defined(HAVE_XSETLOCALE) || defined(HAVE_SETLOCALE) if (localepath == NULL || (ad = fopen (localepath, "r")) == NULL) # endif - ad = fopen (XAPPLOADDIR "/" APL_SUBCLASS, "r"); + ad = fopen (XAPPLOADDIR "/" RESCLASS, "r"); if (ad != NULL) { - get_xdefaults (ad, APL_SUBCLASS); + get_xdefaults (ad, RESCLASS); get_xdefaults (ad, ""); fclose (ad); } } # endif /* XAPPLOADDIR */ - get_xdefaults (fd, APL_CLASS); get_xdefaults (fd, ""); /* partial match */ if (fd != NULL) fclose (fd); @@ -982,22 +1005,6 @@ # endif #endif /* NO_RESOURCES */ - - /* - * even without resources, at least do this setup for command-line - * options and command-line long options - */ - -#if defined (HOTKEY_CTRL) || defined (HOTKEY_META) - KeySym sym; - - if (rs[Rs_bigfont_key] - && ((sym = XStringToKeysym (rs[Rs_bigfont_key])) != 0)) - ks_bigfont = sym; - if (rs[Rs_smallfont_key] - && ((sym = XStringToKeysym (rs[Rs_smallfont_key])) != 0)) - ks_smallfont = sym; -#endif } /*}}} */