Mercurial > emacs
annotate src/xrdb.c @ 88054:eae3aec0f807
2008-01-29 John Wiegley <johnw@newartisans.com>
* url-auth.el (url-digest-auth): If the 'opaque' argument is not
being used, don't add it to the response text. Also, changed an
if so that the interaction between the PROMPT and OVERWRITE
arguments can no longer result in the user being queried twice for
the same login and password information.
author | John Wiegley <johnw@newartisans.com> |
---|---|
date | Tue, 29 Jan 2008 03:52:05 +0000 |
parents | fc2bcd2a8aad |
children | 606f2d163a64 |
rev | line source |
---|---|
159 | 1 /* Deal with the X Resource Manager. |
64770
a0d1312ede66
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64084
diff
changeset
|
2 Copyright (C) 1990, 1993, 1994, 2000, 2001, 2002, 2003, 2004, |
79759 | 3 2005, 2006, 2007, 2008 Free Software Foundation, Inc. |
159 | 4 |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
10463
diff
changeset
|
5 This file is part of GNU Emacs. |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
10463
diff
changeset
|
6 |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
10463
diff
changeset
|
7 GNU Emacs is free software; you can redistribute it and/or modify |
159 | 8 it under the terms of the GNU General Public License as published by |
78260
922696f363b0
Switch license to GPLv3 or later.
Glenn Morris <rgm@gnu.org>
parents:
75348
diff
changeset
|
9 the Free Software Foundation; either version 3, or (at your option) |
159 | 10 any later version. |
11 | |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
10463
diff
changeset
|
12 GNU Emacs is distributed in the hope that it will be useful, |
159 | 13 but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 GNU General Public License for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
10463
diff
changeset
|
18 along with GNU Emacs; see the file COPYING. If not, write to |
64084 | 19 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
20 Boston, MA 02110-1301, USA. */ | |
159 | 21 |
22 /* Written by jla, 4/90 */ | |
23 | |
1019
aaa628aaf808
* xrdb.c [USG5]: Define SYSV, and then include <unistd.h>. I
Jim Blandy <jimb@redhat.com>
parents:
620
diff
changeset
|
24 #ifdef emacs |
4696
1fc792473491
Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents:
4538
diff
changeset
|
25 #include <config.h> |
1019
aaa628aaf808
* xrdb.c [USG5]: Define SYSV, and then include <unistd.h>. I
Jim Blandy <jimb@redhat.com>
parents:
620
diff
changeset
|
26 #endif |
aaa628aaf808
* xrdb.c [USG5]: Define SYSV, and then include <unistd.h>. I
Jim Blandy <jimb@redhat.com>
parents:
620
diff
changeset
|
27 |
21514 | 28 #ifdef HAVE_UNISTD_H |
29 #include <unistd.h> | |
30 #endif | |
31 | |
24412
d11ac02f9d6a
Use epaths.h istead of paths.h.
Richard M. Stallman <rms@gnu.org>
parents:
21514
diff
changeset
|
32 #include <epaths.h> |
19393 | 33 |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
34 #include <stdio.h> |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
35 |
1019
aaa628aaf808
* xrdb.c [USG5]: Define SYSV, and then include <unistd.h>. I
Jim Blandy <jimb@redhat.com>
parents:
620
diff
changeset
|
36 #if 1 /* I'd really appreciate it if this code could go away... -JimB */ |
38840
4fe55fd0a408
(SYSV): Don't define on Solaris 2.
Gerd Moellmann <gerd@gnu.org>
parents:
36739
diff
changeset
|
37 /* This avoids lossage in the `dual-universe' headers on AT&T SysV |
4fe55fd0a408
(SYSV): Don't define on Solaris 2.
Gerd Moellmann <gerd@gnu.org>
parents:
36739
diff
changeset
|
38 X11. Don't do it on Solaris, because it breaks compilation with |
4fe55fd0a408
(SYSV): Don't define on Solaris 2.
Gerd Moellmann <gerd@gnu.org>
parents:
36739
diff
changeset
|
39 XFree86 4.0.3 (and probably many other X11R6 releases) on Solaris |
4fe55fd0a408
(SYSV): Don't define on Solaris 2.
Gerd Moellmann <gerd@gnu.org>
parents:
36739
diff
changeset
|
40 2 */ |
4fe55fd0a408
(SYSV): Don't define on Solaris 2.
Gerd Moellmann <gerd@gnu.org>
parents:
36739
diff
changeset
|
41 #if defined(USG5) && !defined(SOLARIS2) |
8295
51cebd28b474
[USG5] (SYSV): Don't define if already defined.
Richard M. Stallman <rms@gnu.org>
parents:
7342
diff
changeset
|
42 #ifndef SYSV |
1019
aaa628aaf808
* xrdb.c [USG5]: Define SYSV, and then include <unistd.h>. I
Jim Blandy <jimb@redhat.com>
parents:
620
diff
changeset
|
43 #define SYSV |
8295
51cebd28b474
[USG5] (SYSV): Don't define if already defined.
Richard M. Stallman <rms@gnu.org>
parents:
7342
diff
changeset
|
44 #endif |
38840
4fe55fd0a408
(SYSV): Don't define on Solaris 2.
Gerd Moellmann <gerd@gnu.org>
parents:
36739
diff
changeset
|
45 #endif /* USG5 && !SOLARIS2 */ |
1019
aaa628aaf808
* xrdb.c [USG5]: Define SYSV, and then include <unistd.h>. I
Jim Blandy <jimb@redhat.com>
parents:
620
diff
changeset
|
46 |
aaa628aaf808
* xrdb.c [USG5]: Define SYSV, and then include <unistd.h>. I
Jim Blandy <jimb@redhat.com>
parents:
620
diff
changeset
|
47 #endif /* 1 */ |
1389
517c3893ec5b
* xterm.c, xrdb.c: #include <stdio.h> before "xterm.h", to avoid
Jim Blandy <jimb@redhat.com>
parents:
1200
diff
changeset
|
48 |
159 | 49 #include <X11/Xlib.h> |
50 #include <X11/Xatom.h> | |
1126
94d76dbb5ce6
* xrdb.c: Don't include <X11/Xos.h>. Under R4, it stupidly
Jim Blandy <jimb@redhat.com>
parents:
1051
diff
changeset
|
51 #if 0 |
159 | 52 #include <X11/Xos.h> |
1126
94d76dbb5ce6
* xrdb.c: Don't include <X11/Xos.h>. Under R4, it stupidly
Jim Blandy <jimb@redhat.com>
parents:
1051
diff
changeset
|
53 #endif |
159 | 54 #include <X11/X.h> |
55 #include <X11/Xutil.h> | |
56 #include <X11/Xresource.h> | |
61700
8a54ce1fae6a
Remove reference to defunct vms-pwd.h.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
60830
diff
changeset
|
57 #ifdef HAVE_PWD_H |
159 | 58 #include <pwd.h> |
556 | 59 #endif |
159 | 60 #include <sys/stat.h> |
61 | |
5650
1476768ef7fc
(S_ISDIR): Define if not defined.
Richard M. Stallman <rms@gnu.org>
parents:
5116
diff
changeset
|
62 #if !defined(S_ISDIR) && defined(S_IFDIR) |
1476768ef7fc
(S_ISDIR): Define if not defined.
Richard M. Stallman <rms@gnu.org>
parents:
5116
diff
changeset
|
63 #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) |
1476768ef7fc
(S_ISDIR): Define if not defined.
Richard M. Stallman <rms@gnu.org>
parents:
5116
diff
changeset
|
64 #endif |
1476768ef7fc
(S_ISDIR): Define if not defined.
Richard M. Stallman <rms@gnu.org>
parents:
5116
diff
changeset
|
65 |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
66 #include "lisp.h" |
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
67 |
159 | 68 extern char *getenv (); |
1934
458a1fceb462
* xrdb.c (getuid): Remove declaration.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
69 |
458a1fceb462
* xrdb.c (getuid): Remove declaration.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
70 /* This does cause trouble on AIX. I'm going to take the comment at |
458a1fceb462
* xrdb.c (getuid): Remove declaration.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
71 face value. */ |
458a1fceb462
* xrdb.c (getuid): Remove declaration.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
72 #if 0 |
1126
94d76dbb5ce6
* xrdb.c: Don't include <X11/Xos.h>. Under R4, it stupidly
Jim Blandy <jimb@redhat.com>
parents:
1051
diff
changeset
|
73 extern short getuid (); /* If this causes portability problems, |
94d76dbb5ce6
* xrdb.c: Don't include <X11/Xos.h>. Under R4, it stupidly
Jim Blandy <jimb@redhat.com>
parents:
1051
diff
changeset
|
74 I think we should just delete it; it'll |
94d76dbb5ce6
* xrdb.c: Don't include <X11/Xos.h>. Under R4, it stupidly
Jim Blandy <jimb@redhat.com>
parents:
1051
diff
changeset
|
75 default to `int' anyway. */ |
1934
458a1fceb462
* xrdb.c (getuid): Remove declaration.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
76 #endif |
458a1fceb462
* xrdb.c (getuid): Remove declaration.
Jim Blandy <jimb@redhat.com>
parents:
1389
diff
changeset
|
77 |
8775
36f01bbb7d71
(getpwuid, getpwnam): Test just DECLARE_GETPWUID_WITH_UID_T, not __bsdi__.
Richard M. Stallman <rms@gnu.org>
parents:
8295
diff
changeset
|
78 #ifdef DECLARE_GETPWUID_WITH_UID_T |
3371
fe452e556782
[__bsdi__]: Alternate decls of getpwuid and getpwnam.
Richard M. Stallman <rms@gnu.org>
parents:
3142
diff
changeset
|
79 extern struct passwd *getpwuid (uid_t); |
fe452e556782
[__bsdi__]: Alternate decls of getpwuid and getpwnam.
Richard M. Stallman <rms@gnu.org>
parents:
3142
diff
changeset
|
80 extern struct passwd *getpwnam (const char *); |
fe452e556782
[__bsdi__]: Alternate decls of getpwuid and getpwnam.
Richard M. Stallman <rms@gnu.org>
parents:
3142
diff
changeset
|
81 #else |
159 | 82 extern struct passwd *getpwuid (); |
83 extern struct passwd *getpwnam (); | |
3371
fe452e556782
[__bsdi__]: Alternate decls of getpwuid and getpwnam.
Richard M. Stallman <rms@gnu.org>
parents:
3142
diff
changeset
|
84 #endif |
159 | 85 |
5735
87611653922f
(x_get_customization_string): Use get_system_name instead of gethostname.
Karl Heuer <kwzh@gnu.org>
parents:
5650
diff
changeset
|
86 extern char *get_system_name (); |
87611653922f
(x_get_customization_string): Use get_system_name instead of gethostname.
Karl Heuer <kwzh@gnu.org>
parents:
5650
diff
changeset
|
87 |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
88 /* Make sure not to #include anything after these definitions. Let's |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
89 not step on anyone's prototypes. */ |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
90 #ifdef emacs |
68631
e51361e03895
(malloc, realloc, free) [emacs]: Undefine macros before defining.
Ken Raeburn <raeburn@raeburn.org>
parents:
64770
diff
changeset
|
91 /* darwin.h may have already defined these. */ |
e51361e03895
(malloc, realloc, free) [emacs]: Undefine macros before defining.
Ken Raeburn <raeburn@raeburn.org>
parents:
64770
diff
changeset
|
92 #undef malloc |
e51361e03895
(malloc, realloc, free) [emacs]: Undefine macros before defining.
Ken Raeburn <raeburn@raeburn.org>
parents:
64770
diff
changeset
|
93 #undef realloc |
e51361e03895
(malloc, realloc, free) [emacs]: Undefine macros before defining.
Ken Raeburn <raeburn@raeburn.org>
parents:
64770
diff
changeset
|
94 #undef free |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
95 #define malloc xmalloc |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
96 #define realloc xrealloc |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
97 #define free xfree |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
98 #endif |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
99 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
100 char *x_get_string_resource (); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
101 static int file_p (); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
102 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
103 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
104 /* X file search path processing. */ |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
105 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
106 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
107 /* The string which gets substituted for the %C escape in XFILESEARCHPATH |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
108 and friends, or zero if none was specified. */ |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
109 char *x_customization_string; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
110 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
111 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
112 /* Return the value of the emacs.customization (Emacs.Customization) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
113 resource, for later use in search path decoding. If we find no |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
114 such resource, return zero. */ |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
115 char * |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
116 x_get_customization_string (db, name, class) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
117 XrmDatabase db; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
118 char *name, *class; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
119 { |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
120 char *full_name |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
121 = (char *) alloca (strlen (name) + sizeof ("customization") + 3); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
122 char *full_class |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
123 = (char *) alloca (strlen (class) + sizeof ("Customization") + 3); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
124 char *result; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
125 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
126 sprintf (full_name, "%s.%s", name, "customization"); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
127 sprintf (full_class, "%s.%s", class, "Customization"); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
128 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
129 result = x_get_string_resource (db, full_name, full_class); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
130 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
131 if (result) |
4538
0fd9dd894f9f
(x_get_customization_string): Don't use value of strcpy.
Richard M. Stallman <rms@gnu.org>
parents:
4366
diff
changeset
|
132 { |
0fd9dd894f9f
(x_get_customization_string): Don't use value of strcpy.
Richard M. Stallman <rms@gnu.org>
parents:
4366
diff
changeset
|
133 char *copy = (char *) malloc (strlen (result) + 1); |
0fd9dd894f9f
(x_get_customization_string): Don't use value of strcpy.
Richard M. Stallman <rms@gnu.org>
parents:
4366
diff
changeset
|
134 strcpy (copy, result); |
0fd9dd894f9f
(x_get_customization_string): Don't use value of strcpy.
Richard M. Stallman <rms@gnu.org>
parents:
4366
diff
changeset
|
135 return copy; |
0fd9dd894f9f
(x_get_customization_string): Don't use value of strcpy.
Richard M. Stallman <rms@gnu.org>
parents:
4366
diff
changeset
|
136 } |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
137 else |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
138 return 0; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
139 } |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
140 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
141 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
142 /* Expand all the Xt-style %-escapes in STRING, whose length is given |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
143 by STRING_LEN. Here are the escapes we're supposed to recognize: |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
144 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
145 %N The value of the application's class name |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
146 %T The value of the type parameter ("app-defaults" in this |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
147 context) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
148 %S The value of the suffix parameter ("" in this context) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
149 %L The language string associated with the specified display |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
150 (We use the "LANG" environment variable here, if it's set.) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
151 %l The language part of the display's language string |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
152 (We treat this just like %L. If someone can tell us what |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
153 we're really supposed to do, dandy.) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
154 %t The territory part of the display's language string |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
155 (This never gets used.) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
156 %c The codeset part of the display's language string |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
157 (This never gets used either.) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
158 %C The customization string retrieved from the resource |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
159 database associated with display. |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
160 (This is x_customization_string.) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
161 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
162 Return the expanded file name if it exists and is readable, and |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
163 refers to %L only when the LANG environment variable is set, or |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
164 otherwise provided by X. |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
165 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
166 ESCAPED_SUFFIX and SUFFIX are postpended to STRING if they are |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
167 non-zero. %-escapes in ESCAPED_SUFFIX are expanded; STRING is left |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
168 alone. |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
169 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
170 Return NULL otherwise. */ |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
171 |
159 | 172 static char * |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
173 magic_file_p (string, string_len, class, escaped_suffix, suffix) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
174 char *string; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
175 int string_len; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
176 char *class, *escaped_suffix, *suffix; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
177 { |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
178 char *lang = getenv ("LANG"); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
179 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
180 int path_size = 100; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
181 char *path = (char *) malloc (path_size); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
182 int path_len = 0; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
183 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
184 char *p = string; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
185 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
186 while (p < string + string_len) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
187 { |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
188 /* The chunk we're about to stick on the end of result. */ |
31829
43566b0aec59
Avoid some more compiler warnings.
Gerd Moellmann <gerd@gnu.org>
parents:
29865
diff
changeset
|
189 char *next = NULL; |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
190 int next_len; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
191 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
192 if (*p == '%') |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
193 { |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
194 p++; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
195 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
196 if (p >= string + string_len) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
197 next_len = 0; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
198 else |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
199 switch (*p) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
200 { |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
201 case '%': |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
202 next = "%"; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
203 next_len = 1; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
204 break; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
205 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
206 case 'C': |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
207 next = (x_customization_string |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
208 ? x_customization_string |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
209 : ""); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
210 next_len = strlen (next); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
211 break; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
212 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
213 case 'N': |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
214 next = class; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
215 next_len = strlen (class); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
216 break; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
217 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
218 case 'T': |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
219 next = "app-defaults"; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
220 next_len = strlen (next); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
221 break; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
222 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
223 default: |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
224 case 'S': |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
225 next_len = 0; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
226 break; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
227 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
228 case 'L': |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
229 case 'l': |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
230 if (! lang) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
231 { |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
232 free (path); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
233 return NULL; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
234 } |
29803
3dec4cd5e361
Don't declare xmalloc, xrealloc.
Sam Steingold <sds@gnu.org>
parents:
29756
diff
changeset
|
235 |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
236 next = lang; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
237 next_len = strlen (next); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
238 break; |
29803
3dec4cd5e361
Don't declare xmalloc, xrealloc.
Sam Steingold <sds@gnu.org>
parents:
29756
diff
changeset
|
239 |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
240 case 't': |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
241 case 'c': |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
242 free (path); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
243 return NULL; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
244 } |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
245 } |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
246 else |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
247 next = p, next_len = 1; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
248 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
249 /* Do we have room for this component followed by a '\0' ? */ |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
250 if (path_len + next_len + 1 > path_size) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
251 { |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
252 path_size = (path_len + next_len + 1) * 2; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
253 path = (char *) realloc (path, path_size); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
254 } |
29803
3dec4cd5e361
Don't declare xmalloc, xrealloc.
Sam Steingold <sds@gnu.org>
parents:
29756
diff
changeset
|
255 |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
256 bcopy (next, path + path_len, next_len); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
257 path_len += next_len; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
258 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
259 p++; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
260 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
261 /* If we've reached the end of the string, append ESCAPED_SUFFIX. */ |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
262 if (p >= string + string_len && escaped_suffix) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
263 { |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
264 string = escaped_suffix; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
265 string_len = strlen (string); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
266 p = string; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
267 escaped_suffix = NULL; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
268 } |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
269 } |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
270 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
271 /* Perhaps we should add the SUFFIX now. */ |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
272 if (suffix) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
273 { |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
274 int suffix_len = strlen (suffix); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
275 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
276 if (path_len + suffix_len + 1 > path_size) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
277 { |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
278 path_size = (path_len + suffix_len + 1); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
279 path = (char *) realloc (path, path_size); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
280 } |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
281 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
282 bcopy (suffix, path + path_len, suffix_len); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
283 path_len += suffix_len; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
284 } |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
285 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
286 path[path_len] = '\0'; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
287 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
288 if (! file_p (path)) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
289 { |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
290 free (path); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
291 return NULL; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
292 } |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
293 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
294 return path; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
295 } |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
296 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
297 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
298 static char * |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
299 gethomedir () |
159 | 300 { |
301 struct passwd *pw; | |
302 char *ptr; | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
303 char *copy; |
159 | 304 |
305 if ((ptr = getenv ("HOME")) == NULL) | |
306 { | |
5917
91caeed50c64
(gethomedir): Look at LOGNAME before USER.
Karl Heuer <kwzh@gnu.org>
parents:
5735
diff
changeset
|
307 if ((ptr = getenv ("LOGNAME")) != NULL |
91caeed50c64
(gethomedir): Look at LOGNAME before USER.
Karl Heuer <kwzh@gnu.org>
parents:
5735
diff
changeset
|
308 || (ptr = getenv ("USER")) != NULL) |
159 | 309 pw = getpwnam (ptr); |
310 else | |
5917
91caeed50c64
(gethomedir): Look at LOGNAME before USER.
Karl Heuer <kwzh@gnu.org>
parents:
5735
diff
changeset
|
311 pw = getpwuid (getuid ()); |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
312 |
159 | 313 if (pw) |
314 ptr = pw->pw_dir; | |
315 } | |
316 | |
29803
3dec4cd5e361
Don't declare xmalloc, xrealloc.
Sam Steingold <sds@gnu.org>
parents:
29756
diff
changeset
|
317 if (ptr == NULL) |
69913
eddb3cab7138
(gethomedir): Use xstrdup.
Romain Francoise <romain@orebokech.com>
parents:
69911
diff
changeset
|
318 return xstrdup ("/"); |
159 | 319 |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
320 copy = (char *) malloc (strlen (ptr) + 2); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
321 strcpy (copy, ptr); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
322 strcat (copy, "/"); |
159 | 323 |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
324 return copy; |
159 | 325 } |
326 | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
327 |
159 | 328 static int |
43672
e26d9755d4e8
(file_p): Rename arg `path' to `filename'.
Richard M. Stallman <rms@gnu.org>
parents:
38840
diff
changeset
|
329 file_p (filename) |
e26d9755d4e8
(file_p): Rename arg `path' to `filename'.
Richard M. Stallman <rms@gnu.org>
parents:
38840
diff
changeset
|
330 char *filename; |
159 | 331 { |
332 struct stat status; | |
333 | |
43672
e26d9755d4e8
(file_p): Rename arg `path' to `filename'.
Richard M. Stallman <rms@gnu.org>
parents:
38840
diff
changeset
|
334 return (access (filename, 4) == 0 /* exists and is readable */ |
e26d9755d4e8
(file_p): Rename arg `path' to `filename'.
Richard M. Stallman <rms@gnu.org>
parents:
38840
diff
changeset
|
335 && stat (filename, &status) == 0 /* get the status */ |
5650
1476768ef7fc
(S_ISDIR): Define if not defined.
Richard M. Stallman <rms@gnu.org>
parents:
5116
diff
changeset
|
336 && (S_ISDIR (status.st_mode)) == 0); /* not a directory */ |
159 | 337 } |
338 | |
339 | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
340 /* Find the first element of SEARCH_PATH which exists and is readable, |
29803
3dec4cd5e361
Don't declare xmalloc, xrealloc.
Sam Steingold <sds@gnu.org>
parents:
29756
diff
changeset
|
341 after expanding the %-escapes. Return 0 if we didn't find any, and |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
342 the path name of the one we found otherwise. */ |
159 | 343 |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
344 static char * |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
345 search_magic_path (search_path, class, escaped_suffix, suffix) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
346 char *search_path, *class, *escaped_suffix, *suffix; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
347 { |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
348 register char *s, *p; |
159 | 349 |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
350 for (s = search_path; *s; s = p) |
159 | 351 { |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
352 for (p = s; *p && *p != ':'; p++) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
353 ; |
29803
3dec4cd5e361
Don't declare xmalloc, xrealloc.
Sam Steingold <sds@gnu.org>
parents:
29756
diff
changeset
|
354 |
5650
1476768ef7fc
(S_ISDIR): Define if not defined.
Richard M. Stallman <rms@gnu.org>
parents:
5116
diff
changeset
|
355 if (p > s) |
1476768ef7fc
(S_ISDIR): Define if not defined.
Richard M. Stallman <rms@gnu.org>
parents:
5116
diff
changeset
|
356 { |
1476768ef7fc
(S_ISDIR): Define if not defined.
Richard M. Stallman <rms@gnu.org>
parents:
5116
diff
changeset
|
357 char *path = magic_file_p (s, p - s, class, escaped_suffix, suffix); |
1476768ef7fc
(S_ISDIR): Define if not defined.
Richard M. Stallman <rms@gnu.org>
parents:
5116
diff
changeset
|
358 if (path) |
1476768ef7fc
(S_ISDIR): Define if not defined.
Richard M. Stallman <rms@gnu.org>
parents:
5116
diff
changeset
|
359 return path; |
1476768ef7fc
(S_ISDIR): Define if not defined.
Richard M. Stallman <rms@gnu.org>
parents:
5116
diff
changeset
|
360 } |
1476768ef7fc
(S_ISDIR): Define if not defined.
Richard M. Stallman <rms@gnu.org>
parents:
5116
diff
changeset
|
361 else if (*p == ':') |
159 | 362 { |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
363 char *path; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
364 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
365 s = "%N%S"; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
366 path = magic_file_p (s, strlen (s), class, escaped_suffix, suffix); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
367 if (path) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
368 return path; |
159 | 369 } |
370 | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
371 if (*p == ':') |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
372 p++; |
159 | 373 } |
374 | |
375 return 0; | |
376 } | |
377 | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
378 /* Producing databases for individual sources. */ |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
379 |
159 | 380 static XrmDatabase |
381 get_system_app (class) | |
382 char *class; | |
383 { | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
384 XrmDatabase db = NULL; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
385 char *path; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
386 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
387 path = getenv ("XFILESEARCHPATH"); |
19388
0f27d1477c21
(get_system_app): Use PATH_X_DEFAULTS.
Richard M. Stallman <rms@gnu.org>
parents:
19318
diff
changeset
|
388 if (! path) path = PATH_X_DEFAULTS; |
159 | 389 |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
390 path = search_magic_path (path, class, 0, 0); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
391 if (path) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
392 { |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
393 db = XrmGetFileDatabase (path); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
394 free (path); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
395 } |
159 | 396 |
397 return db; | |
398 } | |
399 | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
400 |
159 | 401 static XrmDatabase |
402 get_fallback (display) | |
403 Display *display; | |
404 { | |
405 return NULL; | |
406 } | |
407 | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
408 |
159 | 409 static XrmDatabase |
410 get_user_app (class) | |
411 char *class; | |
412 { | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
413 char *path; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
414 char *file = 0; |
17572
73d867b4a654
(get_user_app): Free the gethomedir value.
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
415 char *free_it = 0; |
159 | 416 |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
417 /* Check for XUSERFILESEARCHPATH. It is a path of complete file |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
418 names, not directories. */ |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
419 if (((path = getenv ("XUSERFILESEARCHPATH")) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
420 && (file = search_magic_path (path, class, 0, 0))) |
159 | 421 |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
422 /* Check for APPLRESDIR; it is a path of directories. In each, |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
423 we have to search for LANG/CLASS and then CLASS. */ |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
424 || ((path = getenv ("XAPPLRESDIR")) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
425 && ((file = search_magic_path (path, class, "/%L/%N", 0)) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
426 || (file = search_magic_path (path, class, "/%N", 0)))) |
29803
3dec4cd5e361
Don't declare xmalloc, xrealloc.
Sam Steingold <sds@gnu.org>
parents:
29756
diff
changeset
|
427 |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
428 /* Check in the home directory. This is a bit of a hack; let's |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
429 hope one's home directory doesn't contain any %-escapes. */ |
17572
73d867b4a654
(get_user_app): Free the gethomedir value.
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
430 || (free_it = gethomedir (), |
73d867b4a654
(get_user_app): Free the gethomedir value.
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
431 ((file = search_magic_path (free_it, class, "%L/%N", 0)) |
73d867b4a654
(get_user_app): Free the gethomedir value.
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
432 || (file = search_magic_path (free_it, class, "%N", 0))))) |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
433 { |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
434 XrmDatabase db = XrmGetFileDatabase (file); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
435 free (file); |
17572
73d867b4a654
(get_user_app): Free the gethomedir value.
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
436 if (free_it) |
73d867b4a654
(get_user_app): Free the gethomedir value.
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
437 free (free_it); |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
438 return db; |
159 | 439 } |
17572
73d867b4a654
(get_user_app): Free the gethomedir value.
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
440 |
73d867b4a654
(get_user_app): Free the gethomedir value.
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
441 if (free_it) |
73d867b4a654
(get_user_app): Free the gethomedir value.
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
442 free (free_it); |
73d867b4a654
(get_user_app): Free the gethomedir value.
Richard M. Stallman <rms@gnu.org>
parents:
14186
diff
changeset
|
443 return NULL; |
159 | 444 } |
445 | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
446 |
159 | 447 static XrmDatabase |
448 get_user_db (display) | |
449 Display *display; | |
450 { | |
451 XrmDatabase db; | |
452 char *xdefs; | |
453 | |
2126
616aeb5c1432
* xrdb.c (get_user_db): Since xrdb.c doesn't #include xterm.h,
Jim Blandy <jimb@redhat.com>
parents:
1934
diff
changeset
|
454 #ifdef PBaseSize /* Cheap way to test for X11R4 or later. */ |
1051
777ed2b92359
* xrdb.c (get_user_db): Use XResourceManagerString when available
Jim Blandy <jimb@redhat.com>
parents:
1019
diff
changeset
|
455 xdefs = XResourceManagerString (display); |
777ed2b92359
* xrdb.c (get_user_db): Use XResourceManagerString when available
Jim Blandy <jimb@redhat.com>
parents:
1019
diff
changeset
|
456 #else |
1019
aaa628aaf808
* xrdb.c [USG5]: Define SYSV, and then include <unistd.h>. I
Jim Blandy <jimb@redhat.com>
parents:
620
diff
changeset
|
457 xdefs = display->xdefaults; |
1051
777ed2b92359
* xrdb.c (get_user_db): Use XResourceManagerString when available
Jim Blandy <jimb@redhat.com>
parents:
1019
diff
changeset
|
458 #endif |
777ed2b92359
* xrdb.c (get_user_db): Use XResourceManagerString when available
Jim Blandy <jimb@redhat.com>
parents:
1019
diff
changeset
|
459 |
159 | 460 if (xdefs != NULL) |
461 db = XrmGetStringDatabase (xdefs); | |
462 else | |
463 { | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
464 char *home; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
465 char *xdefault; |
159 | 466 |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
467 home = gethomedir (); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
468 xdefault = (char *) malloc (strlen (home) + sizeof (".Xdefaults")); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
469 strcpy (xdefault, home); |
159 | 470 strcat (xdefault, ".Xdefaults"); |
471 db = XrmGetFileDatabase (xdefault); | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
472 free (home); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
473 free (xdefault); |
159 | 474 } |
475 | |
4366
04bd0c1a6245
* config.h.in (HAVE_XSCREENRESOURCESTRING): New #undef for
Jim Blandy <jimb@redhat.com>
parents:
4233
diff
changeset
|
476 #ifdef HAVE_XSCREENRESOURCESTRING |
3654
d9313b9a63ad
* xrdb.c (get_user_db): Get the screen-specific database too.
Jim Blandy <jimb@redhat.com>
parents:
3371
diff
changeset
|
477 /* Get the screen-specific resources too. */ |
d9313b9a63ad
* xrdb.c (get_user_db): Get the screen-specific database too.
Jim Blandy <jimb@redhat.com>
parents:
3371
diff
changeset
|
478 xdefs = XScreenResourceString (DefaultScreenOfDisplay (display)); |
d9313b9a63ad
* xrdb.c (get_user_db): Get the screen-specific database too.
Jim Blandy <jimb@redhat.com>
parents:
3371
diff
changeset
|
479 if (xdefs != NULL) |
3873
e67c6c10dd7c
* xrdb.c (get_user_db): Remember to free the screen-local resource
Jim Blandy <jimb@redhat.com>
parents:
3654
diff
changeset
|
480 { |
e67c6c10dd7c
* xrdb.c (get_user_db): Remember to free the screen-local resource
Jim Blandy <jimb@redhat.com>
parents:
3654
diff
changeset
|
481 XrmMergeDatabases (XrmGetStringDatabase (xdefs), &db); |
e67c6c10dd7c
* xrdb.c (get_user_db): Remember to free the screen-local resource
Jim Blandy <jimb@redhat.com>
parents:
3654
diff
changeset
|
482 XFree (xdefs); |
e67c6c10dd7c
* xrdb.c (get_user_db): Remember to free the screen-local resource
Jim Blandy <jimb@redhat.com>
parents:
3654
diff
changeset
|
483 } |
3654
d9313b9a63ad
* xrdb.c (get_user_db): Get the screen-specific database too.
Jim Blandy <jimb@redhat.com>
parents:
3371
diff
changeset
|
484 #endif |
d9313b9a63ad
* xrdb.c (get_user_db): Get the screen-specific database too.
Jim Blandy <jimb@redhat.com>
parents:
3371
diff
changeset
|
485 |
159 | 486 return db; |
487 } | |
488 | |
489 static XrmDatabase | |
490 get_environ_db () | |
491 { | |
492 XrmDatabase db; | |
493 char *p; | |
5735
87611653922f
(x_get_customization_string): Use get_system_name instead of gethostname.
Karl Heuer <kwzh@gnu.org>
parents:
5650
diff
changeset
|
494 char *path = 0, *home = 0, *host; |
159 | 495 |
496 if ((p = getenv ("XENVIRONMENT")) == NULL) | |
497 { | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
498 home = gethomedir (); |
5735
87611653922f
(x_get_customization_string): Use get_system_name instead of gethostname.
Karl Heuer <kwzh@gnu.org>
parents:
5650
diff
changeset
|
499 host = get_system_name (); |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
500 path = (char *) malloc (strlen (home) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
501 + sizeof (".Xdefaults-") |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
502 + strlen (host)); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
503 sprintf (path, "%s%s%s", home, ".Xdefaults-", host); |
159 | 504 p = path; |
505 } | |
506 | |
507 db = XrmGetFileDatabase (p); | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
508 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
509 if (path) free (path); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
510 if (home) free (home); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
511 |
159 | 512 return db; |
513 } | |
514 | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
515 /* External interface. */ |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
516 |
159 | 517 /* Types of values that we can find in a database */ |
518 | |
519 #define XrmStringType "String" /* String representation */ | |
520 XrmRepresentation x_rm_string; /* Quark representation */ | |
521 | |
522 /* Load X resources based on the display and a possible -xrm option. */ | |
523 | |
524 XrmDatabase | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
525 x_load_resources (display, xrm_string, myname, myclass) |
159 | 526 Display *display; |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
527 char *xrm_string, *myname, *myclass; |
159 | 528 { |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
529 XrmDatabase user_database; |
159 | 530 XrmDatabase rdb; |
531 XrmDatabase db; | |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
532 char line[256]; |
60830
35cf88000489
* xrdb.c (x_load_resources): Undo previous change (2005-03-18).
Jan Djärv <jan.h.d@swipnet.se>
parents:
60717
diff
changeset
|
533 |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
534 char *helv = "-*-helvetica-medium-r-*--*-120-*-*-*-*-iso8859-1"; |
60830
35cf88000489
* xrdb.c (x_load_resources): Undo previous change (2005-03-18).
Jan Djärv <jan.h.d@swipnet.se>
parents:
60717
diff
changeset
|
535 |
25749
275227ca3c0c
(get_fallback): Remove unused variable.
Gerd Moellmann <gerd@gnu.org>
parents:
24992
diff
changeset
|
536 #ifdef USE_MOTIF |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
537 char *courier = "-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1"; |
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
538 extern Lisp_Object Vdouble_click_time; |
25749
275227ca3c0c
(get_fallback): Remove unused variable.
Gerd Moellmann <gerd@gnu.org>
parents:
24992
diff
changeset
|
539 #endif |
159 | 540 |
541 x_rm_string = XrmStringToQuark (XrmStringType); | |
7342
4cf4669565af
(x_load_resources) [USE_X_TOOLKIT]: Don't call XrmInitialize.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
542 #ifndef USE_X_TOOLKIT |
4cf4669565af
(x_load_resources) [USE_X_TOOLKIT]: Don't call XrmInitialize.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
543 /* pmr@osf.org says this shouldn't be done if USE_X_TOOLKIT. |
4cf4669565af
(x_load_resources) [USE_X_TOOLKIT]: Don't call XrmInitialize.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
544 I suspect it's because the toolkit version does this elsewhere. */ |
159 | 545 XrmInitialize (); |
7342
4cf4669565af
(x_load_resources) [USE_X_TOOLKIT]: Don't call XrmInitialize.
Richard M. Stallman <rms@gnu.org>
parents:
7307
diff
changeset
|
546 #endif |
159 | 547 rdb = XrmGetStringDatabase (""); |
548 | |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
549 /* Add some font defaults. If the font `helv' doesn't exist, widgets |
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
550 will use some other default font. */ |
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
551 #ifdef USE_MOTIF |
29803
3dec4cd5e361
Don't declare xmalloc, xrealloc.
Sam Steingold <sds@gnu.org>
parents:
29756
diff
changeset
|
552 |
33084
31fae82503f7
(x_load_resources): Use the class name in the defaults.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31829
diff
changeset
|
553 sprintf (line, "%s.pane.background: grey75", myclass); |
29865
6b6699c7fce3
(x_load_resources): Add default resource for scroll bar's
Gerd Moellmann <gerd@gnu.org>
parents:
29803
diff
changeset
|
554 XrmPutLineResource (&rdb, line); |
33084
31fae82503f7
(x_load_resources): Use the class name in the defaults.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31829
diff
changeset
|
555 sprintf (line, "%s*fontList: %s", myclass, helv); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
556 XrmPutLineResource (&rdb, line); |
33084
31fae82503f7
(x_load_resources): Use the class name in the defaults.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31829
diff
changeset
|
557 sprintf (line, "%s*menu*background: grey75", myclass); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
558 XrmPutLineResource (&rdb, line); |
36739
483ab551a108
(x_load_resources) [USE_MOTIF]: Remove extraneous arg
Gerd Moellmann <gerd@gnu.org>
parents:
33084
diff
changeset
|
559 sprintf (line, "%s*menubar*background: grey75", myclass); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
560 XrmPutLineResource (&rdb, line); |
33084
31fae82503f7
(x_load_resources): Use the class name in the defaults.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31829
diff
changeset
|
561 sprintf (line, "%s*verticalScrollBar.background: grey75", myclass); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
562 XrmPutLineResource (&rdb, line); |
33084
31fae82503f7
(x_load_resources): Use the class name in the defaults.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31829
diff
changeset
|
563 sprintf (line, "%s*verticalScrollBar.troughColor: grey75", myclass); |
29865
6b6699c7fce3
(x_load_resources): Add default resource for scroll bar's
Gerd Moellmann <gerd@gnu.org>
parents:
29803
diff
changeset
|
564 XrmPutLineResource (&rdb, line); |
33084
31fae82503f7
(x_load_resources): Use the class name in the defaults.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31829
diff
changeset
|
565 sprintf (line, "%s.dialog*.background: grey75", myclass); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
566 XrmPutLineResource (&rdb, line); |
33084
31fae82503f7
(x_load_resources): Use the class name in the defaults.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31829
diff
changeset
|
567 sprintf (line, "%s*fsb.Text.background: white", myclass); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
568 XrmPutLineResource (&rdb, line); |
33084
31fae82503f7
(x_load_resources): Use the class name in the defaults.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31829
diff
changeset
|
569 sprintf (line, "%s*fsb.FilterText.background: white", myclass); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
570 XrmPutLineResource (&rdb, line); |
33084
31fae82503f7
(x_load_resources): Use the class name in the defaults.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31829
diff
changeset
|
571 sprintf (line, "%s*fsb*DirList.background: white", myclass); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
572 XrmPutLineResource (&rdb, line); |
33084
31fae82503f7
(x_load_resources): Use the class name in the defaults.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31829
diff
changeset
|
573 sprintf (line, "%s*fsb*ItemsList.background: white", myclass); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
574 XrmPutLineResource (&rdb, line); |
33084
31fae82503f7
(x_load_resources): Use the class name in the defaults.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31829
diff
changeset
|
575 sprintf (line, "%s*fsb*background: grey75", myclass); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
576 XrmPutLineResource (&rdb, line); |
33084
31fae82503f7
(x_load_resources): Use the class name in the defaults.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31829
diff
changeset
|
577 sprintf (line, "%s*fsb.Text.fontList: %s", myclass, courier); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
578 XrmPutLineResource (&rdb, line); |
33084
31fae82503f7
(x_load_resources): Use the class name in the defaults.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31829
diff
changeset
|
579 sprintf (line, "%s*fsb.FilterText.fontList: %s", myclass, courier); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
580 XrmPutLineResource (&rdb, line); |
33084
31fae82503f7
(x_load_resources): Use the class name in the defaults.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31829
diff
changeset
|
581 sprintf (line, "%s*fsb*ItemsList.fontList: %s", myclass, courier); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
582 XrmPutLineResource (&rdb, line); |
33084
31fae82503f7
(x_load_resources): Use the class name in the defaults.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31829
diff
changeset
|
583 sprintf (line, "%s*fsb*DirList.fontList: %s", myclass, courier); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
584 XrmPutLineResource (&rdb, line); |
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
585 |
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
586 /* Set double click time of list boxes in the file selection |
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
587 dialog from `double-click-time'. */ |
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
588 if (INTEGERP (Vdouble_click_time) && XINT (Vdouble_click_time) > 0) |
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
589 { |
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
590 sprintf (line, "%s*fsb*DirList.doubleClickInterval: %d", |
33084
31fae82503f7
(x_load_resources): Use the class name in the defaults.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31829
diff
changeset
|
591 myclass, XFASTINT (Vdouble_click_time)); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
592 XrmPutLineResource (&rdb, line); |
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
593 sprintf (line, "%s*fsb*ItemsList.doubleClickInterval: %d", |
33084
31fae82503f7
(x_load_resources): Use the class name in the defaults.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31829
diff
changeset
|
594 myclass, XFASTINT (Vdouble_click_time)); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
595 XrmPutLineResource (&rdb, line); |
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
596 } |
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
597 |
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
598 #else /* not USE_MOTIF */ |
29803
3dec4cd5e361
Don't declare xmalloc, xrealloc.
Sam Steingold <sds@gnu.org>
parents:
29756
diff
changeset
|
599 |
29755
ab23e43de97d
(x_load_resources): Set default resources for resource
Dave Love <fx@gnu.org>
parents:
25749
diff
changeset
|
600 sprintf (line, "Emacs.dialog*.font: %s", helv); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
601 XrmPutLineResource (&rdb, line); |
29755
ab23e43de97d
(x_load_resources): Set default resources for resource
Dave Love <fx@gnu.org>
parents:
25749
diff
changeset
|
602 sprintf (line, "Emacs.dialog*.background: grey75"); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
603 XrmPutLineResource (&rdb, line); |
29755
ab23e43de97d
(x_load_resources): Set default resources for resource
Dave Love <fx@gnu.org>
parents:
25749
diff
changeset
|
604 sprintf (line, "*XlwMenu*font: %s", helv); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
605 XrmPutLineResource (&rdb, line); |
29755
ab23e43de97d
(x_load_resources): Set default resources for resource
Dave Love <fx@gnu.org>
parents:
25749
diff
changeset
|
606 sprintf (line, "*XlwMenu*background: grey75"); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
607 XrmPutLineResource (&rdb, line); |
29755
ab23e43de97d
(x_load_resources): Set default resources for resource
Dave Love <fx@gnu.org>
parents:
25749
diff
changeset
|
608 sprintf (line, "Emacs*verticalScrollBar.background: grey75"); |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
609 XrmPutLineResource (&rdb, line); |
29803
3dec4cd5e361
Don't declare xmalloc, xrealloc.
Sam Steingold <sds@gnu.org>
parents:
29756
diff
changeset
|
610 |
24992
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
611 #endif /* not USE_MOTIF */ |
f1632be03391
(x_load_resources): Set double-click time defaults
Gerd Moellmann <gerd@gnu.org>
parents:
24412
diff
changeset
|
612 |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
613 user_database = get_user_db (display); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
614 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
615 /* Figure out what the "customization string" is, so we can use it |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
616 to decode paths. */ |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
617 if (x_customization_string) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
618 free (x_customization_string); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
619 x_customization_string |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
620 = x_get_customization_string (user_database, myname, myclass); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
621 |
159 | 622 /* Get application system defaults */ |
623 db = get_system_app (myclass); | |
624 if (db != NULL) | |
625 XrmMergeDatabases (db, &rdb); | |
626 | |
627 /* Get Fallback resources */ | |
628 db = get_fallback (display); | |
629 if (db != NULL) | |
630 XrmMergeDatabases (db, &rdb); | |
631 | |
632 /* Get application user defaults */ | |
633 db = get_user_app (myclass); | |
634 if (db != NULL) | |
635 XrmMergeDatabases (db, &rdb); | |
636 | |
637 /* get User defaults */ | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
638 if (user_database != NULL) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
639 XrmMergeDatabases (user_database, &rdb); |
159 | 640 |
641 /* Get Environment defaults. */ | |
642 db = get_environ_db (); | |
643 if (db != NULL) | |
644 XrmMergeDatabases (db, &rdb); | |
29803
3dec4cd5e361
Don't declare xmalloc, xrealloc.
Sam Steingold <sds@gnu.org>
parents:
29756
diff
changeset
|
645 |
159 | 646 /* Last, merge in any specification from the command line. */ |
647 if (xrm_string != NULL) | |
648 { | |
649 db = XrmGetStringDatabase (xrm_string); | |
650 if (db != NULL) | |
651 XrmMergeDatabases (db, &rdb); | |
652 } | |
653 | |
654 return rdb; | |
655 } | |
656 | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
657 |
159 | 658 /* Retrieve the value of the resource specified by NAME with class CLASS |
659 and of type TYPE from database RDB. The value is returned in RET_VALUE. */ | |
660 | |
661 int | |
662 x_get_resource (rdb, name, class, expected_type, ret_value) | |
663 XrmDatabase rdb; | |
664 char *name, *class; | |
665 XrmRepresentation expected_type; | |
666 XrmValue *ret_value; | |
667 { | |
668 XrmValue value; | |
669 XrmName namelist[100]; | |
670 XrmClass classlist[100]; | |
671 XrmRepresentation type; | |
672 | |
673 XrmStringToNameList(name, namelist); | |
674 XrmStringToClassList(class, classlist); | |
675 | |
676 if (XrmQGetResource (rdb, namelist, classlist, &type, &value) == True | |
677 && (type == expected_type)) | |
678 { | |
679 if (type == x_rm_string) | |
1200
d2360c870787
* xrdb.c (x_get_resource): Cast the value being assigned to
Jim Blandy <jimb@redhat.com>
parents:
1126
diff
changeset
|
680 ret_value->addr = (char *) value.addr; |
159 | 681 else |
682 bcopy (value.addr, ret_value->addr, ret_value->size); | |
683 | |
684 return value.size; | |
685 } | |
686 | |
687 return 0; | |
688 } | |
689 | |
690 /* Retrieve the string resource specified by NAME with CLASS from | |
691 database RDB. */ | |
692 | |
693 char * | |
694 x_get_string_resource (rdb, name, class) | |
695 XrmDatabase rdb; | |
696 char *name, *class; | |
697 { | |
698 XrmValue value; | |
699 | |
700 if (x_get_resource (rdb, name, class, x_rm_string, &value)) | |
701 return (char *) value.addr; | |
702 | |
703 return (char *) 0; | |
704 } | |
705 | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
706 /* Stand-alone test facilities. */ |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
707 |
159 | 708 #ifdef TESTRM |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
709 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
710 typedef char **List; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
711 #define arg_listify(len, list) (list) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
712 #define car(list) (*(list)) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
713 #define cdr(list) (list + 1) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
714 #define NIL(list) (! *(list)) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
715 #define free_arglist(list) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
716 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
717 static List |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
718 member (elt, list) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
719 char *elt; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
720 List list; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
721 { |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
722 List p; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
723 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
724 for (p = list; ! NIL (p); p = cdr (p)) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
725 if (! strcmp (elt, car (p))) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
726 return p; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
727 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
728 return p; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
729 } |
159 | 730 |
731 static void | |
732 fatal (msg, prog, x1, x2, x3, x4, x5) | |
733 char *msg, *prog; | |
734 int x1, x2, x3, x4, x5; | |
735 { | |
736 extern int errno; | |
737 | |
738 if (errno) | |
739 perror (prog); | |
740 | |
741 (void) fprintf (stderr, msg, prog, x1, x2, x3, x4, x5); | |
742 exit (1); | |
743 } | |
744 | |
745 main (argc, argv) | |
746 int argc; | |
747 char **argv; | |
748 { | |
749 Display *display; | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
750 char *displayname, *resource_string, *class, *name; |
159 | 751 XrmDatabase xdb; |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
752 List arg_list, lp; |
159 | 753 |
754 arg_list = arg_listify (argc, argv); | |
755 | |
756 lp = member ("-d", arg_list); | |
757 if (!NIL (lp)) | |
758 displayname = car (cdr (lp)); | |
759 else | |
760 displayname = "localhost:0.0"; | |
761 | |
762 lp = member ("-xrm", arg_list); | |
763 if (! NIL (lp)) | |
764 resource_string = car (cdr (lp)); | |
765 else | |
766 resource_string = (char *) 0; | |
767 | |
768 lp = member ("-c", arg_list); | |
769 if (! NIL (lp)) | |
770 class = car (cdr (lp)); | |
771 else | |
772 class = "Emacs"; | |
773 | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
774 lp = member ("-n", arg_list); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
775 if (! NIL (lp)) |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
776 name = car (cdr (lp)); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
777 else |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
778 name = "emacs"; |
159 | 779 |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
780 free_arglist (arg_list); |
159 | 781 |
782 if (!(display = XOpenDisplay (displayname))) | |
783 fatal ("Can't open display '%s'\n", XDisplayName (displayname)); | |
784 | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
785 xdb = x_load_resources (display, resource_string, name, class); |
159 | 786 |
787 /* In a real program, you'd want to also do this: */ | |
788 display->db = xdb; | |
789 | |
790 while (1) | |
791 { | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
792 char query_name[90]; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
793 char query_class[90]; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
794 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
795 printf ("Name: "); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
796 gets (query_name); |
159 | 797 |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
798 if (strlen (query_name)) |
159 | 799 { |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
800 char *value; |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
801 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
802 printf ("Class: "); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
803 gets (query_class); |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
804 |
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
805 value = x_get_string_resource (xdb, query_name, query_class); |
159 | 806 |
807 if (value != NULL) | |
4232
f533d585cfc8
Implement search for app-defaults directory and
Jim Blandy <jimb@redhat.com>
parents:
3873
diff
changeset
|
808 printf ("\t%s(%s): %s\n\n", query_name, query_class, value); |
159 | 809 else |
810 printf ("\tNo Value.\n\n"); | |
811 } | |
812 else | |
813 break; | |
814 } | |
815 printf ("\tExit.\n\n"); | |
816 | |
817 XCloseDisplay (display); | |
818 } | |
819 #endif /* TESTRM */ | |
52401 | 820 |
821 /* arch-tag: 37e6fbab-ed05-4363-9e76-6c4109ed511f | |
822 (do not change this comment) */ |