-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | src/db.cc | 19 |
2 files changed, 23 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index 3ca0b4e..fbf373b 100644 --- a/configure.ac +++ b/configure.ac | |||
@@ -7,12 +7,16 @@ AM_INIT_AUTOMAKE([dist-bzip2]) | |||
7 | AC_PROG_INSTALL | 7 | AC_PROG_INSTALL |
8 | AC_PROG_CXX | 8 | AC_PROG_CXX |
9 | AC_PROG_CC | 9 | AC_PROG_CC |
10 | AC_PROG_LIBTOOL | 10 | AC_PROG_LIBTOOL |
11 | PKG_PROG_PKG_CONFIG | 11 | PKG_PROG_PKG_CONFIG |
12 | 12 | ||
13 | onegetcwd=false | ||
14 | AC_CHECK_FUNCS([get_current_dir_name getcwd],[onegetcwd=true;break]) | ||
15 | $onegetcwd || AC_MSG_ERROR([no function to get current directory found. weird.]) | ||
16 | |||
13 | AC_HEADER_STDC | 17 | AC_HEADER_STDC |
14 | 18 | ||
15 | AC_PATH_PROG([XSLTPROC],[xsltproc],[true]) | 19 | AC_PATH_PROG([XSLTPROC],[xsltproc],[true]) |
16 | 20 | ||
17 | PKG_CHECK_MODULES([MODULES],[gtkmm-2.4 sqlite3],,[ | 21 | PKG_CHECK_MODULES([MODULES],[gtkmm-2.4 sqlite3],,[ |
18 | AC_MSG_ERROR([not all dependencies could be satisfied]) | 22 | AC_MSG_ERROR([not all dependencies could be satisfied]) |
@@ -14,17 +14,36 @@ namespace napkin { | |||
14 | db_t::db_t() { | 14 | db_t::db_t() { |
15 | const char *h = getenv("HOME"); | 15 | const char *h = getenv("HOME"); |
16 | if(h) { | 16 | if(h) { |
17 | datadir = h; | 17 | datadir = h; |
18 | datadir += "/."PACKAGE_NAME"/"; | 18 | datadir += "/."PACKAGE_NAME"/"; |
19 | }else{ | 19 | }else{ |
20 | #if defined(HAVE_GET_CURRENT_DIR_NAME) | ||
20 | char *cwd = get_current_dir_name(); | 21 | char *cwd = get_current_dir_name(); |
21 | if(!cwd) | 22 | if(!cwd) |
22 | throw napkin::exception("failed to get_current_dir_name()"); | 23 | throw napkin::exception("failed to get_current_dir_name()"); |
23 | datadir = cwd; | 24 | datadir = cwd; |
24 | free(cwd); | 25 | free(cwd); |
26 | #elif defined(HAVE_GETCWD) | ||
27 | { | ||
28 | char cwd[ | ||
29 | # if defined(MAXPATH) | ||
30 | MAXPATH | ||
31 | # elif defined(MAXPATHLEN) | ||
32 | MAXPATHLEN | ||
33 | # else /* maxpath */ | ||
34 | 512 | ||
35 | #endif /* maxpath */ | ||
36 | ]; | ||
37 | if(!getcwd(cwd,sizeof(cwd))) | ||
38 | throw napkin::exception("failed to getcwd()"); | ||
39 | datadir = cwd; | ||
40 | } | ||
41 | #else /* get cwd */ | ||
42 | # error dunno how to get current workdir | ||
43 | #endif /* get cwd */ | ||
25 | datadir += "/."PACKAGE_NAME"/"; | 44 | datadir += "/."PACKAGE_NAME"/"; |
26 | } | 45 | } |
27 | if(access(datadir.c_str(),R_OK|W_OK) | 46 | if(access(datadir.c_str(),R_OK|W_OK) |
28 | && mkdir(datadir.c_str(),0700)) | 47 | && mkdir(datadir.c_str(),0700)) |
29 | throw napkin::exception("no access to '"+datadir+"' directory"); | 48 | throw napkin::exception("no access to '"+datadir+"' directory"); |
30 | open((datadir+PACKAGE_NAME".db").c_str()); | 49 | open((datadir+PACKAGE_NAME".db").c_str()); |