dbd.h   dbd.h 
/* /*
* libdbi - database independent abstraction layer for C. * libdbi - database independent abstraction layer for C.
* Copyright (C) 2001, David Parker and Mark Tobenkin. * Copyright (C) 2001-2002, David Parker and Mark Tobenkin.
* http://libdbi.sourceforge.net * http://libdbi.sourceforge.net
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * version 2.1 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US A * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US A
* *
* $Id: dbd.h,v 1.6 2001/08/23 20:16:45 dap24 Exp $ * $Id: dbd.h,v 1.9 2002/01/29 07:42:03 dap Exp $
*/ */
#ifndef __DBD_H__ #ifndef __DBD_H__
#define __DBD_H__ #define __DBD_H__
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#include <dbi/dbi.h> #include <dbi/dbi.h>
#include <dbi/dbi-dev.h> #include <dbi/dbi-dev.h>
/* FUNCTIONS EXPORTED BY EACH PLUGIN */ /* FUNCTIONS EXPORTED BY EACH DRIVER */
void dbd_register_plugin(const dbi_info_t **_plugin_info, const char ***_cu void dbd_register_driver(const dbi_info_t **_driver_info, const char ***_cu
stom_functions, const char ***_reserved_words); stom_functions, const char ***_reserved_words);
int dbd_initialize(dbi_plugin_t *plugin); int dbd_initialize(dbi_driver_t *driver);
int dbd_connect(dbi_driver_t *driver); int dbd_connect(dbi_conn_t *conn);
int dbd_disconnect(dbi_driver_t *driver); int dbd_disconnect(dbi_conn_t *conn);
int dbd_fetch_row(dbi_result_t *result, unsigned int rownum); int dbd_fetch_row(dbi_result_t *result, unsigned int rownum);
int dbd_free_query(dbi_result_t *result); int dbd_free_query(dbi_result_t *result);
int dbd_goto_row(dbi_result_t *result, unsigned int row); int dbd_goto_row(dbi_result_t *result, unsigned int row);
dbi_result_t *dbd_list_dbs(dbi_driver_t *driver, const char *pattern); dbi_result_t *dbd_list_dbs(dbi_conn_t *conn, const char *pattern);
dbi_result_t *dbd_list_tables(dbi_driver_t *driver, const char *db); dbi_result_t *dbd_list_tables(dbi_conn_t *conn, const char *db);
dbi_result_t *dbd_query(dbi_driver_t *driver, const char *statement); dbi_result_t *dbd_query(dbi_conn_t *conn, const char *statement);
int dbd_quote_string(dbi_plugin_t *plugin, const char *orig, char *dest); int dbd_quote_string(dbi_driver_t *driver, const char *orig, char *dest);
char *dbd_select_db(dbi_driver_t *driver, const char *db); char *dbd_select_db(dbi_conn_t *conn, const char *db);
int dbd_geterror(dbi_driver_t *driver, int *errno, char **errstr); int dbd_geterror(dbi_conn_t *conn, int *errno, char **errstr);
/* _DBD_* PLUGIN AUTHORS HELPER FUNCTIONS */ /* _DBD_* DRIVER AUTHORS HELPER FUNCTIONS */
dbi_result_t *_dbd_result_create(dbi_driver_t *driver, void *handle, unsign dbi_result_t *_dbd_result_create(dbi_conn_t *conn, void *handle, unsigned i
ed int numrows_matched, unsigned int numrows_affected); nt numrows_matched, unsigned int numrows_affected);
void _dbd_result_set_numfields(dbi_result_t *result, unsigned int numfields ); void _dbd_result_set_numfields(dbi_result_t *result, unsigned int numfields );
void _dbd_result_add_field(dbi_result_t *result, unsigned int idx, char *na me, unsigned short type, unsigned int attribs); void _dbd_result_add_field(dbi_result_t *result, unsigned int idx, char *na me, unsigned short type, unsigned int attribs);
dbi_row_t *_dbd_row_allocate(unsigned int numfields); dbi_row_t *_dbd_row_allocate(unsigned int numfields);
void _dbd_row_finalize(dbi_result_t *result, dbi_row_t *row, unsigned int i dx); void _dbd_row_finalize(dbi_result_t *result, dbi_row_t *row, unsigned int i dx);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif /* __cplusplus */ #endif /* __cplusplus */
#endif /* __DBD_H__ */ #endif /* __DBD_H__ */
 End of changes. 5 change blocks. 
17 lines changed or deleted 17 lines changed or added


 dbi-dev.h   dbi-dev.h 
/* /*
* libdbi - database independent abstraction layer for C. * libdbi - database independent abstraction layer for C.
* Copyright (C) 2001, David Parker and Mark Tobenkin. * Copyright (C) 2001-2002, David Parker and Mark Tobenkin.
* http://libdbi.sourceforge.net * http://libdbi.sourceforge.net
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * version 2.1 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US A * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US A
* *
* $Id: dbi-dev.h,v 1.8 2001/08/23 20:16:45 dap24 Exp $ * $Id: dbi-dev.h,v 1.12 2002/01/29 07:42:03 dap Exp $
*/ */
#ifndef __DBI_DEV_H__ #ifndef __DBI_DEV_H__
#define __DBI_DEV_H__ #define __DBI_DEV_H__
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
/********************* /*********************
* SQL RELATED TYPES * * SQL RELATED TYPES *
*********************/ *********************/
/* to fool the compiler into letting us use the following structs before th ey're actually defined: */ /* to fool the compiler into letting us use the following structs before th ey're actually defined: */
typedef struct dbi_plugin_s *dbi_plugin_t_pointer;
typedef struct dbi_driver_s *dbi_driver_t_pointer; typedef struct dbi_driver_s *dbi_driver_t_pointer;
typedef struct dbi_conn_s *dbi_conn_t_pointer;
typedef struct _field_binding_s *_field_binding_t_pointer; typedef struct _field_binding_s *_field_binding_t_pointer;
typedef union dbi_data_u { typedef union dbi_data_u {
char d_char; char d_char;
short d_short; short d_short;
long d_long; long d_long;
long long d_longlong; long long d_longlong;
float d_float; float d_float;
double d_double; double d_double;
char *d_string; char *d_string;
time_t d_datetime; time_t d_datetime;
} dbi_data_t; } dbi_data_t;
typedef struct dbi_row_s { typedef struct dbi_row_s {
dbi_data_t *field_values; dbi_data_t *field_values;
int *field_sizes; /* NULL field = 0, string field = len, anything el se = -1 */ int *field_sizes; /* NULL field = 0, string field = len, anything el se = -1 */
} dbi_row_t; } dbi_row_t;
typedef struct dbi_result_s { typedef struct dbi_result_s {
dbi_driver_t_pointer driver; dbi_conn_t_pointer conn;
void *result_handle; /* will be typecast into driver-specific type * void *result_handle; /* will be typecast into conn-specific type */
/
unsigned long numrows_matched; /* set immediately after query */ unsigned long numrows_matched; /* set immediately after query */
unsigned long numrows_affected; unsigned long numrows_affected;
_field_binding_t_pointer field_bindings; _field_binding_t_pointer field_bindings;
unsigned int numfields; /* can be zero or NULL until first fetchrow */ unsigned int numfields; /* can be zero or NULL until first fetchrow */
char **field_names; char **field_names;
unsigned short *field_types; unsigned short *field_types;
unsigned int *field_attribs; unsigned int *field_attribs;
enum { NOTHING_RETURNED, ROWS_RETURNED, GETTING_ROWS } result_state; /* nothing_returned: wasn't a SELECT query. returns_rows: select, but no r ows fetched yet. getting_rows: select, at least one row has been fetched */ enum { NOTHING_RETURNED, ROWS_RETURNED, GETTING_ROWS } result_state; /* nothing_returned: wasn't a SELECT query. returns_rows: select, but no r ows fetched yet. getting_rows: select, at least one row has been fetched */
skipping to change at line 81 skipping to change at line 81
typedef struct _field_binding_s { typedef struct _field_binding_s {
void (*helper_function)(_field_binding_t_pointer); void (*helper_function)(_field_binding_t_pointer);
dbi_result_t *result; dbi_result_t *result;
const char *fieldname; const char *fieldname;
void *bindto; void *bindto;
struct _field_binding_s *next; struct _field_binding_s *next;
} _field_binding_t; } _field_binding_t;
/*************************************** /***************************************
* PLUGIN INFRASTRUCTURE RELATED TYPES * * DRIVER INFRASTRUCTURE RELATED TYPES *
***************************************/ ***************************************/
typedef struct dbi_info_s { typedef struct dbi_info_s {
const char *name; /* all lowercase letters and numbers, no spaces */ const char *name; /* all lowercase letters and numbers, no spaces */
const char *description; /* one or two short sentences, no newlines */ const char *description; /* one or two short sentences, no newlines */
const char *maintainer; /* Full Name <fname@fooblah.com> */ const char *maintainer; /* Full Name <fname@fooblah.com> */
const char *url; /* where this plugin came from (if maintained by a third party) */ const char *url; /* where this driver came from (if maintained by a third party) */
const char *version; const char *version;
const char *date_compiled; const char *date_compiled;
} dbi_info_t; } dbi_info_t;
typedef struct dbi_option_s { typedef struct dbi_option_s {
char *key; char *key;
char *string_value; char *string_value;
int numeric_value; /* use this for port and other numeric settings * / int numeric_value; /* use this for port and other numeric settings * /
struct dbi_option_s *next; struct dbi_option_s *next;
} dbi_option_t; } dbi_option_t;
typedef struct dbi_functions_s { typedef struct dbi_functions_s {
void (*register_plugin)(const dbi_info_t **, const char ***, const c void (*register_driver)(const dbi_info_t **, const char ***, const c
har ***); har ***);
int (*initialize)(dbi_plugin_t_pointer); int (*initialize)(dbi_driver_t_pointer);
int (*connect)(dbi_driver_t_pointer); int (*connect)(dbi_conn_t_pointer);
int (*disconnect)(dbi_driver_t_pointer); int (*disconnect)(dbi_conn_t_pointer);
int (*fetch_row)(dbi_result_t *, unsigned int); int (*fetch_row)(dbi_result_t *, unsigned int);
int (*free_query)(dbi_result_t *); int (*free_query)(dbi_result_t *);
int (*goto_row)(dbi_result_t *, unsigned int); int (*goto_row)(dbi_result_t *, unsigned int);
dbi_result_t *(*list_dbs)(dbi_driver_t_pointer, const char *); int (*get_socket)(dbi_conn_t_pointer);
dbi_result_t *(*list_tables)(dbi_driver_t_pointer, const char *); dbi_result_t *(*list_dbs)(dbi_conn_t_pointer, const char *);
dbi_result_t *(*query)(dbi_driver_t_pointer, const char *); dbi_result_t *(*list_tables)(dbi_conn_t_pointer, const char *);
int (*quote_string)(dbi_plugin_t_pointer, const char *, char *); dbi_result_t *(*query)(dbi_conn_t_pointer, const char *);
char *(*select_db)(dbi_driver_t_pointer, const char *); int (*quote_string)(dbi_driver_t_pointer, const char *, char *);
int (*geterror)(dbi_driver_t_pointer, int *, char **); char *(*select_db)(dbi_conn_t_pointer, const char *);
int (*geterror)(dbi_conn_t_pointer, int *, char **);
} dbi_functions_t; } dbi_functions_t;
typedef struct dbi_custom_function_s { typedef struct dbi_custom_function_s {
const char *name; const char *name;
void *function_pointer; void *function_pointer;
struct dbi_custom_function_s *next; struct dbi_custom_function_s *next;
} dbi_custom_function_t; } dbi_custom_function_t;
typedef struct dbi_plugin_s { typedef struct dbi_driver_s {
void *dlhandle; void *dlhandle;
char *filename; /* full pathname */ char *filename; /* full pathname */
const dbi_info_t *info; const dbi_info_t *info;
dbi_functions_t *functions; dbi_functions_t *functions;
dbi_custom_function_t *custom_functions; dbi_custom_function_t *custom_functions;
const char **reserved_words; const char **reserved_words;
struct dbi_plugin_s *next; struct dbi_driver_s *next;
} dbi_plugin_t; } dbi_driver_t;
typedef struct dbi_driver_s { typedef struct dbi_conn_s {
dbi_plugin_t *plugin; /* generic unchanging attributes shared by all dbi_driver_t *driver; /* generic unchanging attributes shared by all
instances of this driver */ instances of this conn */
dbi_option_t *options; dbi_option_t *options;
void *connection; /* will be typecast into driver-specific type */ void *connection; /* will be typecast into conn-specific type */
char *current_db; char *current_db;
int error_number; /*XXX*/ int error_number; /*XXX*/
char *error_message; /*XXX*/ char *error_message; /*XXX*/
void *error_handler; void *error_handler;
void *error_handler_argument; void *error_handler_argument;
struct dbi_driver_s *next; /* so libdbi can unload all drivers at ex struct dbi_conn_s *next; /* so libdbi can unload all conns at exit *
it */ /
} dbi_driver_t; } dbi_conn_t;
unsigned long _isolate_attrib(unsigned long attribs, unsigned long rangemin , unsigned rangemax); unsigned long _isolate_attrib(unsigned long attribs, unsigned long rangemin , unsigned rangemax);
void _error_handler(dbi_driver_t *driver); void _error_handler(dbi_conn_t *conn);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif /* __cplusplus */ #endif /* __cplusplus */
#endif /* __DBI_DEV_H__ */ #endif /* __DBI_DEV_H__ */
 End of changes. 15 change blocks. 
30 lines changed or deleted 30 lines changed or added


 dbi.h   dbi.h 
/* /*
* libdbi - database independent abstraction layer for C. * libdbi - database independent abstraction layer for C.
* Copyright (C) 2001, David Parker and Mark Tobenkin. * Copyright (C) 2001-2002, David Parker and Mark Tobenkin.
* http://libdbi.sourceforge.net * http://libdbi.sourceforge.net
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * version 2.1 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US A * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US A
* *
* $Id: dbi.h,v 1.20 2001/08/23 20:16:45 dap24 Exp $ * $Id: dbi.h,v 1.25 2002/01/29 05:59:39 dap Exp $
*/ */
#ifndef __DBI_H__ #ifndef __DBI_H__
#define __DBI_H__ #define __DBI_H__
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#include <stdlib.h> #include <stdlib.h>
#include <stdarg.h> #include <stdarg.h>
#include <time.h>
/* opaque type definitions */ /* opaque type definitions */
typedef void * dbi_plugin;
typedef void * dbi_driver; typedef void * dbi_driver;
typedef void * dbi_conn;
typedef void * dbi_result; typedef void * dbi_result;
/* values for the int in field_types[] */ /* values for the int in field_types[] */
#define DBI_TYPE_INTEGER 1 #define DBI_TYPE_INTEGER 1
#define DBI_TYPE_DECIMAL 2 #define DBI_TYPE_DECIMAL 2
#define DBI_TYPE_STRING 3 #define DBI_TYPE_STRING 3
#define DBI_TYPE_BINARY 4 #define DBI_TYPE_BINARY 4
#define DBI_TYPE_ENUM 5 #define DBI_TYPE_ENUM 5
#define DBI_TYPE_SET 6 #define DBI_TYPE_SET 6
#define DBI_TYPE_DATETIME 7 #define DBI_TYPE_DATETIME 7
skipping to change at line 61 skipping to change at line 62
#define DBI_INTEGER_SIZE3 8 #define DBI_INTEGER_SIZE3 8
#define DBI_INTEGER_SIZE4 16 #define DBI_INTEGER_SIZE4 16
#define DBI_INTEGER_SIZE8 32 #define DBI_INTEGER_SIZE8 32
#define DBI_DECIMAL_UNSIGNED 1 #define DBI_DECIMAL_UNSIGNED 1
#define DBI_DECIMAL_SIZE4 2 #define DBI_DECIMAL_SIZE4 2
#define DBI_DECIMAL_SIZE8 4 #define DBI_DECIMAL_SIZE8 4
#define DBI_STRING_FIXEDSIZE 1 /* XXX unused as of now */ #define DBI_STRING_FIXEDSIZE 1 /* XXX unused as of now */
#define DBI_DATETIME_DATE 1 #define DBI_DATETIME_DATE 1
#define DBI_DATETIME_TIME 2 #define DBI_DATETIME_TIME 2
int dbi_initialize(const char *plugindir); int dbi_initialize(const char *driverdir);
void dbi_shutdown(); void dbi_shutdown();
const char *dbi_version(); const char *dbi_version();
dbi_plugin dbi_plugin_list(dbi_plugin Current); /* returns next plugin. if dbi_driver dbi_driver_list(dbi_driver Current); /* returns next driver. if
current is NULL, return first plugin. */ current is NULL, return first driver. */
dbi_plugin dbi_plugin_open(const char *name); /* goes thru linked list unti dbi_driver dbi_driver_open(const char *name); /* goes thru linked list unti
l it finds the right one */ l it finds the right one */
int dbi_plugin_is_reserved_word(dbi_plugin Plugin, const char *word); int dbi_driver_is_reserved_word(dbi_driver Driver, const char *word);
void *dbi_plugin_specific_function(dbi_plugin Plugin, const char *name); void *dbi_driver_specific_function(dbi_driver Driver, const char *name);
int dbi_plugin_quote_string(dbi_plugin Plugin, char **orig); int dbi_driver_quote_string(dbi_driver Driver, char **orig);
const char *dbi_plugin_get_name(dbi_plugin Plugin); const char *dbi_driver_get_name(dbi_driver Driver);
const char *dbi_plugin_get_filename(dbi_plugin Plugin); const char *dbi_driver_get_filename(dbi_driver Driver);
const char *dbi_plugin_get_description(dbi_plugin Plugin); const char *dbi_driver_get_description(dbi_driver Driver);
const char *dbi_plugin_get_maintainer(dbi_plugin Plugin); const char *dbi_driver_get_maintainer(dbi_driver Driver);
const char *dbi_plugin_get_url(dbi_plugin Plugin); const char *dbi_driver_get_url(dbi_driver Driver);
const char *dbi_plugin_get_version(dbi_plugin Plugin); const char *dbi_driver_get_version(dbi_driver Driver);
const char *dbi_plugin_get_date_compiled(dbi_plugin Plugin); const char *dbi_driver_get_date_compiled(dbi_driver Driver);
dbi_driver dbi_driver_new(const char *name); /* shortcut for dbi_driver_ope dbi_conn dbi_conn_new(const char *name); /* shortcut for dbi_conn_open(dbi_
n(dbi_plugin_open("foo")) */ driver_open("foo")) */
dbi_driver dbi_driver_open(dbi_plugin Plugin); /* returns an actual instanc dbi_conn dbi_conn_open(dbi_driver Driver); /* returns an actual instance of
e of the driver */ the conn */
dbi_plugin dbi_driver_get_plugin(dbi_driver Driver); dbi_driver dbi_conn_get_driver(dbi_conn Conn);
int dbi_driver_set_option(dbi_driver Driver, const char *key, char *value); int dbi_conn_set_option(dbi_conn Conn, const char *key, char *value); /* if
/* if value is NULL, remove option from list */ value is NULL, remove option from list */
int dbi_driver_set_option_numeric(dbi_driver Driver, const char *key, int v int dbi_conn_set_option_numeric(dbi_conn Conn, const char *key, int value);
alue); const char *dbi_conn_get_option(dbi_conn Conn, const char *key);
const char *dbi_driver_get_option(dbi_driver Driver, const char *key); int dbi_conn_get_option_numeric(dbi_conn Conn, const char *key);
int dbi_driver_get_option_numeric(dbi_driver Driver, const char *key); const char *dbi_conn_get_option_list(dbi_conn Conn, const char *current); /
const char *dbi_driver_get_option_list(dbi_driver Driver, const char *curre * returns key of next option, or the first option key if current is NULL */
nt); /* returns key of next option, or the first option key if current is N void dbi_conn_clear_option(dbi_conn Conn, const char *key);
ULL */ void dbi_conn_clear_options(dbi_conn Conn);
void dbi_driver_clear_option(dbi_driver Driver, const char *key); void dbi_conn_close(dbi_conn Conn);
void dbi_driver_clear_options(dbi_driver Driver);
void dbi_driver_close(dbi_driver Driver);
int dbi_driver_error(dbi_driver Driver, char **errmsg_dest); int dbi_conn_error(dbi_conn Conn, char **errmsg_dest);
void dbi_driver_error_handler(dbi_driver Driver, void *function, void *user void dbi_conn_error_handler(dbi_conn Conn, void *function, void *user_argum
_argument); ent);
int dbi_driver_connect(dbi_driver Driver); int dbi_conn_connect(dbi_conn Conn);
dbi_result dbi_driver_get_db_list(dbi_driver Driver, const char *pattern); int dbi_conn_get_socket(dbi_conn Conn);
dbi_result dbi_driver_get_table_list(dbi_driver Driver, const char *db); dbi_result dbi_conn_get_db_list(dbi_conn Conn, const char *pattern);
dbi_result dbi_driver_query(dbi_driver Driver, const char *formatstr, ...); dbi_result dbi_conn_get_table_list(dbi_conn Conn, const char *db);
int dbi_driver_select_db(dbi_driver Driver, const char *db); dbi_result dbi_conn_query(dbi_conn Conn, const char *formatstr, ...);
int dbi_conn_select_db(dbi_conn Conn, const char *db);
dbi_driver dbi_result_get_driver(dbi_result Result); dbi_conn dbi_result_get_conn(dbi_result Result);
int dbi_result_free(dbi_result Result); int dbi_result_free(dbi_result Result);
int dbi_result_seek_row(dbi_result Result, unsigned int row); int dbi_result_seek_row(dbi_result Result, unsigned int row);
int dbi_result_first_row(dbi_result Result); int dbi_result_first_row(dbi_result Result);
int dbi_result_last_row(dbi_result Result); int dbi_result_last_row(dbi_result Result);
int dbi_result_prev_row(dbi_result Result); int dbi_result_prev_row(dbi_result Result);
int dbi_result_next_row(dbi_result Result); int dbi_result_next_row(dbi_result Result);
unsigned int dbi_result_get_numrows(dbi_result Result); unsigned int dbi_result_get_numrows(dbi_result Result);
unsigned int dbi_result_get_numrows_affected(dbi_result Result); unsigned int dbi_result_get_numrows_affected(dbi_result Result);
unsigned int dbi_result_get_field_size(dbi_result Result, const char *field name); unsigned int dbi_result_get_field_size(dbi_result Result, const char *field name);
unsigned int dbi_result_get_field_size_idx(dbi_result Result, unsigned int idx); unsigned int dbi_result_get_field_size_idx(dbi_result Result, unsigned int idx);
 End of changes. 12 change blocks. 
44 lines changed or deleted 44 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/