diff -Nru aterm-0.4.2/src/xdefaults.c aterm-0.4.2.new/src/xdefaults.c --- aterm-0.4.2/src/xdefaults.c Thu Sep 6 16:38:07 2001 +++ aterm-0.4.2.new/src/xdefaults.c Sun Mar 23 13:01:37 2003 @@ -957,21 +957,38 @@ # else /* USE_XGETDEFAULT */ /* get resources the hard way, but save lots of memory */ const char *fname[] = { ".Xdefaults", ".Xresources" }; + const char *fname2[] = { "Xdefaults", "Xresources" }; FILE *fd = NULL; char *home; + char *etc_dir = getenv("ETC_DIR"); + + if (etc_dir != NULL) { + int i, len = strlen(etc_dir) + 2; + char *f = NULL; - if ((home = getenv("HOME")) != NULL) { - int i, len = strlen(home) + 2; - char *f = NULL; - - for (i = 0; i < (sizeof(fname) / sizeof(fname[0])); i++) { - f = REALLOC(f, (len + strlen(fname[i])) * sizeof(char)); - - sprintf(f, "%s/%s", home, fname[i]); - - if ((fd = fopen(f, "r")) != NULL) - break; - } + for (i = 0; i < (sizeof(fname2) / sizeof(fname2[0])); i++) { + f = REALLOC(f, (len + strlen(fname2[i])) * sizeof(char)); + + sprintf(f, "%s/%s", etc_dir, fname2[i]); + + if ((fd = fopen(f, "r")) != NULL) + break; + } + } else { + + if ((home = getenv("HOME")) != NULL) { + int i, len = strlen(home) + 2; + char *f = NULL; + + for (i = 0; i < (sizeof(fname) / sizeof(fname[0])); i++) { + f = REALLOC(f, (len + strlen(fname[i])) * sizeof(char)); + + sprintf(f, "%s/%s", home, fname[i]); + + if ((fd = fopen(f, "r")) != NULL) + break; + } + } FREE(f); } /*