summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--configure.ac4
-rw-r--r--src/db.cc19
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
@@ -1,24 +1,28 @@
1AC_INIT([napkin], [0.0], [napkin-bugs@klever.net]) 1AC_INIT([napkin], [0.0], [napkin-bugs@klever.net])
2AC_CONFIG_AUX_DIR([aux.d]) 2AC_CONFIG_AUX_DIR([aux.d])
3AC_CONFIG_SRCDIR([src/napkin.cc]) 3AC_CONFIG_SRCDIR([src/napkin.cc])
4AC_CONFIG_HEADERS([config.h]) 4AC_CONFIG_HEADERS([config.h])
5AM_INIT_AUTOMAKE([dist-bzip2]) 5AM_INIT_AUTOMAKE([dist-bzip2])
6 6
7AC_PROG_INSTALL 7AC_PROG_INSTALL
8AC_PROG_CXX 8AC_PROG_CXX
9AC_PROG_CC 9AC_PROG_CC
10AC_PROG_LIBTOOL 10AC_PROG_LIBTOOL
11PKG_PROG_PKG_CONFIG 11PKG_PROG_PKG_CONFIG
12 12
13onegetcwd=false
14AC_CHECK_FUNCS([get_current_dir_name getcwd],[onegetcwd=true;break])
15$onegetcwd || AC_MSG_ERROR([no function to get current directory found. weird.])
16
13AC_HEADER_STDC 17AC_HEADER_STDC
14 18
15AC_PATH_PROG([XSLTPROC],[xsltproc],[true]) 19AC_PATH_PROG([XSLTPROC],[xsltproc],[true])
16 20
17PKG_CHECK_MODULES([MODULES],[gtkmm-2.4 sqlite3],,[ 21PKG_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])
19]) 23])
20 24
21AC_MSG_CHECKING([whether to enable debugging code]) 25AC_MSG_CHECKING([whether to enable debugging code])
22ndebug=true 26ndebug=true
23AC_ARG_ENABLE([debug], 27AC_ARG_ENABLE([debug],
24 AC_HELP_STRING([--enable-debug],[enable debugging/development code]), 28 AC_HELP_STRING([--enable-debug],[enable debugging/development code]),
diff --git a/src/db.cc b/src/db.cc
index d1e0a85..9ae5f8f 100644
--- a/src/db.cc
+++ b/src/db.cc
@@ -8,29 +8,48 @@
8#include "config.h" 8#include "config.h"
9 9
10namespace napkin { 10namespace napkin {
11 11
12 extern const char *sql_bootstrap; 12 extern const char *sql_bootstrap;
13 13
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());
31 assert(_D); 50 assert(_D);
32 char **resp; int nr,nc; char *errm; 51 char **resp; int nr,nc; char *errm;
33 if(sqlite3_get_table( 52 if(sqlite3_get_table(
34 _D, 53 _D,
35 "SELECT s_tobed FROM sleeps LIMIT 0", 54 "SELECT s_tobed FROM sleeps LIMIT 0",
36 &resp,&nr,&nc,&errm)!=SQLITE_OK) { 55 &resp,&nr,&nc,&errm)!=SQLITE_OK) {