summaryrefslogtreecommitdiffabout
path: root/src
authorMichael Krelin <hacker@klever.net>2008-07-19 14:47:54 (UTC)
committer Michael Krelin <hacker@klever.net>2008-07-19 14:47:54 (UTC)
commit8a24019a28e046189e15fdbade21d1a716edbb56 (patch) (side-by-side diff)
tree11fe3fd5b5cca6827b019de30f78b046002c602d /src
parent3a827660c11527f6d93008336994fb9431bc34f3 (diff)
parentd1d3203e351e51cf905b3166f88c1a4d72140555 (diff)
downloadnapkin-8a24019a28e046189e15fdbade21d1a716edbb56.zip
napkin-8a24019a28e046189e15fdbade21d1a716edbb56.tar.gz
napkin-8a24019a28e046189e15fdbade21d1a716edbb56.tar.bz2
Merge commit 'bee/master'
Diffstat (limited to 'src') (more/less context) (show whitespace changes)
-rw-r--r--src/db.cc19
1 files changed, 19 insertions, 0 deletions
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 @@
#include "config.h"
namespace napkin {
extern const char *sql_bootstrap;
db_t::db_t() {
const char *h = getenv("HOME");
if(h) {
datadir = h;
datadir += "/."PACKAGE_NAME"/";
}else{
+#if defined(HAVE_GET_CURRENT_DIR_NAME)
char *cwd = get_current_dir_name();
if(!cwd)
throw napkin::exception("failed to get_current_dir_name()");
datadir = cwd;
free(cwd);
+#elif defined(HAVE_GETCWD)
+ {
+ char cwd[
+# if defined(MAXPATH)
+ MAXPATH
+# elif defined(MAXPATHLEN)
+ MAXPATHLEN
+# else /* maxpath */
+ 512
+#endif /* maxpath */
+ ];
+ if(!getcwd(cwd,sizeof(cwd)))
+ throw napkin::exception("failed to getcwd()");
+ datadir = cwd;
+ }
+#else /* get cwd */
+# error dunno how to get current workdir
+#endif /* get cwd */
datadir += "/."PACKAGE_NAME"/";
}
if(access(datadir.c_str(),R_OK|W_OK)
&& mkdir(datadir.c_str(),0700))
throw napkin::exception("no access to '"+datadir+"' directory");
open((datadir+PACKAGE_NAME".db").c_str());
assert(_D);
char **resp; int nr,nc; char *errm;
if(sqlite3_get_table(
_D,
"SELECT s_tobed FROM sleeps LIMIT 0",
&resp,&nr,&nc,&errm)!=SQLITE_OK) {