--- /dev/null
+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 *config_dir = getenv("CONFIG_DIR");
++
++ if (config_dir != NULL) {
++ int i, len = strlen(config_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", config_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);
+ }
+ /*