32
33
int db__driver_open_database(dbHandle * handle)
35
char name2[GPATH_MAX], *path;
37
39
G_debug(3, "\ndb_driver_open_database()");
40
41
name = db_get_handle_dbname(handle);
42
43
/* if name is empty use connection.databaseName */
66
68
if (tokens[n][0] == '$') {
67
69
G_strchg(tokens[n], '$', ' ');
69
strcat(name2, G__getenv(tokens[n]));
70
G_debug(3, " -> %s", G__getenv(tokens[n]));
71
strcat(name2, G_getenv_nofatal(tokens[n]));
72
G_debug(3, " -> %s", G_getenv_nofatal(tokens[n]));
73
75
strcat(name2, tokens[n]);
82
84
G_debug(2, "name2 = '%s'", name2);
86
path = G_store(name2);
87
path = G_convert_dirseps_to_host(path);
89
while (path[i] != HOST_DIRSEP && i > 0)
94
G_debug(2, "path to db is %s", path);
96
/* create directory if not existing */
97
if (access(path, 0) != 0) {
98
if (G_mkdir(path) != 0)
99
G_fatal_error(_("Unable to create directory '%s' for sqlite database"),
84
105
if (sqlite3_open(name2, &sqlite) != SQLITE_OK) {
85
append_error(_("Unable to open database: "));
86
append_error((char *)sqlite3_errmsg(sqlite));
106
db_d_append_error("%s %s\n%s",
107
_("Unable to open database:"),
109
(char *)sqlite3_errmsg(sqlite));
101
124
* \return always returns DB_OK
104
126
int db__driver_close_database(void)
106
128
G_debug(3, "db_close_database()");
109
130
if (sqlite3_close(sqlite) == SQLITE_BUSY)
110
131
G_fatal_error(_("SQLite database connection is still busy"));
137
* \brief Create new empty SQLite database.
139
* \param handle dbHandle
141
* \return DB_OK on success
142
* \return DB_FAILED on failure
144
int db__driver_create_database(dbHandle *handle)
147
name = db_get_handle_dbname(handle);
149
G_debug(1, "db_create_database(): %s", name);
151
if (access(name, F_OK) == 0) {
152
db_d_append_error(_("Database <%s> already exists"), name);
157
if (sqlite3_open(name, &sqlite) != SQLITE_OK) {
158
db_d_append_error("%s %s\n%s",
159
_("Unable to create database:"),
161
(char *) sqlite3_errmsg(sqlite));
170
* \brief Delete existing SQLite database.
172
* \param handle dbHandle
174
* \return DB_OK on success
175
* \return DB_FAILED on failure
177
int db__driver_delete_database(dbHandle *handle)
180
name = db_get_handle_dbname(handle);
182
if (access(name, F_OK) != 0) {
183
db_d_append_error(_("Database <%s> not found"), name);
188
return remove(name) == 0 ? DB_OK : DB_FAILED;