diff -Nru links-hacked-030316/default.c links-hacked-030316.new/default.c --- links-hacked-030316/default.c Sun Mar 16 14:53:51 2003 +++ links-hacked-030316.new/default.c Mon Apr 7 12:47:32 2003 @@ -233,44 +233,50 @@ struct stat st; unsigned char *home = stracpy(getenv("HOME")); unsigned char *home_links; + unsigned char *etc_dir = getenv("HOME_ETC"); unsigned char *config_dir = stracpy(getenv("CONFIG_DIR")); if (n) *n = 1; - if (!home) { - int i; - home = stracpy(path_to_exe); - if (!home) { - if (config_dir) mem_free(config_dir); - return NULL; - } - for (i = strlen(home) - 1; i >= 0; i--) if (dir_sep(home[i])) { - home[i + 1] = 0; - goto br; - } - home[0] = 0; - br:; - } - while (home[0] && dir_sep(home[strlen(home) - 1])) home[strlen(home) - 1] = 0; - if (home[0]) add_to_strn(&home, "/"); - home_links = stracpy(home); - if (config_dir) - { - add_to_strn(&home_links, config_dir); - while (home_links[0] && dir_sep(home_links[strlen(home_links) - 1])) home_links[strlen(home_links) - 1] = 0; - if (stat(home_links, &st) != -1 && S_ISDIR(st.st_mode)) { - add_to_strn(&home_links, "/links"); + if (etc_dir) { + home_links = stracpy(etc_dir); + add_to_strn(&home_links, "/.links"); + } else { + if (!home) { + int i; + home = stracpy(path_to_exe); + if (!home) { + if (config_dir) mem_free(config_dir); + return NULL; + } + for (i = strlen(home) - 1; i >= 0; i--) if (dir_sep(home[i])) { + home[i + 1] = 0; + goto br; + } + home[0] = 0; + br:; + } + while (home[0] && dir_sep(home[strlen(home) - 1])) home[strlen(home) - 1] = 0; + if (home[0]) add_to_strn(&home, "/"); + home_links = stracpy(home); + if (config_dir) + { + add_to_strn(&home_links, config_dir); + while (home_links[0] && dir_sep(home_links[strlen(home_links) - 1])) home_links[strlen(home_links) - 1] = 0; + if (stat(home_links, &st) != -1 && S_ISDIR(st.st_mode)) { + add_to_strn(&home_links, "/links"); } else { - fprintf(stderr, "CONFIG_DIR set to %s. But directory %s doesn't exist.\n\007", config_dir, home_links); - sleep(3); - mem_free(home_links); - home_links = stracpy(home); - add_to_strn(&home_links, ".links"); - } - mem_free(config_dir); - } else add_to_strn(&home_links, ".links"); + fprintf(stderr, "CONFIG_DIR set to %s. But directory %s doesn't exist.\n\007", config_dir, home_links); + sleep(3); + mem_free(home_links); + home_links = stracpy(home); + add_to_strn(&home_links, ".links"); + } + mem_free(config_dir); + } else add_to_strn(&home_links, ".links"); + } if (stat(home_links, &st)) { if (!mkdir(home_links, 0777)) goto home_creat; - if (config_dir) goto failed; + if (etc_dir || config_dir) goto failed; goto first_failed; } if (S_ISDIR(st.st_mode)) goto home_ok;