mirror of
https://github.com/mdbtools/mdbtools.git
synced 2026-02-26 05:33:03 +08:00
Compiles with VC++ as a .dll. Set up to use static glib, libiconv, libintl for ease of use.
This commit is contained in:
@@ -27,7 +27,9 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#ifndef _WIN32
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#endif
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
@@ -51,10 +53,21 @@
|
|||||||
#define MDB_MEMO_OVERHEAD 12
|
#define MDB_MEMO_OVERHEAD 12
|
||||||
#define MDB_BIND_SIZE 16384
|
#define MDB_BIND_SIZE 16384
|
||||||
|
|
||||||
// Theses 2 atrbutes are not supported by all compilers:
|
#ifdef _WIN32
|
||||||
// M$VC see http://stackoverflow.com/questions/1113409/attribute-constructor-equivalent-in-vc
|
#if BUILDING_LIBMDB
|
||||||
#define MDB_DEPRECATED(type, funcname) type __attribute__((deprecated)) funcname
|
#define LIBMDB_DLL __declspec(dllexport)
|
||||||
#define MDB_CONSTRUCTOR(funcname) void __attribute__((constructor)) funcname()
|
#else
|
||||||
|
#define LIBMDB_DLL __declspec(dllimport)
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#define LIBMDB_DLL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
|
#define MDB_DEPRECATED(type, func) type __attribute__((deprecated)) func
|
||||||
|
#else
|
||||||
|
#define MDB_DEPRECATED(type, func) __declspec(deprecated) type func
|
||||||
|
#endif
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
MDB_PAGE_DB = 0,
|
MDB_PAGE_DB = 0,
|
||||||
@@ -235,6 +248,11 @@ typedef struct {
|
|||||||
} MdbFile;
|
} MdbFile;
|
||||||
|
|
||||||
/* offset to row count on data pages...version dependant */
|
/* offset to row count on data pages...version dependant */
|
||||||
|
#ifdef _WIN64
|
||||||
|
typedef __int64 ssize_t;
|
||||||
|
#elif _WIN32
|
||||||
|
typedef _W64 int ssize_t;
|
||||||
|
#endif
|
||||||
typedef struct {
|
typedef struct {
|
||||||
ssize_t pg_size;
|
ssize_t pg_size;
|
||||||
guint16 row_count_offset;
|
guint16 row_count_offset;
|
||||||
@@ -430,164 +448,173 @@ typedef struct {
|
|||||||
MdbAny value;
|
MdbAny value;
|
||||||
} MdbSarg;
|
} MdbSarg;
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define snprintf _snprintf
|
||||||
|
#define strcasecmp _stricmp
|
||||||
|
#endif
|
||||||
|
|
||||||
/* mem.c */
|
/* mem.c */
|
||||||
extern MDB_DEPRECATED(void, mdb_init());
|
extern LIBMDB_DLL MDB_DEPRECATED(void, mdb_init());
|
||||||
extern MDB_DEPRECATED(void, mdb_exit());
|
extern LIBMDB_DLL MDB_DEPRECATED(void, mdb_exit());
|
||||||
|
/* glib - to allow static linking of glib in mdbtools */
|
||||||
|
extern LIBMDB_DLL void mdb_g_free (gpointer mem);
|
||||||
|
extern LIBMDB_DLL gpointer mdb_g_malloc (gsize n_bytes);
|
||||||
|
extern LIBMDB_DLL gpointer mdb_g_malloc0 (gsize n_bytes);
|
||||||
|
|
||||||
/* file.c */
|
/* file.c */
|
||||||
extern ssize_t mdb_read_pg(MdbHandle *mdb, unsigned long pg);
|
extern LIBMDB_DLL ssize_t mdb_read_pg(MdbHandle *mdb, unsigned long pg);
|
||||||
extern ssize_t mdb_read_alt_pg(MdbHandle *mdb, unsigned long pg);
|
extern LIBMDB_DLL ssize_t mdb_read_alt_pg(MdbHandle *mdb, unsigned long pg);
|
||||||
extern unsigned char mdb_get_byte(void *buf, int offset);
|
extern LIBMDB_DLL unsigned char mdb_get_byte(void *buf, int offset);
|
||||||
extern int mdb_get_int16(void *buf, int offset);
|
extern LIBMDB_DLL int mdb_get_int16(unsigned char *buf, int offset);
|
||||||
extern long mdb_get_int32(void *buf, int offset);
|
extern LIBMDB_DLL long mdb_get_int32(unsigned char *buf, int offset);
|
||||||
extern long mdb_get_int32_msb(void *buf, int offset);
|
extern LIBMDB_DLL long mdb_get_int32_msb(unsigned char *buf, int offset);
|
||||||
extern float mdb_get_single(void *buf, int offset);
|
extern LIBMDB_DLL float mdb_get_single(unsigned char *buf, int offset);
|
||||||
extern double mdb_get_double(void *buf, int offset);
|
extern LIBMDB_DLL double mdb_get_double(unsigned char *buf, int offset);
|
||||||
extern unsigned char mdb_pg_get_byte(MdbHandle *mdb, int offset);
|
extern LIBMDB_DLL unsigned char mdb_pg_get_byte(MdbHandle *mdb, int offset);
|
||||||
extern int mdb_pg_get_int16(MdbHandle *mdb, int offset);
|
extern LIBMDB_DLL int mdb_pg_get_int16(MdbHandle *mdb, int offset);
|
||||||
extern long mdb_pg_get_int32(MdbHandle *mdb, int offset);
|
extern LIBMDB_DLL long mdb_pg_get_int32(MdbHandle *mdb, int offset);
|
||||||
extern float mdb_pg_get_single(MdbHandle *mdb, int offset);
|
extern LIBMDB_DLL float mdb_pg_get_single(MdbHandle *mdb, int offset);
|
||||||
extern double mdb_pg_get_double(MdbHandle *mdb, int offset);
|
extern LIBMDB_DLL double mdb_pg_get_double(MdbHandle *mdb, int offset);
|
||||||
extern MdbHandle *mdb_open(const char *filename, MdbFileFlags flags);
|
extern LIBMDB_DLL MdbHandle *mdb_open(const char *filename, MdbFileFlags flags);
|
||||||
extern void mdb_close(MdbHandle *mdb);
|
extern LIBMDB_DLL void mdb_close(MdbHandle *mdb);
|
||||||
extern MdbHandle *mdb_clone_handle(MdbHandle *mdb);
|
extern LIBMDB_DLL MdbHandle *mdb_clone_handle(MdbHandle *mdb);
|
||||||
extern void mdb_swap_pgbuf(MdbHandle *mdb);
|
extern LIBMDB_DLL void mdb_swap_pgbuf(MdbHandle *mdb);
|
||||||
|
|
||||||
/* catalog.c */
|
/* catalog.c */
|
||||||
extern void mdb_free_catalog(MdbHandle *mdb);
|
extern LIBMDB_DLL void mdb_free_catalog(MdbHandle *mdb);
|
||||||
extern GPtrArray *mdb_read_catalog(MdbHandle *mdb, int obj_type);
|
extern LIBMDB_DLL GPtrArray *mdb_read_catalog(MdbHandle *mdb, int obj_type);
|
||||||
MdbCatalogEntry *mdb_get_catalogentry_by_name(MdbHandle *mdb, const gchar* name);
|
MdbCatalogEntry *mdb_get_catalogentry_by_name(MdbHandle *mdb, const gchar* name);
|
||||||
extern void mdb_dump_catalog(MdbHandle *mdb, int obj_type);
|
extern LIBMDB_DLL void mdb_dump_catalog(MdbHandle *mdb, int obj_type);
|
||||||
extern char *mdb_get_objtype_string(int obj_type);
|
extern LIBMDB_DLL char *mdb_get_objtype_string(int obj_type);
|
||||||
|
|
||||||
/* table.c */
|
/* table.c */
|
||||||
extern MdbTableDef *mdb_alloc_tabledef(MdbCatalogEntry *entry);
|
extern LIBMDB_DLL MdbTableDef *mdb_alloc_tabledef(MdbCatalogEntry *entry);
|
||||||
extern void mdb_free_tabledef(MdbTableDef *table);
|
extern LIBMDB_DLL void mdb_free_tabledef(MdbTableDef *table);
|
||||||
extern MdbTableDef *mdb_read_table(MdbCatalogEntry *entry);
|
extern LIBMDB_DLL MdbTableDef *mdb_read_table(MdbCatalogEntry *entry);
|
||||||
extern MdbTableDef *mdb_read_table_by_name(MdbHandle *mdb, gchar *table_name, int obj_type);
|
extern LIBMDB_DLL MdbTableDef *mdb_read_table_by_name(MdbHandle *mdb, gchar *table_name, int obj_type);
|
||||||
extern void mdb_append_column(GPtrArray *columns, MdbColumn *in_col);
|
extern LIBMDB_DLL void mdb_append_column(GPtrArray *columns, MdbColumn *in_col);
|
||||||
extern void mdb_free_columns(GPtrArray *columns);
|
extern LIBMDB_DLL void mdb_free_columns(GPtrArray *columns);
|
||||||
extern GPtrArray *mdb_read_columns(MdbTableDef *table);
|
extern LIBMDB_DLL GPtrArray *mdb_read_columns(MdbTableDef *table);
|
||||||
extern void mdb_table_dump(MdbCatalogEntry *entry);
|
extern LIBMDB_DLL void mdb_table_dump(MdbCatalogEntry *entry);
|
||||||
extern guint8 read_pg_if_8(MdbHandle *mdb, int *cur_pos);
|
extern LIBMDB_DLL guint8 read_pg_if_8(MdbHandle *mdb, int *cur_pos);
|
||||||
extern guint16 read_pg_if_16(MdbHandle *mdb, int *cur_pos);
|
extern LIBMDB_DLL guint16 read_pg_if_16(MdbHandle *mdb, int *cur_pos);
|
||||||
extern guint32 read_pg_if_32(MdbHandle *mdb, int *cur_pos);
|
extern LIBMDB_DLL guint32 read_pg_if_32(MdbHandle *mdb, int *cur_pos);
|
||||||
extern void *read_pg_if_n(MdbHandle *mdb, void *buf, int *cur_pos, size_t len);
|
extern LIBMDB_DLL void *read_pg_if_n(MdbHandle *mdb, unsigned char *buf, int *cur_pos, size_t len);
|
||||||
extern int mdb_is_user_table(MdbCatalogEntry *entry);
|
extern LIBMDB_DLL int mdb_is_user_table(MdbCatalogEntry *entry);
|
||||||
extern int mdb_is_system_table(MdbCatalogEntry *entry);
|
extern LIBMDB_DLL int mdb_is_system_table(MdbCatalogEntry *entry);
|
||||||
extern const char *mdb_table_get_prop(const MdbTableDef *table, const gchar *key);
|
extern LIBMDB_DLL const char *mdb_table_get_prop(const MdbTableDef *table, const gchar *key);
|
||||||
extern const char *mdb_col_get_prop(const MdbColumn *col, const gchar *key);
|
extern LIBMDB_DLL const char *mdb_col_get_prop(const MdbColumn *col, const gchar *key);
|
||||||
|
|
||||||
/* data.c */
|
/* data.c */
|
||||||
extern int mdb_bind_column_by_name(MdbTableDef *table, gchar *col_name, void *bind_ptr, int *len_ptr);
|
extern LIBMDB_DLL int mdb_bind_column_by_name(MdbTableDef *table, gchar *col_name, void *bind_ptr, int *len_ptr);
|
||||||
extern void mdb_data_dump(MdbTableDef *table);
|
extern LIBMDB_DLL void mdb_data_dump(MdbTableDef *table);
|
||||||
extern void mdb_date_to_tm(double td, struct tm *t);
|
extern LIBMDB_DLL void mdb_date_to_tm(double td, struct tm *t);
|
||||||
extern void mdb_bind_column(MdbTableDef *table, int col_num, void *bind_ptr, int *len_ptr);
|
extern LIBMDB_DLL void mdb_bind_column(MdbTableDef *table, int col_num, void *bind_ptr, int *len_ptr);
|
||||||
extern int mdb_rewind_table(MdbTableDef *table);
|
extern LIBMDB_DLL int mdb_rewind_table(MdbTableDef *table);
|
||||||
extern int mdb_fetch_row(MdbTableDef *table);
|
extern LIBMDB_DLL int mdb_fetch_row(MdbTableDef *table);
|
||||||
extern int mdb_is_fixed_col(MdbColumn *col);
|
extern LIBMDB_DLL int mdb_is_fixed_col(MdbColumn *col);
|
||||||
extern char *mdb_col_to_string(MdbHandle *mdb, void *buf, int start, int datatype, int size);
|
extern LIBMDB_DLL char *mdb_col_to_string(MdbHandle *mdb, char *buf, int start, int datatype, int size);
|
||||||
extern int mdb_find_pg_row(MdbHandle *mdb, int pg_row, void **buf, int *off, size_t *len);
|
extern LIBMDB_DLL int mdb_find_pg_row(MdbHandle *mdb, int pg_row, void **buf, int *off, size_t *len);
|
||||||
extern int mdb_find_row(MdbHandle *mdb, int row, int *start, size_t *len);
|
extern LIBMDB_DLL int mdb_find_row(MdbHandle *mdb, int row, int *start, size_t *len);
|
||||||
extern int mdb_find_end_of_row(MdbHandle *mdb, int row);
|
extern LIBMDB_DLL int mdb_find_end_of_row(MdbHandle *mdb, int row);
|
||||||
extern int mdb_col_fixed_size(MdbColumn *col);
|
extern LIBMDB_DLL int mdb_col_fixed_size(MdbColumn *col);
|
||||||
extern int mdb_col_disp_size(MdbColumn *col);
|
extern LIBMDB_DLL int mdb_col_disp_size(MdbColumn *col);
|
||||||
extern size_t mdb_ole_read_next(MdbHandle *mdb, MdbColumn *col, void *ole_ptr);
|
extern LIBMDB_DLL size_t mdb_ole_read_next(MdbHandle *mdb, MdbColumn *col, void *ole_ptr);
|
||||||
extern size_t mdb_ole_read(MdbHandle *mdb, MdbColumn *col, void *ole_ptr, int chunk_size);
|
extern LIBMDB_DLL size_t mdb_ole_read(MdbHandle *mdb, MdbColumn *col, void *ole_ptr, int chunk_size);
|
||||||
extern void* mdb_ole_read_full(MdbHandle *mdb, MdbColumn *col, size_t *size);
|
extern LIBMDB_DLL void* mdb_ole_read_full(MdbHandle *mdb, MdbColumn *col, size_t *size);
|
||||||
extern void mdb_set_date_fmt(const char *);
|
extern LIBMDB_DLL void mdb_set_date_fmt(const char *);
|
||||||
extern int mdb_read_row(MdbTableDef *table, unsigned int row);
|
extern LIBMDB_DLL int mdb_read_row(MdbTableDef *table, unsigned int row);
|
||||||
|
|
||||||
/* dump.c */
|
/* dump.c */
|
||||||
extern void mdb_buffer_dump(const void *buf, int start, size_t len);
|
extern LIBMDB_DLL void mdb_buffer_dump(const void *buf, int start, size_t len);
|
||||||
|
|
||||||
/* backend.c */
|
/* backend.c */
|
||||||
extern MDB_DEPRECATED(char*, mdb_get_coltype_string(MdbBackend *backend, int col_type));
|
extern LIBMDB_DLL MDB_DEPRECATED(char*, mdb_get_coltype_string(MdbBackend *backend, int col_type));
|
||||||
extern MDB_DEPRECATED(int, mdb_coltype_takes_length(MdbBackend *backend, int col_type));
|
extern LIBMDB_DLL MDB_DEPRECATED(int, mdb_coltype_takes_length(MdbBackend *backend, int col_type));
|
||||||
extern const MdbBackendType* mdb_get_colbacktype(const MdbColumn *col);
|
extern LIBMDB_DLL const MdbBackendType* mdb_get_colbacktype(const MdbColumn *col);
|
||||||
extern const char* mdb_get_colbacktype_string(const MdbColumn *col);
|
extern LIBMDB_DLL const char* mdb_get_colbacktype_string(const MdbColumn *col);
|
||||||
extern int mdb_colbacktype_takes_length(const MdbColumn *col);
|
extern LIBMDB_DLL int mdb_colbacktype_takes_length(const MdbColumn *col);
|
||||||
extern MDB_DEPRECATED(void, mdb_init_backends());
|
extern LIBMDB_DLL MDB_DEPRECATED(void, mdb_init_backends());
|
||||||
extern void mdb_register_backend(char *backend_name, guint32 capabilities, MdbBackendType *backend_type, MdbBackendType *type_shortdate, MdbBackendType *type_autonum, const char *short_now, const char *long_now, const char *charset_statement, const char *drop_statement, const char *constaint_not_empty_statement, const char *column_comment_statement, const char *table_comment_statement, gchar* (*quote_schema_name)(const gchar*, const gchar*));
|
extern LIBMDB_DLL void mdb_register_backend(char *backend_name, guint32 capabilities, MdbBackendType *backend_type, MdbBackendType *type_shortdate, MdbBackendType *type_autonum, const char *short_now, const char *long_now, const char *charset_statement, const char *drop_statement, const char *constaint_not_empty_statement, const char *column_comment_statement, const char *table_comment_statement, gchar* (*quote_schema_name)(const gchar*, const gchar*));
|
||||||
extern MDB_DEPRECATED(void, mdb_remove_backends());
|
extern LIBMDB_DLL MDB_DEPRECATED(void, mdb_remove_backends());
|
||||||
extern int mdb_set_default_backend(MdbHandle *mdb, const char *backend_name);
|
extern LIBMDB_DLL int mdb_set_default_backend(MdbHandle *mdb, const char *backend_name);
|
||||||
extern void mdb_print_schema(MdbHandle *mdb, FILE *outfile, char *tabname, char *dbnamespace, guint32 export_options);
|
extern LIBMDB_DLL void mdb_print_schema(MdbHandle *mdb, FILE *outfile, char *tabname, char *dbnamespace, guint32 export_options);
|
||||||
|
|
||||||
/* sargs.c */
|
/* sargs.c */
|
||||||
extern int mdb_test_sargs(MdbTableDef *table, MdbField *fields, int num_fields);
|
extern LIBMDB_DLL int mdb_test_sargs(MdbTableDef *table, MdbField *fields, int num_fields);
|
||||||
extern int mdb_test_sarg(MdbHandle *mdb, MdbColumn *col, MdbSargNode *node, MdbField *field);
|
extern LIBMDB_DLL int mdb_test_sarg(MdbHandle *mdb, MdbColumn *col, MdbSargNode *node, MdbField *field);
|
||||||
extern void mdb_sql_walk_tree(MdbSargNode *node, MdbSargTreeFunc func, gpointer data);
|
extern LIBMDB_DLL void mdb_sql_walk_tree(MdbSargNode *node, MdbSargTreeFunc func, gpointer data);
|
||||||
extern int mdb_find_indexable_sargs(MdbSargNode *node, gpointer data);
|
extern LIBMDB_DLL int mdb_find_indexable_sargs(MdbSargNode *node, gpointer data);
|
||||||
extern int mdb_add_sarg_by_name(MdbTableDef *table, char *colname, MdbSarg *in_sarg);
|
extern LIBMDB_DLL int mdb_add_sarg_by_name(MdbTableDef *table, char *colname, MdbSarg *in_sarg);
|
||||||
extern int mdb_test_string(MdbSargNode *node, char *s);
|
extern LIBMDB_DLL int mdb_test_string(MdbSargNode *node, char *s);
|
||||||
extern int mdb_test_int(MdbSargNode *node, gint32 i);
|
extern LIBMDB_DLL int mdb_test_int(MdbSargNode *node, gint32 i);
|
||||||
extern int mdb_add_sarg(MdbColumn *col, MdbSarg *in_sarg);
|
extern LIBMDB_DLL int mdb_add_sarg(MdbColumn *col, MdbSarg *in_sarg);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* index.c */
|
/* index.c */
|
||||||
extern GPtrArray *mdb_read_indices(MdbTableDef *table);
|
extern LIBMDB_DLL GPtrArray *mdb_read_indices(MdbTableDef *table);
|
||||||
extern void mdb_index_dump(MdbTableDef *table, MdbIndex *idx);
|
extern LIBMDB_DLL void mdb_index_dump(MdbTableDef *table, MdbIndex *idx);
|
||||||
extern void mdb_index_scan_free(MdbTableDef *table);
|
extern LIBMDB_DLL void mdb_index_scan_free(MdbTableDef *table);
|
||||||
extern int mdb_index_find_next_on_page(MdbHandle *mdb, MdbIndexPage *ipg);
|
extern LIBMDB_DLL int mdb_index_find_next_on_page(MdbHandle *mdb, MdbIndexPage *ipg);
|
||||||
extern int mdb_index_find_next(MdbHandle *mdb, MdbIndex *idx, MdbIndexChain *chain, guint32 *pg, guint16 *row);
|
extern LIBMDB_DLL int mdb_index_find_next(MdbHandle *mdb, MdbIndex *idx, MdbIndexChain *chain, guint32 *pg, guint16 *row);
|
||||||
extern void mdb_index_hash_text(char *text, char *hash);
|
extern LIBMDB_DLL void mdb_index_hash_text(char *text, char *hash);
|
||||||
extern void mdb_index_scan_init(MdbHandle *mdb, MdbTableDef *table);
|
extern LIBMDB_DLL void mdb_index_scan_init(MdbHandle *mdb, MdbTableDef *table);
|
||||||
extern int mdb_index_find_row(MdbHandle *mdb, MdbIndex *idx, MdbIndexChain *chain, guint32 pg, guint16 row);
|
extern LIBMDB_DLL int mdb_index_find_row(MdbHandle *mdb, MdbIndex *idx, MdbIndexChain *chain, guint32 pg, guint16 row);
|
||||||
extern void mdb_index_swap_n(unsigned char *src, int sz, unsigned char *dest);
|
extern LIBMDB_DLL void mdb_index_swap_n(unsigned char *src, int sz, unsigned char *dest);
|
||||||
extern void mdb_free_indices(GPtrArray *indices);
|
extern LIBMDB_DLL void mdb_free_indices(GPtrArray *indices);
|
||||||
void mdb_index_page_reset(MdbIndexPage *ipg);
|
void mdb_index_page_reset(MdbIndexPage *ipg);
|
||||||
extern int mdb_index_pack_bitmap(MdbHandle *mdb, MdbIndexPage *ipg);
|
extern LIBMDB_DLL int mdb_index_pack_bitmap(MdbHandle *mdb, MdbIndexPage *ipg);
|
||||||
|
|
||||||
/* stats.c */
|
/* stats.c */
|
||||||
extern void mdb_stats_on(MdbHandle *mdb);
|
extern LIBMDB_DLL void mdb_stats_on(MdbHandle *mdb);
|
||||||
extern void mdb_stats_off(MdbHandle *mdb);
|
extern LIBMDB_DLL void mdb_stats_off(MdbHandle *mdb);
|
||||||
extern void mdb_dump_stats(MdbHandle *mdb);
|
extern LIBMDB_DLL void mdb_dump_stats(MdbHandle *mdb);
|
||||||
|
|
||||||
/* like.c */
|
/* like.c */
|
||||||
extern int mdb_like_cmp(char *s, char *r);
|
extern LIBMDB_DLL int mdb_like_cmp(char *s, char *r);
|
||||||
|
|
||||||
/* write.c */
|
/* write.c */
|
||||||
extern void mdb_put_int16(void *buf, guint32 offset, guint32 value);
|
extern LIBMDB_DLL void mdb_put_int16(unsigned char *buf, guint32 offset, guint32 value);
|
||||||
extern void mdb_put_int32(void *buf, guint32 offset, guint32 value);
|
extern LIBMDB_DLL void mdb_put_int32(unsigned char *buf, guint32 offset, guint32 value);
|
||||||
extern void mdb_put_int32_msb(void *buf, guint32 offset, guint32 value);
|
extern LIBMDB_DLL void mdb_put_int32_msb(unsigned char *buf, guint32 offset, guint32 value);
|
||||||
extern int mdb_crack_row(MdbTableDef *table, int row_start, int row_end, MdbField *fields);
|
extern LIBMDB_DLL int mdb_crack_row(MdbTableDef *table, int row_start, int row_end, MdbField *fields);
|
||||||
extern guint16 mdb_add_row_to_pg(MdbTableDef *table, unsigned char *row_buffer, int new_row_size);
|
extern LIBMDB_DLL guint16 mdb_add_row_to_pg(MdbTableDef *table, unsigned char *row_buffer, int new_row_size);
|
||||||
extern int mdb_update_index(MdbTableDef *table, MdbIndex *idx, unsigned int num_fields, MdbField *fields, guint32 pgnum, guint16 rownum);
|
extern LIBMDB_DLL int mdb_update_index(MdbTableDef *table, MdbIndex *idx, unsigned int num_fields, MdbField *fields, guint32 pgnum, guint16 rownum);
|
||||||
extern int mdb_insert_row(MdbTableDef *table, int num_fields, MdbField *fields);
|
extern LIBMDB_DLL int mdb_insert_row(MdbTableDef *table, int num_fields, MdbField *fields);
|
||||||
extern int mdb_pack_row(MdbTableDef *table, unsigned char *row_buffer, unsigned int num_fields, MdbField *fields);
|
extern LIBMDB_DLL int mdb_pack_row(MdbTableDef *table, unsigned char *row_buffer, unsigned int num_fields, MdbField *fields);
|
||||||
extern int mdb_replace_row(MdbTableDef *table, int row, void *new_row, int new_row_size);
|
extern LIBMDB_DLL int mdb_replace_row(MdbTableDef *table, int row, void *new_row, int new_row_size);
|
||||||
extern int mdb_pg_get_freespace(MdbHandle *mdb);
|
extern LIBMDB_DLL int mdb_pg_get_freespace(MdbHandle *mdb);
|
||||||
extern int mdb_update_row(MdbTableDef *table);
|
extern LIBMDB_DLL int mdb_update_row(MdbTableDef *table);
|
||||||
extern void *mdb_new_data_pg(MdbCatalogEntry *entry);
|
extern LIBMDB_DLL void *mdb_new_data_pg(MdbCatalogEntry *entry);
|
||||||
|
|
||||||
/* map.c */
|
/* map.c */
|
||||||
extern guint32 mdb_map_find_next_freepage(MdbTableDef *table, int row_size);
|
extern LIBMDB_DLL guint32 mdb_map_find_next_freepage(MdbTableDef *table, int row_size);
|
||||||
extern gint32 mdb_map_find_next(MdbHandle *mdb, unsigned char *map, unsigned int map_sz, guint32 start_pg);
|
extern LIBMDB_DLL gint32 mdb_map_find_next(MdbHandle *mdb, unsigned char *map, unsigned int map_sz, guint32 start_pg);
|
||||||
|
|
||||||
/* props.c */
|
/* props.c */
|
||||||
extern void mdb_free_props(MdbProperties *props);
|
extern LIBMDB_DLL void mdb_free_props(MdbProperties *props);
|
||||||
extern void mdb_dump_props(MdbProperties *props, FILE *outfile, int show_name);
|
extern LIBMDB_DLL void mdb_dump_props(MdbProperties *props, FILE *outfile, int show_name);
|
||||||
extern GArray* mdb_kkd_to_props(MdbHandle *mdb, void *kkd, size_t len);
|
extern LIBMDB_DLL GArray* mdb_kkd_to_props(MdbHandle *mdb, char *kkd, size_t len);
|
||||||
|
|
||||||
|
|
||||||
/* worktable.c */
|
/* worktable.c */
|
||||||
extern MdbTableDef *mdb_create_temp_table(MdbHandle *mdb, char *name);
|
extern LIBMDB_DLL MdbTableDef *mdb_create_temp_table(MdbHandle *mdb, char *name);
|
||||||
extern void mdb_temp_table_add_col(MdbTableDef *table, MdbColumn *col);
|
extern LIBMDB_DLL void mdb_temp_table_add_col(MdbTableDef *table, MdbColumn *col);
|
||||||
extern void mdb_fill_temp_col(MdbColumn *tcol, char *col_name, int col_size, int col_type, int is_fixed);
|
extern LIBMDB_DLL void mdb_fill_temp_col(MdbColumn *tcol, char *col_name, int col_size, int col_type, int is_fixed);
|
||||||
extern void mdb_fill_temp_field(MdbField *field, void *value, int siz, int is_fixed, int is_null, int start, int column);
|
extern LIBMDB_DLL void mdb_fill_temp_field(MdbField *field, void *value, int siz, int is_fixed, int is_null, int start, int column);
|
||||||
extern void mdb_temp_columns_end(MdbTableDef *table);
|
extern LIBMDB_DLL void mdb_temp_columns_end(MdbTableDef *table);
|
||||||
|
|
||||||
/* options.c */
|
/* options.c */
|
||||||
extern int mdb_get_option(unsigned long optnum);
|
extern LIBMDB_DLL int mdb_get_option(unsigned long optnum);
|
||||||
extern void mdb_debug(int klass, char *fmt, ...);
|
extern LIBMDB_DLL void mdb_debug(int klass, char *fmt, ...);
|
||||||
|
|
||||||
/* iconv.c */
|
/* iconv.c */
|
||||||
extern int mdb_unicode2ascii(MdbHandle *mdb, char *src, size_t slen, char *dest, size_t dlen);
|
extern LIBMDB_DLL int mdb_unicode2ascii(MdbHandle *mdb, char *src, size_t slen, char *dest, size_t dlen);
|
||||||
extern int mdb_ascii2unicode(MdbHandle *mdb, char *src, size_t slen, char *dest, size_t dlen);
|
extern LIBMDB_DLL int mdb_ascii2unicode(MdbHandle *mdb, char *src, size_t slen, char *dest, size_t dlen);
|
||||||
extern void mdb_iconv_init(MdbHandle *mdb);
|
extern LIBMDB_DLL void mdb_iconv_init(MdbHandle *mdb);
|
||||||
extern void mdb_iconv_close(MdbHandle *mdb);
|
extern LIBMDB_DLL void mdb_iconv_close(MdbHandle *mdb);
|
||||||
extern const char* mdb_target_charset(MdbHandle *mdb);
|
extern LIBMDB_DLL const char* mdb_target_charset(MdbHandle *mdb);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
static int is_init;
|
static int is_init;
|
||||||
GHashTable *mdb_backends;
|
GHashTable *mdb_backends;
|
||||||
void _mdb_remove_backends();
|
static void _mdb_remove_backends();
|
||||||
|
|
||||||
/* Access data types */
|
/* Access data types */
|
||||||
static MdbBackendType mdb_access_types[] = {
|
static MdbBackendType mdb_access_types[] = {
|
||||||
@@ -342,13 +342,39 @@ mdb_init_backends())
|
|||||||
fprintf(stderr, "mdb_init_backends() is DEPRECATED and does nothing. Stop calling it.\n");
|
fprintf(stderr, "mdb_init_backends() is DEPRECATED and does nothing. Stop calling it.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
|
||||||
|
#define CCALL __cdecl
|
||||||
|
#pragma section(".CRT$XCU",read)
|
||||||
|
#define INITIALIZER(f) \
|
||||||
|
static void __cdecl f(void); \
|
||||||
|
__declspec(allocate(".CRT$XCU")) void (__cdecl*f##_)(void) = f; \
|
||||||
|
static void __cdecl f(void)
|
||||||
|
|
||||||
|
#elif defined(__GNUC__)
|
||||||
|
|
||||||
|
#define CCALL
|
||||||
|
#define INITIALIZER(f) void __attribute__((constructor)) f(void)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mdb_remove_backends
|
||||||
|
*
|
||||||
|
* Removes all entries from and destroys the mdb_backends hash.
|
||||||
|
*/
|
||||||
|
static void CCALL _mdb_remove_backends(void)
|
||||||
|
{
|
||||||
|
g_hash_table_foreach_remove(mdb_backends, mdb_drop_backend, NULL);
|
||||||
|
g_hash_table_destroy(mdb_backends);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* _mdb_init_backends
|
* _mdb_init_backends
|
||||||
*
|
*
|
||||||
* Initializes the mdb_backends hash and loads the builtin backends.
|
* Initializes the mdb_backends hash and loads the builtin backends.
|
||||||
* Use mdb_remove_backends() to destroy this hash when done.
|
* Use mdb_remove_backends() to destroy this hash when done.
|
||||||
*/
|
*/
|
||||||
MDB_CONSTRUCTOR(_mdb_init_backends)
|
INITIALIZER(_mdb_init_backends)
|
||||||
{
|
{
|
||||||
mdb_backends = g_hash_table_new(g_str_hash, g_str_equal);
|
mdb_backends = g_hash_table_new(g_str_hash, g_str_equal);
|
||||||
|
|
||||||
@@ -440,17 +466,6 @@ mdb_remove_backends())
|
|||||||
fprintf(stderr, "mdb_remove_backends() is DEPRECATED and does nothing. Stop calling it.\n");
|
fprintf(stderr, "mdb_remove_backends() is DEPRECATED and does nothing. Stop calling it.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* mdb_remove_backends
|
|
||||||
*
|
|
||||||
* Removes all entries from and destroys the mdb_backends hash.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
_mdb_remove_backends()
|
|
||||||
{
|
|
||||||
g_hash_table_foreach_remove(mdb_backends, mdb_drop_backend, NULL);
|
|
||||||
g_hash_table_destroy(mdb_backends);
|
|
||||||
}
|
|
||||||
static gboolean mdb_drop_backend(gpointer key, gpointer value, gpointer data)
|
static gboolean mdb_drop_backend(gpointer key, gpointer value, gpointer data)
|
||||||
{
|
{
|
||||||
MdbBackend *backend = (MdbBackend *)value;
|
MdbBackend *backend = (MdbBackend *)value;
|
||||||
@@ -869,7 +884,6 @@ generate_table_schema(FILE *outfile, MdbCatalogEntry *entry, char *dbnamespace,
|
|||||||
mdb_free_tabledef (table);
|
mdb_free_tabledef (table);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
mdb_print_schema(MdbHandle *mdb, FILE *outfile, char *tabname, char *dbnamespace, guint32 export_options)
|
mdb_print_schema(MdbHandle *mdb, FILE *outfile, char *tabname, char *dbnamespace, guint32 export_options)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -473,7 +473,7 @@ size_t
|
|||||||
mdb_ole_read_next(MdbHandle *mdb, MdbColumn *col, void *ole_ptr)
|
mdb_ole_read_next(MdbHandle *mdb, MdbColumn *col, void *ole_ptr)
|
||||||
{
|
{
|
||||||
guint32 ole_len;
|
guint32 ole_len;
|
||||||
void *buf;
|
unsigned char *buf;
|
||||||
int row_start;
|
int row_start;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
@@ -506,7 +506,7 @@ size_t
|
|||||||
mdb_ole_read(MdbHandle *mdb, MdbColumn *col, void *ole_ptr, int chunk_size)
|
mdb_ole_read(MdbHandle *mdb, MdbColumn *col, void *ole_ptr, int chunk_size)
|
||||||
{
|
{
|
||||||
guint32 ole_len;
|
guint32 ole_len;
|
||||||
void *buf;
|
unsigned char *buf;
|
||||||
int row_start;
|
int row_start;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
@@ -672,7 +672,7 @@ static char *mdb_memo_to_string(MdbHandle *mdb, int start, int size)
|
|||||||
guint32 memo_len;
|
guint32 memo_len;
|
||||||
gint32 row_start, pg_row;
|
gint32 row_start, pg_row;
|
||||||
size_t len;
|
size_t len;
|
||||||
void *buf, *pg_buf = mdb->pg_buf;
|
char *buf, *pg_buf = (char*) mdb->pg_buf;
|
||||||
char *text = (char *) g_malloc(MDB_BIND_SIZE);
|
char *text = (char *) g_malloc(MDB_BIND_SIZE);
|
||||||
|
|
||||||
if (size<MDB_MEMO_OVERHEAD) {
|
if (size<MDB_MEMO_OVERHEAD) {
|
||||||
@@ -896,7 +896,7 @@ int floor_log10(double f, int is_single)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
char *mdb_col_to_string(MdbHandle *mdb, void *buf, int start, int datatype, int size)
|
char *mdb_col_to_string(MdbHandle *mdb, char *buf, int start, int datatype, int size)
|
||||||
{
|
{
|
||||||
char *text = NULL;
|
char *text = NULL;
|
||||||
float tf;
|
float tf;
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <inttypes.h>
|
|
||||||
#include "mdbtools.h"
|
#include "mdbtools.h"
|
||||||
|
|
||||||
#ifdef DMALLOC
|
#ifdef DMALLOC
|
||||||
@@ -369,7 +368,7 @@ static ssize_t _mdb_read_pg(MdbHandle *mdb, void *pg_buf, unsigned long pg)
|
|||||||
|
|
||||||
fstat(mdb->f->fd, &status);
|
fstat(mdb->f->fd, &status);
|
||||||
if (status.st_size < offset) {
|
if (status.st_size < offset) {
|
||||||
fprintf(stderr,"offset %jd is beyond EOF\n",(intmax_t)offset);
|
fprintf(stderr,"offset %jd is beyond EOF\n",offset);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (mdb->stats && mdb->stats->collect)
|
if (mdb->stats && mdb->stats->collect)
|
||||||
@@ -420,7 +419,7 @@ unsigned char mdb_pg_get_byte(MdbHandle *mdb, int offset)
|
|||||||
return mdb->pg_buf[offset];
|
return mdb->pg_buf[offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
int mdb_get_int16(void *buf, int offset)
|
int mdb_get_int16(unsigned char *buf, int offset)
|
||||||
{
|
{
|
||||||
guint16 l;
|
guint16 l;
|
||||||
memcpy(&l, buf + offset, 2);
|
memcpy(&l, buf + offset, 2);
|
||||||
@@ -433,13 +432,13 @@ int mdb_pg_get_int16(MdbHandle *mdb, int offset)
|
|||||||
return mdb_get_int16(mdb->pg_buf, offset);
|
return mdb_get_int16(mdb->pg_buf, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
long mdb_get_int32_msb(void *buf, int offset)
|
long mdb_get_int32_msb(unsigned char *buf, int offset)
|
||||||
{
|
{
|
||||||
gint32 l;
|
gint32 l;
|
||||||
memcpy(&l, buf + offset, 4);
|
memcpy(&l, buf + offset, 4);
|
||||||
return (long)GINT32_FROM_BE(l);
|
return (long)GINT32_FROM_BE(l);
|
||||||
}
|
}
|
||||||
long mdb_get_int32(void *buf, int offset)
|
long mdb_get_int32(unsigned char *buf, int offset)
|
||||||
{
|
{
|
||||||
gint32 l;
|
gint32 l;
|
||||||
memcpy(&l, buf + offset, 4);
|
memcpy(&l, buf + offset, 4);
|
||||||
@@ -452,7 +451,7 @@ long mdb_pg_get_int32(MdbHandle *mdb, int offset)
|
|||||||
return mdb_get_int32(mdb->pg_buf, offset);
|
return mdb_get_int32(mdb->pg_buf, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
float mdb_get_single(void *buf, int offset)
|
float mdb_get_single(unsigned char *buf, int offset)
|
||||||
{
|
{
|
||||||
union {guint32 g; float f;} f;
|
union {guint32 g; float f;} f;
|
||||||
memcpy(&f, buf + offset, 4);
|
memcpy(&f, buf + offset, 4);
|
||||||
@@ -466,7 +465,7 @@ float mdb_pg_get_single(MdbHandle *mdb, int offset)
|
|||||||
return mdb_get_single(mdb->pg_buf, offset);
|
return mdb_get_single(mdb->pg_buf, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
double mdb_get_double(void *buf, int offset)
|
double mdb_get_double(unsigned char *buf, int offset)
|
||||||
{
|
{
|
||||||
union {guint64 g; double d;} d;
|
union {guint64 g; double d;} d;
|
||||||
memcpy(&d, buf + offset, 8);
|
memcpy(&d, buf + offset, 8);
|
||||||
|
|||||||
@@ -29,3 +29,8 @@ mdb_exit())
|
|||||||
{
|
{
|
||||||
fprintf(stderr, "mdb_exit() is DEPRECATED and does nothing. Stop calling it.\n");
|
fprintf(stderr, "mdb_exit() is DEPRECATED and does nothing. Stop calling it.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* glib - to allow static linking of glib in mdbtools */
|
||||||
|
void mdb_g_free (gpointer mem) { g_free(mem); }
|
||||||
|
gpointer mdb_g_malloc (gsize n_bytes) { return g_malloc(n_bytes); }
|
||||||
|
gpointer mdb_g_malloc0 (gsize n_bytes) { return g_malloc0(n_bytes); }
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ char *mdb_money_to_string(MdbHandle *mdb, int start)
|
|||||||
int neg=0;
|
int neg=0;
|
||||||
unsigned char multiplier[MAX_NUMERIC_PRECISION], temp[MAX_NUMERIC_PRECISION];
|
unsigned char multiplier[MAX_NUMERIC_PRECISION], temp[MAX_NUMERIC_PRECISION];
|
||||||
unsigned char product[MAX_NUMERIC_PRECISION];
|
unsigned char product[MAX_NUMERIC_PRECISION];
|
||||||
unsigned char bytes[num_bytes];
|
unsigned char bytes[8];
|
||||||
|
|
||||||
memset(multiplier,0,MAX_NUMERIC_PRECISION);
|
memset(multiplier,0,MAX_NUMERIC_PRECISION);
|
||||||
memset(product,0,MAX_NUMERIC_PRECISION);
|
memset(product,0,MAX_NUMERIC_PRECISION);
|
||||||
@@ -85,7 +85,7 @@ char *mdb_numeric_to_string(MdbHandle *mdb, int start, int prec, int scale) {
|
|||||||
int neg=0;
|
int neg=0;
|
||||||
unsigned char multiplier[MAX_NUMERIC_PRECISION], temp[MAX_NUMERIC_PRECISION];
|
unsigned char multiplier[MAX_NUMERIC_PRECISION], temp[MAX_NUMERIC_PRECISION];
|
||||||
unsigned char product[MAX_NUMERIC_PRECISION];
|
unsigned char product[MAX_NUMERIC_PRECISION];
|
||||||
unsigned char bytes[num_bytes];
|
unsigned char bytes[16];
|
||||||
|
|
||||||
memset(multiplier,0,MAX_NUMERIC_PRECISION);
|
memset(multiplier,0,MAX_NUMERIC_PRECISION);
|
||||||
memset(product,0,MAX_NUMERIC_PRECISION);
|
memset(product,0,MAX_NUMERIC_PRECISION);
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ mdb_dump_props(MdbProperties *props, FILE *outfile, int show_name) {
|
|||||||
* and returns a GArray of MdbProps*
|
* and returns a GArray of MdbProps*
|
||||||
*/
|
*/
|
||||||
GArray*
|
GArray*
|
||||||
mdb_kkd_to_props(MdbHandle *mdb, void *buffer, size_t len) {
|
mdb_kkd_to_props(MdbHandle *mdb, char *buffer, size_t len) {
|
||||||
guint32 record_len;
|
guint32 record_len;
|
||||||
guint16 record_type;
|
guint16 record_type;
|
||||||
size_t pos;
|
size_t pos;
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ MdbTableDef *mdb_read_table(MdbCatalogEntry *entry)
|
|||||||
MdbHandle *mdb = entry->mdb;
|
MdbHandle *mdb = entry->mdb;
|
||||||
MdbFormatConstants *fmt = mdb->fmt;
|
MdbFormatConstants *fmt = mdb->fmt;
|
||||||
int row_start, pg_row;
|
int row_start, pg_row;
|
||||||
void *buf, *pg_buf = mdb->pg_buf;
|
unsigned char *buf, *pg_buf = mdb->pg_buf;
|
||||||
guint i;
|
guint i;
|
||||||
|
|
||||||
mdb_read_pg(mdb, entry->table_pg);
|
mdb_read_pg(mdb, entry->table_pg);
|
||||||
@@ -166,7 +166,7 @@ read_pg_if_8(MdbHandle *mdb, int *cur_pos)
|
|||||||
* are still advanced and the page cursor is still updated.
|
* are still advanced and the page cursor is still updated.
|
||||||
*/
|
*/
|
||||||
void *
|
void *
|
||||||
read_pg_if_n(MdbHandle *mdb, void *buf, int *cur_pos, size_t len)
|
read_pg_if_n(MdbHandle *mdb, unsigned char *buf, int *cur_pos, size_t len)
|
||||||
{
|
{
|
||||||
/* Advance to page which contains the first byte */
|
/* Advance to page which contains the first byte */
|
||||||
while (*cur_pos >= mdb->fmt->pg_size) {
|
while (*cur_pos >= mdb->fmt->pg_size) {
|
||||||
|
|||||||
@@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <inttypes.h>
|
|
||||||
#include "mdbtools.h"
|
#include "mdbtools.h"
|
||||||
|
|
||||||
#ifdef DMALLOC
|
#ifdef DMALLOC
|
||||||
@@ -30,7 +29,7 @@
|
|||||||
static int mdb_add_row_to_leaf_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPage *ipg, MdbField *idx_fields, guint32 pgnum, guint16 rownum);
|
static int mdb_add_row_to_leaf_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPage *ipg, MdbField *idx_fields, guint32 pgnum, guint16 rownum);
|
||||||
|
|
||||||
void
|
void
|
||||||
mdb_put_int16(void *buf, guint32 offset, guint32 value)
|
mdb_put_int16(unsigned char *buf, guint32 offset, guint32 value)
|
||||||
{
|
{
|
||||||
value = GINT32_TO_LE(value);
|
value = GINT32_TO_LE(value);
|
||||||
memcpy(buf + offset, &value, 2);
|
memcpy(buf + offset, &value, 2);
|
||||||
@@ -44,7 +43,7 @@ __attribute__((alias("mdb_put_int16")));
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
mdb_put_int32(void *buf, guint32 offset, guint32 value)
|
mdb_put_int32(unsigned char *buf, guint32 offset, guint32 value)
|
||||||
{
|
{
|
||||||
value = GINT32_TO_LE(value);
|
value = GINT32_TO_LE(value);
|
||||||
memcpy(buf + offset, &value, 4);
|
memcpy(buf + offset, &value, 4);
|
||||||
@@ -58,7 +57,7 @@ __attribute__((alias("mdb_put_int32")));
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
mdb_put_int32_msb(void *buf, guint32 offset, guint32 value)
|
mdb_put_int32_msb(unsigned char *buf, guint32 offset, guint32 value)
|
||||||
{
|
{
|
||||||
value = GINT32_TO_BE(value);
|
value = GINT32_TO_BE(value);
|
||||||
memcpy(buf + offset, &value, 4);
|
memcpy(buf + offset, &value, 4);
|
||||||
@@ -81,7 +80,7 @@ mdb_write_pg(MdbHandle *mdb, unsigned long pg)
|
|||||||
fstat(mdb->f->fd, &status);
|
fstat(mdb->f->fd, &status);
|
||||||
/* is page beyond current size + 1 ? */
|
/* is page beyond current size + 1 ? */
|
||||||
if (status.st_size < offset + mdb->fmt->pg_size) {
|
if (status.st_size < offset + mdb->fmt->pg_size) {
|
||||||
fprintf(stderr,"offset %jd is beyond EOF\n",(intmax_t)offset);
|
fprintf(stderr,"offset %jd is beyond EOF\n",offset);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
lseek(mdb->f->fd, offset, SEEK_SET);
|
lseek(mdb->f->fd, offset, SEEK_SET);
|
||||||
@@ -172,7 +171,7 @@ mdb_crack_row(MdbTableDef *table, int row_start, int row_end, MdbField *fields)
|
|||||||
MdbColumn *col;
|
MdbColumn *col;
|
||||||
MdbCatalogEntry *entry = table->entry;
|
MdbCatalogEntry *entry = table->entry;
|
||||||
MdbHandle *mdb = entry->mdb;
|
MdbHandle *mdb = entry->mdb;
|
||||||
void *pg_buf = mdb->pg_buf;
|
unsigned char *pg_buf = mdb->pg_buf;
|
||||||
unsigned int row_var_cols=0, row_cols;
|
unsigned int row_var_cols=0, row_cols;
|
||||||
unsigned char *nullmask;
|
unsigned char *nullmask;
|
||||||
unsigned int bitmask_sz;
|
unsigned int bitmask_sz;
|
||||||
@@ -594,7 +593,7 @@ mdb_insert_row(MdbTableDef *table, int num_fields, MdbField *fields)
|
|||||||
guint16
|
guint16
|
||||||
mdb_add_row_to_pg(MdbTableDef *table, unsigned char *row_buffer, int new_row_size)
|
mdb_add_row_to_pg(MdbTableDef *table, unsigned char *row_buffer, int new_row_size)
|
||||||
{
|
{
|
||||||
void *new_pg;
|
unsigned char *new_pg;
|
||||||
int num_rows, i, pos, row_start;
|
int num_rows, i, pos, row_start;
|
||||||
size_t row_size;
|
size_t row_size;
|
||||||
MdbCatalogEntry *entry = table->entry;
|
MdbCatalogEntry *entry = table->entry;
|
||||||
@@ -725,7 +724,7 @@ MdbCatalogEntry *entry = table->entry;
|
|||||||
MdbHandle *mdb = entry->mdb;
|
MdbHandle *mdb = entry->mdb;
|
||||||
int pg_size = mdb->fmt->pg_size;
|
int pg_size = mdb->fmt->pg_size;
|
||||||
int rco = mdb->fmt->row_count_offset;
|
int rco = mdb->fmt->row_count_offset;
|
||||||
void *new_pg;
|
unsigned char *new_pg;
|
||||||
guint16 num_rows;
|
guint16 num_rows;
|
||||||
int row_start;
|
int row_start;
|
||||||
size_t row_size;
|
size_t row_size;
|
||||||
@@ -793,7 +792,7 @@ mdb_copy_index_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPage *ipg)
|
|||||||
MdbColumn *col;
|
MdbColumn *col;
|
||||||
guint32 pg_row;
|
guint32 pg_row;
|
||||||
guint16 row = 0;
|
guint16 row = 0;
|
||||||
void *new_pg;
|
unsigned char *new_pg;
|
||||||
unsigned char key_hash[256];
|
unsigned char key_hash[256];
|
||||||
int keycol;
|
int keycol;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user