From 9b8285d93715dbe19a7b4c3bc26c56bcd960ecad Mon Sep 17 00:00:00 2001 From: brianb Date: Wed, 27 Mar 2002 13:00:00 +0000 Subject: [PATCH] change catalogentry to GPtrArray, documentation fixes, add ifdef wrapper to mdbsql.h --- INSTALL | 1 + README | 6 ++---- TODO | 10 ++-------- include/mdbsql.h | 5 +++++ include/mdbtools.h | 2 +- src/Makefile | 6 +++--- src/extras/Makefile | 2 +- src/libmdb/Makefile | 2 +- src/libmdb/backend.c | 10 +++++----- src/libmdb/catalog.c | 25 ++++++++++++------------- src/libmdb/mem.c | 4 +++- src/odbc/Makefile | 2 +- src/sql/Makefile | 6 +++--- src/sql/Makefile.in | 4 ++-- src/sql/mdbsql.c | 30 +++++++++++++++--------------- src/util/Makefile | 8 ++++---- src/util/mdb-array.c | 10 +++++----- src/util/mdb-export.c | 10 +++++----- src/util/mdb-header.c | 22 +++++++++++----------- src/util/mdb-schema.c | 16 ++++++++-------- src/util/mdb-tables.c | 12 ++++++------ src/util/prdata.c | 10 +++++----- src/util/prtable.c | 10 +++++----- src/util/sargtest.c | 10 +++++----- 24 files changed, 111 insertions(+), 112 deletions(-) diff --git a/INSTALL b/INSTALL index a68a05f..cbdefaf 100644 --- a/INSTALL +++ b/INSTALL @@ -6,6 +6,7 @@ Basic Installation This will build some useful utilities: +mdb-ver -- prints the version (JET 3 or 4) of an mdb file mdb-dump -- simple hex dump utility that I've been using to look at mdb files mdb-schema -- prints DDL for the specified table mdb-export -- export table to CSV format diff --git a/README b/README index 8a8ef6a..34810fe 100644 --- a/README +++ b/README @@ -1,8 +1,6 @@ -This is mdbtools version 0.3 +This is mdbtools version 0.4 -This software is beta so don't expect too much unless you know C and -probably a little something about databases and reverse engineering file -formats, you're welcome to try it out but don't expect miracles. +This software is still beta so don't expect too much. For the rest of you, read the HACKING file for a description of where the code stands and what has been gleened of the file format. diff --git a/TODO b/TODO index c3b5d90..9884652 100644 --- a/TODO +++ b/TODO @@ -2,17 +2,11 @@ Things to Do ------------ . Complete the list of datatypes -. Figure out how to properly determine fixed or variable length columns -. Figure out what happens for varchar columns starting at > 256 -. Modify mdb-schema utility support different backend databases -. Modify mdb-export to handle different delimiters/options -. Get automake working -. Check out text file unixODBC driver to see if it can be adapted to use - libmdb (it already has a SQL parser). . Straighten out which functions in libmdb are meant to be used and which ones should be static. . Create an API reference for libmdb (maybe some man pages). . Sargs need to support all datatypes . Need a way to express logical relationships between sargs (tree) . Add support for index scanning when using sargs -. Convert code to use MSysObjects table for reading catalog. +. Use allocation maps to read tables, should be more efficient +. Figure out why we get unresolved symbols when ODBC driver load by DM diff --git a/include/mdbsql.h b/include/mdbsql.h index 0f3d141..08154b1 100644 --- a/include/mdbsql.h +++ b/include/mdbsql.h @@ -3,6 +3,9 @@ #include #include +#ifndef _mdbsql_h_ +#define _mdbsql_h_ + typedef struct { MdbHandle *mdb; int all_columns; @@ -55,3 +58,5 @@ void mdb_sql_exit(MdbSQL *sql); void mdb_sql_reset(MdbSQL *sql); void mdb_sql_listtables(MdbSQL *sql); void mdb_sql_select(MdbSQL *sql); + +#endif diff --git a/include/mdbtools.h b/include/mdbtools.h index 282d07e..d0121a3 100644 --- a/include/mdbtools.h +++ b/include/mdbtools.h @@ -103,7 +103,7 @@ typedef struct { unsigned char pg_buf[MDB_PGSIZE]; unsigned char alt_pg_buf[MDB_PGSIZE]; int num_catalog; - GArray *catalog; + GPtrArray *catalog; int pg_size; guint32 jet_version; guint32 db_key; diff --git a/src/Makefile b/src/Makefile index fe168dc..7743626 100644 --- a/src/Makefile +++ b/src/Makefile @@ -77,10 +77,10 @@ READLINE_LIBS = -lncurses -lreadline SQL = VERSION = 0.3 YACC = bison -y -#SUBDIRS = libmdb sql util extras -SUBDIRS = libmdb util extras -#DEFDIR = $(prefix) +SUBDIRS = libmdb sql util extras +#SUBDIRS = libmdb util extras DEFDIR = $(prefix) +#DEFDIR = $(prefix) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_CLEAN_FILES = DIST_COMMON = Makefile.am Makefile.in diff --git a/src/extras/Makefile b/src/extras/Makefile index dd1969f..ea8d1dc 100644 --- a/src/extras/Makefile +++ b/src/extras/Makefile @@ -95,7 +95,7 @@ mdb_dump_OBJECTS = mdb-dump.o mdbsupport.o mdb_dump_LDADD = $(LDADD) mdb_dump_DEPENDENCIES = ../libmdb/libmdb.la mdb_dump_LDFLAGS = -CFLAGS = -g -O2 +CFLAGS = -g -O2 -DSQL COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) diff --git a/src/libmdb/Makefile b/src/libmdb/Makefile index 45969fa..b006872 100644 --- a/src/libmdb/Makefile +++ b/src/libmdb/Makefile @@ -94,7 +94,7 @@ libmdb_la_LDFLAGS = libmdb_la_LIBADD = libmdb_la_OBJECTS = catalog.lo mem.lo file.lo kkd.lo table.lo data.lo \ dump.lo backend.lo money.lo sargs.lo index.lo like.lo -CFLAGS = -g -O2 +CFLAGS = -g -O2 -DSQL COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) diff --git a/src/libmdb/backend.c b/src/libmdb/backend.c index 127a9bb..2ec1328 100644 --- a/src/libmdb/backend.c +++ b/src/libmdb/backend.c @@ -102,7 +102,7 @@ char *mdb_postgres_types[] = char *bound_values[MDB_MAX_COLS]; char *relationships[4]; MdbColumn *col; -MdbCatalogEntry entry; +MdbCatalogEntry *entry; MdbTableDef *table; int did_first; @@ -168,11 +168,11 @@ static char text[255]; /* loop over each entry in the catalog */ for (i=0; i < mdb->num_catalog; i++) { - entry = g_array_index (mdb->catalog, MdbCatalogEntry, i); - if ((entry.object_type == MDB_TABLE) && - (strncmp (entry.object_name, "MSysRelationships", 17) == 0)) + entry = g_ptr_array_index (mdb->catalog, i); + if ((entry->object_type == MDB_TABLE) && + (strncmp (entry->object_name, "MSysRelationships", 17) == 0)) { - table = mdb_read_table (&entry); + table = mdb_read_table (entry); if ( table->num_rows > 0 ) { mdb_read_columns(table); mdb_rewind_table(table); diff --git a/src/libmdb/catalog.c b/src/libmdb/catalog.c index 7dff875..4ebc0d2 100644 --- a/src/libmdb/catalog.c +++ b/src/libmdb/catalog.c @@ -44,17 +44,16 @@ static char *type_name[] = {"Form", /* new method */ #if 1 -GArray *mdb_read_catalog (MdbHandle *mdb, int objtype) +GPtrArray *mdb_read_catalog (MdbHandle *mdb, int objtype) { int i, j, k; -MdbCatalogEntry entry, msysobj; +MdbCatalogEntry entry, msysobj, *data; MdbTableDef *table; MdbColumn *col; char parentid[256]; char objname[256]; char tobjtype[256]; int type; -gpointer data; mdb_free_catalog(mdb); mdb_alloc_catalog(mdb); @@ -89,8 +88,8 @@ gpointer data; entry.object_type = type; entry.table_pg = atol(parentid) & 0x00FFFFFF; mdb->num_catalog++; - //data = g_memdup(&entry,sizeof(MdbCatalogEntry)); - mdb->catalog = g_array_append_val(mdb->catalog, entry); + data = g_memdup(&entry,sizeof(MdbCatalogEntry)); + g_ptr_array_add(mdb->catalog, data); } } //mdb_dump_catalog(mdb, MDB_TABLE); @@ -217,18 +216,18 @@ int next_pg, next_pg_off; void mdb_dump_catalog(MdbHandle *mdb, int obj_type) { int rows, i; -MdbCatalogEntry entry; +MdbCatalogEntry *entry; mdb_read_catalog(mdb, obj_type); for (i=0;inum_catalog;i++) { - entry = g_array_index(mdb->catalog,MdbCatalogEntry,i); - if (obj_type==-1 || entry.object_type==obj_type) { + entry = g_ptr_array_index(mdb->catalog,i); + if (obj_type==-1 || entry->object_type==obj_type) { fprintf(stdout,"Type: %-10s Name: %-18s T pg: %04x KKD pg: %04x row: %2d\n", - mdb_get_objtype_string(entry.object_type), - entry.object_name, - entry.table_pg, - entry.kkd_pg, - entry.kkd_rowid); + mdb_get_objtype_string(entry->object_type), + entry->object_name, + entry->table_pg, + entry->kkd_pg, + entry->kkd_rowid); } } return; diff --git a/src/libmdb/mem.c b/src/libmdb/mem.c index 2fc04e8..e462762 100644 --- a/src/libmdb/mem.c +++ b/src/libmdb/mem.c @@ -52,13 +52,15 @@ void mdb_free_handle(MdbHandle *mdb) } void mdb_alloc_catalog(MdbHandle *mdb) { - mdb->catalog = g_array_new(FALSE,FALSE,sizeof(MdbCatalogEntry)); + mdb->catalog = g_ptr_array_new(); } void mdb_free_catalog(MdbHandle *mdb) { GList *l; MdbCatalogEntry entry; + //g_ptr_array_free(mdb->catalog, FALSE); + mdb->catalog = NULL; } MdbTableDef *mdb_alloc_tabledef(MdbCatalogEntry *entry) { diff --git a/src/odbc/Makefile b/src/odbc/Makefile index 478e40c..432427f 100644 --- a/src/odbc/Makefile +++ b/src/odbc/Makefile @@ -116,7 +116,7 @@ unittest_OBJECTS = unittest.o unittest_DEPENDENCIES = libmdbodbc.la ../libmdb/libmdb.la \ ../sql/libmdbsql.la unittest_LDFLAGS = -CFLAGS = -g -O2 +CFLAGS = -g -O2 -DSQL COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) diff --git a/src/sql/Makefile b/src/sql/Makefile index c961c71..1903378 100644 --- a/src/sql/Makefile +++ b/src/sql/Makefile @@ -1,7 +1,7 @@ # Generated automatically from Makefile.in by configure. -# Makefile.in generated automatically by automake 1.4 from Makefile.am +# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -96,7 +96,7 @@ libmdbsql_la_LIBADD = libmdbsql_la_OBJECTS = mdbsql.lo parser.lo lexer.lo LEX_OUTPUT_ROOT = lex.yy LEXLIB = -lfl -CFLAGS = -g -O2 +CFLAGS = -g -O2 -DSQL COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) diff --git a/src/sql/Makefile.in b/src/sql/Makefile.in index 801858f..cf6d65c 100644 --- a/src/sql/Makefile.in +++ b/src/sql/Makefile.in @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.4 from Makefile.am +# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. diff --git a/src/sql/mdbsql.c b/src/sql/mdbsql.c index d44ec03..4a1fbd0 100644 --- a/src/sql/mdbsql.c +++ b/src/sql/mdbsql.c @@ -286,7 +286,7 @@ int vlen; void mdb_sql_listtables(MdbSQL *sql) { int i; -MdbCatalogEntry entry; +MdbCatalogEntry *entry; MdbHandle *mdb = sql->mdb; if (!mdb) { @@ -304,11 +304,11 @@ MdbHandle *mdb = sql->mdb; fprintf(stdout,"\n"); /* loop over each entry in the catalog */ for (i=0; i < mdb->num_catalog; i++) { - entry = g_array_index (mdb->catalog, MdbCatalogEntry, i); + entry = g_ptr_array_index (mdb->catalog, i); /* if it's a table */ - if (entry.object_type == MDB_TABLE) { - if (strncmp (entry.object_name, "MSys", 4)) { - print_value (entry.object_name,30,1); + if (entry->object_type == MDB_TABLE) { + if (strncmp (entry->object_name, "MSys", 4)) { + print_value (entry->object_name,30,1); fprintf(stdout,"\n"); } } @@ -320,7 +320,7 @@ void mdb_sql_describe_table(MdbSQL *sql) { MdbTableDef *table = NULL; MdbSQLTable *sql_tab; -MdbCatalogEntry entry; +MdbCatalogEntry *entry; MdbHandle *mdb = sql->mdb; MdbColumn *col; int i; @@ -336,10 +336,10 @@ char colsize[11]; mdb_read_catalog(mdb, MDB_TABLE); for (i=0;inum_catalog;i++) { - entry = g_array_index(mdb->catalog,MdbCatalogEntry,i); - if (entry.object_type == MDB_TABLE && - !strcasecmp(entry.object_name,sql_tab->name)) { - table = mdb_read_table(&entry); + entry = g_ptr_array_index(mdb->catalog,i); + if (entry->object_type == MDB_TABLE && + !strcasecmp(entry->object_name,sql_tab->name)) { + table = mdb_read_table(entry); break; } } @@ -385,7 +385,7 @@ char colsize[11]; void mdb_sql_select(MdbSQL *sql) { int i,j; -MdbCatalogEntry entry; +MdbCatalogEntry *entry; MdbHandle *mdb = sql->mdb; MdbTableDef *table = NULL; MdbSQLTable *sql_tab; @@ -404,10 +404,10 @@ int found = 0; mdb_read_catalog(mdb, MDB_TABLE); for (i=0;inum_catalog;i++) { - entry = g_array_index(mdb->catalog,MdbCatalogEntry,i); - if (entry.object_type == MDB_TABLE && - !strcasecmp(entry.object_name,sql_tab->name)) { - table = mdb_read_table(&entry); + entry = g_ptr_array_index(mdb->catalog,i); + if (entry->object_type == MDB_TABLE && + !strcasecmp(entry->object_name,sql_tab->name)) { + table = mdb_read_table(entry); break; } } diff --git a/src/util/Makefile b/src/util/Makefile index 0ce9aea..16e3c67 100644 --- a/src/util/Makefile +++ b/src/util/Makefile @@ -82,7 +82,7 @@ bin_PROGRAMS = mdb-export mdb-array mdb-schema mdb-tables mdb-parsecsv mdb-heade LIBS = `glib-config --libs` $(READLINE_LIBS) -lfl INCLUDES = -I$(top_srcdir)/include `glib-config --cflags` LDADD = ../libmdb/libmdb.la -#mdb_sql_LDADD = #../libmdb/libmdb.la ../sql/libmdbsql.la +mdb_sql_LDADD = ../libmdb/libmdb.la ../sql/libmdbsql.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_CLEAN_FILES = PROGRAMS = $(bin_PROGRAMS) @@ -123,8 +123,8 @@ mdb_header_DEPENDENCIES = ../libmdb/libmdb.la mdb_header_LDFLAGS = mdb_sql_SOURCES = mdb-sql.c mdb_sql_OBJECTS = mdb-sql.o -#mdb_sql_DEPENDENCIES = ../libmdb/libmdb.la \ -#../sql/libmdbsql.la +mdb_sql_DEPENDENCIES = ../libmdb/libmdb.la \ +../sql/libmdbsql.la mdb_sql_LDFLAGS = mdb_ver_SOURCES = mdb-ver.c mdb_ver_OBJECTS = mdb-ver.o @@ -156,7 +156,7 @@ prdump_OBJECTS = prdump.o prdump_LDADD = $(LDADD) prdump_DEPENDENCIES = ../libmdb/libmdb.la prdump_LDFLAGS = -CFLAGS = -g -O2 +CFLAGS = -g -O2 -DSQL COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) diff --git a/src/util/mdb-array.c b/src/util/mdb-array.c index 3b7ca9c..5c9a0ce 100644 --- a/src/util/mdb-array.c +++ b/src/util/mdb-array.c @@ -28,7 +28,7 @@ main (int argc, char **argv) int rows; int i, j; MdbHandle *mdb; -MdbCatalogEntry entry; +MdbCatalogEntry *entry; MdbTableDef *table; MdbColumn *col; /* doesn't handle tables > 256 columns. Can that happen? */ @@ -51,11 +51,11 @@ int started; for (i = 0; i < mdb->num_catalog; i++) { - entry = g_array_index (mdb->catalog, MdbCatalogEntry, i); - if (entry.object_type == MDB_TABLE && - !strcmp (entry.object_name, argv [2])) + entry = g_ptr_array_index (mdb->catalog, i); + if (entry->object_type == MDB_TABLE && + !strcmp (entry->object_name, argv [2])) { - table = mdb_read_table (&entry); + table = mdb_read_table (entry); mdb_read_columns (table); mdb_rewind_table (table); diff --git a/src/util/mdb-export.c b/src/util/mdb-export.c index ec8c028..93afaf9 100644 --- a/src/util/mdb-export.c +++ b/src/util/mdb-export.c @@ -26,7 +26,7 @@ int rows; int i, j; unsigned char buf[2048]; MdbHandle *mdb; -MdbCatalogEntry entry; +MdbCatalogEntry *entry; MdbTableDef *table; MdbColumn *col; /* doesn't handle tables > 256 columns. Can that happen? */ @@ -75,10 +75,10 @@ int opt; mdb_read_catalog(mdb, MDB_TABLE); for (i=0;inum_catalog;i++) { - entry = g_array_index(mdb->catalog,MdbCatalogEntry,i); - if (entry.object_type == MDB_TABLE && - !strcmp(entry.object_name,argv[argc-1])) { - table = mdb_read_table(&entry); + entry = g_ptr_array_index(mdb->catalog,i); + if (entry->object_type == MDB_TABLE && + !strcmp(entry->object_name,argv[argc-1])) { + table = mdb_read_table(entry); mdb_read_columns(table); mdb_rewind_table(table); diff --git a/src/util/mdb-header.c b/src/util/mdb-header.c index cab8bfe..2249c48 100644 --- a/src/util/mdb-header.c +++ b/src/util/mdb-header.c @@ -33,7 +33,7 @@ main (int argc, char **argv) { int i, j, k; MdbHandle *mdb; -MdbCatalogEntry entry; +MdbCatalogEntry *entry; MdbTableDef *table; MdbColumn *col; FILE *typesfile; @@ -74,30 +74,30 @@ FILE *cfile; for (i=0; i < mdb->num_catalog; i++) { - entry = g_array_index (mdb->catalog, MdbCatalogEntry, i); + entry = g_ptr_array_index (mdb->catalog, i); /* if it's a table */ - if (entry.object_type == MDB_TABLE) + if (entry->object_type == MDB_TABLE) { /* skip the MSys tables */ - if (strncmp (entry.object_name, "MSys", 4)) + if (strncmp (entry->object_name, "MSys", 4)) { /* make sure it's a table (may be redundant) */ - if (!strcmp (mdb_get_objtype_string (entry.object_type), "Table")) + if (!strcmp (mdb_get_objtype_string (entry->object_type), "Table")) { - fprintf (typesfile, "typedef struct _%s\n", entry.object_name); + fprintf (typesfile, "typedef struct _%s\n", entry->object_name); fprintf (typesfile, "{\n"); fprintf (headerfile, "void dump_%s (%s x);\n", - entry.object_name, entry.object_name); + entry->object_name, entry->object_name); fprintf (cfile, "void dump_%s (%s x)\n{\n", - entry.object_name, entry.object_name); - fprintf (cfile, "\tfprintf (stdout, \"**************** %s ****************\\n\");\n", entry.object_name); - table = mdb_read_table (&entry); + entry->object_name, entry->object_name); + fprintf (cfile, "\tfprintf (stdout, \"**************** %s ****************\\n\");\n", entry->object_name); + table = mdb_read_table (entry); /* get the columns */ mdb_read_columns (table); @@ -138,7 +138,7 @@ FILE *cfile; fprintf (cfile, ");\n"); } - fprintf (typesfile, "\n} %s ;\n", entry.object_name); + fprintf (typesfile, "\n} %s ;\n", entry->object_name); fprintf (typesfile, "\n"); fprintf (cfile, "}\n\n"); } diff --git a/src/util/mdb-schema.c b/src/util/mdb-schema.c index 6c50a78..949ca59 100644 --- a/src/util/mdb-schema.c +++ b/src/util/mdb-schema.c @@ -24,7 +24,7 @@ main (int argc, char **argv) { int i, j, k; MdbHandle *mdb; -MdbCatalogEntry entry; +MdbCatalogEntry *entry; MdbTableDef *table; MdbColumn *col; char *the_relation; @@ -55,28 +55,28 @@ char *the_relation; for (i=0; i < mdb->num_catalog; i++) { - entry = g_array_index (mdb->catalog, MdbCatalogEntry, i); + entry = g_ptr_array_index (mdb->catalog, i); /* if it's a table */ - if (entry.object_type == MDB_TABLE) + if (entry->object_type == MDB_TABLE) { /* skip the MSys tables */ - if (strncmp (entry.object_name, "MSys", 4)) + if (strncmp (entry->object_name, "MSys", 4)) { /* make sure it's a table (may be redundant) */ - if (!strcmp (mdb_get_objtype_string (entry.object_type), "Table")) + if (!strcmp (mdb_get_objtype_string (entry->object_type), "Table")) { /* drop the table if it exists */ - fprintf (stdout, "DROP TABLE %s;\n", entry.object_name); + fprintf (stdout, "DROP TABLE %s;\n", entry->object_name); /* create the table */ - fprintf (stdout, "CREATE TABLE %s\n", entry.object_name); + fprintf (stdout, "CREATE TABLE %s\n", entry->object_name); fprintf (stdout, " (\n"); - table = mdb_read_table (&entry); + table = mdb_read_table (entry); /* get the columns */ mdb_read_columns (table); diff --git a/src/util/mdb-tables.c b/src/util/mdb-tables.c index 509c549..d659268 100644 --- a/src/util/mdb-tables.c +++ b/src/util/mdb-tables.c @@ -24,7 +24,7 @@ main (int argc, char **argv) { int i, j, k; MdbHandle *mdb; -MdbCatalogEntry entry; +MdbCatalogEntry *entry; MdbTableDef *table; MdbColumn *col; @@ -48,22 +48,22 @@ MdbColumn *col; for (i=0; i < mdb->num_catalog; i++) { - entry = g_array_index (mdb->catalog, MdbCatalogEntry, i); + entry = g_ptr_array_index (mdb->catalog, i); /* if it's a table */ - if (entry.object_type == MDB_TABLE) + if (entry->object_type == MDB_TABLE) { /* skip the MSys tables */ - if (strncmp (entry.object_name, "MSys", 4)) + if (strncmp (entry->object_name, "MSys", 4)) { /* make sure it's a table (may be redundant) */ - if (!strcmp (mdb_get_objtype_string (entry.object_type), "Table")) + if (!strcmp (mdb_get_objtype_string (entry->object_type), "Table")) { /* drop the table if it exists */ - fprintf (stdout, "%s ", entry.object_name); + fprintf (stdout, "%s ", entry->object_name); } } } diff --git a/src/util/prdata.c b/src/util/prdata.c index baecec4..5801a5e 100644 --- a/src/util/prdata.c +++ b/src/util/prdata.c @@ -26,7 +26,7 @@ int rows; int i; unsigned char buf[2048]; MdbHandle *mdb; -MdbCatalogEntry entry; +MdbCatalogEntry *entry; MdbTableDef *table; GList *l; @@ -42,10 +42,10 @@ GList *l; mdb_read_catalog(mdb, MDB_TABLE); for (i=0;inum_catalog;i++) { - entry = g_array_index(mdb->catalog,MdbCatalogEntry,i); - if (entry.object_type == MDB_TABLE && - !strcmp(entry.object_name,argv[2])) { - table = mdb_read_table(&entry); + entry = g_ptr_array_index(mdb->catalog,i); + if (entry->object_type == MDB_TABLE && + !strcmp(entry->object_name,argv[2])) { + table = mdb_read_table(entry); mdb_read_columns(table); mdb_data_dump(table); } diff --git a/src/util/prtable.c b/src/util/prtable.c index dc0637a..c2328fe 100644 --- a/src/util/prtable.c +++ b/src/util/prtable.c @@ -26,7 +26,7 @@ int rows; int i; unsigned char buf[2048]; MdbHandle *mdb; -MdbCatalogEntry entry; +MdbCatalogEntry *entry; GList *l; @@ -41,10 +41,10 @@ GList *l; mdb_read_catalog(mdb, MDB_TABLE); for (i=0;inum_catalog;i++) { - entry = g_array_index(mdb->catalog,MdbCatalogEntry,i); - if (entry.object_type == MDB_TABLE && - !strcmp(entry.object_name,argv[2])) { - mdb_table_dump(&entry); + entry = g_ptr_array_index(mdb->catalog,i); + if (entry->object_type == MDB_TABLE && + !strcmp(entry->object_name,argv[2])) { + mdb_table_dump(entry); } } diff --git a/src/util/sargtest.c b/src/util/sargtest.c index b9b71a0..5b43114 100644 --- a/src/util/sargtest.c +++ b/src/util/sargtest.c @@ -32,7 +32,7 @@ int rows; int i; unsigned char buf[2048]; MdbHandle *mdb; -MdbCatalogEntry entry; +MdbCatalogEntry *entry; MdbTableDef *table; mdb_init(); @@ -44,10 +44,10 @@ MdbTableDef *table; mdb_read_catalog(mdb, MDB_TABLE); for (i=0;inum_catalog;i++) { - entry = g_array_index(mdb->catalog,MdbCatalogEntry,i); - if (entry.object_type == MDB_TABLE && - !strcmp(entry.object_name,TABLE_NAME)) { - table = mdb_read_table(&entry); + entry = g_ptr_array_index(mdb->catalog,i); + if (entry->object_type == MDB_TABLE && + !strcmp(entry->object_name,TABLE_NAME)) { + table = mdb_read_table(entry); print_table(table); } }