ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/xdefaults.C
(Generate patch)

Comparing rxvt-unicode/src/xdefaults.C (file contents):
Revision 1.73 by root, Fri Jan 6 05:37:59 2006 UTC vs.
Revision 1.76 by root, Mon Jan 9 22:41:41 2006 UTC

404#endif 404#endif
405#if defined(NO_RESOURCES) 405#if defined(NO_RESOURCES)
406 "NoResources" 406 "NoResources"
407#else 407#else
408# if defined(USE_XGETDEFAULT) 408# if defined(USE_XGETDEFAULT)
409 "XGetDefaults" 409 "XGetDefault"
410# else 410# else
411 ".Xdefaults" 411 ".Xdefaults"
412# endif 412# endif
413#endif 413#endif
414 "\nUsage: "; /* Usage */ 414 "\nUsage: "; /* Usage */
573 { /* boolean value */ 573 { /* boolean value */
574#ifdef DEBUG_RESOURCES 574#ifdef DEBUG_RESOURCES
575 fprintf (stderr, "boolean (%s,%s) = %s\n", 575 fprintf (stderr, "boolean (%s,%s) = %s\n",
576 optList[entry].opt, optList[entry].kw, flag); 576 optList[entry].opt, optList[entry].kw, flag);
577#endif 577#endif
578 if (flag == On)
579 SET_OPTION (optList[entry].flag & Optflag_mask); 578 set_option (optList[entry].flag & Optflag_mask, flag == On);
580 else
581 CLR_OPTION (optList[entry].flag & Optflag_mask);
582 579
583 if (optList[entry].doff != -1) 580 if (optList[entry].doff != -1)
584 rs[optList[entry].doff] = flag; 581 rs[optList[entry].doff] = flag;
585 } 582 }
586 } 583 }
695 { 692 {
696 if ((n = rxvt_Str_match (str, "keysym.")) == 0) 693 if ((n = rxvt_Str_match (str, "keysym.")) == 0)
697 return 0; 694 return 0;
698 695
699 str += n; /* skip `keysym.' */ 696 str += n; /* skip `keysym.' */
700 if ((pmodend = strchr (str, ':')) < str) 697 if (!(pmodend = strchr (str, ':')))
701 return -1; 698 return -1;
702 } 699 }
703 else 700 else
704 pmodend = str + strlen(str); 701 pmodend = str + strlen(str);
705 702
867 || strcmp (str, "1") == 0; 864 || strcmp (str, "1") == 0;
868 865
869 if (optList_isReverse (entry)) 866 if (optList_isReverse (entry))
870 s = !s; 867 s = !s;
871 868
872 if (s)
873 SET_OPTION (optList[entry].flag & Optflag_mask); 869 set_option (optList[entry].flag & Optflag_mask, s);
874 else
875 CLR_OPTION (optList[entry].flag & Optflag_mask);
876 } 870 }
877 } 871 }
878 872
879 break; 873 break;
880 } 874 }
885} 879}
886 880
887/*}}} */ 881/*}}} */
888# endif /* ! USE_XGETDEFAULT */ 882# endif /* ! USE_XGETDEFAULT */
889#endif /* NO_RESOURCES */ 883#endif /* NO_RESOURCES */
884
885#ifdef USE_XGETDEFAULT
886char *get_res (XrmDatabase database, const char *program, const char *option)
887{
888 char resource[512];
889 char *type;
890 XrmValue result;
891
892 snprintf (resource, sizeof (resource), "%s.%s", program, option);
893 XrmGetResource (database, resource, resource, &type, &result);
894
895 return result.addr;
896}
897#endif
890 898
891/*{{{ read the resources files */ 899/*{{{ read the resources files */
892/* 900/*
893 * using XGetDefault () or the hand-rolled replacement 901 * using XGetDefault () or the hand-rolled replacement
894 */ 902 */
919 /* 927 /*
920 * get resources using the X library function 928 * get resources using the X library function
921 */ 929 */
922 int entry; 930 int entry;
923 931
924# ifdef XrmEnumOneLevel
925 char *displayResource, *xe; 932 char *displayResource, *xe;
926 XrmName name_prefix[3]; 933 XrmName name_prefix[3];
927 XrmClass class_prefix[3]; 934 XrmClass class_prefix[3];
928 XrmDatabase database, rdb1; 935 XrmDatabase database, rdb1;
929 936
930 XrmInitialize ();
931 database = NULL; 937 database = NULL;
932 938
933 // for ordering, see for example http://www.faqs.org/faqs/Xt-FAQ/ Subject: 20 939 // for ordering, see for example http://www.faqs.org/faqs/Xt-FAQ/ Subject: 20
934 940
935 // 6. System wide per application default file. 941 // 6. System wide per application default file.
996 if ((rdb1 = XrmGetFileDatabase (fname))) 1002 if ((rdb1 = XrmGetFileDatabase (fname)))
997 XrmMergeDatabases (rdb1, &database); 1003 XrmMergeDatabases (rdb1, &database);
998 } 1004 }
999 } 1005 }
1000 1006
1001 XrmSetDatabase (disp, database); 1007 xrmdatabase = database;
1002# endif
1003 1008
1004 /* 1009 /*
1005 * Query resources for options that affect us 1010 * Query resources for options that affect us
1006 */ 1011 */
1007 for (entry = 0; entry < optList_size; entry++) 1012 for (entry = 0; entry < optList_size; entry++)
1011 const char *kw = optList[entry].kw; 1016 const char *kw = optList[entry].kw;
1012 1017
1013 if (kw == NULL || rs[optList[entry].doff] != NULL) 1018 if (kw == NULL || rs[optList[entry].doff] != NULL)
1014 continue; /* previously set */ 1019 continue; /* previously set */
1015 1020
1016 p = XGetDefault (disp, rs[Rs_name], kw); 1021 p = get_res (database, rs[Rs_name], kw);
1017 p0 = XGetDefault (disp, "!INVALIDPROGRAMMENAMEDONTMATCH!", kw); 1022 p0 = get_res (database, "!INVALIDPROGRAMMENAMEDONTMATCH!", kw);
1018 if (p == NULL || (p0 && strcmp (p, p0) == 0)) 1023 if (p == NULL || (p0 && strcmp (p, p0) == 0))
1019 { 1024 {
1020 p = XGetDefault (disp, RESCLASS, kw); 1025 p = get_res (database, RESCLASS, kw);
1021#ifdef RESFALLBACK 1026#ifdef RESFALLBACK
1022 if (p == NULL || (p0 && strcmp (p, p0) == 0)) 1027 if (p == NULL || (p0 && strcmp (p, p0) == 0))
1023 p = XGetDefault (disp, RESFALLBACK, kw); 1028 p = get_res (database, RESFALLBACK, kw);
1024#endif 1029#endif
1025 } 1030 }
1026 1031
1027 if (p == NULL && p0) 1032 if (p == NULL && p0)
1028 p = p0; 1033 p = p0;
1039 || strcasecmp (p, "1") == 0; 1044 || strcasecmp (p, "1") == 0;
1040 1045
1041 if (optList_isReverse (entry)) 1046 if (optList_isReverse (entry))
1042 s = !s; 1047 s = !s;
1043 1048
1044 if (s)
1045 SET_OPTION (optList[entry].flag & Optflag_mask); 1049 set_option (optList[entry].flag & Optflag_mask, s);
1046 else
1047 CLR_OPTION (optList[entry].flag & Optflag_mask);
1048 } 1050 }
1049 } 1051 }
1050 } 1052 }
1051 1053
1052 /* 1054 /*
1058 name_prefix[2] = NULLQUARK; 1060 name_prefix[2] = NULLQUARK;
1059 class_prefix[0] = XrmStringToName (RESCLASS); 1061 class_prefix[0] = XrmStringToName (RESCLASS);
1060 class_prefix[1] = XrmStringToName ("Keysym"); 1062 class_prefix[1] = XrmStringToName ("Keysym");
1061 class_prefix[2] = NULLQUARK; 1063 class_prefix[2] = NULLQUARK;
1062 /* XXX: Need to check sizeof (rxvt_t) == sizeof (XPointer) */ 1064 /* XXX: Need to check sizeof (rxvt_t) == sizeof (XPointer) */
1063 XrmEnumerateDatabase (XrmGetDatabase (disp), name_prefix, class_prefix, 1065 XrmEnumerateDatabase (database, name_prefix, class_prefix,
1064 XrmEnumOneLevel, rxvt_define_key, NULL); 1066 XrmEnumOneLevel, rxvt_define_key, NULL);
1065# ifdef RESFALLBACK 1067# ifdef RESFALLBACK
1066 name_prefix[0] = XrmStringToName (RESFALLBACK); 1068 name_prefix[0] = XrmStringToName (RESFALLBACK);
1067 name_prefix[1] = XrmStringToName ("keysym"); 1069 name_prefix[1] = XrmStringToName ("keysym");
1068 class_prefix[0] = XrmStringToName (RESFALLBACK); 1070 class_prefix[0] = XrmStringToName (RESFALLBACK);
1069 class_prefix[1] = XrmStringToName ("Keysym"); 1071 class_prefix[1] = XrmStringToName ("Keysym");
1070 /* XXX: Need to check sizeof (rxvt_t) == sizeof (XPointer) */ 1072 /* XXX: Need to check sizeof (rxvt_t) == sizeof (XPointer) */
1071 XrmEnumerateDatabase (XrmGetDatabase (disp), name_prefix, class_prefix, 1073 XrmEnumerateDatabase (database, name_prefix, class_prefix,
1072 XrmEnumOneLevel, rxvt_define_key, NULL); 1074 XrmEnumOneLevel, rxvt_define_key, NULL);
1073# endif 1075# endif
1074# endif 1076# endif
1075 1077
1076# else /* USE_XGETDEFAULT */ 1078# else /* USE_XGETDEFAULT */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines