GRASS GIS 7 Programmer's Manual  7.7.svn(2018)-r73390
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
c_finddb.c
Go to the documentation of this file.
1 /*!
2  * \file db/dbmi_client/c_finddb.c
3  *
4  * \brief DBMI Library (client) - find database
5  *
6  * (C) 1999-2008 by the GRASS Development Team
7  *
8  * This program is free software under the GNU General Public
9  * License (>=v2). Read the file COPYING that comes with GRASS
10  * for details.
11  *
12  * \author Joel Jones (CERL/UIUC), Radim Blazek
13  */
14 
15 #include <stdlib.h>
16 #include <grass/dbmi.h>
17 #include "macros.h"
18 
19 /*!
20  \brief Find database
21 
22  \param driver db driver
23  \param handle handle info
24  \param[out] found if non-zero database found
25 
26  \return DB_OK on success
27  \return DB_FAILED on failure
28  */
29 int db_find_database(dbDriver * driver, dbHandle * handle, int *found)
30 {
31  int ret_code;
32  int stat;
33  dbHandle temp;
34 
35  /* start the procedure call */
36  db__set_protocol_fds(driver->send, driver->recv);
38 
39  /* send the arguments to the procedure */
40  DB_SEND_HANDLE(handle);
41 
42  /* get the return code for the procedure call */
43  DB_RECV_RETURN_CODE(&ret_code);
44 
45  if (ret_code != DB_OK)
46  return ret_code; /* ret_code SHOULD == DB_FAILED */
47 
48  /* get results */
49  DB_RECV_INT(found);
50 
51  stat = DB_OK;
52  if (*found) {
53  DB_RECV_HANDLE(&temp);
54  stat = db_set_handle(handle,
55  db_get_handle_dbname(&temp),
57  );
58  db_free_handle(&temp);
59  }
60  return stat;
61 }
#define DB_SEND_HANDLE(x)
Definition: macros.h:57
void db_free_handle(dbHandle *handle)
Free dbHandle structure.
Definition: handle.c:79
#define DB_RECV_INT(x)
Definition: macros.h:39
#define DB_RECV_HANDLE(x)
Definition: macros.h:59
const char * db_get_handle_dbschema(dbHandle *handle)
Get handle schema name.
Definition: handle.c:69
int db_find_database(dbDriver *driver, dbHandle *handle, int *found)
Find database.
Definition: c_finddb.c:29
#define DB_START_PROCEDURE_CALL(x)
Definition: macros.h:2
#define DB_RECV_RETURN_CODE(x)
Definition: macros.h:4
#define DB_PROC_FIND_DATABASE
Definition: dbmi.h:32
int db_set_handle(dbHandle *handle, const char *dbName, const char *dbSchema)
Set handle (database and schema name)
Definition: handle.c:39
Definition: driver.h:22
void db__set_protocol_fds(FILE *send, FILE *recv)
?
FILE * recv
Definition: dbmi.h:171
FILE * send
Definition: dbmi.h:171
const char * db_get_handle_dbname(dbHandle *handle)
Get handle database name.
Definition: handle.c:57
#define DB_OK
Definition: dbmi.h:71