diff -Nru abook-0.4.17/abook.c abook-0.4.17.new/abook.c --- abook-0.4.17/abook.c Tue Apr 2 20:45:47 2002 +++ abook-0.4.17.new/abook.c Sat Mar 22 14:14:51 2003 @@ -63,7 +63,13 @@ /*if( options_get_int("datafile", "autosave") )*/ if( load_database(datafile) == 2 ) { - char *tmp = strconcat(getenv("HOME"), + char *etc_dir = getenv("ETC_DIR"); + char *tmp; + + if (etc_dir) + tmp = strconcat(etc_dir, "/" ETC_DIR_DATAFILE, NULL); + else + tmp = strconcat(getenv("HOME"), "/" DATAFILE, NULL); if( safe_strcmp(tmp, datafile) ) { @@ -119,17 +125,22 @@ set_filenames() { struct stat s; + char *etc_dir = getenv("ETC_DIR"); + if (etc_dir) { + if (!datafile) + datafile = strconcat(etc_dir, "/" ETC_DIR_DATAFILE, NULL); + rcfile = strconcat(etc_dir, "/" ETC_DIR_RCFILE, NULL); + } else { + if( (stat(getenv("HOME"), &s)) == -1 || ! S_ISDIR(s.st_mode) ) { + fprintf(stderr,"%s is not a valid HOME directory\n", getenv("HOME") ); + exit(1); + } - if( (stat(getenv("HOME"), &s)) == -1 || ! S_ISDIR(s.st_mode) ) { - fprintf(stderr,"%s is not a valid HOME directory\n", getenv("HOME") ); - exit(1); - } - - if (!datafile) - datafile = strconcat(getenv("HOME"), "/" DATAFILE, NULL); - - rcfile = strconcat(getenv("HOME"), "/" RCFILE, NULL); + if (!datafile) + datafile = strconcat(getenv("HOME"), "/" DATAFILE, NULL); + rcfile = strconcat(getenv("HOME"), "/" RCFILE, NULL); + } atexit(free_filenames); } diff -Nru abook-0.4.17/abook.h abook-0.4.17.new/abook.h --- abook-0.4.17/abook.h Sat Sep 29 16:44:10 2001 +++ abook-0.4.17.new/abook.h Sat Mar 22 14:08:42 2003 @@ -24,7 +24,7 @@ #define DEFAULT_UMASK 066 #define DATAFILE ".abook.addressbook" - +#define ETC_DIR_DATAFILE "abook.addressbook" /* * some "abookwide" useful macros */ diff -Nru abook-0.4.17/options.h abook-0.4.17.new/options.h --- abook-0.4.17/options.h Mon Apr 23 14:58:43 2001 +++ abook-0.4.17.new/options.h Sat Mar 22 14:09:11 2003 @@ -2,6 +2,7 @@ #define _OPTIONS_H #define RCFILE ".abookrc" +#define ETC_DIR_RCFILE "abookrc" #define SYSWIDE_RCFILE "/etc/abookrc" #include "conff.h"