Line
Link Here
|
0 |
-- pango/pango/modules.c |
0 |
++ pango/pango/modules.c |
Lines 361-367
find_or_create_module (const char *raw_path)
Link Here
|
361 |
else |
361 |
else |
362 |
#endif |
362 |
#endif |
363 |
{ |
363 |
{ |
364 |
path = g_strdup (raw_path); |
364 |
if (g_path_is_absolute (raw_path)) |
|
|
365 |
path = g_strdup (raw_path); |
366 |
else |
367 |
path = g_build_filename (pango_get_lib_subdirectory (), |
368 |
MODULE_VERSION, "modules", raw_path, NULL); |
365 |
} |
369 |
} |
366 |
|
370 |
|
367 |
module = g_hash_table_lookup (dlloaded_modules, path); |
371 |
module = g_hash_table_lookup (dlloaded_modules, path); |
368 |
-- pango/pango/querymodules.c |
372 |
++ pango/pango/querymodules.c |
Lines 110-115
string_from_script (PangoScript script)
Link Here
|
110 |
return value->value_nick; |
110 |
return value->value_nick; |
111 |
} |
111 |
} |
112 |
|
112 |
|
|
|
113 |
static char *pango_modules_directory; |
114 |
|
113 |
static void |
115 |
static void |
114 |
query_module (const char *dir, const char *name) |
116 |
query_module (const char *dir, const char *name) |
115 |
{ |
117 |
{ |
Lines 145-162
query_module (const char *dir, const char *name)
Link Here
|
145 |
|
147 |
|
146 |
for (i=0; i<n_engines; i++) |
148 |
for (i=0; i<n_engines; i++) |
147 |
{ |
149 |
{ |
|
|
150 |
const char *out_path; |
148 |
const gchar *quote; |
151 |
const gchar *quote; |
149 |
gchar *quoted_path; |
152 |
gchar *quoted_path; |
150 |
|
153 |
|
151 |
if (string_needs_escape (path)) |
154 |
if (!g_path_is_absolute (name) && !strcmp(dir, pango_modules_directory)) |
|
|
155 |
out_path = name; |
156 |
else |
157 |
out_path = path; |
158 |
|
159 |
if (string_needs_escape (out_path)) |
152 |
{ |
160 |
{ |
153 |
quote = "\""; |
161 |
quote = "\""; |
154 |
quoted_path = escape_string (path); |
162 |
quoted_path = escape_string (out_path); |
155 |
} |
163 |
} |
156 |
else |
164 |
else |
157 |
{ |
165 |
{ |
158 |
quote = ""; |
166 |
quote = ""; |
159 |
quoted_path = g_strdup (path); |
167 |
quoted_path = g_strdup (out_path); |
160 |
} |
168 |
} |
161 |
|
169 |
|
162 |
g_printf ("%s%s%s %s %s %s", quote, quoted_path, quote, |
170 |
g_printf ("%s%s%s %s %s %s", quote, quoted_path, quote, |
Lines 193-198
show_version(const char *name G_GNUC_UNUSED,
Link Here
|
193 |
exit(0); |
201 |
exit(0); |
194 |
} |
202 |
} |
195 |
|
203 |
|
|
|
204 |
static void |
205 |
query_dir (const char *name) |
206 |
{ |
207 |
GDir *dir; |
208 |
const char *dent; |
209 |
size_t len; |
210 |
|
211 |
if (!g_path_is_absolute (name)) |
212 |
return; |
213 |
dir = g_dir_open (name, 0, NULL); |
214 |
if (!dir) |
215 |
return; |
216 |
|
217 |
while ((dent = g_dir_read_name (dir))) |
218 |
{ |
219 |
len = strlen (dent); |
220 |
if (len > SOEXT_LEN && strcmp (dent + len - SOEXT_LEN, SOEXT) == 0) |
221 |
query_module (name, dent); |
222 |
} |
223 |
|
224 |
g_dir_close (dir); |
225 |
} |
226 |
|
196 |
int |
227 |
int |
197 |
main (int argc, char **argv) |
228 |
main (int argc, char **argv) |
198 |
{ |
229 |
{ |
Lines 232-274
main (int argc, char **argv)
Link Here
|
232 |
"# Automatically generated file, do not edit\n" |
263 |
"# Automatically generated file, do not edit\n" |
233 |
"#\n"); |
264 |
"#\n"); |
234 |
|
265 |
|
|
|
266 |
pango_modules_directory = g_build_filename (pango_get_lib_subdirectory (), |
267 |
MODULE_VERSION, |
268 |
"modules", |
269 |
NULL); |
270 |
|
235 |
if (argc == 1) /* No arguments given */ |
271 |
if (argc == 1) /* No arguments given */ |
236 |
{ |
272 |
{ |
237 |
char **dirs; |
273 |
char **dirs; |
238 |
int i; |
274 |
int i; |
239 |
|
275 |
|
240 |
path = pango_config_key_get ("Pango/ModulesPath"); |
276 |
path = pango_config_key_get ("Pango/ModulesPath"); |
241 |
if (!path) |
|
|
242 |
path = g_build_filename (pango_get_lib_subdirectory (), |
243 |
MODULE_VERSION, |
244 |
"modules", |
245 |
NULL); |
246 |
|
247 |
g_printf ("# ModulesPath = %s\n#\n", path); |
248 |
|
277 |
|
249 |
dirs = pango_split_file_list (path); |
278 |
g_printf ("# ModulesPath = %s\n#\n", path ? path : pango_modules_directory); |
250 |
|
279 |
|
251 |
g_free (path); |
280 |
if (path) |
252 |
|
|
|
253 |
for (i=0; dirs[i]; i++) |
254 |
{ |
281 |
{ |
255 |
GDir *dir = g_dir_open (dirs[i], 0, NULL); |
282 |
dirs = pango_split_file_list (path); |
256 |
if (dir) |
|
|
257 |
{ |
258 |
const char *dent; |
259 |
|
283 |
|
260 |
while ((dent = g_dir_read_name (dir))) |
284 |
g_free (path); |
261 |
{ |
|
|
262 |
int len = strlen (dent); |
263 |
if (len > SOEXT_LEN && strcmp (dent + len - SOEXT_LEN, SOEXT) == 0) |
264 |
query_module (dirs[i], dent); |
265 |
} |
266 |
|
285 |
|
267 |
g_dir_close (dir); |
286 |
for (i=0; dirs[i]; i++) |
268 |
} |
287 |
query_dir (dirs[i]); |
269 |
} |
|
|
270 |
|
288 |
|
271 |
g_strfreev (dirs); |
289 |
g_strfreev (dirs); |
|
|
290 |
} |
291 |
else |
292 |
query_dir (pango_modules_directory); |
272 |
} |
293 |
} |
273 |
else |
294 |
else |
274 |
{ |
295 |
{ |
Lines 280-284
main (int argc, char **argv)
Link Here
|
280 |
g_free (cwd); |
301 |
g_free (cwd); |
281 |
} |
302 |
} |
282 |
|
303 |
|
|
|
304 |
g_free (pango_modules_directory); |
305 |
|
283 |
return 0; |
306 |
return 0; |
284 |
} |
307 |
} |