]>
Commit | Line | Data |
---|---|---|
1 | diff -urN cvs-1.12.13.org/src/filesubr.c cvs-1.12.13/src/filesubr.c | |
2 | --- cvs-1.12.13.org/src/filesubr.c 2005-09-28 17:25:59.000000000 +0200 | |
3 | +++ cvs-1.12.13/src/filesubr.c 2007-11-05 20:47:46.928468198 +0100 | |
4 | @@ -832,7 +832,24 @@ | |
5 | char * | |
6 | strcat_filename_onto_homedir (const char *dir, const char *file) | |
7 | { | |
8 | - char *path = Xasprintf ("%s/%s", dir, file); | |
9 | + char *path; | |
10 | + char *cfgdir; | |
11 | + struct stat st; | |
12 | + int isdot = (*file == '.'); | |
13 | + | |
14 | + if ( (path = getenv("CONFIG_DIR")) && path[0] ) { | |
15 | + cfgdir = xmalloc(strlen(dir) + 1 + strlen(path) + 1); | |
16 | + sprintf(cfgdir, "%s/%s", dir, path); | |
17 | + } else | |
18 | + cfgdir = NULL; | |
19 | + if ( cfgdir && (stat(cfgdir, &st) != -1) && S_ISDIR(st.st_mode) ) { | |
20 | + path = Xasprintf ("%s/%s", cfgdir, file+isdot); | |
21 | + } else { | |
22 | + path = Xasprintf ("%s/%s", dir, file); | |
23 | + } | |
24 | + if (cfgdir) | |
25 | + free(cfgdir); | |
26 | + | |
27 | return path; | |
28 | } | |
29 |