summaryrefslogtreecommitdiffabout
path: root/src
Unidiff
Diffstat (limited to 'src') (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 @@
1#include <unistd.h> 1#include <unistd.h>
2#include <sys/stat.h> 2#include <sys/stat.h>
3#include <sys/types.h> 3#include <sys/types.h>
4#include <stdlib.h>
5#include <string.h>
4#include <cassert> 6#include <cassert>
5#include <napkin/exception.h> 7#include <napkin/exception.h>
6#include "db.h" 8#include "db.h"
7 9
8#include "config.h" 10#include "config.h"
9 11
10namespace napkin { 12namespace napkin {
11 13
12 extern const char *sql_bootstrap; 14 extern const char *sql_bootstrap;
13 15
14 db_t::db_t() { 16 db_t::db_t() {
15 const char *h = getenv("HOME"); 17 const char *h = getenv("HOME");
16 if(h) { 18 if(h) {
17 datadir = h; 19 datadir = h;
18 datadir += "/."PACKAGE_NAME"/"; 20 datadir += "/."PACKAGE_NAME"/";
19 }else{ 21 }else{
20#if defined(HAVE_GET_CURRENT_DIR_NAME) 22#if defined(HAVE_GET_CURRENT_DIR_NAME)
21 char *cwd = get_current_dir_name(); 23 char *cwd = get_current_dir_name();
22 if(!cwd) 24 if(!cwd)
23 throw napkin::exception("failed to get_current_dir_name()"); 25 throw napkin::exception("failed to get_current_dir_name()");
24 datadir = cwd; 26 datadir = cwd;
25 free(cwd); 27 free(cwd);
26#elif defined(HAVE_GETCWD) 28#elif defined(HAVE_GETCWD)
27 { 29 {
28 char cwd[ 30 char cwd[
29# if defined(MAXPATH) 31# if defined(MAXPATH)
30 MAXPATH 32 MAXPATH
31# elif defined(MAXPATHLEN) 33# elif defined(MAXPATHLEN)
32 MAXPATHLEN 34 MAXPATHLEN
33# else /* maxpath */ 35# else /* maxpath */
34 512 36 512
35# endif /* maxpath */ 37# endif /* maxpath */
36 ]; 38 ];
37 if(!getcwd(cwd,sizeof(cwd))) 39 if(!getcwd(cwd,sizeof(cwd)))
38 throw napkin::exception("failed to getcwd()"); 40 throw napkin::exception("failed to getcwd()");
39 datadir = cwd; 41 datadir = cwd;
40 } 42 }
41#else /* get cwd */ 43#else /* get cwd */
42# error dunno how to get current workdir 44# error dunno how to get current workdir
43#endif /* get cwd */ 45#endif /* get cwd */
44 datadir += "/."PACKAGE_NAME"/"; 46 datadir += "/."PACKAGE_NAME"/";
45 } 47 }
46 if(access(datadir.c_str(),R_OK|W_OK) 48 if(access(datadir.c_str(),R_OK|W_OK)
47 && mkdir(datadir.c_str(),0700)) 49 && mkdir(datadir.c_str(),0700))
48 throw napkin::exception("no access to '"+datadir+"' directory"); 50 throw napkin::exception("no access to '"+datadir+"' directory");
49 open((datadir+PACKAGE_NAME".db").c_str()); 51 open((datadir+PACKAGE_NAME".db").c_str());
50 assert(_D); 52 assert(_D);
51 char **resp; int nr,nc; char *errm; 53 char **resp; int nr,nc; char *errm;