This list is closed, nobody may subscribe to it.
2000 |
Jan
|
Feb
(1) |
Mar
(53) |
Apr
(28) |
May
(5) |
Jun
(7) |
Jul
(16) |
Aug
(15) |
Sep
(10) |
Oct
(1) |
Nov
|
Dec
(1) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(9) |
Feb
(7) |
Mar
(1) |
Apr
(7) |
May
(6) |
Jun
|
Jul
(15) |
Aug
(10) |
Sep
(2) |
Oct
(12) |
Nov
(3) |
Dec
(2) |
2002 |
Jan
(2) |
Feb
(12) |
Mar
(33) |
Apr
(30) |
May
(5) |
Jun
(18) |
Jul
(18) |
Aug
(47) |
Sep
(8) |
Oct
(7) |
Nov
(8) |
Dec
(13) |
2003 |
Jan
(48) |
Feb
(8) |
Mar
(10) |
Apr
(30) |
May
(6) |
Jun
(8) |
Jul
(19) |
Aug
(36) |
Sep
(19) |
Oct
(16) |
Nov
(11) |
Dec
(17) |
2004 |
Jan
(11) |
Feb
(22) |
Mar
(52) |
Apr
(45) |
May
(18) |
Jun
(72) |
Jul
(14) |
Aug
(31) |
Sep
(19) |
Oct
(27) |
Nov
(19) |
Dec
(25) |
2005 |
Jan
(16) |
Feb
(46) |
Mar
(50) |
Apr
(3) |
May
(21) |
Jun
(3) |
Jul
(24) |
Aug
(33) |
Sep
(25) |
Oct
(23) |
Nov
(30) |
Dec
(20) |
2006 |
Jan
(12) |
Feb
(11) |
Mar
(8) |
Apr
(15) |
May
(27) |
Jun
(15) |
Jul
(19) |
Aug
(5) |
Sep
(9) |
Oct
(1) |
Nov
(2) |
Dec
(3) |
2007 |
Jan
|
Feb
(3) |
Mar
(18) |
Apr
(5) |
May
(9) |
Jun
|
Jul
(10) |
Aug
(3) |
Sep
(8) |
Oct
(1) |
Nov
(7) |
Dec
(9) |
2008 |
Jan
(2) |
Feb
|
Mar
(10) |
Apr
(4) |
May
|
Jun
(5) |
Jul
(9) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
(8) |
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(11) |
Nov
(1) |
Dec
(20) |
2010 |
Jan
|
Feb
(2) |
Mar
|
Apr
(7) |
May
|
Jun
(23) |
Jul
(3) |
Aug
(6) |
Sep
(1) |
Oct
(4) |
Nov
(1) |
Dec
|
2011 |
Jan
(1) |
Feb
(26) |
Mar
(25) |
Apr
(11) |
May
(5) |
Jun
(5) |
Jul
(2) |
Aug
(39) |
Sep
(12) |
Oct
(6) |
Nov
|
Dec
|
2012 |
Jan
(19) |
Feb
(5) |
Mar
|
Apr
|
May
|
Jun
(7) |
Jul
|
Aug
(8) |
Sep
|
Oct
(3) |
Nov
(2) |
Dec
(3) |
2013 |
Jan
(6) |
Feb
|
Mar
(1) |
Apr
|
May
(7) |
Jun
(5) |
Jul
(2) |
Aug
|
Sep
(1) |
Oct
(2) |
Nov
|
Dec
|
2014 |
Jan
(4) |
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2016 |
Jan
(5) |
Feb
|
Mar
(1) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2017 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
From: Hans-Emil S. <Han...@tr...> - 2005-12-22 12:16:46
|
> I have seen mention of some patches to get Binary (BLOBS)=20 > working in the past on this list but the attachments don't > seem to be in the archive. I don't suppose someone could=20 > email them to me or tell me where they might be found. I have attached my patch as plain text to the bottom of this email. > Additionally if anyone has made any more progress with this > please let me know. (I am using latest CVS). It was some time now since I checked the CVS, but I'm not aware of any progress. I would also be glad to know the status. :-) > Ideally I am looking to use mdb-export to output mysql=20 > insert with the binary data in as well=20 My patch is tested for mdb-sql only, but it enables you to accomplish what you want, but maybe not in the most straight forward way. > Happy to do a bit of hacking to get it working I would be happy to hear of any progress you make! Hans-Emil The binary-read patch: Index: include/mdbtools.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- include/mdbtools.h (revision 3) +++ include/mdbtools.h (revision 6) @@ -84,6 +84,7 @@ MDB_FLOAT =3D 0x06, MDB_DOUBLE =3D 0x07, MDB_SDATETIME =3D 0x08, + MDB_BINARY =3D 0x09, MDB_TEXT =3D 0x0a, MDB_OLE =3D 0x0b, MDB_MEMO =3D 0x0c, Index: src/libmdb/data.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- src/libmdb/data.c (revision 3) +++ src/libmdb/data.c (revision 6) @@ -679,6 +683,17 @@ return text; } } +static char *mdb_binary_to_string(void *buf, int start, int size) +{ + unsigned int i; + char *text =3D (char *) g_malloc0((size*2)+1); + + for(i=3D0;i<size;i++){ + sprintf(text+(i*2), "%02X", mdb_get_byte(buf, start+i)); + } + + return text; +} static char * mdb_num_to_string(MdbHandle *mdb, int start, int datatype, int prec, int scale) { @@ -859,6 +874,9 @@ text =3D mdb_money_to_string(mdb, start); case MDB_NUMERIC: break; + case MDB_BINARY: + text =3D mdb_binary_to_string(buf, start, size); + break; default: text =3D g_strdup(""); break; Index: src/libmdb/backend.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- src/libmdb/backend.c (revision 3) +++ src/libmdb/backend.c (revision 6) @@ -48,7 +48,7 @@ MdbBackendType_STRUCT_ELEMENT("Single", 0,0,0), MdbBackendType_STRUCT_ELEMENT("Double", 0,0,0), MdbBackendType_STRUCT_ELEMENT("DateTime (Short)", 0,0,1), - MdbBackendType_STRUCT_ELEMENT("Unknown 0x09", 0,0,0), + MdbBackendType_STRUCT_ELEMENT("Binary", 0,0,0), MdbBackendType_STRUCT_ELEMENT("Text", 1,0,1), MdbBackendType_STRUCT_ELEMENT("OLE", 1,0,1), MdbBackendType_STRUCT_ELEMENT("Memo/Hyperlink",1,0,1), |
From: Simon M. <sim...@nd...> - 2005-12-22 11:40:37
|
I have seen mention of some patches to get Binary (BLOBS) working in the past on this list but the attachments don't seem to be in the archive. I don't suppose someone could email them to me or tell me where they might be found. Additionally if anyone has made any more progress with this please let me know. (I am using latest CVS). Ideally I am looking to use mdb-export to output mysql insert with the binary data in as well (instead of the first few characters), alternatively something to output the binary data as files with appropriate names (pref the ID). Happy to do a bit of hacking to get it working - I did something similar to pxtools (Paradox) to get it working with binary but it was not so far off the mark, just had to tweak it, so can't claim any real expertise. Regards Simon -- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.1.371 / Virus Database: 267.14.3/209 - Release Date: 21/12/2005 |
From: Nick W. <ni...@fr...> - 2005-12-20 15:16:42
|
Jeff Smith wrote: > I believe your problem is with glib/gtk+. Thanks for your help, Jeff. I'll give it a try... Do you happen to know if there are any 0.6 rpm packages around? I couldn't find one on the internet possibly because it's only a pre-release version. Cheers, Nick |
From: Jeff S. <why...@ya...> - 2005-12-20 12:13:35
|
--- Nick Weisser <ni...@fr...> wrote: > but I still can't successfully compile the package. I believe your problem is with glib/gtk+. http://bugzilla.gnome.org/show_bug.cgi?id=164706 I am guessing you are using a version of gtk+ patched to use G_GNUC_SENTINEL with a version of glib that was not. I expect the G_GNUC_SENTINEL macro was only used by SuSE. Solutions: 1. From SuSE, get a glib version with the macro, or a gtk+ version without the macro. or 2. Get newer glib/gtk+ from the upstream source, gtk.org. For versions that include the proper fix, you will need glib-2.0 >= 2.7.0 and gtk+-2.0 >= 2.7.0. -- Jeff Smith __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com |
From: Nick W. <ni...@fr...> - 2005-12-20 07:33:31
|
Hi there, I've installed a whole bunch of devel packages to resolve all the nos during ./configure --enable-sql --with-unixodbc=/usr/lib64/unixODBC and also I could resolve a couple of error messages during make but I still can't successfully compile the package. Does anybody know what's still missing? Cheers, Nick SMB1:/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1 # make Making all in src make[1]: Entering directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src' Making all in libmdb make[2]: Entering directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/libmdb' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/libmdb' Making all in extras make[2]: Entering directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/extras' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/extras' Making all in sql make[2]: Entering directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/sql' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/sql' Making all in odbc make[2]: Entering directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/odbc' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/odbc' Making all in gmdb2 make[2]: Entering directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/gmdb2' Making all in help make[3]: Entering directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/gmdb2/help' Making all in C make[4]: Entering directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/gmdb2/help/C' make[4]: Nothing to be done for `all'. make[4]: Leaving directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/gmdb2/help/C' make[4]: Entering directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/gmdb2/help' make[4]: Nothing to be done for `all-am'. make[4]: Leaving directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/gmdb2/help' make[3]: Leaving directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/gmdb2/help' Making all in gladefiles make[3]: Entering directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/gmdb2/gladefiles' make[3]: Nothing to be done for `all'. make[3]: Leaving directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/gmdb2/gladefiles' Making all in pixmaps make[3]: Entering directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/gmdb2/pixmaps' make[3]: Nothing to be done for `all'. make[3]: Leaving directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/gmdb2/pixmaps' make[3]: Entering directory `/srv/www/htdocs/intranet/fileadmin/odbc/mdbtools-0.6pre1/src/gmdb2' if gcc -DHAVE_CONFIG_H -I. -I. -I../../include -I../../include -pthread -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -DORBIT2=1 -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/include/libxml2 -I/usr/include/libart-2.0 -I/opt/gnome/include/libglade-2.0 -I/opt/gnome/include/gtk-2.0 -I/opt/gnome/lib64/gtk-2.0/include -I/usr/X11R6/include -I/opt/gnome/include/atk-1.0 -I/opt/gnome/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/freetype2/config -I/opt/gnome/include/libgnomeui-2.0 -I/opt/gnome/include/libgnome-2.0 -I/opt/gnome/include/libgnomecanvas-2.0 -I/opt/gnome/include/gconf/2 -I/opt/gnome/include/libbonoboui-2.0 -I/opt/gnome/include/orbit-2.0 -I/opt/gnome/include/libbonobo-2.0 -I/opt/gnome/include/gnome-vfs-2.0 -I/opt/gnome/lib64/gnome-vfs-2.0/include -I/opt/gnome/include/bonobo-activation-2.0 -DDATADIR=\""/usr/local/share"\" -DGMDB_ICONDIR=\""/usr/local/share/gmdb/glade/"\" -DGMDB_GLADEDIR=\""/usr/local/share/gmdb/glade/"\" -g -O2 -DSQL -DUNIXODBC -MT main2.o -MD -MP -MF ".deps/main2.Tpo" \ -c -o main2.o `test -f 'main2.c' || echo './'`main2.c; \ then mv -f ".deps/main2.Tpo" ".deps/main2.Po"; \ else rm -f ".deps/main2.Tpo"; exit 1; \ fi In file included from /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf.h:33, from /opt/gnome/include/gtk-2.0/gdk/gdkcursor.h:5, from /opt/gnome/include/gtk-2.0/gdk/gdk.h:31, from /opt/gnome/include/gtk-2.0/gtk/gtk.h:31, from /opt/gnome/include/libgnomeui-2.0/gnome.h:4, from main2.c:18: /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-core.h:163: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-core.h:163: warning: data definition has no type or storage class /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-core.h:184: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-core.h:184: warning: data definition has no type or storage class /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-core.h:201: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gdk-pixbuf/gdk-pixbuf-core.h:201: warning: data definition has no type or storage class In file included from /opt/gnome/include/gtk-2.0/gtk/gtkwidget.h:32, from /opt/gnome/include/gtk-2.0/gtk/gtkcontainer.h:33, from /opt/gnome/include/gtk-2.0/gtk/gtkbin.h:32, from /opt/gnome/include/gtk-2.0/gtk/gtkwindow.h:33, from /opt/gnome/include/gtk-2.0/gtk/gtkdialog.h:32, from /opt/gnome/include/gtk-2.0/gtk/gtkaboutdialog.h:28, from /opt/gnome/include/gtk-2.0/gtk/gtk.h:32, from /opt/gnome/include/libgnomeui-2.0/gnome.h:4, from main2.c:18: /opt/gnome/include/gtk-2.0/gtk/gtkobject.h:129: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gtk/gtkobject.h:129: warning: data definition has no type or storage class /opt/gnome/include/gtk-2.0/gtk/gtkobject.h:207: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gtk/gtkobject.h:207: warning: data definition has no type or storage class /opt/gnome/include/gtk-2.0/gtk/gtkobject.h:210: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gtk/gtkobject.h:210: warning: data definition has no type or storage class In file included from /opt/gnome/include/gtk-2.0/gtk/gtkcontainer.h:33, from /opt/gnome/include/gtk-2.0/gtk/gtkbin.h:32, from /opt/gnome/include/gtk-2.0/gtk/gtkwindow.h:33, from /opt/gnome/include/gtk-2.0/gtk/gtkdialog.h:32, from /opt/gnome/include/gtk-2.0/gtk/gtkaboutdialog.h:28, from /opt/gnome/include/gtk-2.0/gtk/gtk.h:32, from /opt/gnome/include/libgnomeui-2.0/gnome.h:4, from main2.c:18: /opt/gnome/include/gtk-2.0/gtk/gtkwidget.h:438: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gtk/gtkwidget.h:438: warning: data definition has no type or storage class /opt/gnome/include/gtk-2.0/gtk/gtkwidget.h:447: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gtk/gtkwidget.h:447: warning: data definition has no type or storage class /opt/gnome/include/gtk-2.0/gtk/gtkwidget.h:719: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gtk/gtkwidget.h:719: warning: data definition has no type or storage class In file included from /opt/gnome/include/gtk-2.0/gtk/gtkbin.h:32, from /opt/gnome/include/gtk-2.0/gtk/gtkwindow.h:33, from /opt/gnome/include/gtk-2.0/gtk/gtkdialog.h:32, from /opt/gnome/include/gtk-2.0/gtk/gtkaboutdialog.h:28, from /opt/gnome/include/gtk-2.0/gtk/gtk.h:32, from /opt/gnome/include/libgnomeui-2.0/gnome.h:4, from main2.c:18: /opt/gnome/include/gtk-2.0/gtk/gtkcontainer.h:177: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gtk/gtkcontainer.h:177: warning: data definition has no type or storage class /opt/gnome/include/gtk-2.0/gtk/gtkcontainer.h:181: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gtk/gtkcontainer.h:181: warning: data definition has no type or storage class /opt/gnome/include/gtk-2.0/gtk/gtkcontainer.h:185: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gtk/gtkcontainer.h:185: warning: data definition has no type or storage class In file included from /opt/gnome/include/gtk-2.0/gtk/gtkaboutdialog.h:28, from /opt/gnome/include/gtk-2.0/gtk/gtk.h:32, from /opt/gnome/include/libgnomeui-2.0/gnome.h:4, from main2.c:18: /opt/gnome/include/gtk-2.0/gtk/gtkdialog.h:133: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gtk/gtkdialog.h:133: warning: data definition has no type or storage class /opt/gnome/include/gtk-2.0/gtk/gtkdialog.h:143: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gtk/gtkdialog.h:143: warning: data definition has no type or storage class In file included from /opt/gnome/include/gtk-2.0/gtk/gtk.h:32, from /opt/gnome/include/libgnomeui-2.0/gnome.h:4, from main2.c:18: /opt/gnome/include/gtk-2.0/gtk/gtkaboutdialog.h:65: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gtk/gtkaboutdialog.h:65: warning: data definition has no type or storage class In file included from /opt/gnome/include/gtk-2.0/gtk/gtkcelllayout.h:26, from /opt/gnome/include/gtk-2.0/gtk/gtk.h:49, from /opt/gnome/include/libgnomeui-2.0/gnome.h:4, from main2.c:18: /opt/gnome/include/gtk-2.0/gtk/gtktreeviewcolumn.h:127: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gtk/gtktreeviewcolumn.h:127: warning: data definition has no type or storage class /opt/gnome/include/gtk-2.0/gtk/gtktreeviewcolumn.h:142: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gtk/gtktreeviewcolumn.h:142: warning: data definition has no type or storage class In file included from /opt/gnome/include/gtk-2.0/gtk/gtk.h:49, from /opt/gnome/include/libgnomeui-2.0/gnome.h:4, from main2.c:18: /opt/gnome/include/gtk-2.0/gtk/gtkcelllayout.h:83: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gtk/gtkcelllayout.h:83: warning: data definition has no type or storage class In file included from /opt/gnome/include/gtk-2.0/gtk/gtkcombobox.h:25, from /opt/gnome/include/gtk-2.0/gtk/gtk.h:65, from /opt/gnome/include/libgnomeui-2.0/gnome.h:4, from main2.c:18: /opt/gnome/include/gtk-2.0/gtk/gtktreeview.h:170: error: syntax error before "G_GNUC_SENTINEL" /opt/gnome/include/gtk-2.0/gtk/gtktreeview.h:170: warning: data definition has no type or storage class In file included from /opt/gnome/include/gtk-2.0/gtk/gtk.h:82, from /opt/gnome/include/libgnomeui-2.0/gnome.h:4, from main2.c:18: |
From: Jeff S. <why...@ya...> - 2005-12-19 15:42:46
|
--- Pedro Andrés Aranda Gutiérrez <pa...@ti...> wrote: > I see that my patch to solve the NULL pointer exception in mdb-sql.c > has only been partially included. The fflush'es are there and I'm really > happy that I will be able to run all my scripts in GAWK, TCC and other > languages thanks :-). I'm glad this works for you now. > But I still miss the part of the patch which makes sure that FILE *out > is set at least to stdout. Actually, I was cleaning up issues with several utilities a few weeks ago and fixed the problem then. I had a memory lapse regarding your patch at the time and fixed it in a different way. It appears you have additional related changes in your patch now that I will review. > Attached is a patch for that, which also makes usage message printing a > function. The message is much prettier and the fact of having a function > allows us to call it from different parts in the program. Sounds like a good idea to me. -- Jeff Smith __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com |
From: Mike P. <mj...@fi...> - 2005-12-19 15:05:20
|
Jeff Smith wrote: > --- Mike Prudence <mj...@fi...> wrote: > >>I've been running into some segfaults with the CVS version and a JET3 >>database, and discovered a bug in read_pg_if_n in table.c. > > > I finally got around to reviewing your patch. I committed your patch (with one change) > along with some other changes to the read_pg_if functions. Thanks Jeff - glad to be of help! -- Cheers, Mike mj...@fi... http://www.filmsat59.com Films at 59 Ltd, 59 Cotham Hill, Bristol. BS6 6JR. UK +44 117 906 4300 |
From: <pa...@ti...> - 2005-12-19 08:01:05
|
Hi folks, I see that my patch to solve the NULL pointer exception in mdb-sql.c has only been partially included. The fflush'es are there and I'm rea= lly happy that I will be able to run all my scripts in GAWK, TCC and othe= r languages thanks :-). But I still miss the part of the patch which makes sure that FILE *ou= t is set at least to stdout. Attached is a patch for that, which also makes usage message printing= a function. The message is much prettier and the fact of having a funct= ion allows us to call it from different parts in the program. Regards, --=20 Pedro A. Aranda Guti=E9rrez mailto: pa...@ti... |
From: Jeff S. <why...@ya...> - 2005-12-17 16:02:55
|
--- Mike Prudence <mj...@fi...> wrote: > I've been running into some segfaults with the CVS version and a JET3 > database, and discovered a bug in read_pg_if_n in table.c. I finally got around to reviewing your patch. I committed your patch (with one change) along with some other changes to the read_pg_if functions. -- Jeff Smith __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com |
From: Jeff S. <why...@ya...> - 2005-12-12 09:39:15
|
--- Sergey Matveychuk <se...@Fr...> wrote: > I've got problems to link mdbtools library with C++ sourses. > > It could be fixed just adding `export "C"` in headers like in > mdbodbc.h done. mdbtools CVS already has these 'export "C" bookends'. -- Jeff Smith __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com |
From: Ross J. <ros...@ho...> - 2005-12-11 23:03:40
|
The patch I posted yesterday http://sourceforge.net/mailarchive/forum.php? thread_id=9204191&forum_id=5183 was truncated (as was David Mansfield's original), I assume due to message size limits. So I've posted it as patch number 1378360 at: http://sourceforge.net/tracker/index.php? func=detail&aid=1378360&group_id=2294&atid=302294 Apologies if this is not the correct place to lodge it. Regards. Ross Johnson |
From: Sergey M. <se...@Fr...> - 2005-12-11 16:14:10
|
I've got problems to link mdbtools library with C++ sourses. It could be fixed just adding `export "C"` in headers like in mdbodbc.h done. Patches included. -- Sem. |
From: Ross J. <ros...@ho...> - 2005-12-11 02:36:24
|
Hi, I have a large 27 Mb MDB file (Access 97 - Jet 3) that was seg faulting with most utils in mdbtools-0.5 and producing a 'Does not appear to be an Access database file' message from mdbtools-0.6pre1. Searching the mdb-tools-dev list archives I found David Mansfield's patch (message dated 2004-06-13), which, although the attached patch seemed a little corrupted at the end, worked perfectly for my MDB file once the missing bit was fixed. I'm assuming the attachment was corrupted when it was processed for the web archive page. Parts of this patch appear to have been incorporated into 0.6pre1, but the essential RC4 decoding parts appear to have been left out. Given that many people still seem to be having the same problem, is there some reason, perhaps legal, that the RC4 decoding can't be included? David's patch (reconstructed relative to the current mdb- tools-0.5.tar.gz distribution) is included again below, with some very minor header prototype additions to build it error free on my Fedora Core 3 Linux system (these additions aren't conditional but should not affect other systems). One minor change to David's patch is the inclusion of the libm.a library to the LIBS variable in Makefile.in rather than Makefile.am. Makefile.am is the correct place to add it, but on my system 'make' was attempting to run the auto tools and was failing. Adding it to Makefile.in simply required running the top level ./configure. Many many thanks to the MDB tools developers for a great tool and to David Mansfield for his essential patch. To apply the patch to mdb-tools-0.5.tar.gz, save it to a file 'mdb- tools-0.5-patch' making sure not to fold any long lines, then: tar zxvf mdb-tools-0.5.tar.gz cd mdb-tools-0.5 patch -p1 < ../mdb-tools-0.5-patch To build mdb-tools-0.5: ./configure make make install (i.e. as usual) ------------------------------cut here------------------------------ diff -rwc mdbtools-0.5-orig/include/mdbtools.h mdbtools-0.5/include/mdbtools.h *** mdbtools-0.5-orig/include/mdbtools.h 2003-01-13 09:59:42.000000000 +1100 --- mdbtools-0.5/include/mdbtools.h 2005-12-11 12:07:37.000000000 +1100 *************** *** 327,339 **** extern int mdb_is_fixed_col(MdbColumn *col); extern char *mdb_col_to_string(MdbHandle *mdb, int start, int datatype, int size); extern int mdb_find_end_of_row(MdbHandle *mdb, int row); ! /* dump.c */ extern void buffer_dump(const unsigned char* buf, int start, int end); /* backend.c */ extern char *mdb_get_coltype_string(MdbBackend *backend, int col_type); extern void mdb_init_backends(); extern void mdb_register_backend(MdbBackend *backend, char *backend_name); extern int mdb_set_default_backend(MdbHandle *mdb, char *backend_name); --- 327,340 ---- extern int mdb_is_fixed_col(MdbColumn *col); extern char *mdb_col_to_string(MdbHandle *mdb, int start, int datatype, int size); extern int mdb_find_end_of_row(MdbHandle *mdb, int row); ! extern void mdb_set_date_fmt(const char *); /* dump.c */ extern void buffer_dump(const unsigned char* buf, int start, int end); /* backend.c */ extern char *mdb_get_coltype_string(MdbBackend *backend, int col_type); + int mdb_coltype_takes_length(MdbBackend *backend, int col_type); extern void mdb_init_backends(); extern void mdb_register_backend(MdbBackend *backend, char *backend_name); extern int mdb_set_default_backend(MdbHandle *mdb, char *backend_name); diff -rwc mdbtools-0.5-orig/src/gmdb2/gmdb.h mdbtools-0.5/src/gmdb2/gmdb.h *** mdbtools-0.5-orig/src/gmdb2/gmdb.h 2003-01-13 09:59:42.000000000 +1100 --- mdbtools-0.5/src/gmdb2/gmdb.h 2005-12-11 12:07:37.000000000 +1100 *************** *** 24,29 **** --- 24,30 ---- GtkWidget *gmdb_table_def_new(MdbCatalogEntry *entry); GtkWidget *gmdb_table_export_new(MdbCatalogEntry *entry); void gmdb_table_export(MdbCatalogEntry *entry) ; + void gmdb_table_export_populate_dialog(GladeXML *xml); void gmdb_file_select_cb(GtkWidget *w, gpointer data); void gmdb_file_open_cb(GtkWidget *w, gpointer data); *************** *** 32,37 **** --- 33,40 ---- void gmdb_file_open_recent(gchar *menuname); void gmdb_sql_new_window_cb(GtkWidget *w, gpointer data); + void gmdb_sql_save_as_cb(GtkWidget *w, GladeXML *xml); + void gmdb_sql_save_query(GladeXML *xml, gchar *file_path); void gmdb_table_populate(MdbHandle *mdb); void gmdb_form_populate(MdbHandle *mdb); diff -rwc mdbtools-0.5-orig/src/libmdb/backend.c mdbtools-0.5/src/libmdb/backend.c *** mdbtools-0.5-orig/src/libmdb/backend.c 2002-12-11 10:35:25.000000000 +1100 --- mdbtools-0.5/src/libmdb/backend.c 2005-12-11 12:07:37.000000000 +1100 *************** *** 53,59 **** "NUMBER", "FLOAT", "FLOAT", ! "DATE", "Oracle_Unknown 0x09", "VARCHAR2", "BLOB", --- 53,59 ---- "NUMBER", "FLOAT", "FLOAT", ! "-DATE", "Oracle_Unknown 0x09", "VARCHAR2", "BLOB", *************** *** 112,126 **** char *mdb_get_coltype_string(MdbBackend *backend, int col_type) { ! char buf[100]; if (col_type > 0x10) { // return NULL; sprintf(buf,"type %04x", col_type); return buf; } else { ! return backend->types_table[col_type]; } } /* ** mdb_init_backends() initializes the mdb_backends hash and loads the builtin ** backends --- 112,139 ---- char *mdb_get_coltype_string(MdbBackend *backend, int col_type) { ! static char buf[100]; if (col_type > 0x10) { // return NULL; sprintf(buf,"type %04x", col_type); return buf; } else { ! char *str = backend->types_table[col_type]; ! if (*str == "-") ! str++; ! return str; } } + + int mdb_coltype_takes_length(MdbBackend *backend, int col_type) + { + if (col_type > 0x10) { + return 1; + } else { + return (*backend->types_table[col_type] != "-"); + } + } + /* ** mdb_init_backends() initializes the mdb_backends hash and loads the builtin ** backends diff -rwc mdbtools-0.5-orig/src/libmdb/data.c mdbtools-0.5/src/libmdb/data.c *** mdbtools-0.5-orig/src/libmdb/data.c 2003-01-13 09:59:43.000000000 +1100 --- mdbtools-0.5/src/libmdb/data.c 2005-12-11 12:07:37.000000000 +1100 *************** *** 22,33 **** --- 22,41 ---- #include "math.h" #define MDB_DEBUG_OLE 1 + #define OFFSET_MASK 0x1fff 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 date_fmt[64] = "%x %X"; + + void mdb_set_date_fmt(const char * fmt) + { + date_fmt[63] = 0; + strncpy(date_fmt, fmt, 63); + } void mdb_bind_column(MdbTableDef *table, int col_num, void *bind_ptr) { *************** *** 52,70 **** MdbFormatConstants *fmt = mdb->fmt; int row_end; ! /* Search the previous "row start" values for the first non-deleted one. * If we don't find one, then the end of the page is the correct value. */ #if 1 if (row==0) { row_end = fmt->pg_size - 1; } else { ! row_end = (mdb_get_int16(mdb, ((fmt->row_count_offset + 2) + (row - 1) * 2)) & 0x0FFF) - 1; } return row_end; #else for (i = row - 1; i >= 0; i--) { row_start = mdb_get_int16(mdb, ((fmt->row_count_offset + 2) + i * 2)); if (!(row_start & 0x8000)) { break; } --- 60,80 ---- MdbFormatConstants *fmt = mdb->fmt; int row_end; ! /* Search the previous "row start" values for the first non-"lookupflag" one. * If we don't find one, then the end of the page is the correct value. */ #if 1 + int i, row_start; if (row==0) { row_end = fmt->pg_size - 1; } else { ! row_end = (mdb_get_int16(mdb, ((fmt->row_count_offset + 2) + (row - 1) * 2)) & OFFSET_MASK) - 1; } return row_end; #else for (i = row - 1; i >= 0; i--) { row_start = mdb_get_int16(mdb, ((fmt->row_count_offset + 2) + i * 2)); + /* if lookupflag is not set, it's good (deleteflag is ok) */ if (!(row_start & 0x8000)) { break; } *************** *** 74,80 **** if (i == -1) { row_end = fmt->pg_size - 1; } else { ! row_end = row_start - 1; } return row_end; #endif --- 84,90 ---- if (i == -1) { row_end = fmt->pg_size - 1; } else { ! row_end = (row_start & OFFSET_MASK) - 1; } return row_end; #endif *************** *** 177,183 **** delflag = lookupflag = 0; if (row_start & 0x8000) lookupflag++; if (row_start & 0x4000) delflag++; ! row_start &= 0x0FFF; /* remove flags */ #if MDB_DEBUG fprintf(stdout,"Row %d bytes %d to %d %s %s\n", row, row_start, row_end, --- 187,193 ---- delflag = lookupflag = 0; if (row_start & 0x8000) lookupflag++; if (row_start & 0x4000) delflag++; ! row_start &= OFFSET_MASK; /* remove flags */ #if MDB_DEBUG fprintf(stdout,"Row %d bytes %d to %d %s %s\n", row, row_start, row_end, *************** *** 253,259 **** } /* if fixed columns add up to more than 256, we need a jump */ ! if (col_start >= 256) { num_of_jumps++; jumps_used++; row_start = row_start + col_start - (col_start % 256); --- 263,269 ---- } /* if fixed columns add up to more than 256, we need a jump */ ! if (IS_JET3(mdb) && col_start >= 256) { num_of_jumps++; jumps_used++; row_start = row_start + col_start - (col_start % 256); *************** *** 394,417 **** { MdbCatalogEntry *entry = table->entry; MdbHandle *mdb = entry->mdb; ! guint32 pgnum, i, j, bitn, map_pg; unsigned char map_byte; ! pgnum = 0; //printf("map size %ld\n", table->map_sz); for (i=1;i<table->map_sz-1;i+=4) { map_pg = _mdb_get_int32(table->usage_map, i); //printf("loop %d pg %ld %02x%02x%02x%02x\n",i, map_pg,table->usage_map[i],table->usage_map[i+1],table->usage_map[i+2],table->usage_map[i+3]); ! if (!map_pg) continue; if(mdb_read_alt_pg(mdb, map_pg) != mdb->fmt->pg_size) { fprintf(stderr, "Oops! didn't get a full page at %d\n", map_pg); exit(1); } //printf("reading page %ld\n",map_pg); ! for (j=4;j<mdb->fmt->pg_size;j++) { ! for (bitn=0;bitn<8;bitn++) { if (mdb->alt_pg_buf[j] & 1 << bitn && pgnum > table->cur_phys_pg) { table->cur_phys_pg = pgnum; if (!mdb_read_pg(mdb, pgnum)) { --- 404,444 ---- { MdbCatalogEntry *entry = table->entry; MdbHandle *mdb = entry->mdb; ! guint32 pgnum, i, j, bitn, map_pg, map_ind, offset, bit_offset; unsigned char map_byte; ! /* ! * table->cur_phys_pg will tell us where to (re)start the scan ! * for the next data page. each usage_map entry points to a ! * 0x05 page which bitmaps (mdb->fmt->pg_size - 4) * 8 pages. ! * ! * map_ind gives us the starting usage_map entry ! * offset gives us a page offset into the bitmap (must be converted ! * to bytes and bits). ! */ ! pgnum = table->cur_phys_pg + 1; ! map_ind = pgnum / ((mdb->fmt->pg_size - 4) * 8); ! offset = pgnum % ((mdb->fmt->pg_size - 4) * 8); ! bit_offset = offset % 8; //printf("map size %ld\n", table->map_sz); for (i=1;i<table->map_sz-1;i+=4) { map_pg = _mdb_get_int32(table->usage_map, i); //printf("loop %d pg %ld %02x%02x%02x%02x\n",i, map_pg,table->usage_map[i],table->usage_map[i+1],table->usage_map[i+2],table->usage_map[i+3]); ! /* if the usage_map entry is empty, skip it, but advance the page counter */ ! if (!map_pg) {pgnum += (mdb->fmt->pg_size - 4) * 8; continue;} if(mdb_read_alt_pg(mdb, map_pg) != mdb->fmt->pg_size) { fprintf(stderr, "Oops! didn't get a full page at %d\n", map_pg); exit(1); } //printf("reading page %ld\n",map_pg); ! ! /* first time through, start j, bitn based on the starting offset ! * after that, reset offset to 0 to start at the beginning of the page/byte ! */ ! for (j=4 + offset / 8;j<mdb->fmt->pg_size;j++) { ! for (bitn=bit_offset;bitn<8;bitn++) { if (mdb->alt_pg_buf[j] & 1 << bitn && pgnum > table->cur_phys_pg) { table->cur_phys_pg = pgnum; if (!mdb_read_pg(mdb, pgnum)) { *************** *** 423,429 **** --- 450,459 ---- } pgnum++; } + bit_offset = 0; } + + offset = 0; } /* didn't find anything */ //printf("returning 0\n"); *************** *** 476,482 **** if (!table->cur_pg_num) { table->cur_pg_num=1; table->cur_row=0; ! mdb_read_next_dpg(table); } do { --- 506,513 ---- if (!table->cur_pg_num) { table->cur_pg_num=1; table->cur_row=0; ! if (!mdb_read_next_dpg(table)) ! return 0; } do { *************** *** 784,796 **** */ return text; } char *mdb_col_to_string(MdbHandle *mdb, int start, int datatype, int size) { /* FIX ME -- not thread safe */ static char text[MDB_BIND_SIZE]; char tmpbuf[10]; time_t t; ! int i,j; switch (datatype) { case MDB_BOOL: --- 815,853 ---- */ return text; } + + static int trim_trailing_zeros(char * buff, int n) + { + char * p = buff + n - 1; + while (p >= buff && *p == "0") + *p-- = "\0"; + if (*p == ".") + *p = "\0"; + } + + + /* + * how much precision should we ask for from printf and friends? + * pass FLT_DIG for floats, DBL_DIG for doubles + */ + int max_dec_places(double f, int dig_prec) + { + int ret = dig_prec - (int)ceil(log10(fabs(f))); + /* always at least one digit of precision so the trim function works */ + if (ret < 1) + ret = 1; + return ret; + } + char *mdb_col_to_string(MdbHandle *mdb, int start, int datatype, int size) { /* FIX ME -- not thread safe */ static char text[MDB_BIND_SIZE]; char tmpbuf[10]; time_t t; ! int i,j,n; ! float tf; ! double td; switch (datatype) { case MDB_BOOL: *************** *** 810,820 **** return text; break; case MDB_FLOAT: ! sprintf(text,"%f",mdb_get_single(mdb, start)); return text; break; case MDB_DOUBLE: ! sprintf(text,"%f",mdb_get_double(mdb, start)); return text; break; case MDB_TEXT: --- 867,881 ---- return text; break; case MDB_FLOAT: ! tf = mdb_get_single(mdb, start); ! n = sprintf(text,"%.*f", max_dec_places(tf, FLT_DIG), tf); ! trim_trailing_zeros(text, n); return text; break; case MDB_DOUBLE: ! td = mdb_get_double(mdb, start); ! n = sprintf(text,"%.*f", max_dec_places(td, DBL_DIG), td); ! trim_trailing_zeros(text, n); return text; break; case MDB_TEXT: *************** *** 846,852 **** break; case MDB_SDATETIME: t = (long int)((mdb_get_double(mdb, start) - 25569.0) * 86400.0); ! strftime(text, MDB_BIND_SIZE, "%x %X", (struct tm*)gmtime(&t)); return text; --- 907,913 ---- break; case MDB_SDATETIME: t = (long int)((mdb_get_double(mdb, start) - 25569.0) * 86400.0); ! strftime(text, MDB_BIND_SIZE, date_fmt, (struct tm*)gmtime(&t)); return text; diff -rwc mdbtools-0.5-orig/src/libmdb/file.c mdbtools-0.5/src/libmdb/file.c *** mdbtools-0.5-orig/src/libmdb/file.c 2003-01-13 09:59:43.000000000 +1100 --- mdbtools-0.5/src/libmdb/file.c 2005-12-11 12:07:37.000000000 +1100 *************** *** 26,31 **** --- 26,95 ---- 2048, 0x08, 12, 25, 27, 31, 35, 36, 43, 8, 13, 16, 1, 18 }; + typedef struct _RC4_KEY + { + unsigned char state[256]; + unsigned char x; + unsigned char y; + } RC4_KEY; + + #define swap_byte(x,y) t = *(x); *(x) = *(y); *(y) = t + + void RC4_set_key(RC4_KEY *key, int key_data_len, unsigned char *key_data_ptr) + { + int i; + unsigned char t; + unsigned char swapByte; + unsigned char index1; + unsigned char index2; + unsigned char* state; + short counter; + + state = &key->state[0]; + for(counter = 0; counter < 256; counter++) + state[counter] = counter; + key->x = 0; + key->y = 0; + index1 = 0; + index2 = 0; + for(counter = 0; counter < 256; counter++) + { + index2 = (key_data_ptr[index1] + state[counter] + index2) % 256; + swap_byte(&state[counter], &state[index2]); + index1 = (index1 + 1) % key_data_len; + } + } + + /* + * this algorithm does "encrypt in place" instead of inbuff/outbuff + * note also: encryption and decryption use same routine + * implementation supplied by (Adam Back) at <adam at cypherspace dot org> + */ + + void RC4(RC4_KEY *key, int buffer_len, unsigned char * buff) + { + unsigned char t; + unsigned char x; + unsigned char y; + unsigned char* state; + unsigned char xorIndex; + short counter; + + x = key->x; + y = key->y; + state = &key->state[0]; + for(counter = 0; counter < buffer_len; counter++) + { + x = (x + 1) % 256; + y = (state[x] + y) % 256; + swap_byte(&state[x], &state[y]); + xorIndex = (state[x] + state[y]) % 256; + buff[counter] ^= state[xorIndex]; + } + key->x = x; + key->y = y; + } + static size_t _mdb_read_pg(MdbHandle *mdb, unsigned char *pg_buf, unsigned long pg); static int mdb_find_file(char *file_name, char *file_path, int bufsize) { *************** *** 118,125 **** /* get the db encryption key and xor it back to clear text */ f->db_key = mdb_get_int32(mdb, 0x3e); - f->db_key ^= 0xe15e01b9; /* get the db password located at 0x42 bytes into the file */ for (pos=0;pos<14;pos++) { --- 182,194 ---- /* get the db encryption key and xor it back to clear text */ f->db_key = mdb_get_int32(mdb, 0x3e); + /* I don"t know if this value is valid for some versions? + * it doesn"t seem to be valid for the databases I have + * + * f->db_key ^= 0xe15e01b9; + */ + f->db_key ^= 0x4ebc8afb; /* get the db password located at 0x42 bytes into the file */ for (pos=0;pos<14;pos++) { *************** *** 209,214 **** --- 278,296 ---- /* fprintf(stderr,"EOF reached %d bytes returned.\n",len, mdb->fmt->pg_size); */ return 0; } + + /* + * unencrypt the page if necessary. + * it might make sense to cache the unencrypted data blocks? + */ + if (pg != 0 && mdb->f->db_key != 0) + { + RC4_KEY rc4_key; + unsigned int tmp_key = mdb->f->db_key ^ pg; + RC4_set_key(&rc4_key, 4, (unsigned char *)&tmp_key); + RC4(&rc4_key, mdb->fmt->pg_size, pg_buf); + } + return len; } void mdb_swap_pgbuf(MdbHandle *mdb) *************** *** 332,338 **** #endif double d; ! if (offset <0 || offset+4 > mdb->fmt->pg_size) return -1; memcpy(&d, &mdb->pg_buf[offset], 8); --- 414,420 ---- #endif double d; ! if (offset <0 || offset+8 > mdb->fmt->pg_size) return -1; memcpy(&d, &mdb->pg_buf[offset], 8); diff -rwc mdbtools-0.5-orig/src/libmdb/Makefile.am mdbtools-0.5/src/libmdb/Makefile.am *** mdbtools-0.5-orig/src/libmdb/Makefile.am 2003-01-06 01:58:33.000000000 +1100 --- mdbtools-0.5/src/libmdb/Makefile.am 2005-12-11 12:07:37.000000000 +1100 *************** *** 1,4 **** lib_LTLIBRARIES = libmdb.la libmdb_la_SOURCES= catalog.c mem.c file.c kkd.c table.c data.c dump.c backend.c money.c sargs.c index.c like.c write.c stats.c INCLUDES = -I$(top_srcdir)/include $(GLIB_CFLAGS) ! LIBS = $(GLIB_LIBS) --- 1,4 ---- lib_LTLIBRARIES = libmdb.la libmdb_la_SOURCES= catalog.c mem.c file.c kkd.c table.c data.c dump.c backend.c money.c sargs.c index.c like.c write.c stats.c INCLUDES = -I$(top_srcdir)/include $(GLIB_CFLAGS) ! LIBS = $(GLIB_LIBS) -lm diff -rwc mdbtools-0.5-orig/src/libmdb/Makefile.in mdbtools-0.5/src/libmdb/Makefile.in *** mdbtools-0.5-orig/src/libmdb/Makefile.in 2003-01-19 12:55:41.000000000 +1100 --- mdbtools-0.5/src/libmdb/Makefile.in 2005-12-11 12:08:15.000000000 +1100 *************** *** 104,110 **** lib_LTLIBRARIES = libmdb.la libmdb_la_SOURCES = catalog.c mem.c file.c kkd.c table.c data.c dump.c backend.c money.c sargs.c index.c like.c write.c stats.c INCLUDES = -I$(top_srcdir)/include $(GLIB_CFLAGS) ! LIBS = $(GLIB_LIBS) subdir = src/libmdb mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_CLEAN_FILES = --- 104,110 ---- lib_LTLIBRARIES = libmdb.la libmdb_la_SOURCES = catalog.c mem.c file.c kkd.c table.c data.c dump.c backend.c money.c sargs.c index.c like.c write.c stats.c INCLUDES = -I$(top_srcdir)/include $(GLIB_CFLAGS) ! LIBS = $(GLIB_LIBS) -lm subdir = src/libmdb mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_CLEAN_FILES = ------------------------------cut here------------------------------ Regards. Ross Johnson |
From: Lenny L. <lle...@ma...> - 2005-12-08 20:11:17
|
Hi Reuben, I wrote a small utility for viewing the queries. It's not included in the main tarball, but here is a link to the source: http://sourceforge.net/mailarchive/message.php?msg_id=10531563 -- Lenny Reuben Pearse wrote: > Hi there, > > I have been using the mdb-table tool to extract list of tables from > MDB files. Is there a way to get lists of queries, forms, reports and > modules in the same way? > > Also is there a way to extract all the VB code from an MDB file into a > text file? > > Regards > |
From: Reuben P. <re...@pr...> - 2005-12-08 10:43:34
|
Hi there, I have been using the mdb-table tool to extract list of tables from MDB files. Is there a way to get lists of queries, forms, reports and modules in the same way? Also is there a way to extract all the VB code from an MDB file into a text file? Regards -- Reuben Pearse Principal Technical Consultant re...@pr... |
From: SourceForge.net <no...@so...> - 2005-12-07 05:50:23
|
Bugs item #1375048, was opened at 2005-12-06 23:50 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102294&aid=1375048&group_id=2294 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: Evan Schoenberg (evands) Assigned to: Nobody/Anonymous (nobody) Summary: mdb-export: UTF-8 characters doesn't export properly Initial Comment: mdb-export didn't get UTF-8 properly from exported tables... smart quotes, alpha, and beta symbols, among others weren't retained. Please let me know if you'd like the database file. (worked awesome otherwise though, thanks!) ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=102294&aid=1375048&group_id=2294 |
From: Mike P. <mj...@fi...> - 2005-11-30 18:36:20
|
Hi Jeff, > The primary maintainers are myself and Brian Bruns. I cannot speak for Brian, but as for > myself, I have limited time right now to do a proper review for even simple patches (as I > have a two-month-old son). I already have a small backlog of patches I want to review. > I also have numerous changes to gmdb2 in my own tree that I need to merge. If you are > interested, take a look at the ChangeLog and you will notice updates tend to come in > bursts. Yeah, I had noticed that, but browsing the list the other day looking for your names, I see there hadn't been any posts for a while.... good to know you're still there as I can't tell you how this tool has been *sooo* helpful. I'll keep on feeding in fixes when I come across issues... -- Cheers, Mike mj...@fi... http://www.filmsat59.com Films at 59 Ltd, 59 Cotham Hill, Bristol. BS6 6JR. UK +44 117 906 4300 |
From: Jeff S. <why...@ya...> - 2005-11-30 18:26:33
|
--- Mike Prudence <mj...@fi...> wrote: > Does anyone know if anything is making it into CVS, or has > the maintainer gone awol ?? The primary maintainers are myself and Brian Bruns. I cannot speak for Brian, but as for myself, I have limited time right now to do a proper review for even simple patches (as I have a two-month-old son). I already have a small backlog of patches I want to review. I also have numerous changes to gmdb2 in my own tree that I need to merge. If you are interested, take a look at the ChangeLog and you will notice updates tend to come in bursts. -- Jeff Smith __________________________________ Yahoo! Music Unlimited Access over 1 million songs. Try it free. http://music.yahoo.com/unlimited/ |
From: Mike P. <mj...@fi...> - 2005-11-30 17:56:20
|
Hi all, I've been running into some segfaults with the CVS version and a JET3 database, and discovered a bug in read_pg_if_n in table.c. I've done so much futzing I can't be fussed to make a diff, but the change is easy enough - if you insert the bit between the 'MJP' comments as shown below, this will avoid the situation where cur_pos is outside the current page size, and hence causes 'half' to go negative. It's worked for me - I don't know how clean it is, or whether it's masking another error further up the line. As an aside, I've also got support for REPID's if anyone is interested - again, a couple of simple changes. Does anyone know if anything is making it into CVS, or has the maintainer gone awol ?? ------- guint16 read_pg_if_n(MdbHandle *mdb, void *buf, int *cur_pos, int len) { // MJP while (*cur_pos > mdb->fmt->pg_size) { mdb_read_pg(mdb, mdb_get_int32(mdb->pg_buf,4)); *cur_pos = *cur_pos - mdb->fmt->pg_size; } // MJP if (*cur_pos + len < mdb->fmt->pg_size) { memcpy(buf, &mdb->pg_buf[*cur_pos], len); return 0; } else { int half = mdb->fmt->pg_size - *cur_pos; //printf ("curpos = %d, pg_size = %d, len = %d, half = %d\n", *cur_pos, mdb->fmt->pg_size, len, half); memcpy(buf, &mdb->pg_buf[*cur_pos], half); mdb_read_pg(mdb, mdb_get_int32(mdb->pg_buf,4)); memcpy(buf + half, &mdb->pg_buf[8], len - half); *cur_pos = 8 - half; return 1; } } -- Cheers, Mike mj...@fi... http://www.filmsat59.com Films at 59 Ltd, 59 Cotham Hill, Bristol. BS6 6JR. UK +44 117 906 4300 |
From: Hans-Emil S. <Han...@tr...> - 2005-11-28 12:51:17
|
> I'm eager to see my patch solving the NULL pointer in mdb-sql reach=20 > the CVS including the fflush'es. If it doesn't, you won't be able to=20 > run this simple, but usefull AWK script: I second that. I would also like to se my own patches in the CVS, but since they are completely dependent on a working mdb-sql, please include Pedros patch! Hans-Emil |
From: M S <ms...@gm...> - 2005-11-25 19:20:19
|
Hi, i'm on fedora core 4, i had problems with the .5 RPM version. I am wondering if i need to try the .6pre version, because i get this error when i use the DataManager, when i click on the "tables" i get this error "Faile= d to SQLTables". what is the simple query you use that i can use to test min= e out? Does your driver file use that same file? I made the driver file: [MDBtoolsODBC] Description =3D MDB tools ODBC driver Driver =3D /usr/lib/libmdbodbc.so.0 Setup =3D FileUsage =3D 1 CPTimeout =3D CPReuse =3D then i did the odbcinst -i -d -f <FILENAME> it said successful driver installation, and i can see the driver listed in the /etc/odbcinst.ini file. Then i defined my Data Source Name in the /etc/odbc.ini file: [GDB] Description =3D Microsoftt Access Database driver of GDB Driver =3D MDBtoolsODBC Database =3D /home/user/data.mdb Servername =3D localhost UserName =3D Password =3D port =3D 5432 when i use the DataManager, it shows me the driver name i put in under the DRIVER tree, and it also lists the DSN under System Data Sources and User Data Sources. When i click on the user datasource tree and expand it, i get the DSN "GDB". when i click on that, i get prompted for password, i hit ok. then comes the error: when i click on the "tables" i get this error "Failed to SQLTables". On 11/25/05, Victor P=E9rez Roche < vr...@un...> wrote: > > Hi, > > I'm working with Linux RH9 + mdbtools 0.6pre1 + unixODBC 2.2.11 -> > MSAccess 2002. Things go right for simple queries to simple tables, but w= hen > I try to make queries to a lagre table (not so large, 18 colums x 10.000r= ows) things begin to be strange... > > For example, I query about some of the rows with "WHERE" clause, then I > delete all of them in my MSAccess Windows Box, and when I repeat the > Linux-query the last-deleted-rows still appear. This is just one of the > strange behaviour that I've detected. > > Someone knows? > > Thnx in advance > > -------------------------------------------------------------- > Victor P=E9rez Roche > vroche at University of Zaragoza (unizar) dot es > Centro de C=E1lculo Universidad de Zaragoza > =C1rea de Comunicaciones > Tef: 976.761.000 ext 3266 > -------------------------------------------------------------- > > |
From: <vr...@un...> - 2005-11-25 12:15:00
|
Hi,=20 =20 I'm working with Linux RH9 + mdbtools 0.6pre1 + unixODBC 2.2.11 -> = MSAccess 2002. Things go right for simple queries to simple tables, but when I = try to make queries to a lagre table (not so large, 18 colums x 10.000 rows) = things begin to be strange... =20 For example, I query about some of the rows with "WHERE" clause, then I delete all of them in my MSAccess Windows Box, and when I repeat the Linux-query the last-deleted-rows still appear. This is just one of the strange behaviour that I've detected. =20 Someone knows? =20 Thnx in advance =20 -------------------------------------------------------------- Victor P=E9rez Roche vroche at University of Zaragoza (unizar) dot es Centro de C=E1lculo Universidad de Zaragoza =C1rea de Comunicaciones Tef: 976.761.000 ext 3266 -------------------------------------------------------------- =20 |
From: <pa...@ti...> - 2005-11-24 14:16:12
|
Hi, I'm eager to see my patch solving the NULL pointer in mdb-sql reach the CVS including the fflush'es. If it doesn't, you won't be able to run this simple, but usefull AWK script: ------------------------ begin script ---------------------------- #!/usr/bin/gawk -f BEGIN { pipe="mdb-sql -Hp -d '#' <INSERT MDBFILENAME HERE>"; i=1; printf("list tables\ngo\n") |& pipe; while ((pipe |& getline result) > 0) { if (result ~ /^$/) continue; if (result ~ /retrieved$/) break; tables[i++]=result; } i=1; while (i in tables) { comando = \ sprintf("describe table %s\ngo\n",tables[i++]); print comando; print comando |& pipe; while ((pipe |& getline result) > 0) { if (result ~ /^$/) continue; if (result ~ /retrieved$/) break; gsub("#","\t",result); print result; } } print "quit" |& pipe; close(pipe); } -------------------------- end script -------------------- -- Pedro A. Aranda |
From: Alex H. <ba...@gm...> - 2005-11-17 20:12:41
|
Hi, Im trying to export a JET4 mdb file. However some columns seem to have NULL values when they should be otherwise. The column is a long integer and here is the attempted export with MDBOPTS=3Ddebug_all (and MDB_DEBUG set to 1 in mdbtools.h) Row 86 bytes 2965 to 2977 0b95 03 00 10 00 00 00 3c 00 d8 0c 01 00 07 ......<...... bitmask_sz 1 row_var_cols 1 row_fixed_cols 2 sarg test passed row 86 0b95 03 00 10 00 00 00 3c 00 d8 0c 01 00 07 ......<...... 16,60, where the expected out put is 16,60,6882 The problem seems to be it detects row_var_cols when infact they are all fixed rows. If i apply the following patch --- write.c.old 2005-11-17 12:57:32.000000000 -0700 +++ write.c 2005-11-17 12:55:26.000000000 -0700 @@ -173,11 +173,11 @@ nullmask =3D pg_buf + row_end - bitmask_sz + 1; /* read table of variable column locations */ - row_var_cols =3D IS_JET4(mdb) ? - mdb_get_int16(pg_buf, row_end - bitmask_sz - 1) : - mdb_get_byte(pg_buf, row_end - bitmask_sz); - var_col_offsets =3D (unsigned int *)g_malloc((row_var_cols+1)*sizeof(in= t)); - if (table->num_var_cols > 0) { + if(table->num_var_cols > 0) { + row_var_cols =3D IS_JET4(mdb) ? + mdb_get_int16(pg_buf, row_end - bitmask_sz - 1) : + mdb_get_byte(pg_buf, row_end - bitmask_sz); + var_col_offsets =3D (unsigned int *)g_malloc((row_var_cols+1)*sizeof(int)); if (IS_JET4(mdb)) { mdb_crack_row4(mdb, row_start, row_end, bitmask_sz, row_var_cols, var_col_offsets); Then i get the expected output. Here is the same row with the same debug options on. Row 86 bytes 2965 to 2977 0b95 03 00 10 00 00 00 3c 00 d8 0c 01 00 07 ......<...... bitmask_sz 1 row_var_cols 0 row_fixed_cols 3 sarg test passed row 86 0b95 03 00 10 00 00 00 3c 00 d8 0c 01 00 07 ......<...... 16,60,68824 Im not sure if the above patch is really the fix or more just a work around that will break if you actually have var_cols. Also i noticed all of the mising values seem to be above 66000 (I m thinking maybe 65535?). But there are about 3,000 rows with missing values out of about 45,000 rows so i have only looked up a few. So far it has always been the last column in the row as well. |
From: M S <ms...@gm...> - 2005-11-17 12:34:55
|
Hi all, I'm trying to extract data from an Access Database. The specific application is to extract shapes from an .mdb file for GIS. the GDAL open source guys wrote something for this but it only works on windows due to some DLLs or something. If i can get the ODBC to work on linux, then it should be good to go. basically, at this point i am not sure my ODBC connection is working. I am new to this so please excuse the wrong use of terminology. Is there a service that needs started for UNIXODBC? I ask this because of the port in the DSN. I have installed all version 0.5-1 RPMS... mdbtools, mdbtools-devel, mdbtools-gui,mdbtools-odbc. I made the driver file: [MDBtoolsODBC] Description =3D MDB tools ODBC driver Driver =3D /usr/lib/libmdbodbc.so.0 Setup =3D FileUsage =3D 1 CPTimeout =3D CPReuse =3D then i did the odbcinst -i -d -f <FILENAME> it said successful driver installation, and i can see the driver listed in the /etc/odbcinst.ini file. Then i defined my Data Source Name in the /etc/odbc.ini file: [GDB] Description =3D Microsoftt Access Database driver of GDB Driver =3D MDBtoolsODBC Database =3D /home/user/data.mdb Servername =3D localhost UserName =3D Password =3D port =3D 5432 when i use the DataManager, it shows me the driver name i put in under the DRIVER tree, and it also lists the DSN under System Data Sources and User Data Sources. When i click on the user datasource tree and expand it, i get the DSN "GDB". when i click on that, i get prompted for password, i hit ok. then comes the error: when i click on the "tables" i get this error "Failed to SQLTables". Can anyone help? Does it sound like the ODBC connection is not working or established or setup right? thanks in advance! Mark |