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.74 by root, Sun Jan 8 01:02:15 2006 UTC vs.
Revision 1.75 by root, Sun Jan 8 07:55:36 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 */
880 880
881/*}}} */ 881/*}}} */
882# endif /* ! USE_XGETDEFAULT */ 882# endif /* ! USE_XGETDEFAULT */
883#endif /* NO_RESOURCES */ 883#endif /* NO_RESOURCES */
884 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
898
885/*{{{ read the resources files */ 899/*{{{ read the resources files */
886/* 900/*
887 * using XGetDefault () or the hand-rolled replacement 901 * using XGetDefault () or the hand-rolled replacement
888 */ 902 */
889/* ARGSUSED */ 903/* ARGSUSED */
913 /* 927 /*
914 * get resources using the X library function 928 * get resources using the X library function
915 */ 929 */
916 int entry; 930 int entry;
917 931
918# ifdef XrmEnumOneLevel
919 char *displayResource, *xe; 932 char *displayResource, *xe;
920 XrmName name_prefix[3]; 933 XrmName name_prefix[3];
921 XrmClass class_prefix[3]; 934 XrmClass class_prefix[3];
922 XrmDatabase database, rdb1; 935 XrmDatabase database, rdb1;
923 936
924 XrmInitialize ();
925 database = NULL; 937 database = NULL;
926 938
927 // 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
928 940
929 // 6. System wide per application default file. 941 // 6. System wide per application default file.
990 if ((rdb1 = XrmGetFileDatabase (fname))) 1002 if ((rdb1 = XrmGetFileDatabase (fname)))
991 XrmMergeDatabases (rdb1, &database); 1003 XrmMergeDatabases (rdb1, &database);
992 } 1004 }
993 } 1005 }
994 1006
995 XrmSetDatabase (disp, database); 1007 xrmdatabase = database;
996# endif
997 1008
998 /* 1009 /*
999 * Query resources for options that affect us 1010 * Query resources for options that affect us
1000 */ 1011 */
1001 for (entry = 0; entry < optList_size; entry++) 1012 for (entry = 0; entry < optList_size; entry++)
1005 const char *kw = optList[entry].kw; 1016 const char *kw = optList[entry].kw;
1006 1017
1007 if (kw == NULL || rs[optList[entry].doff] != NULL) 1018 if (kw == NULL || rs[optList[entry].doff] != NULL)
1008 continue; /* previously set */ 1019 continue; /* previously set */
1009 1020
1010 p = XGetDefault (disp, rs[Rs_name], kw); 1021 p = get_res (database, rs[Rs_name], kw);
1011 p0 = XGetDefault (disp, "!INVALIDPROGRAMMENAMEDONTMATCH!", kw); 1022 p0 = get_res (database, "!INVALIDPROGRAMMENAMEDONTMATCH!", kw);
1012 if (p == NULL || (p0 && strcmp (p, p0) == 0)) 1023 if (p == NULL || (p0 && strcmp (p, p0) == 0))
1013 { 1024 {
1014 p = XGetDefault (disp, RESCLASS, kw); 1025 p = get_res (database, RESCLASS, kw);
1015#ifdef RESFALLBACK 1026#ifdef RESFALLBACK
1016 if (p == NULL || (p0 && strcmp (p, p0) == 0)) 1027 if (p == NULL || (p0 && strcmp (p, p0) == 0))
1017 p = XGetDefault (disp, RESFALLBACK, kw); 1028 p = get_res (database, RESFALLBACK, kw);
1018#endif 1029#endif
1019 } 1030 }
1020 1031
1021 if (p == NULL && p0) 1032 if (p == NULL && p0)
1022 p = p0; 1033 p = p0;
1049 name_prefix[2] = NULLQUARK; 1060 name_prefix[2] = NULLQUARK;
1050 class_prefix[0] = XrmStringToName (RESCLASS); 1061 class_prefix[0] = XrmStringToName (RESCLASS);
1051 class_prefix[1] = XrmStringToName ("Keysym"); 1062 class_prefix[1] = XrmStringToName ("Keysym");
1052 class_prefix[2] = NULLQUARK; 1063 class_prefix[2] = NULLQUARK;
1053 /* XXX: Need to check sizeof (rxvt_t) == sizeof (XPointer) */ 1064 /* XXX: Need to check sizeof (rxvt_t) == sizeof (XPointer) */
1054 XrmEnumerateDatabase (XrmGetDatabase (disp), name_prefix, class_prefix, 1065 XrmEnumerateDatabase (database, name_prefix, class_prefix,
1055 XrmEnumOneLevel, rxvt_define_key, NULL); 1066 XrmEnumOneLevel, rxvt_define_key, NULL);
1056# ifdef RESFALLBACK 1067# ifdef RESFALLBACK
1057 name_prefix[0] = XrmStringToName (RESFALLBACK); 1068 name_prefix[0] = XrmStringToName (RESFALLBACK);
1058 name_prefix[1] = XrmStringToName ("keysym"); 1069 name_prefix[1] = XrmStringToName ("keysym");
1059 class_prefix[0] = XrmStringToName (RESFALLBACK); 1070 class_prefix[0] = XrmStringToName (RESFALLBACK);
1060 class_prefix[1] = XrmStringToName ("Keysym"); 1071 class_prefix[1] = XrmStringToName ("Keysym");
1061 /* XXX: Need to check sizeof (rxvt_t) == sizeof (XPointer) */ 1072 /* XXX: Need to check sizeof (rxvt_t) == sizeof (XPointer) */
1062 XrmEnumerateDatabase (XrmGetDatabase (disp), name_prefix, class_prefix, 1073 XrmEnumerateDatabase (database, name_prefix, class_prefix,
1063 XrmEnumOneLevel, rxvt_define_key, NULL); 1074 XrmEnumOneLevel, rxvt_define_key, NULL);
1064# endif 1075# endif
1065# endif 1076# endif
1066 1077
1067# else /* USE_XGETDEFAULT */ 1078# else /* USE_XGETDEFAULT */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines