]>
Commit | Line | Data |
---|---|---|
99aab3da AM |
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) | |
5804a068 | 7 | { |
99aab3da AM |
8 | - char *path = Xasprintf ("%s/%s", dir, file); |
9 | + char *path; | |
02ee456b | 10 | + char *cfgdir; |
5804a068 | 11 | + struct stat st; |
eca1808b JB |
12 | + int isdot = (*file == '.'); |
13 | + | |
14 | + if ( (path = getenv("CONFIG_DIR")) && path[0] ) { | |
99aab3da AM |
15 | + cfgdir = xmalloc(strlen(dir) + 1 + strlen(path) + 1); |
16 | + sprintf(cfgdir, "%s/%s", dir, path); | |
eca1808b | 17 | + } else |
99aab3da | 18 | + cfgdir = NULL; |
0ede5f01 | 19 | + if ( cfgdir && (stat(cfgdir, &st) != -1) && S_ISDIR(st.st_mode) ) { |
99aab3da | 20 | + path = Xasprintf ("%s/%s", cfgdir, file+isdot); |
eca1808b | 21 | + } else { |
99aab3da | 22 | + path = Xasprintf ("%s/%s", dir, file); |
ecade4f5 | 23 | + } |
eca1808b | 24 | + if (cfgdir) |
99aab3da AM |
25 | + free(cfgdir); |
26 | + | |
eca1808b JB |
27 | return path; |
28 | } | |
506d24d5 | 29 |