author | Michael Krelin <hacker@klever.net> | 2008-07-18 22:59:53 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2008-07-18 22:59:53 (UTC) |
commit | d1d3203e351e51cf905b3166f88c1a4d72140555 (patch) (unidiff) | |
tree | 92a89f798591faacb3c8d2f3543971cb98b0b71e /src | |
parent | 04fb190243442e83349f129b523ab747e58100bf (diff) | |
download | napkin-d1d3203e351e51cf905b3166f88c1a4d72140555.zip napkin-d1d3203e351e51cf905b3166f88c1a4d72140555.tar.gz napkin-d1d3203e351e51cf905b3166f88c1a4d72140555.tar.bz2 |
make it build on Mac OS X with macports
Signed-off-by: Michael Krelin <hacker@klever.net>
-rw-r--r-- | src/db.cc | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -1,48 +1,67 @@ | |||
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 <cassert> | 4 | #include <cassert> |
5 | #include <napkin/exception.h> | 5 | #include <napkin/exception.h> |
6 | #include "db.h" | 6 | #include "db.h" |
7 | 7 | ||
8 | #include "config.h" | 8 | #include "config.h" |
9 | 9 | ||
10 | namespace napkin { | 10 | namespace 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) { |
37 | if(sqlite3_exec(_D,sql_bootstrap,NULL,NULL,&errm)!=SQLITE_OK) | 56 | if(sqlite3_exec(_D,sql_bootstrap,NULL,NULL,&errm)!=SQLITE_OK) |
38 | throw napkin::exception(string("failed to bootstrap sqlite database: ")+errm); | 57 | throw napkin::exception(string("failed to bootstrap sqlite database: ")+errm); |
39 | }else | 58 | }else |
40 | sqlite3_free_table(resp); | 59 | sqlite3_free_table(resp); |
41 | } | 60 | } |
42 | 61 | ||
43 | void db_t::store(const hypnodata_t& hd) { | 62 | void db_t::store(const hypnodata_t& hd) { |
44 | sqlite::mem_t<char*> S = sqlite3_mprintf( | 63 | sqlite::mem_t<char*> S = sqlite3_mprintf( |
45 | "INSERT INTO sleeps (" | 64 | "INSERT INTO sleeps (" |
46 | "s_tobed,s_alarm," | 65 | "s_tobed,s_alarm," |
47 | "s_window,s_data_a," | 66 | "s_window,s_data_a," |
48 | "s_almost_awakes," | 67 | "s_almost_awakes," |