Patches from Brent Johnson for double, off page memo, and big endian support

This commit is contained in:
brianb 2000-08-09 03:04:57 +00:00
parent e05970d711
commit 62dc667342
16 changed files with 315 additions and 86 deletions

View File

@ -13,7 +13,7 @@ mandir = $(exec_prefix)/man/man1
CC = gcc CC = gcc
CPPFLAGS = CPPFLAGS =
CFLAGS = $(CPPFLAG) -g -O2 CFLAGS = $(CPPFLAG) -g -O2 -DHW_LITTLE_ENDIAN
LDFLAGS = LDFLAGS =
LIBS = LIBS =
INSTALL= @INSTALL@ INSTALL= @INSTALL@

96
src/configure vendored
View File

@ -1197,6 +1197,102 @@ EOF
fi fi
OLDCFLAGS="$CFLAGS"
CFLAGS=""
echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
echo "configure:1204: checking whether byte ordering is bigendian" >&5
if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_bigendian=unknown
# See if sys/param.h defines the BYTE_ORDER macro.
cat > conftest.$ac_ext <<EOF
#line 1211 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
int main() {
#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
bogus endian macros
#endif
; return 0; }
EOF
if { (eval echo configure:1222: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
# It does; now see whether it defined to BIG_ENDIAN or not.
cat > conftest.$ac_ext <<EOF
#line 1226 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
int main() {
#if BYTE_ORDER != BIG_ENDIAN
not big endian
#endif
; return 0; }
EOF
if { (eval echo configure:1237: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_bigendian=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
ac_cv_c_bigendian=no
fi
rm -f conftest*
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
fi
rm -f conftest*
if test $ac_cv_c_bigendian = unknown; then
if test "$cross_compiling" = yes; then
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
#line 1257 "configure"
#include "confdefs.h"
main () {
/* Are we little or big endian? From Harbison&Steele. */
union
{
long l;
char c[sizeof (long)];
} u;
u.l = 1;
exit (u.c[sizeof (long) - 1] == 1);
}
EOF
if { (eval echo configure:1270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_bigendian=no
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -fr conftest*
ac_cv_c_bigendian=yes
fi
rm -fr conftest*
fi
fi
fi
echo "$ac_t""$ac_cv_c_bigendian" 1>&6
if test $ac_cv_c_bigendian = yes; then
cat >> confdefs.h <<\EOF
#define WORDS_BIGENDIAN 1
EOF
fi
if test $ac_cv_c_bigendian = yes; then OLDCFLAGS="$OLDCFLAGS -DHW_BIG_ENDIAN";
else OLDCFLAGS="$OLDCFLAGS -DHW_LITTLE_ENDIAN"; fi
CFLAGS=$OLDCFLAGS
trap '' 1 2 15 trap '' 1 2 15
cat > confcache <<\EOF cat > confcache <<\EOF

View File

@ -19,6 +19,13 @@ dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST AC_C_CONST
AC_TYPE_SIZE_T AC_TYPE_SIZE_T
OLDCFLAGS="$CFLAGS"
CFLAGS=""
AC_C_BIGENDIAN
if test $ac_cv_c_bigendian = yes; then OLDCFLAGS="$OLDCFLAGS -DHW_BIG_ENDIAN";
else OLDCFLAGS="$OLDCFLAGS -DHW_LITTLE_ENDIAN"; fi
CFLAGS=$OLDCFLAGS
dnl Checks for library functions. dnl Checks for library functions.
AC_OUTPUT(util/Makefile extras/Makefile Makefile libmdb/Makefile include/Makefile) AC_OUTPUT(util/Makefile extras/Makefile Makefile libmdb/Makefile include/Makefile)

View File

@ -13,7 +13,7 @@ mandir = $(exec_prefix)/man/man1
CC = gcc CC = gcc
CPPFLAGS = CPPFLAGS =
CFLAGS = $(CPPFLAG) -g -O2 CFLAGS = $(CPPFLAG) -g -O2 -DHW_LITTLE_ENDIAN
LDFLAGS = LDFLAGS =
LIBS = LIBS =
INSTALL= @INSTALL@ INSTALL= @INSTALL@
@ -30,7 +30,7 @@ mdb-dump: dump.o
$(CC) -g -o $@ $< $(CC) -g -o $@ $<
.c.o: .c.o:
$(CC) -g -c $< $(CC) $(CFLAGS) -g -c $<
install: install:
@for prog in $(PROGS); do \ @for prog in $(PROGS); do \

View File

@ -30,7 +30,7 @@ mdb-dump: dump.o
$(CC) -g -o $@ $< $(CC) -g -o $@ $<
.c.o: .c.o:
$(CC) -g -c $< $(CC) $(CFLAGS) -g -c $<
install: install:
@for prog in $(PROGS); do \ @for prog in $(PROGS); do \

View File

@ -31,7 +31,7 @@ mdb-dump: dump.o
$(CC) -g -o $@ $< $(CC) -g -o $@ $<
.c.o: .c.o:
$(CC) -g -c $< $(CC) $(CFLAGS) -g -c $<
install: install:
mkdir -p $(includedir) mkdir -p $(includedir)

View File

@ -33,6 +33,7 @@
#define MDB_MAX_OBJ_NAME 30 #define MDB_MAX_OBJ_NAME 30
#define MDB_CATALOG_PG 18 #define MDB_CATALOG_PG 18
#define MDB_MEMO_OVERHEAD 12 #define MDB_MEMO_OVERHEAD 12
#define MDB_BIND_SIZE 2048
enum { enum {
MDB_VER_JET3 = 0, MDB_VER_JET3 = 0,
@ -81,6 +82,7 @@ typedef struct {
guint16 row_num; guint16 row_num;
unsigned int cur_pos; unsigned int cur_pos;
unsigned char pg_buf[MDB_PGSIZE]; unsigned char pg_buf[MDB_PGSIZE];
unsigned char alt_pg_buf[MDB_PGSIZE];
int num_catalog; int num_catalog;
GArray *catalog; GArray *catalog;
int pg_size; int pg_size;
@ -139,8 +141,10 @@ extern MdbTableDef *mdb_alloc_tabledef(MdbCatalogEntry *entry);
/* file.c */ /* file.c */
extern size_t mdb_read_pg(MdbHandle *mdb, unsigned long pg); extern size_t mdb_read_pg(MdbHandle *mdb, unsigned long pg);
extern size_t mdb_read_alt_pg(MdbHandle *mdb, unsigned long pg);
extern int mdb_get_int16(MdbHandle *mdb, int offset); extern int mdb_get_int16(MdbHandle *mdb, int offset);
extern long mdb_get_int32(MdbHandle *mdb, int offset); extern long mdb_get_int32(MdbHandle *mdb, int offset);
extern double mdb_get_double(MdbHandle *mdb, int offset);
extern MdbHandle *mdb_open(char *filename); extern MdbHandle *mdb_open(char *filename);
/* catalog.c */ /* catalog.c */

View File

@ -13,7 +13,7 @@ mandir = $(exec_prefix)/man/man1
CC = gcc CC = gcc
CPPFLAGS = CPPFLAGS =
CFLAGS = $(CPPFLAG) -g -O2 CFLAGS = $(CPPFLAG) -g -O2 -DHW_LITTLE_ENDIAN
LDFLAGS = LDFLAGS =
LIBS = LIBS =
INSTALL= @INSTALL@ INSTALL= @INSTALL@
@ -31,7 +31,7 @@ clean:
rm -f core *.o *.a rm -f core *.o *.a
.c.o: .c.o:
$(CC) -g -c $< $(INC) $(CC) $(CFLAGS) -g -c $< $(INC)
install: install:
@for lib in $(LIBLIST); do \ @for lib in $(LIBLIST); do \
@ -44,3 +44,13 @@ uninstall:
echo " copying $$lib to $(libdir)"; \ echo " copying $$lib to $(libdir)"; \
rm -f $(libdir)/$$lib; \ rm -f $(libdir)/$$lib; \
done done
backend.o: backend.c ../include/mdbtools.h
catalog.o: catalog.c ../include/mdbtools.h
data.o: data.c ../include/mdbtools.h
dump.o: dump.c ../include/mdbtools.h
file.o: file.c ../include/mdbtools.h
kkd.o: kkd.c ../include/mdbtools.h
mem.o: mem.c ../include/mdbtools.h
table.o: table.c ../include/mdbtools.h

View File

@ -31,7 +31,7 @@ clean:
rm -f core *.o *.a rm -f core *.o *.a
.c.o: .c.o:
$(CC) -g -c $< $(INC) $(CC) $(CFLAGS) -g -c $< $(INC)
install: install:
@for lib in $(LIBLIST); do \ @for lib in $(LIBLIST); do \
@ -44,3 +44,13 @@ uninstall:
echo " copying $$lib to $(libdir)"; \ echo " copying $$lib to $(libdir)"; \
rm -f $(libdir)/$$lib; \ rm -f $(libdir)/$$lib; \
done done
backend.o: backend.c ../include/mdbtools.h
catalog.o: catalog.c ../include/mdbtools.h
data.o: data.c ../include/mdbtools.h
dump.o: dump.c ../include/mdbtools.h
file.o: file.c ../include/mdbtools.h
kkd.o: kkd.c ../include/mdbtools.h
mem.o: mem.c ../include/mdbtools.h
table.o: table.c ../include/mdbtools.h

View File

@ -159,11 +159,11 @@ MdbBackend *backend;
return 0; return 0;
} }
} }
char *mdb_get_relationships(MdbHandle *mdb) {
static void do_first (MdbHandle *mdb)
{
int i, j, k; int i, j, k;
static char text[255]; static char text[255];
void do_first () {
mdb_read_catalog (mdb, MDB_TABLE); mdb_read_catalog (mdb, MDB_TABLE);
/* loop over each entry in the catalog */ /* loop over each entry in the catalog */
@ -171,29 +171,32 @@ static char text[255];
entry = g_array_index (mdb->catalog, MdbCatalogEntry, i); entry = g_array_index (mdb->catalog, MdbCatalogEntry, i);
if ((entry.object_type == MDB_TABLE) && if ((entry.object_type == MDB_TABLE) &&
(strncmp (entry.object_name, "MSysRelationships", 17) == 0)) (strncmp (entry.object_name, "MSysRelationships", 17) == 0))
{ {
table = mdb_read_table (&entry); table = mdb_read_table (&entry);
if ( table->num_rows > 0 ) { if ( table->num_rows > 0 ) {
mdb_read_columns(table); mdb_read_columns(table);
mdb_rewind_table(table); mdb_rewind_table(table);
for (k=0;k<table->num_cols;k++) { for (k=0;k<table->num_cols;k++) {
bound_values[k] = (char *) malloc(256); bound_values[k] = (char *) malloc(MDB_BIND_SIZE);
bound_values[k][0] = '\0'; bound_values[k][0] = '\0';
mdb_bind_column(table,k+1,bound_values[k]); mdb_bind_column(table,k+1,bound_values[k]);
} }
relationships[0] = (char *) malloc(256); /* child column */ relationships[0] = (char *) malloc(256); /* child column */
relationships[1] = (char *) malloc(256); /* child table */ relationships[1] = (char *) malloc(256); /* child table */
relationships[2] = (char *) malloc(256); /* parent column relationships[2] = (char *) malloc(256); /* parent column */
*/
relationships[3] = (char *) malloc(256); /* parent table */ relationships[3] = (char *) malloc(256); /* parent table */
} /* if num_rows > 0 */
}
did_first = 1; did_first = 1;
return; return;
} } /* if MSysRelationships */
} } /* for */
} }
char *mdb_get_relationships(MdbHandle *mdb) {
int k;
static char text[255];
/* /*
* generate relationships by "reading" the MSysRelationships table * generate relationships by "reading" the MSysRelationships table
* szColumn contains the column name of the child table * szColumn contains the column name of the child table
@ -203,7 +206,7 @@ static char text[255];
*/ */
sprintf(text,"%c",0); sprintf(text,"%c",0);
if ( did_first == 0) if ( did_first == 0)
do_first(); do_first(mdb);
if (table->cur_row < table->num_rows) { if (table->cur_row < table->num_rows) {
if (mdb_fetch_row(table)) { if (mdb_fetch_row(table)) {
relationships[0][0] = '\0'; relationships[0][0] = '\0';
@ -221,19 +224,17 @@ static char text[255];
else if (strncmp(col->name,"szReferencedObject",18) == 0) else if (strncmp(col->name,"szReferencedObject",18) == 0)
strcpy(relationships[3],bound_values[k]); strcpy(relationships[3],bound_values[k]);
} }
if (strncmp(mdb->backend_name,"oracle",6) == 0) if (strncmp(mdb->backend_name,"oracle",6) == 0) {
sprintf(text,"alter table %s add constraint %s_%s foreign key sprintf(text,"alter table %s add constraint %s_%s foreign key (%s) \
(%s) references %s(%s)", references %s(%s)",
relationships[1],relationships[3],relationships[1],
relationships[1],relationships[3],relationships[1], relationships[0],relationships[3],relationships[2]);
} else {
relationships[0],relationships[3],relationships[2]); sprintf(text,"relationships are not supported for %s",
else mdb->backend_name);
sprintf(text,"relationships are not supported for } /* else */
%s",mdb->backend_name);
} /* got a row */ } /* got a row */
} } else {
else {
for (k=0;k<table->num_cols;k++) { for (k=0;k<table->num_cols;k++) {
free(bound_values[k]); free(bound_values[k]);
} }

View File

@ -255,10 +255,51 @@ int mdb_is_fixed_col(MdbColumn *col)
{ {
return col->is_fixed; return col->is_fixed;
} }
static char *mdb_memo_to_string(MdbHandle *mdb, int start, int size)
{
short memo_len;
static char text[MDB_BIND_SIZE];
if (size<MDB_MEMO_OVERHEAD) {
return "";
} else if (size == MDB_MEMO_OVERHEAD) {
/* If the only thing here is the field information, the
* data is linked. Go read it from another page.
* Question: Do we need to read and evaluate the whole page?
* Question: It seems to be the only record on the page. If
* it weren't, how do we know which record it is?
*
* WARNING: Assuming the storage area is at least 2048 bytes!
*/
/* The 16 bit integer at offset 0 is the length of the memo field.
* The 16 bit integer at offset 5 is the page it is stored on.
*/
memo_len = mdb_get_int16(mdb, start);
if(mdb_read_alt_pg(mdb, mdb_get_int16(mdb, start+5)) != mdb->pg_size) {
/* Failed to read */
return "";
}
strncpy(text, &mdb->alt_pg_buf[mdb->pg_size - memo_len], memo_len);
return text;
} else {
strncpy(text, &mdb->pg_buf[start + MDB_MEMO_OVERHEAD],
size - MDB_MEMO_OVERHEAD);
text[size - MDB_MEMO_OVERHEAD]='\0';
return text;
}
#if 0
strncpy(text, &mdb->pg_buf[start + MDB_MEMO_OVERHEAD],
size - MDB_MEMO_OVERHEAD);
text[size - MDB_MEMO_OVERHEAD]='\0';
return text;
#endif
}
char *mdb_col_to_string(MdbHandle *mdb, int start, int datatype, int size) char *mdb_col_to_string(MdbHandle *mdb, int start, int datatype, int size)
{ {
/* FIX ME -- not thread safe */ /* FIX ME -- not thread safe */
static char text[256]; static char text[MDB_BIND_SIZE];
switch (datatype) { switch (datatype) {
case MDB_BOOL: case MDB_BOOL:
@ -273,6 +314,10 @@ static char text[256];
sprintf(text,"%ld",mdb_get_int32(mdb, start)); sprintf(text,"%ld",mdb_get_int32(mdb, start));
return text; return text;
break; break;
case MDB_DOUBLE:
sprintf(text,"%f",mdb_get_double(mdb, start));
return text;
break;
case MDB_TEXT: case MDB_TEXT:
if (size<0) { if (size<0) {
return ""; return "";
@ -282,13 +327,7 @@ static char text[256];
return text; return text;
break; break;
case MDB_MEMO: case MDB_MEMO:
if (size<MDB_MEMO_OVERHEAD) { return mdb_memo_to_string(mdb, start, size);
return "";
}
strncpy(text, &mdb->pg_buf[start + MDB_MEMO_OVERHEAD],
size - MDB_MEMO_OVERHEAD);
text[size - MDB_MEMO_OVERHEAD]='\0';
return text;
break; break;
default: default:
return ""; return "";

View File

@ -19,6 +19,8 @@
#include "mdbtools.h" #include "mdbtools.h"
static size_t _mdb_read_pg(MdbHandle *mdb, unsigned char *pg_buf, unsigned long pg);
MdbHandle *mdb_open(char *filename) MdbHandle *mdb_open(char *filename)
{ {
MdbHandle *mdb; MdbHandle *mdb;
@ -68,6 +70,22 @@ int j,pos;
*/ */
size_t mdb_read_pg(MdbHandle *mdb, unsigned long pg) size_t mdb_read_pg(MdbHandle *mdb, unsigned long pg)
{ {
size_t len;
len = _mdb_read_pg(mdb, mdb->pg_buf, pg);
/* kan - reset the cur_pos on a new page read */
mdb->cur_pos = 0; /* kan */
return len;
}
size_t mdb_read_alt_pg(MdbHandle *mdb, unsigned long pg)
{
size_t len;
len = _mdb_read_pg(mdb, mdb->alt_pg_buf, pg);
return len;
}
static size_t _mdb_read_pg(MdbHandle *mdb, unsigned char *pg_buf, unsigned long pg)
{
size_t len; size_t len;
struct stat status; struct stat status;
off_t offset = pg * mdb->pg_size; off_t offset = pg * mdb->pg_size;
@ -78,7 +96,7 @@ off_t offset = pg * mdb->pg_size;
return 0; return 0;
} }
lseek(mdb->fd, offset, SEEK_SET); lseek(mdb->fd, offset, SEEK_SET);
len = read(mdb->fd,mdb->pg_buf,mdb->pg_size); len = read(mdb->fd,pg_buf,mdb->pg_size);
if (len==-1) { if (len==-1) {
perror("read"); perror("read");
return 0; return 0;
@ -87,8 +105,6 @@ off_t offset = pg * mdb->pg_size;
/* fprintf(stderr,"EOF reached.\n"); */ /* fprintf(stderr,"EOF reached.\n"); */
return 0; return 0;
} }
/* kan - reset the cur_pos on a new page read */
mdb->cur_pos = 0; /* kan */
return len; return len;
} }
int mdb_get_int16(MdbHandle *mdb, int offset) int mdb_get_int16(MdbHandle *mdb, int offset)
@ -119,6 +135,27 @@ unsigned char *c;
mdb->cur_pos+=4; mdb->cur_pos+=4;
return l; return l;
} }
double mdb_get_double(MdbHandle *mdb, int offset)
{
double d, d2;
unsigned char *c;
int i;
if (offset <0 || offset+4 > mdb->pg_size) return -1;
memcpy(&d, &mdb->pg_buf[offset], 8);
#ifdef HW_BIG_ENDIAN
d2 = d;
for (i=0; i<sizeof(d); i++) {
*(((unsigned char *)&d)+i) =
*(((unsigned char *)&d2)+sizeof(d)-1-i);
}
#endif
mdb->cur_pos+=8;
return d;
}
int mdb_set_pos(MdbHandle *mdb, int pos) int mdb_set_pos(MdbHandle *mdb, int pos)
{ {
if (pos<0 || pos >= mdb->pg_size) return 0; if (pos<0 || pos >= mdb->pg_size) return 0;

View File

@ -1,6 +1,5 @@
# Generated automatically from Makefile.in by configure. # Generated automatically from Makefile.in by configure.
SHELL = /bin/sh SHELL = /bin/sh
top_srcdir = .. top_srcdir = ..
@ -14,11 +13,12 @@ mandir = $(exec_prefix)/man/man1
CC = gcc CC = gcc
CPPFLAGS = CPPFLAGS =
CFLAGS = $(CPPFLAG) -g -O2 CFLAGS = $(CPPFLAG) -g -O2 -DHW_LITTLE_ENDIAN
LDFLAGS = LDFLAGS =
LIBS = LIBS =
INSTALL= @INSTALL@ INSTALL= @INSTALL@
INC = -I ../include `glib-config --cflags` INC = -I ../include `glib-config --cflags`
MDBLIB = ../libmdb/libmdb.a
LIBS = -L ../libmdb -lmdb `glib-config --libs` LIBS = -L ../libmdb -lmdb `glib-config --libs`
PROGS = prcat prkkd prtable prdata prdump mdb-schema mdb-export mdb-tables mdb-header mdb-parsecsv mdb-array PROGS = prcat prkkd prtable prdata prdump mdb-schema mdb-export mdb-tables mdb-header mdb-parsecsv mdb-array
PRCATOBJS = prcat.o PRCATOBJS = prcat.o
@ -35,44 +35,44 @@ ARROBJS = mdb-array.o
all: $(PROGS) all: $(PROGS)
prcat: $(PRCATOBJS) prcat: $(PRCATOBJS) $(MDBLIB)
$(CC) -g -o $@ $(PRCATOBJS) $(LIBS) $(CC) -g -o $@ $(PRCATOBJS) $(LIBS)
prkkd: $(PRKKDOBJS) prkkd: $(PRKKDOBJS) $(MDBLIB)
$(CC) -g -o $@ $(PRKKDOBJS) $(LIBS) $(CC) -g -o $@ $(PRKKDOBJS) $(LIBS)
prtable: $(PRTABLEOBJS) prtable: $(PRTABLEOBJS) $(MDBLIB)
$(CC) -g -o $@ $(PRTABLEOBJS) $(LIBS) $(CC) -g -o $@ $(PRTABLEOBJS) $(LIBS)
prdata: $(PRDATAOBJS) prdata: $(PRDATAOBJS) $(MDBLIB)
$(CC) -g -o $@ $(PRDATAOBJS) $(LIBS) $(CC) -g -o $@ $(PRDATAOBJS) $(LIBS)
prdump: $(PRDUMPOBJS) prdump: $(PRDUMPOBJS) $(MDBLIB)
$(CC) -g -o $@ $(PRDUMPOBJS) $(LIBS) $(CC) -g -o $@ $(PRDUMPOBJS) $(LIBS)
mdb-schema: $(SCHEMAOBJS) mdb-schema: $(SCHEMAOBJS) $(MDBLIB)
$(CC) -g -o $@ $(SCHEMAOBJS) $(LIBS) $(CC) -g -o $@ $(SCHEMAOBJS) $(LIBS)
mdb-export: $(EXPORTOBJS) mdb-export: $(EXPORTOBJS) $(MDBLIB)
$(CC) -g -o $@ $(EXPORTOBJS) $(LIBS) $(CC) -g -o $@ $(EXPORTOBJS) $(LIBS)
mdb-tables: $(TABLEOBJS) mdb-tables: $(TABLEOBJS) $(MDBLIB)
$(CC) -g -o $@ $(TABLEOBJS) $(LIBS) $(CC) -g -o $@ $(TABLEOBJS) $(LIBS)
mdb-header: $(HEADEROBJS) mdb-header: $(HEADEROBJS) $(MDBLIB)
$(CC) -g -o $@ $(HEADEROBJS) $(LIBS) $(CC) -g -o $@ $(HEADEROBJS) $(LIBS)
mdb-parsecsv: $(CSVOBJS) mdb-parsecsv: $(CSVOBJS) $(MDBLIB)
$(CC) -g -o $@ $(CSVOBJS) $(LIBS) $(CC) -g -o $@ $(CSVOBJS) $(LIBS)
mdb-array: $(ARROBJS) mdb-array: $(ARROBJS) $(MDBLIB)
$(CC) -g -o $@ $(ARROBJS) $(LIBS) $(CC) -g -o $@ $(ARROBJS) $(LIBS)
clean: clean:
rm -f core *.o $(PROGS) rm -f core *.o $(PROGS)
.c.o: .c.o:
$(CC) -g -c $< $(INC) $(CC) $(CFLAGS) -g -c $< $(INC)
install: install:
@for prog in $(PROGS); do \ @for prog in $(PROGS); do \
@ -85,3 +85,16 @@ uninstall:
echo " removing $$prog from $(bindir)"; \ echo " removing $$prog from $(bindir)"; \
rm -f $(bindir)/$$prog; \ rm -f $(bindir)/$$prog; \
done done
header.o: header.c ../include/mdbtools.h
mdb-array.o: mdb-array.c ../include/mdbtools.h
mdb-export.o: mdb-export.c ../include/mdbtools.h
parsecsv.o: parsecsv.c ../include/mdbtools.h
prcat.o: prcat.c ../include/mdbtools.h
prdata.o: prdata.c ../include/mdbtools.h
prdump.o: prdump.c ../include/mdbtools.h
prkkd.o: prkkd.c ../include/mdbtools.h
prtable.o: prtable.c ../include/mdbtools.h
schema.o: schema.c ../include/mdbtools.h
tables.o: tables.c ../include/mdbtools.h

View File

@ -1,5 +1,4 @@
SHELL = /bin/sh SHELL = /bin/sh
VPATH = @srcdir@ VPATH = @srcdir@
@ -19,6 +18,7 @@ LDFLAGS = @LDFLAGS@
LIBS = @LIBS@ LIBS = @LIBS@
INSTALL= @INSTALL@ INSTALL= @INSTALL@
INC = -I ../include `glib-config --cflags` INC = -I ../include `glib-config --cflags`
MDBLIB = ../libmdb/libmdb.a
LIBS = -L ../libmdb -lmdb `glib-config --libs` LIBS = -L ../libmdb -lmdb `glib-config --libs`
PROGS = prcat prkkd prtable prdata prdump mdb-schema mdb-export mdb-tables mdb-header mdb-parsecsv mdb-array PROGS = prcat prkkd prtable prdata prdump mdb-schema mdb-export mdb-tables mdb-header mdb-parsecsv mdb-array
PRCATOBJS = prcat.o PRCATOBJS = prcat.o
@ -35,44 +35,44 @@ ARROBJS = mdb-array.o
all: $(PROGS) all: $(PROGS)
prcat: $(PRCATOBJS) prcat: $(PRCATOBJS) $(MDBLIB)
$(CC) -g -o $@ $(PRCATOBJS) $(LIBS) $(CC) -g -o $@ $(PRCATOBJS) $(LIBS)
prkkd: $(PRKKDOBJS) prkkd: $(PRKKDOBJS) $(MDBLIB)
$(CC) -g -o $@ $(PRKKDOBJS) $(LIBS) $(CC) -g -o $@ $(PRKKDOBJS) $(LIBS)
prtable: $(PRTABLEOBJS) prtable: $(PRTABLEOBJS) $(MDBLIB)
$(CC) -g -o $@ $(PRTABLEOBJS) $(LIBS) $(CC) -g -o $@ $(PRTABLEOBJS) $(LIBS)
prdata: $(PRDATAOBJS) prdata: $(PRDATAOBJS) $(MDBLIB)
$(CC) -g -o $@ $(PRDATAOBJS) $(LIBS) $(CC) -g -o $@ $(PRDATAOBJS) $(LIBS)
prdump: $(PRDUMPOBJS) prdump: $(PRDUMPOBJS) $(MDBLIB)
$(CC) -g -o $@ $(PRDUMPOBJS) $(LIBS) $(CC) -g -o $@ $(PRDUMPOBJS) $(LIBS)
mdb-schema: $(SCHEMAOBJS) mdb-schema: $(SCHEMAOBJS) $(MDBLIB)
$(CC) -g -o $@ $(SCHEMAOBJS) $(LIBS) $(CC) -g -o $@ $(SCHEMAOBJS) $(LIBS)
mdb-export: $(EXPORTOBJS) mdb-export: $(EXPORTOBJS) $(MDBLIB)
$(CC) -g -o $@ $(EXPORTOBJS) $(LIBS) $(CC) -g -o $@ $(EXPORTOBJS) $(LIBS)
mdb-tables: $(TABLEOBJS) mdb-tables: $(TABLEOBJS) $(MDBLIB)
$(CC) -g -o $@ $(TABLEOBJS) $(LIBS) $(CC) -g -o $@ $(TABLEOBJS) $(LIBS)
mdb-header: $(HEADEROBJS) mdb-header: $(HEADEROBJS) $(MDBLIB)
$(CC) -g -o $@ $(HEADEROBJS) $(LIBS) $(CC) -g -o $@ $(HEADEROBJS) $(LIBS)
mdb-parsecsv: $(CSVOBJS) mdb-parsecsv: $(CSVOBJS) $(MDBLIB)
$(CC) -g -o $@ $(CSVOBJS) $(LIBS) $(CC) -g -o $@ $(CSVOBJS) $(LIBS)
mdb-array: $(ARROBJS) mdb-array: $(ARROBJS) $(MDBLIB)
$(CC) -g -o $@ $(ARROBJS) $(LIBS) $(CC) -g -o $@ $(ARROBJS) $(LIBS)
clean: clean:
rm -f core *.o $(PROGS) rm -f core *.o $(PROGS)
.c.o: .c.o:
$(CC) -g -c $< $(INC) $(CC) $(CFLAGS) -g -c $< $(INC)
install: install:
@for prog in $(PROGS); do \ @for prog in $(PROGS); do \
@ -85,3 +85,16 @@ uninstall:
echo " removing $$prog from $(bindir)"; \ echo " removing $$prog from $(bindir)"; \
rm -f $(bindir)/$$prog; \ rm -f $(bindir)/$$prog; \
done done
header.o: header.c ../include/mdbtools.h
mdb-array.o: mdb-array.c ../include/mdbtools.h
mdb-export.o: mdb-export.c ../include/mdbtools.h
parsecsv.o: parsecsv.c ../include/mdbtools.h
prcat.o: prcat.c ../include/mdbtools.h
prdata.o: prdata.c ../include/mdbtools.h
prdump.o: prdump.c ../include/mdbtools.h
prkkd.o: prkkd.c ../include/mdbtools.h
prtable.o: prtable.c ../include/mdbtools.h
schema.o: schema.c ../include/mdbtools.h
tables.o: tables.c ../include/mdbtools.h

View File

@ -27,7 +27,6 @@ main (int argc, char **argv)
{ {
int rows; int rows;
int i, j; int i, j;
unsigned char buf [2048];
MdbHandle *mdb; MdbHandle *mdb;
MdbCatalogEntry entry; MdbCatalogEntry entry;
MdbTableDef *table; MdbTableDef *table;
@ -62,7 +61,7 @@ int started;
for (j = 0; j < table->num_cols; j++) for (j = 0; j < table->num_cols; j++)
{ {
bound_values [j] = (char *) malloc (256); bound_values [j] = (char *) malloc (MDB_BIND_SIZE);
bound_values [j] [0] = '\0'; bound_values [j] [0] = '\0';
mdb_bind_column (table, j + 1, bound_values [j]); mdb_bind_column (table, j + 1, bound_values [j]);
} }

View File

@ -55,7 +55,7 @@ char quote_text = 1;
mdb_rewind_table(table); mdb_rewind_table(table);
for (j=0;j<table->num_cols;j++) { for (j=0;j<table->num_cols;j++) {
bound_values[j] = (char *) malloc(256); bound_values[j] = (char *) malloc(MDB_BIND_SIZE);
bound_values[j][0] = '\0'; bound_values[j][0] = '\0';
mdb_bind_column(table, j+1, bound_values[j]); mdb_bind_column(table, j+1, bound_values[j]);
} }