Warnings fixes and better use of GLib

This commit is contained in:
whydoubt
2004-07-17 07:48:11 +00:00
parent e121a82946
commit 4a245f2af7
8 changed files with 74 additions and 75 deletions

View File

@@ -1,3 +1,12 @@
Sat Jul 17 02:47:16 CDT 2004 Jeff Smith <whydoubt@yahoo.com>
* include/mdbtools.h:
* src/libmdb/data.c:
* src/libmdb/kkd.c:
* src/libmdb/like.c:
* src/libmdb/table.c:
* src/libmdb/write.c:
* src/util/mdb-import.c: Warnings fixes and better use of GLib
Fri Jul 9 07:47:27 CDT 2004 Jeff Smith <whydoubt@yahoo.com>
* include/mdbsql.h:
* include/mdbtools.h:

View File

@@ -320,7 +320,7 @@ typedef struct {
char name[MDB_MAX_OBJ_NAME+1];
unsigned int num_cols;
GPtrArray *columns;
int num_rows;
unsigned int num_rows;
int index_start;
unsigned int num_real_idxs;
unsigned int num_idxs;
@@ -332,11 +332,11 @@ typedef struct {
int noskip_del; /* don't skip deleted rows */
/* object allocation map */
guint32 map_base_pg;
int map_sz;
unsigned int map_sz;
unsigned char *usage_map;
/* pages with free space left */
guint32 freemap_base_pg;
int freemap_sz;
unsigned int freemap_sz;
unsigned char *free_usage_map;
/* query planner */
MdbSargNode *sarg_tree;
@@ -442,7 +442,7 @@ extern void mdb_bind_len(MdbTableDef *table, int col_num, int *len_ptr);
extern int mdb_ole_read_next(MdbHandle *mdb, MdbColumn *col, void *ole_ptr);
extern int mdb_ole_read(MdbHandle *mdb, MdbColumn *col, void *ole_ptr, int chunk_size);
extern void mdb_set_date_fmt(const char *);
extern int mdb_read_row(MdbTableDef *table, int row);
extern int mdb_read_row(MdbTableDef *table, unsigned int row);
/* dump.c */
extern void buffer_dump(const unsigned char* buf, int start, int end);

View File

@@ -30,7 +30,7 @@
char *mdb_money_to_string(MdbHandle *mdb, int start, char *s);
static int _mdb_attempt_bind(MdbHandle *mdb,
MdbColumn *col, unsigned char isnull, int offset, int len);
char *mdb_num_to_string(MdbHandle *mdb, int start, int datatype, int prec, int scale);
static char *mdb_num_to_string(MdbHandle *mdb, int start, int datatype, int prec, int scale);
int mdb_copy_ole(MdbHandle *mdb, char *dest, int start, int size);
static char date_fmt[64] = "%x %X";
@@ -137,7 +137,7 @@ mdb_xfer_bound_bool(MdbHandle *mdb, MdbColumn *col, int value)
}
static int mdb_xfer_bound_ole(MdbHandle *mdb, int start, MdbColumn *col, int len)
{
int ret;
int ret = 0;
if (len) {
col->cur_value_start = start;
col->cur_value_len = len;
@@ -168,17 +168,18 @@ int ret;
col->cur_value_len = 0;
}
if (col->bind_ptr) {
if (len) {
//fprintf(stdout,"len %d size %d\n",len, col->col_size);
if (col->col_type == MDB_NUMERIC) {
strcpy(col->bind_ptr,
mdb_num_to_string(mdb, start, col->col_type, col->col_prec, col->col_scale));
} else {
strcpy(col->bind_ptr,
mdb_col_to_string(mdb, mdb->pg_buf, start, col->col_type, len));
}
if (!len) {
strcpy(col->bind_ptr, "");
} else if (col->col_type == MDB_NUMERIC) {
//fprintf(stdout,"len %d size %d\n",len, col->col_size);
char *str = mdb_num_to_string(mdb, start, col->col_type,
col->col_prec, col->col_scale);
strcpy(col->bind_ptr, str);
g_free(str);
} else {
strcpy(col->bind_ptr, "");
//fprintf(stdout,"len %d size %d\n",len, col->col_size);
strcpy(col->bind_ptr,
mdb_col_to_string(mdb, mdb->pg_buf, start, col->col_type, len));
}
ret = strlen(col->bind_ptr);
if (col->len_ptr) {
@@ -188,7 +189,7 @@ int ret;
}
return 0;
}
int mdb_read_row(MdbTableDef *table, int row)
int mdb_read_row(MdbTableDef *table, unsigned int row)
{
MdbHandle *mdb = table->entry->mdb;
MdbFormatConstants *fmt = mdb->fmt;
@@ -436,9 +437,9 @@ static int _mdb_attempt_bind(MdbHandle *mdb,
int
mdb_read_next_dpg_by_map0(MdbTableDef *table)
{
MdbCatalogEntry *entry = table->entry;
MdbHandle *mdb = entry->mdb;
int pgnum, i, bitn;
MdbCatalogEntry *entry = table->entry;
MdbHandle *mdb = entry->mdb;
unsigned int pgnum, i, bitn;
pgnum = mdb_get_int32(table->usage_map,1);
/* the first 5 bytes of the usage map mean something */
@@ -951,8 +952,7 @@ guint16 len;
len = row_stop - row_start;
strncat(text, &mdb->pg_buf[row_start+4],
strlen(text) + len - 4 > MDB_BIND_SIZE ?
MDB_BIND_SIZE - strlen(text) :
len - 4);
MDB_BIND_SIZE - strlen(text) : len - 4);
/* find next lval page */
memo_row = mdb->pg_buf[row_start];
@@ -968,31 +968,19 @@ guint16 len;
*/
}
}
char *
static char *
mdb_num_to_string(MdbHandle *mdb, int start, int datatype, int prec, int scale)
{
/* FIX ME -- not thread safe */
static char text[MDB_BIND_SIZE];
char tmpbuf[MDB_BIND_SIZE];
char mask[20];
gint32 l;
char *text;
gint32 l;
l = mdb->pg_buf[start+16] * 256 * 256 * 256 +
mdb->pg_buf[start+15] * 256 * 256 +
mdb->pg_buf[start+14] * 256 +
mdb->pg_buf[start+13];
memcpy(&l, mdb->pg_buf+start+13, 4);
sprintf(mask,"%%0%dld",prec);
sprintf(tmpbuf,mask,l);
//strcpy(text, tmpbuf);
//return text;
if (!scale) {
strcpy(text,tmpbuf);
} else {
memset(text,0,sizeof(text));
strncpy(text,tmpbuf,prec-scale);
strcat(text,".");
strcat(text,&tmpbuf[strlen(tmpbuf)-scale]);
text = (char *) g_malloc(prec+2);
sprintf(text, "%0*" G_GINT32_FORMAT, prec, GINT32_FROM_LE(l));
if (scale) {
memmove(text+prec-scale, text+prec-scale+1, scale+1);
text[prec-scale] = '.';
}
return text;
}

View File

@@ -55,7 +55,7 @@ MdbHandle *mdb = entry->mdb;
GHashTable *mdb_get_column_def(MdbCatalogEntry *entry, int start)
{
GHashTable *hash;
GHashTable *hash = NULL;
MdbHandle *mdb = entry->mdb;
MdbColumnProp prop;
int tmp, pos, col_num, val_len, i;

View File

@@ -38,7 +38,8 @@
*/
int mdb_like_cmp(char *s, char *r)
{
int i, ret;
unsigned int i;
int ret;
mdb_debug(MDB_DEBUG_LIKE, "comparing %s and %s", s, r);
switch (r[0]) {

View File

@@ -339,8 +339,10 @@ guint32 pgnum;
}
if (table->usage_map) {
printf("pages reserved by this object\n");
printf("usage map pg %lu\n", table->map_base_pg);
printf("free map pg %lu\n", table->freemap_base_pg);
printf("usage map pg %" G_GUINT32_FORMAT "\n",
table->map_base_pg);
printf("free map pg %" G_GUINT32_FORMAT "\n",
table->freemap_base_pg);
pgnum = mdb_get_int32(table->usage_map,1);
/* the first 5 bytes of the usage map mean something */
coln = 0;
@@ -348,10 +350,12 @@ guint32 pgnum;
for (bitn=0;bitn<8;bitn++) {
if (table->usage_map[i] & 1 << bitn) {
coln++;
printf("%6lu ",(long unsigned) pgnum);
printf("%6" G_GUINT32_FORMAT, pgnum);
if (coln==10) {
printf("\n");
coln = 0;
} else {
printf(" ");
}
}
pgnum++;

View File

@@ -642,7 +642,8 @@ mdb_update_index(MdbTableDef *table, MdbIndex *idx, int num_fields, MdbField *fi
mdb_index_find_row(mdb, idx, chain, pgnum, rownum);
printf("chain depth = %d\n", chain->cur_depth);
printf("pg = %lu\n", chain->pages[chain->cur_depth-1].pg);
printf("pg = %" G_GUINT32_FORMAT "\n",
chain->pages[chain->cur_depth-1].pg);
//mdb_copy_index_pg(table, idx, &chain->pages[chain->cur_depth-1]);
mdb_add_row_to_leaf_pg(table, idx, &chain->pages[chain->cur_depth-1], idx_fields);
@@ -915,7 +916,8 @@ mdb_copy_index_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPage *ipg)
mdb_index_swap_n(&mdb->pg_buf[ipg->offset + 1], col->col_size, key_hash);
key_hash[col->col_size - 1] &= 0x7f;
printf("length = %d\n", ipg->len);
printf("iflag = %d pg = %lu row = %d\n", iflag, pg, row);
printf("iflag = %d pg = %" G_GUINT32_FORMAT
" row = %" G_GUINT16_FORMAT "\n", iflag, pg, row);
buffer_dump(mdb->pg_buf, ipg->offset, ipg->offset + ipg->len - 1);
buffer_dump(mdb->pg_buf, ipg->offset + 1, ipg->offset + col->col_size);
buffer_dump(key_hash, 0, col->col_size - 1);

View File

@@ -107,43 +107,43 @@ int
prep_row(MdbTableDef *table, unsigned char *line, MdbField *fields, char *delim)
{
MdbColumn *col;
char delims[20];
char *s;
unsigned int file_cols;
char **sarray, *s;
unsigned int i;
/*
* pull apart the row and turn it into something respectable
*/
sprintf(delims, "%c\n", delim[0]);
s = strtok(line, delims);
file_cols = 0;
do {
if (file_cols >= table->num_cols) {
g_strdelimit(line, delim, '\n');
sarray = g_strsplit (line, "\n", 0);
for (i=0; (s = sarray[i]); i++) {
if (i >= table->num_cols) {
fprintf(stderr, "Number of columns in file exceeds number in table.\n");
g_strfreev(sarray);
return 0;
}
if (s[0]=='"' && s[strlen(s)-1]=='"') {
s[strlen(s)-1] = '\0';
s++;
memmove(s+1, s, strlen(s));
}
printf("field = %s\n", s);
col = g_ptr_array_index (table->columns, file_cols);
if (convert_field(col, s, &fields[file_cols])) {
fprintf(stderr, "Format error in column %d\n", file_cols+1);
col = g_ptr_array_index (table->columns, i);
if (convert_field(col, s, &fields[i])) {
fprintf(stderr, "Format error in column %d\n", i+1);
g_strfreev(sarray);
return 0;
}
file_cols++;
} while (s = strtok(NULL, delims));
}
g_strfreev(sarray);
/*
* verify number of columns in table against number in row
*/
if (file_cols < table->num_cols) {
fprintf(stderr, "Row has %d columns, but table has %d\n", file_cols, table->num_cols);
free_values(fields, file_cols);
if (i < table->num_cols) {
fprintf(stderr, "Row has %d columns, but table has %d\n", i, table->num_cols);
free_values(fields, i);
return 0;
}
return file_cols;
return i;
}
int
main(int argc, char **argv)
@@ -156,9 +156,8 @@ main(int argc, char **argv)
int num_fields;
/* doesn't handle tables > 256 columns. Can that happen? */
int opt;
char *s;
FILE *in;
char *delimiter = NULL;
char delimiter[2] = ",";
char header_rows = 0;
while ((opt=getopt(argc, argv, "H:d:"))!=-1) {
@@ -167,15 +166,12 @@ main(int argc, char **argv)
header_rows = atol(optarg);
break;
case 'd':
delimiter = (char *) g_strdup(optarg);
delimiter[0] = optarg[0];
break;
default:
break;
}
}
if (!delimiter) {
delimiter = (char *) g_strdup(",");
}
/*
** optind is now the position of the first non-option arg,
@@ -229,7 +225,6 @@ main(int argc, char **argv)
}
mdb_free_tabledef(table);
g_free(delimiter);
fclose(in);
mdb_close(mdb);
mdb_exit();