mirror of
https://github.com/mdbtools/mdbtools.git
synced 2025-04-05 20:31:00 +08:00
Fix all sign-compare warnings
Also flip on -Wsign-compare in the default configuration
This commit is contained in:
parent
99099cdada
commit
c93156626c
@ -68,7 +68,7 @@ AM_CONDITIONAL(SQL, test x$sql = xtrue)
|
||||
AC_SUBST(SQL)
|
||||
AC_SUBST(LFLAGS)
|
||||
|
||||
CFLAGS="$CFLAGS -Wall -Wstrict-prototypes -Werror"
|
||||
CFLAGS="$CFLAGS -Wall -Wstrict-prototypes -Wsign-compare -Werror"
|
||||
AS_CASE([$host],
|
||||
[*mingw*|*cygwin*], [LDFLAGS="$LDFLAGS -no-undefined"], [])
|
||||
AS_CASE([$host],
|
||||
|
@ -48,7 +48,7 @@ static char *type_name[] = {"Form",
|
||||
|
||||
void mdb_free_catalog(MdbHandle *mdb)
|
||||
{
|
||||
unsigned int i, j;
|
||||
int i, j;
|
||||
MdbCatalogEntry *entry;
|
||||
|
||||
if ((!mdb) || (!mdb->catalog)) return;
|
||||
@ -77,7 +77,7 @@ GPtrArray *mdb_read_catalog (MdbHandle *mdb, int objtype)
|
||||
char obj_flags[256];
|
||||
char obj_props[MDB_BIND_SIZE];
|
||||
int type;
|
||||
unsigned int i;
|
||||
int i;
|
||||
MdbColumn *col_props;
|
||||
int kkd_size_ole;
|
||||
|
||||
|
@ -288,6 +288,10 @@ int mdb_read_row(MdbTableDef *table, unsigned int row)
|
||||
fprintf(stderr, "warning: mdb_find_row failed.\n");
|
||||
return 0;
|
||||
}
|
||||
if (row_size == 0) {
|
||||
fprintf(stderr, "warning: row_size = 0.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
delflag = lookupflag = 0;
|
||||
if (row_start & 0x8000) lookupflag++;
|
||||
@ -304,8 +308,7 @@ int mdb_read_row(MdbTableDef *table, unsigned int row)
|
||||
return 0;
|
||||
}
|
||||
|
||||
num_fields = mdb_crack_row(table, row_start, row_start + row_size - 1,
|
||||
fields);
|
||||
num_fields = mdb_crack_row(table, row_start, row_size, fields);
|
||||
if (num_fields < 0)
|
||||
return 0;
|
||||
if (!mdb_test_sargs(table, fields, num_fields)) return 0;
|
||||
@ -371,7 +374,7 @@ int mdb_read_next_dpg(MdbTableDef *table)
|
||||
}
|
||||
|
||||
table->cur_phys_pg = next_pg;
|
||||
if (mdb->pg_buf[0]==MDB_PAGE_DATA && mdb_get_int32(mdb->pg_buf, 4)==entry->table_pg)
|
||||
if (mdb->pg_buf[0]==MDB_PAGE_DATA && mdb_get_int32(mdb->pg_buf, 4)==(long)entry->table_pg)
|
||||
return table->cur_phys_pg;
|
||||
|
||||
/* On rare occasion, mdb_map_find_next will return a wrong page */
|
||||
@ -386,7 +389,7 @@ int mdb_read_next_dpg(MdbTableDef *table)
|
||||
do {
|
||||
if (!mdb_read_pg(mdb, table->cur_phys_pg++))
|
||||
return 0;
|
||||
} while (mdb->pg_buf[0]!=MDB_PAGE_DATA || mdb_get_int32(mdb->pg_buf, 4)!=entry->table_pg);
|
||||
} while (mdb->pg_buf[0]!=MDB_PAGE_DATA || mdb_get_int32(mdb->pg_buf, 4)!=(long)entry->table_pg);
|
||||
/* fprintf(stderr,"returning new page %ld\n", table->cur_phys_pg); */
|
||||
return table->cur_phys_pg;
|
||||
}
|
||||
@ -426,8 +429,7 @@ mdb_fetch_row(MdbTableDef *table)
|
||||
fmt->row_count_offset);
|
||||
if (table->cur_row >= rows) {
|
||||
table->cur_row = 0;
|
||||
table->cur_pg_num++;
|
||||
if (table->cur_pg_num > pages->len)
|
||||
if (++table->cur_pg_num > (unsigned int)pages->len)
|
||||
return 0;
|
||||
}
|
||||
memcpy(mdb->pg_buf,
|
||||
@ -539,7 +541,7 @@ mdb_ole_read_next(MdbHandle *mdb, MdbColumn *col, void *ole_ptr)
|
||||
return len - 4;
|
||||
}
|
||||
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, size_t chunk_size)
|
||||
{
|
||||
guint32 ole_len;
|
||||
void *buf;
|
||||
|
@ -19,22 +19,24 @@
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
#ifdef DMALLOC
|
||||
#include "dmalloc.h"
|
||||
#endif
|
||||
|
||||
void mdb_buffer_dump(const void* buf, int start, size_t len)
|
||||
void mdb_buffer_dump(const void* buf, off_t start, size_t len)
|
||||
{
|
||||
char asc[20];
|
||||
int j, k;
|
||||
size_t j;
|
||||
int k = 0;
|
||||
|
||||
memset(asc, 0, sizeof(asc));
|
||||
k = 0;
|
||||
for (j=start; j<start+len; j++) {
|
||||
unsigned int c = ((const unsigned char *)(buf))[j];
|
||||
for (j=0; j<len; j++) {
|
||||
unsigned int c = ((const unsigned char *)(buf))[start+j];
|
||||
if (k == 0) {
|
||||
fprintf(stdout, "%04x ", j);
|
||||
fprintf(stdout, "%04" PRIu64 "x ", (uint64_t)(start+j));
|
||||
}
|
||||
fprintf(stdout, "%02x ", (unsigned char)c);
|
||||
asc[k] = isprint(c) ? c : '.';
|
||||
@ -48,11 +50,11 @@ void mdb_buffer_dump(const void* buf, int start, size_t len)
|
||||
k = 0;
|
||||
}
|
||||
}
|
||||
for (j=k; j<16; j++) {
|
||||
fprintf(stdout, " ");
|
||||
}
|
||||
if (k < 8) {
|
||||
fprintf(stdout, " ");
|
||||
}
|
||||
for (; k<16; k++) {
|
||||
fprintf(stdout, " ");
|
||||
}
|
||||
fprintf(stdout, " %s\n", asc);
|
||||
}
|
||||
|
@ -306,7 +306,7 @@ mdb_read_indices(MdbTableDef *table)
|
||||
/* look for index number i */
|
||||
for (j=0; j<table->num_idxs; ++j) {
|
||||
pidx = g_ptr_array_index (table->indices, j);
|
||||
if (pidx->index_type!=2 && pidx->index_num==i)
|
||||
if (pidx->index_type!=2 && (unsigned int)pidx->index_num==i)
|
||||
break;
|
||||
}
|
||||
if (j==table->num_idxs) {
|
||||
@ -1132,7 +1132,7 @@ mdb_index_scan_free(MdbTableDef *table)
|
||||
|
||||
void mdb_free_indices(GPtrArray *indices)
|
||||
{
|
||||
unsigned int i;
|
||||
int i;
|
||||
|
||||
if (!indices) return;
|
||||
for (i=0; i<indices->len; i++)
|
||||
|
@ -108,7 +108,7 @@ mdb_map_find_next_freepage(MdbTableDef *table, int row_size)
|
||||
{
|
||||
MdbCatalogEntry *entry = table->entry;
|
||||
MdbHandle *mdb = entry->mdb;
|
||||
guint32 pgnum;
|
||||
gint32 pgnum;
|
||||
guint32 cur_pg = 0;
|
||||
int free_space;
|
||||
|
||||
|
@ -47,7 +47,7 @@ void mdb_free_tabledef(MdbTableDef *table)
|
||||
{
|
||||
if (!table) return;
|
||||
if (table->is_temp_table) {
|
||||
unsigned int i;
|
||||
int i;
|
||||
/* Temp table pages are being stored in memory */
|
||||
for (i=0; i<table->temp_table_pages->len; i++)
|
||||
g_free(g_ptr_array_index(table->temp_table_pages,i));
|
||||
@ -68,7 +68,7 @@ MdbTableDef *mdb_read_table(MdbCatalogEntry *entry)
|
||||
MdbFormatConstants *fmt = mdb->fmt;
|
||||
int row_start, pg_row;
|
||||
void *buf, *pg_buf = mdb->pg_buf;
|
||||
guint i;
|
||||
int i;
|
||||
|
||||
mdb_read_pg(mdb, entry->table_pg);
|
||||
if (mdb_get_byte(pg_buf, 0) != 0x02) /* not a valid table def page */
|
||||
@ -173,7 +173,7 @@ read_pg_if_n(MdbHandle *mdb, void *buf, int *cur_pos, size_t len)
|
||||
*cur_pos -= (mdb->fmt->pg_size - 8);
|
||||
}
|
||||
/* Copy pages into buffer */
|
||||
while (*cur_pos + len >= mdb->fmt->pg_size) {
|
||||
while (*cur_pos + len >= (size_t)mdb->fmt->pg_size) {
|
||||
int piece_len = mdb->fmt->pg_size - *cur_pos;
|
||||
if (_buf) {
|
||||
memcpy(_buf, mdb->pg_buf + *cur_pos, piece_len);
|
||||
@ -198,7 +198,7 @@ void mdb_append_column(GPtrArray *columns, MdbColumn *in_col)
|
||||
}
|
||||
void mdb_free_columns(GPtrArray *columns)
|
||||
{
|
||||
unsigned int i, j;
|
||||
int i, j;
|
||||
MdbColumn *col;
|
||||
|
||||
if (!columns) return;
|
||||
@ -220,7 +220,8 @@ GPtrArray *mdb_read_columns(MdbTableDef *table)
|
||||
MdbFormatConstants *fmt = mdb->fmt;
|
||||
MdbColumn *pcol;
|
||||
unsigned char *col;
|
||||
unsigned int i, j;
|
||||
unsigned int i;
|
||||
int j;
|
||||
int cur_pos;
|
||||
size_t name_sz;
|
||||
GPtrArray *allprops;
|
||||
|
@ -113,7 +113,8 @@ mdb_is_col_indexed(MdbTableDef *table, int colnum)
|
||||
}
|
||||
|
||||
static int
|
||||
mdb_crack_row4(MdbHandle *mdb, int row_start, int row_end, unsigned int bitmask_sz, unsigned int row_var_cols, unsigned int *var_col_offsets)
|
||||
mdb_crack_row4(MdbHandle *mdb, unsigned int row_start, unsigned int row_end,
|
||||
unsigned int bitmask_sz, unsigned int row_var_cols, unsigned int *var_col_offsets)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
@ -128,7 +129,8 @@ mdb_crack_row4(MdbHandle *mdb, int row_start, int row_end, unsigned int bitmask_
|
||||
return 1;
|
||||
}
|
||||
static int
|
||||
mdb_crack_row3(MdbHandle *mdb, int row_start, int row_end, unsigned int bitmask_sz, unsigned int row_var_cols, unsigned int *var_col_offsets)
|
||||
mdb_crack_row3(MdbHandle *mdb, unsigned int row_start, unsigned int row_end,
|
||||
unsigned int bitmask_sz, unsigned int row_var_cols, unsigned int *var_col_offsets)
|
||||
{
|
||||
unsigned int i;
|
||||
unsigned int num_jumps = 0, jumps_used = 0;
|
||||
@ -177,7 +179,7 @@ mdb_crack_row3(MdbHandle *mdb, int row_start, int row_end, unsigned int bitmask_
|
||||
* Return value: number of fields present, or -1 if the buffer is invalid.
|
||||
*/
|
||||
int
|
||||
mdb_crack_row(MdbTableDef *table, int row_start, int row_end, MdbField *fields)
|
||||
mdb_crack_row(MdbTableDef *table, int row_start, size_t row_size, MdbField *fields)
|
||||
{
|
||||
MdbColumn *col;
|
||||
MdbCatalogEntry *entry = table->entry;
|
||||
@ -190,9 +192,10 @@ mdb_crack_row(MdbTableDef *table, int row_start, int row_end, MdbField *fields)
|
||||
unsigned int fixed_cols_found, row_fixed_cols;
|
||||
unsigned int col_count_size;
|
||||
unsigned int i;
|
||||
unsigned int row_end = row_start + row_size - 1;
|
||||
|
||||
if (mdb_get_option(MDB_DEBUG_ROW)) {
|
||||
mdb_buffer_dump(pg_buf, row_start, row_end - row_start + 1);
|
||||
mdb_buffer_dump(pg_buf, row_start, row_size);
|
||||
}
|
||||
|
||||
if (IS_JET3(mdb)) {
|
||||
@ -274,7 +277,7 @@ mdb_crack_row(MdbTableDef *table, int row_start, int row_end, MdbField *fields)
|
||||
fields[i].siz = 0;
|
||||
fields[i].is_null = 1;
|
||||
}
|
||||
if (fields[i].start + fields[i].siz > row_end + 1) {
|
||||
if ((size_t)(fields[i].start + fields[i].siz) > row_start + row_size) {
|
||||
fprintf(stderr, "warning: Invalid data location detected in mdb_crack_row.\n");
|
||||
g_free(var_col_offsets);
|
||||
return -1;
|
||||
@ -580,7 +583,7 @@ mdb_insert_row(MdbTableDef *table, int num_fields, MdbField *fields)
|
||||
MdbCatalogEntry *entry = table->entry;
|
||||
MdbHandle *mdb = entry->mdb;
|
||||
MdbFormatConstants *fmt = mdb->fmt;
|
||||
guint32 pgnum;
|
||||
gint32 pgnum;
|
||||
guint16 rownum;
|
||||
|
||||
if (!mdb->f->writable) {
|
||||
@ -682,15 +685,15 @@ mdb_add_row_to_pg(MdbTableDef *table, unsigned char *row_buffer, int new_row_siz
|
||||
int
|
||||
mdb_update_row(MdbTableDef *table)
|
||||
{
|
||||
int row_start, row_end;
|
||||
unsigned int i;
|
||||
MdbColumn *col;
|
||||
MdbCatalogEntry *entry = table->entry;
|
||||
MdbHandle *mdb = entry->mdb;
|
||||
MdbField fields[256];
|
||||
unsigned char row_buffer[4096];
|
||||
int row_start, row_end;
|
||||
unsigned int i;
|
||||
MdbColumn *col;
|
||||
MdbCatalogEntry *entry = table->entry;
|
||||
MdbHandle *mdb = entry->mdb;
|
||||
MdbField fields[256];
|
||||
unsigned char row_buffer[4096];
|
||||
size_t old_row_size, new_row_size;
|
||||
unsigned int num_fields;
|
||||
int num_fields;
|
||||
|
||||
if (!mdb->f->writable) {
|
||||
fprintf(stderr, "File is not open for writing\n");
|
||||
@ -719,9 +722,10 @@ unsigned int num_fields;
|
||||
}
|
||||
|
||||
if (mdb_get_option(MDB_DEBUG_WRITE)) {
|
||||
/*
|
||||
for (i=0;i<num_fields;i++) {
|
||||
//printf("col %d %d start %d siz %d fixed 5d\n", i, fields[i].colnum, fields[i].start, fields[i].siz, fields[i].is_fixed);
|
||||
}
|
||||
printf("col %d %d start %d siz %d fixed 5d\n", i, fields[i].colnum, fields[i].start, fields[i].siz, fields[i].is_fixed);
|
||||
} */
|
||||
}
|
||||
for (i=0;i<table->num_cols;i++) {
|
||||
col = g_ptr_array_index(table->columns,i);
|
||||
|
@ -145,7 +145,7 @@ void mdb_sql_set_maxrow(MdbSQL *sql, int maxrow)
|
||||
|
||||
static void mdb_sql_free_columns(GPtrArray *columns)
|
||||
{
|
||||
unsigned int i;
|
||||
int i;
|
||||
if (!columns) return;
|
||||
for (i=0; i<columns->len; i++) {
|
||||
MdbSQLColumn *c = (MdbSQLColumn *)g_ptr_array_index(columns, i);
|
||||
@ -156,7 +156,7 @@ static void mdb_sql_free_columns(GPtrArray *columns)
|
||||
}
|
||||
static void mdb_sql_free_tables(GPtrArray *tables)
|
||||
{
|
||||
unsigned int i;
|
||||
int i;
|
||||
if (!tables) return;
|
||||
for (i=0; i<tables->len; i++) {
|
||||
MdbSQLTable *t = (MdbSQLTable *)g_ptr_array_index(tables, i);
|
||||
|
@ -227,7 +227,7 @@ main(int argc, char **argv)
|
||||
// TODO refactor this into functions
|
||||
if (mdb->default_backend->capabilities & MDB_SHEXP_BULK_INSERT) {
|
||||
//for efficiency do multi row insert on engines that support this
|
||||
unsigned int counter = 0;
|
||||
int counter = 0;
|
||||
while (mdb_fetch_row(table)) {
|
||||
if (counter % batch_size == 0) {
|
||||
counter = 0; // reset to 0, prevent overflow on extremely large data sets.
|
||||
|
@ -291,7 +291,7 @@ dump_results_pp(FILE *out, MdbSQL *sql)
|
||||
if (headers) {
|
||||
for (j=0;j<sql->num_columns;j++) {
|
||||
sqlcol = g_ptr_array_index(sql->columns,j);
|
||||
if (strlen(sqlcol->name)>sqlcol->disp_size)
|
||||
if (strlen(sqlcol->name)>(size_t)sqlcol->disp_size)
|
||||
sqlcol->disp_size = strlen(sqlcol->name);
|
||||
print_break(out, sqlcol->disp_size, !j);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user