summaryrefslogtreecommitdiffabout
path: root/src/db.cc
Side-by-side diff
Diffstat (limited to 'src/db.cc') (more/less context) (ignore whitespace changes)
-rw-r--r--src/db.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/db.cc b/src/db.cc
index c350e68..2b4a7eb 100644
--- a/src/db.cc
+++ b/src/db.cc
@@ -1,51 +1,53 @@
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
+#include <stdlib.h>
+#include <string.h>
#include <cassert>
#include <napkin/exception.h>
#include "db.h"
#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;