--- vice-2.2/src/arch/unix/archdep.h~ 2009-10-21 18:46:46.000000000 +0200 +++ vice-2.2/src/arch/unix/archdep.h 2010-03-11 11:51:47.773489033 +0100 @@ -114,7 +114,7 @@ #define ARCHDEP_KEYBOARD_SYM_NONE 0 #endif -extern const char *archdep_home_path(void); +extern const char *archdep_home_etc_path(void); /* set this path to customize the preference storage */ extern const char *archdep_pref_path; --- vice-2.2/src/arch/unix/gui/uicommands.c~ 2009-10-21 18:46:40.000000000 +0200 +++ vice-2.2/src/arch/unix/gui/uicommands.c 2010-03-11 11:53:07.350154527 +0100 @@ -296,7 +296,7 @@ static UI_CALLBACK(load_quicksnap) { - char *fname = util_concat(archdep_home_path(), "/", VICEUSERDIR, "/", machine_name, ".vsf", NULL); + char *fname = util_concat(archdep_home_etc_path(), "/", VICEUSERDIR, "/", machine_name, ".vsf", NULL); if (!ui_emulation_is_paused()) { interrupt_maincpu_trigger_trap(load_snapshot_trap, (void *)fname); @@ -328,7 +328,7 @@ static UI_CALLBACK(save_quicksnap) { - char *fname = util_concat(archdep_home_path(), "/", VICEUSERDIR, "/", machine_name, ".vsf", NULL); + char *fname = util_concat(archdep_home_etc_path(), "/", VICEUSERDIR, "/", machine_name, ".vsf", NULL); interrupt_maincpu_trigger_trap(save_snapshot_trap, (void *)fname); } --- vice-2.3/src/arch/unix/archdep.c~ 2010-10-24 06:12:37.000000000 +0200 +++ vice-2.3/src/arch/unix/archdep.c 2011-03-23 12:15:18.370096657 +0100 @@ -151,6 +151,14 @@ return home; } +extern const char *archdep_home_etc_path(void) +{ + char *home_etc = getenv("HOME_ETC"); + + if (home_etc) return home_etc; + return archdep_home_path(); +} + char *archdep_default_sysfile_pathlist(const char *emu_id) { static char *default_path; @@ -164,7 +172,7 @@ const char *home_path; boot_path = archdep_boot_path(); - home_path = archdep_home_path(); + home_path = archdep_home_etc_path(); /* First search in the `LIBDIR' then the $HOME/.vice/ dir (home_path) and then in the `boot_path'. */ @@ -230,7 +238,7 @@ if (archdep_pref_path == NULL) { const char *home; - home = archdep_home_path(); + home = archdep_home_etc_path(); return util_concat(home, "/.vice/vicerc", NULL); } else { return util_concat(archdep_pref_path, "/vicerc", NULL); @@ -242,7 +250,7 @@ if (archdep_pref_path == NULL) { const char *home; - home = archdep_home_path(); + home = archdep_home_etc_path(); return util_concat(home, "/.vice/fliplist-", machine_get_name(), ".vfl", NULL); } else { return util_concat(archdep_pref_path, "/fliplist-", machine_get_name(), ".vfl", NULL); @@ -254,7 +262,7 @@ if (archdep_pref_path == NULL) { const char *home; - home = archdep_home_path(); + home = archdep_home_etc_path(); return util_concat(home, "/.vice/autostart-", machine_get_name(), ".d64", NULL); } else { return util_concat(archdep_pref_path, "/autostart-", machine_get_name(), ".d64", NULL); @@ -268,7 +276,7 @@ const char *viceuserdir; if (archdep_pref_path == NULL) { - home = archdep_home_path(); + home = archdep_home_etc_path(); viceuserdir = util_concat(home, "/.vice", NULL); } else { viceuserdir = archdep_pref_path;