-rw-r--r-- | src/db.cc | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -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; |