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.77 by root, Wed Jan 11 00:59:58 2006 UTC vs.
Revision 1.78 by root, Wed Jan 11 02:13:56 2006 UTC

771} 771}
772 772
773# endif /* KEYSYM_RESOURCE */ 773# endif /* KEYSYM_RESOURCE */
774#endif /* NO_RESOURCES */ 774#endif /* NO_RESOURCES */
775 775
776static char *
776char *get_res (XrmDatabase database, const char *program, const char *option) 777get_res (XrmDatabase database, const char *program, const char *option)
777{ 778{
778 char resource[512]; 779 char resource[512];
779 char *type; 780 char *type;
780 XrmValue result; 781 XrmValue result;
781 782
783 XrmGetResource (database, resource, resource, &type, &result); 784 XrmGetResource (database, resource, resource, &type, &result);
784 785
785 return result.addr; 786 return result.addr;
786} 787}
787 788
788/*{{{ read the resources files */ 789const char *
789/* 790rxvt_term::x_resource (const char *name)
790 * using XGetDefault () or the hand-rolled replacement 791{
791 */ 792 XrmDatabase database = XrmGetDatabase (display->display);
792/* ARGSUSED */ 793
794 const char *p = get_res (database, rs[Rs_name], name);
795 const char *p0 = get_res (database, "!INVALIDPROGRAMMENAMEDONTMATCH!", name);
796
797 if (p == NULL || (p0 && strcmp (p, p0) == 0))
798 {
799 p = get_res (database, RESCLASS, name);
800#ifdef RESFALLBACK
801 if (p == NULL || (p0 && strcmp (p, p0) == 0))
802 p = get_res (database, RESFALLBACK, name);
803#endif
804 }
805
806 if (p == NULL && p0)
807 p = p0;
808
809 return p;
810}
811
793void 812void
794rxvt_term::extract_resources () 813rxvt_term::extract_resources ()
795{ 814{
796 dDisp;
797
798#ifndef NO_RESOURCES 815#ifndef NO_RESOURCES
799 XrmDatabase database = XrmGetDatabase (display->display);
800
801 /* 816 /*
802 * Query resources for options that affect us 817 * Query resources for options that affect us
803 */ 818 */
804 for (int entry = 0; entry < optList_size; entry++) 819 for (int entry = 0; entry < optList_size; entry++)
805 { 820 {
806 int s; 821 int s;
807 char *p, *p0;
808 const char *kw = optList[entry].kw; 822 const char *kw = optList[entry].kw;
809 823
810 if (kw == NULL || rs[optList[entry].doff] != NULL) 824 if (kw == NULL || rs[optList[entry].doff] != NULL)
811 continue; // previously set 825 continue; // previously set
812 826
813 p = get_res (database, rs[Rs_name], kw); 827 const char *p = x_resource (kw);
814 p0 = get_res (database, "!INVALIDPROGRAMMENAMEDONTMATCH!", kw);
815 if (p == NULL || (p0 && strcmp (p, p0) == 0))
816 {
817 p = get_res (database, RESCLASS, kw);
818#ifdef RESFALLBACK
819 if (p == NULL || (p0 && strcmp (p, p0) == 0))
820 p = get_res (database, RESFALLBACK, kw);
821#endif
822 }
823
824 if (p == NULL && p0)
825 p = p0;
826 828
827 if (p) 829 if (p)
828 { 830 {
829 p = strdup (p); 831 p = strdup (p);
830 allocated.push_back (p); 832 allocated.push_back ((void *)p);
831 rs[optList[entry].doff] = p; 833 rs[optList[entry].doff] = p;
832 834
833 if (optList_isBool (entry)) 835 if (optList_isBool (entry))
834 { 836 {
835 s = strcasecmp (p, "TRUE") == 0 837 s = strcasecmp (p, "TRUE") == 0
847 849
848 /* 850 /*
849 * [R5 or later]: enumerate the resource database 851 * [R5 or later]: enumerate the resource database
850 */ 852 */
851# ifdef KEYSYM_RESOURCE 853# ifdef KEYSYM_RESOURCE
854 XrmDatabase database = XrmGetDatabase (display->display);
852 XrmName name_prefix[3]; 855 XrmName name_prefix[3];
853 XrmClass class_prefix[3]; 856 XrmClass class_prefix[3];
854 857
855 name_prefix[0] = XrmStringToName (rs[Rs_name]); 858 name_prefix[0] = XrmStringToName (rs[Rs_name]);
856 name_prefix[1] = XrmStringToName ("keysym"); 859 name_prefix[1] = XrmStringToName ("keysym");
873# endif 876# endif
874 877
875#endif /* NO_RESOURCES */ 878#endif /* NO_RESOURCES */
876} 879}
877 880
878/*}}} */
879/*----------------------- end-of-file (C source) -----------------------*/ 881/*----------------------- end-of-file (C source) -----------------------*/

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines