GRASS Programmer's Manual  6.5.svn(2014)-r66266
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
d_opendb.c
Go to the documentation of this file.
1 
15 #include <stdlib.h>
16 #include <grass/dbmi.h>
17 #include "macros.h"
18 #include "dbstubs.h"
19 
27 {
28  dbHandle handle;
29  int stat;
30 
31  /* get the arg(s) */
32  db_init_handle(&handle);
33  DB_RECV_HANDLE(&handle);
34 
35  /* see if there is a database already open */
36  if (db__test_database_open()) {
37  db_error("Multiple open databases not allowed");
39  return DB_OK;
40  }
41 
42  /* call the procedure */
43  stat = db_driver_open_database(&handle);
44 
45  /* send the return code */
46  if (stat != DB_OK) {
47  db_free_handle(&handle);
49  return DB_OK;
50  }
52 
53  /* record the open in the driver state */
55  db_get_handle_dbschema(&handle));
56  /* DO NOT free the handle since we saved the pointers to the name,path */
57 
58  /* no results */
59  return DB_OK;
60 }
int db_d_open_database(void)
Open database connection.
Definition: d_opendb.c:26
void db_free_handle(dbHandle *handle)
Definition: handle.c:61
int(* db_driver_open_database)()
#define DB_RECV_HANDLE(x)
Definition: macros.h:59
void db_error(const char *s)
const char * db_get_handle_dbschema(dbHandle *handle)
Definition: handle.c:50
int stat
Definition: g3dcolor.c:369
#define DB_SEND_FAILURE()
Definition: macros.h:9
void db__mark_database_open(const char *dbname, const char *dbschema)
Mark database as opened.
Definition: driver_state.c:57
int db__test_database_open(void)
Test database connection.
Definition: driver_state.c:46
void db_init_handle(dbHandle *handle)
Definition: handle.c:10
#define DB_SEND_SUCCESS()
Definition: macros.h:7
const char * db_get_handle_dbname(dbHandle *handle)
Definition: handle.c:39