mirror of
https://github.com/mdbtools/mdbtools.git
synced 2025-09-20 19:27:53 +08:00
Renamed _mdb_put_int* into mdb_put_int*
These were the only symbols exported not starting with mdb_ Old names stay available as aliases Bumped libmdb version to 2.0.1 Added these prototypes to mdbtools.h: Fixes compilation warning Added mdb_insert_row prototype to mdbtools.h: Fixes compilation warning
This commit is contained in:
@@ -529,9 +529,13 @@ extern void mdb_dump_stats(MdbHandle *mdb);
|
|||||||
extern int mdb_like_cmp(char *s, char *r);
|
extern int mdb_like_cmp(char *s, char *r);
|
||||||
|
|
||||||
/* write.c */
|
/* write.c */
|
||||||
|
extern void mdb_put_int16(void *buf, guint32 offset, guint32 value);
|
||||||
|
extern void mdb_put_int32(void *buf, guint32 offset, guint32 value);
|
||||||
|
extern void mdb_put_int32_msb(void *buf, guint32 offset, guint32 value);
|
||||||
extern int mdb_crack_row(MdbTableDef *table, int row_start, int row_end, MdbField *fields);
|
extern 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 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 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 int mdb_pack_row(MdbTableDef *table, unsigned char *row_buffer, unsigned int num_fields, MdbField *fields);
|
extern 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 int mdb_replace_row(MdbTableDef *table, int row, void *new_row, int new_row_size);
|
||||||
extern int mdb_pg_get_freespace(MdbHandle *mdb);
|
extern int mdb_pg_get_freespace(MdbHandle *mdb);
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
lib_LTLIBRARIES = libmdb.la
|
lib_LTLIBRARIES = libmdb.la
|
||||||
libmdb_la_SOURCES= catalog.c mem.c file.c table.c data.c dump.c backend.c money.c sargs.c index.c like.c write.c stats.c map.c props.c worktable.c options.c iconv.c
|
libmdb_la_SOURCES= catalog.c mem.c file.c table.c data.c dump.c backend.c money.c sargs.c index.c like.c write.c stats.c map.c props.c worktable.c options.c iconv.c
|
||||||
libmdb_la_LDFLAGS = -version-info 2:0:0 -Wl,--version-script=$(srcdir)/libmdb.map
|
libmdb_la_LDFLAGS = -version-info 2:0:1 -Wl,--version-script=$(srcdir)/libmdb.map
|
||||||
AM_CPPFLAGS = -I$(top_srcdir)/include $(GLIB_CFLAGS)
|
AM_CPPFLAGS = -I$(top_srcdir)/include $(GLIB_CFLAGS)
|
||||||
LIBS = $(GLIB_LIBS) @LIBS@
|
LIBS = $(GLIB_LIBS) @LIBS@
|
||||||
|
@@ -29,23 +29,35 @@
|
|||||||
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(void *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);
|
||||||
}
|
}
|
||||||
void
|
void
|
||||||
_mdb_put_int32(void *buf, guint32 offset, guint32 value)
|
_mdb_put_int16(void *buf, guint32 offset, guint32 value)
|
||||||
|
__attribute__((alias("mdb_put_int16")));
|
||||||
|
|
||||||
|
void
|
||||||
|
mdb_put_int32(void *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);
|
||||||
}
|
}
|
||||||
void
|
void
|
||||||
_mdb_put_int32_msb(void *buf, guint32 offset, guint32 value)
|
_mdb_put_int32(void *buf, guint32 offset, guint32 value)
|
||||||
|
__attribute__((alias("mdb_put_int32")));
|
||||||
|
|
||||||
|
void
|
||||||
|
mdb_put_int32_msb(void *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);
|
||||||
}
|
}
|
||||||
|
void
|
||||||
|
_mdb_put_int32_mdb(void *buf, guint32 offset, guint32 value)
|
||||||
|
__attribute__((alias("mdb_put_int32_msb")));
|
||||||
|
|
||||||
ssize_t
|
ssize_t
|
||||||
mdb_write_pg(MdbHandle *mdb, unsigned long pg)
|
mdb_write_pg(MdbHandle *mdb, unsigned long pg)
|
||||||
{
|
{
|
||||||
@@ -427,8 +439,8 @@ mdb_new_leaf_pg(MdbCatalogEntry *entry)
|
|||||||
MdbHandle *mdb = entry->mdb;
|
MdbHandle *mdb = entry->mdb;
|
||||||
void *new_pg = g_malloc0(mdb->fmt->pg_size);
|
void *new_pg = g_malloc0(mdb->fmt->pg_size);
|
||||||
|
|
||||||
_mdb_put_int16(new_pg, 0, 0x0104);
|
mdb_put_int16(new_pg, 0, 0x0104);
|
||||||
_mdb_put_int32(new_pg, 4, entry->table_pg);
|
mdb_put_int32(new_pg, 4, entry->table_pg);
|
||||||
|
|
||||||
return new_pg;
|
return new_pg;
|
||||||
}
|
}
|
||||||
@@ -438,9 +450,9 @@ mdb_new_data_pg(MdbCatalogEntry *entry)
|
|||||||
MdbFormatConstants *fmt = entry->mdb->fmt;
|
MdbFormatConstants *fmt = entry->mdb->fmt;
|
||||||
void *new_pg = g_malloc0(fmt->pg_size);
|
void *new_pg = g_malloc0(fmt->pg_size);
|
||||||
|
|
||||||
_mdb_put_int16(new_pg, 0, 0x0101);
|
mdb_put_int16(new_pg, 0, 0x0101);
|
||||||
_mdb_put_int16(new_pg, 2, fmt->pg_size - fmt->row_count_offset - 2);
|
mdb_put_int16(new_pg, 2, fmt->pg_size - fmt->row_count_offset - 2);
|
||||||
_mdb_put_int32(new_pg, 4, entry->table_pg);
|
mdb_put_int32(new_pg, 4, entry->table_pg);
|
||||||
|
|
||||||
return new_pg;
|
return new_pg;
|
||||||
}
|
}
|
||||||
@@ -603,7 +615,7 @@ mdb_add_row_to_pg(MdbTableDef *table, unsigned char *row_buffer, int new_row_siz
|
|||||||
mdb_find_row(mdb, i, &row_start, &row_size);
|
mdb_find_row(mdb, i, &row_start, &row_size);
|
||||||
pos -= row_size;
|
pos -= row_size;
|
||||||
memcpy(new_pg + pos, mdb->pg_buf + row_start, row_size);
|
memcpy(new_pg + pos, mdb->pg_buf + row_start, row_size);
|
||||||
_mdb_put_int16(new_pg, (fmt->row_count_offset + 2) + (i*2), pos);
|
mdb_put_int16(new_pg, (fmt->row_count_offset + 2) + (i*2), pos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -611,14 +623,14 @@ mdb_add_row_to_pg(MdbTableDef *table, unsigned char *row_buffer, int new_row_siz
|
|||||||
pos -= new_row_size;
|
pos -= new_row_size;
|
||||||
memcpy(new_pg + pos, row_buffer, new_row_size);
|
memcpy(new_pg + pos, row_buffer, new_row_size);
|
||||||
/* add row to the row offset table */
|
/* add row to the row offset table */
|
||||||
_mdb_put_int16(new_pg, (fmt->row_count_offset + 2) + (num_rows*2), pos);
|
mdb_put_int16(new_pg, (fmt->row_count_offset + 2) + (num_rows*2), pos);
|
||||||
|
|
||||||
/* update number rows on this page */
|
/* update number rows on this page */
|
||||||
num_rows++;
|
num_rows++;
|
||||||
_mdb_put_int16(new_pg, fmt->row_count_offset, num_rows);
|
mdb_put_int16(new_pg, fmt->row_count_offset, num_rows);
|
||||||
|
|
||||||
/* update the freespace */
|
/* update the freespace */
|
||||||
_mdb_put_int16(new_pg,2,pos - fmt->row_count_offset - 2 - (num_rows*2));
|
mdb_put_int16(new_pg,2,pos - fmt->row_count_offset - 2 - (num_rows*2));
|
||||||
|
|
||||||
/* copy new page over old */
|
/* copy new page over old */
|
||||||
if (!table->is_temp_table) {
|
if (!table->is_temp_table) {
|
||||||
@@ -714,7 +726,7 @@ int i, pos;
|
|||||||
new_pg = mdb_new_data_pg(entry);
|
new_pg = mdb_new_data_pg(entry);
|
||||||
|
|
||||||
num_rows = mdb_get_int16(mdb->pg_buf, rco);
|
num_rows = mdb_get_int16(mdb->pg_buf, rco);
|
||||||
_mdb_put_int16(new_pg, rco, num_rows);
|
mdb_put_int16(new_pg, rco, num_rows);
|
||||||
|
|
||||||
pos = pg_size;
|
pos = pg_size;
|
||||||
|
|
||||||
@@ -723,20 +735,20 @@ int i, pos;
|
|||||||
mdb_find_row(mdb, i, &row_start, &row_size);
|
mdb_find_row(mdb, i, &row_start, &row_size);
|
||||||
pos -= row_size;
|
pos -= row_size;
|
||||||
memcpy(new_pg + pos, mdb->pg_buf + row_start, row_size);
|
memcpy(new_pg + pos, mdb->pg_buf + row_start, row_size);
|
||||||
_mdb_put_int16(new_pg, rco + 2 + i*2, pos);
|
mdb_put_int16(new_pg, rco + 2 + i*2, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* our row */
|
/* our row */
|
||||||
pos -= new_row_size;
|
pos -= new_row_size;
|
||||||
memcpy(new_pg + pos, new_row, new_row_size);
|
memcpy(new_pg + pos, new_row, new_row_size);
|
||||||
_mdb_put_int16(new_pg, rco + 2 + row*2, pos);
|
mdb_put_int16(new_pg, rco + 2 + row*2, pos);
|
||||||
|
|
||||||
/* rows after */
|
/* rows after */
|
||||||
for (i=row+1;i<num_rows;i++) {
|
for (i=row+1;i<num_rows;i++) {
|
||||||
mdb_find_row(mdb, i, &row_start, &row_size);
|
mdb_find_row(mdb, i, &row_start, &row_size);
|
||||||
pos -= row_size;
|
pos -= row_size;
|
||||||
memcpy(new_pg + pos, mdb->pg_buf + row_start, row_size);
|
memcpy(new_pg + pos, mdb->pg_buf + row_start, row_size);
|
||||||
_mdb_put_int16(new_pg, rco + 2 + i*2, pos);
|
mdb_put_int16(new_pg, rco + 2 + i*2, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* almost done, copy page over current */
|
/* almost done, copy page over current */
|
||||||
@@ -744,7 +756,7 @@ int i, pos;
|
|||||||
|
|
||||||
g_free(new_pg);
|
g_free(new_pg);
|
||||||
|
|
||||||
_mdb_put_int16(mdb->pg_buf, 2, mdb_pg_get_freespace(mdb));
|
mdb_put_int16(mdb->pg_buf, 2, mdb_pg_get_freespace(mdb));
|
||||||
if (mdb_get_option(MDB_DEBUG_WRITE)) {
|
if (mdb_get_option(MDB_DEBUG_WRITE)) {
|
||||||
mdb_buffer_dump(mdb->pg_buf, 0, 40);
|
mdb_buffer_dump(mdb->pg_buf, 0, 40);
|
||||||
mdb_buffer_dump(mdb->pg_buf, pg_size - 160, 160);
|
mdb_buffer_dump(mdb->pg_buf, pg_size - 160, 160);
|
||||||
@@ -819,9 +831,9 @@ mdb_copy_index_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPage *ipg)
|
|||||||
|
|
||||||
row++;
|
row++;
|
||||||
}
|
}
|
||||||
//_mdb_put_int16(new_pg, mdb->fmt->row_count_offset, row);
|
//mdb_put_int16(new_pg, mdb->fmt->row_count_offset, row);
|
||||||
/* free space left */
|
/* free space left */
|
||||||
_mdb_put_int16(new_pg, 2, mdb->fmt->pg_size - ipg->offset);
|
mdb_put_int16(new_pg, 2, mdb->fmt->pg_size - ipg->offset);
|
||||||
//printf("offset = %d\n", ipg->offset);
|
//printf("offset = %d\n", ipg->offset);
|
||||||
|
|
||||||
mdb_index_swap_n(idx_fields[0].value, col->col_size, key_hash);
|
mdb_index_swap_n(idx_fields[0].value, col->col_size, key_hash);
|
||||||
@@ -835,7 +847,7 @@ mdb_copy_index_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPage *ipg)
|
|||||||
((char *)new_pg)[ipg->offset] = 0x7f;
|
((char *)new_pg)[ipg->offset] = 0x7f;
|
||||||
memcpy(new_pg + ipg->offset + 1, key_hash, col->col_size);
|
memcpy(new_pg + ipg->offset + 1, key_hash, col->col_size);
|
||||||
pg_row = (pgnum << 8) | ((rownum-1) & 0xff);
|
pg_row = (pgnum << 8) | ((rownum-1) & 0xff);
|
||||||
_mdb_put_int32_msb(new_pg, ipg->offset + 5, pg_row);
|
mdb_put_int32_msb(new_pg, ipg->offset + 5, pg_row);
|
||||||
ipg->idx_starts[row++] = ipg->offset + ipg->len;
|
ipg->idx_starts[row++] = ipg->offset + ipg->len;
|
||||||
//ipg->idx_starts[row] = ipg->offset + ipg->len;
|
//ipg->idx_starts[row] = ipg->offset + ipg->len;
|
||||||
if (mdb_get_option(MDB_DEBUG_WRITE)) {
|
if (mdb_get_option(MDB_DEBUG_WRITE)) {
|
||||||
|
@@ -55,14 +55,14 @@ convert_field(MdbColumn *col, char *s, MdbField *field)
|
|||||||
if (*c) return 1;
|
if (*c) return 1;
|
||||||
field->siz = mdb_col_fixed_size(col);
|
field->siz = mdb_col_fixed_size(col);
|
||||||
field->value = g_malloc(field->siz);
|
field->value = g_malloc(field->siz);
|
||||||
_mdb_put_int16(field->value, 0, any.i);
|
mdb_put_int16(field->value, 0, any.i);
|
||||||
break;
|
break;
|
||||||
case MDB_LONGINT:
|
case MDB_LONGINT:
|
||||||
any.i = strtol(s, &c, 16);
|
any.i = strtol(s, &c, 16);
|
||||||
if (*c) return 1;
|
if (*c) return 1;
|
||||||
field->siz = mdb_col_fixed_size(col);
|
field->siz = mdb_col_fixed_size(col);
|
||||||
field->value = g_malloc(field->siz);
|
field->value = g_malloc(field->siz);
|
||||||
_mdb_put_int32(field->value, 0, any.i);
|
mdb_put_int32(field->value, 0, any.i);
|
||||||
break;
|
break;
|
||||||
case MDB_BOOL:
|
case MDB_BOOL:
|
||||||
if (*s == '1') {
|
if (*s == '1') {
|
||||||
@@ -78,13 +78,13 @@ convert_field(MdbColumn *col, char *s, MdbField *field)
|
|||||||
any.d = strtod(s, &c);
|
any.d = strtod(s, &c);
|
||||||
if (*c) return 1;
|
if (*c) return 1;
|
||||||
field.value = g_malloc(mdb_col_fixed_size(col));
|
field.value = g_malloc(mdb_col_fixed_size(col));
|
||||||
_mdb_put_single(field.value, 0, any.i);
|
mdb_put_single(field.value, 0, any.i);
|
||||||
break;
|
break;
|
||||||
case MDB_DOUBLE:
|
case MDB_DOUBLE:
|
||||||
any.d = strtod(s, &c);
|
any.d = strtod(s, &c);
|
||||||
if (*c) return 1;
|
if (*c) return 1;
|
||||||
field.value = g_malloc(mdb_col_fixed_size(col));
|
field.value = g_malloc(mdb_col_fixed_size(col));
|
||||||
_mdb_put_double(field.value, 0, any.i);
|
mdb_put_double(field.value, 0, any.i);
|
||||||
break;
|
break;
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user