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: neeraj c. <nee...@ya...> - 2011-06-28 18:26:37
|
http://pesto-krakow.home.pl/best2011.php |
From: neeraj c. <nee...@ya...> - 2011-06-24 09:51:37
|
http://www.saaremaamerispordiselts.ee/for_friends.php |
From: neeraj c. <nee...@ya...> - 2011-06-23 04:29:19
|
http://lallouetgeometreexpert.com/for_friends.php |
From: neeraj c. <nee...@ya...> - 2011-06-21 06:33:29
|
http://www.skfortis.ee/fashion.php |
From: neeraj c. <nee...@ya...> - 2011-06-19 12:53:38
|
http://etodo.fr/facebook.php |
From: Jakob E. <jab...@gm...> - 2011-05-17 14:25:29
|
Dear Mailing List, I have done some research on my own, and I found a very interesting blog article that describes part of the OLE field format: http://jvdveen.blogspot.com/2009/01/ole-and-accessing-files-embedded-in.html Additionally, I have done some reverse engineering of the format to find out more details. Here's a summary how data is stored in OLE fields in Access 2000 databases, partially copied from above blog article, partially my own research. HOW TO READ OLE FIELDS ====================== All testing has been done with a German version of Access 2000 If there is a file inside an OLE field, the OLE field starts with a little endian short: 0x1c15 This is the format of OLE fields: - Package header - Ole header - Data block length - Data (which can be a structured storage, but it can also be the actual file) - Sometimes a metafilepict block - Ole footer PACKAGE HEADER ============== - A Signature (short): this indicates that the file is a package. Always 0x1c15 (little endian ie. 0x15 0x1c) - The header size (short) - An object type (uint): 0 = linked, 1= embedded, 2 = either (who came up with either?) - The length of the friendly name in the header (short) - The length of the class name in the header (short) - The offset of the friendly name (short) - The offset of the class name (short) - The size of the object (int) (note: this is 0xFFFFFFFF for me) - The friendly name (string, variable length) - The class name (string, variable length) OLE HEADER ========== - The Ole version (uint) (For me this is always 0x01 0x05 0x00 0x00) - The Format (uint) (For me this is 0x02 0x00 0x00 0x00) - The object type name length (int) - The object type name (string, variable length) If the object type name from the OLE header is "Package" (and the class name from the package header is also "Package"), then the data is in a special format (I'll call that a package stream). Otherwise, the data is the file itself. Files that are included directly are Word, Excel, Bitmap. Files that are put into package streams are JPEG, PNG, TIFF, text files, etc. PACKAGE STREAM FORMAT ===================== - package stream header - packaged file data (payload) - two NULL bytes PACKAGE STREAM HEADER ===================== - some kind of signature 0x02 0x00 - The filename as a zero terminated string - The full MSDOS path to the file as a zero terminated string - four unknown bytes 0x00 0x00 0x03 0x00 - the length of the MSDOS path as a four byte little endian integer - Again the full MSDOS path to the file as a zero terminated string - the length of the payload as a four byte little endian integer Some examples: (friendly name depends on Access language) Friendly Name Class Name Ole Type Name ---------------------------------------------------------------------- Paket Package Package Dokument Word.Document.8 Word.Document.8 Bitmap Paint.Picture PBrush Arbeitsblatt Excel.Sheet.8 Excel.Sheet.8 NOTE: uint: 4 byte unsigned integer int: 4 byte integer short: 2 byte integer string: array of single byte characters, probably in the system codepage On 13.05.2011, at 12:30, Jakob Egger wrote: > I have a general question about OLE fields: Once I read an OLE field from the database, what do I do with it? Let's say the user put an image into a field. Then the OLE field contains the jpeg/bmp/whatever file wrapped in some strange binary format. How can I extract the actual files from this binary OLE wrapper format? Or did I misunderstand something? > > Does anybody have experience with this? > Best regards, > Jakob > > > On 27.02.2011, at 00:07, dw wrote: > >> So, my first proposed modification is to replace the mdb_ole_read_full >> routine in data.c. While the current routine does work, it has a number >> of inefficiencies: >> >> - Performs unnecessary memory allocation/memcpy of the Memo Field Definition >> - Performs (repeated) unnecessary memcpys >> - Performs (repeated) unnecessary reallocs (which also do memcpys) >> - Allocates more memory than is needed to hold the data >> - Uses an inconsistent memory allocator (malloc vs g_malloc) >> - Leaves the col->bind_ptr in an unusable state >> >> My replacement (below) does: >> >> - Zero memcpys >> - Zero reallocs >> - A single, correctly-sized allocation using g_malloc >> - Preserves the Memo Field Definition in col->bind_ptr >> - Fully commented >> >> My next proposed modification is more substantive, but this seemed like >> a good place to start. >> >> dw >> >> /* >> * mdb_ole_read_full - reads the entire OLE field >> * >> * mdb - the database pointer >> * col - the column to read >> * size - outputs the size of the buffer returned (may be NULL) >> * >> * returns - the result in a big buffer. The number of data bytes is >> * returned in the size parameter. The returned buffer must freed >> * using g_free(). >> * >> * On return, col->bind_ptr still points to the 12 byte Memo Field >> * Definition, NOT the data. This means the OLE field can be >> * re-read if necessary. >> * >> */ >> void* >> mdb_ole_read_full(MdbHandle *mdb, MdbColumn *col, size_t *size) >> { >> void *pOldBind; >> unsigned char *result; >> size_t pos, iTotSize; >> >> // What's the total length of the field? Drop off flags >> iTotSize = mdb_get_int32(col->bind_ptr, 0)& 0x3fffffff; >> >> // Allocate room for the entire field. >> result = (unsigned char *)g_malloc(iTotSize); >> >> // Save the old pointer which points to the 12 byte Memo Field Definition >> pOldBind = col->bind_ptr; >> >> // mdb_ole_read& mdb_ole_read_next always write to col->bind_ptr. >> // So we adjust it to point to our full sized buffer >> col->bind_ptr = result; >> >> // Reads at most 1 data page >> pos = mdb_ole_read(mdb, col, pOldBind, iTotSize); >> >> // Is there more to read? >> while (pos< iTotSize) >> { >> // Adjust col->bind_ptr so the next call will write to >> // the appropriate offset in the buffer >> col->bind_ptr = result + pos; >> >> // Read the next chunk (at most 1 data page). Passing NULL >> // for the 3rd parameter avoids redundant error checking >> pos += mdb_ole_read_next(mdb, col, NULL); >> } >> >> // assert pos == iTotSize >> >> if (size) >> *size = pos; >> >> // restore the 12 byte Memo Field Definition >> col->bind_ptr = pOldBind; >> >> return result; >> } >> >> >> >> ------------------------------------------------------------------------------ >> Free Software Download: Index, Search & Analyze Logs and other IT data in >> Real-Time with Splunk. Collect, index and harness all the fast moving IT data >> generated by your applications, servers and devices whether physical, virtual >> or in the cloud. Deliver compliance at lower cost and gain new business >> insights. http://p.sf.net/sfu/splunk-dev2dev >> _______________________________________________ >> mdbtools-dev mailing list >> mdb...@li... >> https://lists.sourceforge.net/lists/listinfo/mdbtools-dev > |
From: Jakob E. <jab...@gm...> - 2011-05-13 10:30:59
|
I have a general question about OLE fields: Once I read an OLE field from the database, what do I do with it? Let's say the user put an image into a field. Then the OLE field contains the jpeg/bmp/whatever file wrapped in some strange binary format. How can I extract the actual files from this binary OLE wrapper format? Or did I misunderstand something? Does anybody have experience with this? Best regards, Jakob On 27.02.2011, at 00:07, dw wrote: > So, my first proposed modification is to replace the mdb_ole_read_full > routine in data.c. While the current routine does work, it has a number > of inefficiencies: > > - Performs unnecessary memory allocation/memcpy of the Memo Field Definition > - Performs (repeated) unnecessary memcpys > - Performs (repeated) unnecessary reallocs (which also do memcpys) > - Allocates more memory than is needed to hold the data > - Uses an inconsistent memory allocator (malloc vs g_malloc) > - Leaves the col->bind_ptr in an unusable state > > My replacement (below) does: > > - Zero memcpys > - Zero reallocs > - A single, correctly-sized allocation using g_malloc > - Preserves the Memo Field Definition in col->bind_ptr > - Fully commented > > My next proposed modification is more substantive, but this seemed like > a good place to start. > > dw > > /* > * mdb_ole_read_full - reads the entire OLE field > * > * mdb - the database pointer > * col - the column to read > * size - outputs the size of the buffer returned (may be NULL) > * > * returns - the result in a big buffer. The number of data bytes is > * returned in the size parameter. The returned buffer must freed > * using g_free(). > * > * On return, col->bind_ptr still points to the 12 byte Memo Field > * Definition, NOT the data. This means the OLE field can be > * re-read if necessary. > * > */ > void* > mdb_ole_read_full(MdbHandle *mdb, MdbColumn *col, size_t *size) > { > void *pOldBind; > unsigned char *result; > size_t pos, iTotSize; > > // What's the total length of the field? Drop off flags > iTotSize = mdb_get_int32(col->bind_ptr, 0)& 0x3fffffff; > > // Allocate room for the entire field. > result = (unsigned char *)g_malloc(iTotSize); > > // Save the old pointer which points to the 12 byte Memo Field Definition > pOldBind = col->bind_ptr; > > // mdb_ole_read& mdb_ole_read_next always write to col->bind_ptr. > // So we adjust it to point to our full sized buffer > col->bind_ptr = result; > > // Reads at most 1 data page > pos = mdb_ole_read(mdb, col, pOldBind, iTotSize); > > // Is there more to read? > while (pos< iTotSize) > { > // Adjust col->bind_ptr so the next call will write to > // the appropriate offset in the buffer > col->bind_ptr = result + pos; > > // Read the next chunk (at most 1 data page). Passing NULL > // for the 3rd parameter avoids redundant error checking > pos += mdb_ole_read_next(mdb, col, NULL); > } > > // assert pos == iTotSize > > if (size) > *size = pos; > > // restore the 12 byte Memo Field Definition > col->bind_ptr = pOldBind; > > return result; > } > > > > ------------------------------------------------------------------------------ > Free Software Download: Index, Search & Analyze Logs and other IT data in > Real-Time with Splunk. Collect, index and harness all the fast moving IT data > generated by your applications, servers and devices whether physical, virtual > or in the cloud. Deliver compliance at lower cost and gain new business > insights. http://p.sf.net/sfu/splunk-dev2dev > _______________________________________________ > mdbtools-dev mailing list > mdb...@li... > https://lists.sourceforge.net/lists/listinfo/mdbtools-dev |
From: Dale S. <dal...@sh...> - 2011-05-13 00:06:24
|
Sorry for another newb question. I've compiled the github head and have been successfully calling it from my personal build directory from a prototype php web app. Now I'd like to have the utilities in a standard location for other developers (i.e., /usr/local/bin/ - where the FreeBSD port of mdbtools-0.5 installed). I naively tried coping what I thought were executables from .../src/util/ - and then of course discovered they weren't executables at all. Could it really be as simple as "# gmake install"? (i.e., and not a horribly stupid thing to do if I actually really knew what I was doing). Thanks, Dale |
From: neeraj c. <nee...@ya...> - 2011-05-02 14:54:22
|
Give up smoking safely and naturally!... http://condominiolapalapa.com.mx/page.php?mjrhotmailID=02o1 |
From: neeraj c. <nee...@ya...> - 2011-05-02 11:29:34
|
I think you won’t find the place better than this site!... http://miscelaneagriega.com/links.php?sgoogleId=68ro6 |
From: Leonardo F. <leo...@gm...> - 2011-04-28 11:42:14
|
What do you mean with "is not granted"? What kind of problems there could be? 2011/4/28 Cristiano Sumariva <sum...@gm...> > Just to remember that this build on windows using cygwin requires GPL > license ( compiled against cygwin1.dll ). > If you intend to use it on a commercial software that is not granted by the > cygwin license. Well, that was what I understood from the text. > Now I remembered why was trying to build it on msys inspite of cygwin. > > I needed also to install some cygwin packages to get some additional dlls: > pcre, glib, iconv, intl. > But I think if you use the package manager from cygwin it will download all > this dependencies. > > > 2011/4/28 Leonardo Francesconi <leo...@gm...> > >> I think I took them from here! >> http://artfiles.org/cygwin.org/pub/cygwinports/release/mdbtools/ >> >> >> 2011/4/28 Dmitry Nikitin <luc...@ma...> >> >>> Hi! >>> >>> Leonardo, please send me windows ports mdbtools in exe or dll for "just >>> in case". >>> Thanks, Dmitry >>> >>> On Wed, 27 Apr 2011 16:19:23 +0200 >>> Leonardo Francesconi <leo...@gm...> wrote: >>> >>> > I do have executable files (.exe and .dll) of some (not all) mdbtools >>> > utilities. >>> > I tried to compile them with mingW32 and Cygwin, but I failed; luckily >>> I >>> > found them compiled somewhere in the web, if you need I can link or >>> send >>> > them to you. >>> > >>> > By the way, do you speak Italian Cristiano? >>> > >>> > 2011/4/27 Cristiano Sumariva <sum...@gm...> >>> > >>> > > I would like to compile mdbtools on windows like a dll to bind it to >>> PHP as >>> > > extension. >>> > > I would like try this on a Eclipse IDE using the gnu C compiler >>> ported to >>> > > windows ( mingW32 http://www.mingw.org ). >>> > > The main reason to me do this is to port a small windows tool to >>> convert >>> > > MDB file to DBF Unix on both ways. >>> > > That is why I using PHP language since I will have interpreters on >>> both OS. >>> > > And on Linux side my option is to use this library. >>> > > This is also why I do not want to use windows readers for the access >>> file. >>> > > >>> > > Unfortunely I do not know how to create change configure scripts but >>> If >>> > > someone point me the way I can read instructions. >>> > > Then try run configure under cygwin command line. >>> > > I downloaded the branch 0.6PRE from CVS into a Eclipse Project. >>> > > Or I do not know if would be better create an standalone GNUMakefile >>> for >>> > > build on windows and just run make command. >>> > > >>> > > >>> > > >>> ------------------------------------------------------------------------------ >>> > > WhatsUp Gold - Download Free Network Management Software >>> > > The most intuitive, comprehensive, and cost-effective network >>> > > management toolset available today. Delivers lowest initial >>> > > acquisition cost and overall TCO of any competing solution. >>> > > http://p.sf.net/sfu/whatsupgold-sd >>> > > _______________________________________________ >>> > > mdbtools-dev mailing list >>> > > mdb...@li... >>> > > https://lists.sourceforge.net/lists/listinfo/mdbtools-dev >>> > > >>> > > >>> >> >> >> >> ------------------------------------------------------------------------------ >> WhatsUp Gold - Download Free Network Management Software >> The most intuitive, comprehensive, and cost-effective network >> management toolset available today. Delivers lowest initial >> acquisition cost and overall TCO of any competing solution. >> http://p.sf.net/sfu/whatsupgold-sd >> _______________________________________________ >> mdbtools-dev mailing list >> mdb...@li... >> https://lists.sourceforge.net/lists/listinfo/mdbtools-dev >> >> > |
From: Cristiano S. <sum...@gm...> - 2011-04-28 11:27:26
|
Just to remember that this build on windows using cygwin requires GPL license ( compiled against cygwin1.dll ). If you intend to use it on a commercial software that is not granted by the cygwin license. Well, that was what I understood from the text. Now I remembered why was trying to build it on msys inspite of cygwin. I needed also to install some cygwin packages to get some additional dlls: pcre, glib, iconv, intl. But I think if you use the package manager from cygwin it will download all this dependencies. 2011/4/28 Leonardo Francesconi <leo...@gm...> > I think I took them from here! > http://artfiles.org/cygwin.org/pub/cygwinports/release/mdbtools/ > > > 2011/4/28 Dmitry Nikitin <luc...@ma...> > >> Hi! >> >> Leonardo, please send me windows ports mdbtools in exe or dll for "just in >> case". >> Thanks, Dmitry >> >> On Wed, 27 Apr 2011 16:19:23 +0200 >> Leonardo Francesconi <leo...@gm...> wrote: >> >> > I do have executable files (.exe and .dll) of some (not all) mdbtools >> > utilities. >> > I tried to compile them with mingW32 and Cygwin, but I failed; luckily I >> > found them compiled somewhere in the web, if you need I can link or send >> > them to you. >> > >> > By the way, do you speak Italian Cristiano? >> > >> > 2011/4/27 Cristiano Sumariva <sum...@gm...> >> > >> > > I would like to compile mdbtools on windows like a dll to bind it to >> PHP as >> > > extension. >> > > I would like try this on a Eclipse IDE using the gnu C compiler ported >> to >> > > windows ( mingW32 http://www.mingw.org ). >> > > The main reason to me do this is to port a small windows tool to >> convert >> > > MDB file to DBF Unix on both ways. >> > > That is why I using PHP language since I will have interpreters on >> both OS. >> > > And on Linux side my option is to use this library. >> > > This is also why I do not want to use windows readers for the access >> file. >> > > >> > > Unfortunely I do not know how to create change configure scripts but >> If >> > > someone point me the way I can read instructions. >> > > Then try run configure under cygwin command line. >> > > I downloaded the branch 0.6PRE from CVS into a Eclipse Project. >> > > Or I do not know if would be better create an standalone GNUMakefile >> for >> > > build on windows and just run make command. >> > > >> > > >> > > >> ------------------------------------------------------------------------------ >> > > WhatsUp Gold - Download Free Network Management Software >> > > The most intuitive, comprehensive, and cost-effective network >> > > management toolset available today. Delivers lowest initial >> > > acquisition cost and overall TCO of any competing solution. >> > > http://p.sf.net/sfu/whatsupgold-sd >> > > _______________________________________________ >> > > mdbtools-dev mailing list >> > > mdb...@li... >> > > https://lists.sourceforge.net/lists/listinfo/mdbtools-dev >> > > >> > > >> > > > > ------------------------------------------------------------------------------ > WhatsUp Gold - Download Free Network Management Software > The most intuitive, comprehensive, and cost-effective network > management toolset available today. Delivers lowest initial > acquisition cost and overall TCO of any competing solution. > http://p.sf.net/sfu/whatsupgold-sd > _______________________________________________ > mdbtools-dev mailing list > mdb...@li... > https://lists.sourceforge.net/lists/listinfo/mdbtools-dev > > |
From: Leonardo F. <leo...@gm...> - 2011-04-28 08:02:57
|
I think I took them from here! http://artfiles.org/cygwin.org/pub/cygwinports/release/mdbtools/ 2011/4/28 Dmitry Nikitin <luc...@ma...> > Hi! > > Leonardo, please send me windows ports mdbtools in exe or dll for "just in > case". > Thanks, Dmitry > > On Wed, 27 Apr 2011 16:19:23 +0200 > Leonardo Francesconi <leo...@gm...> wrote: > > > I do have executable files (.exe and .dll) of some (not all) mdbtools > > utilities. > > I tried to compile them with mingW32 and Cygwin, but I failed; luckily I > > found them compiled somewhere in the web, if you need I can link or send > > them to you. > > > > By the way, do you speak Italian Cristiano? > > > > 2011/4/27 Cristiano Sumariva <sum...@gm...> > > > > > I would like to compile mdbtools on windows like a dll to bind it to > PHP as > > > extension. > > > I would like try this on a Eclipse IDE using the gnu C compiler ported > to > > > windows ( mingW32 http://www.mingw.org ). > > > The main reason to me do this is to port a small windows tool to > convert > > > MDB file to DBF Unix on both ways. > > > That is why I using PHP language since I will have interpreters on both > OS. > > > And on Linux side my option is to use this library. > > > This is also why I do not want to use windows readers for the access > file. > > > > > > Unfortunely I do not know how to create change configure scripts but If > > > someone point me the way I can read instructions. > > > Then try run configure under cygwin command line. > > > I downloaded the branch 0.6PRE from CVS into a Eclipse Project. > > > Or I do not know if would be better create an standalone GNUMakefile > for > > > build on windows and just run make command. > > > > > > > > > > ------------------------------------------------------------------------------ > > > WhatsUp Gold - Download Free Network Management Software > > > The most intuitive, comprehensive, and cost-effective network > > > management toolset available today. Delivers lowest initial > > > acquisition cost and overall TCO of any competing solution. > > > http://p.sf.net/sfu/whatsupgold-sd > > > _______________________________________________ > > > mdbtools-dev mailing list > > > mdb...@li... > > > https://lists.sourceforge.net/lists/listinfo/mdbtools-dev > > > > > > > |
From: Dmitry N. <luc...@ma...> - 2011-04-28 06:55:43
|
Hi! Leonardo, please send me windows ports mdbtools in exe or dll for "just in case". Thanks, Dmitry On Wed, 27 Apr 2011 16:19:23 +0200 Leonardo Francesconi <leo...@gm...> wrote: > I do have executable files (.exe and .dll) of some (not all) mdbtools > utilities. > I tried to compile them with mingW32 and Cygwin, but I failed; luckily I > found them compiled somewhere in the web, if you need I can link or send > them to you. > > By the way, do you speak Italian Cristiano? > > 2011/4/27 Cristiano Sumariva <sum...@gm...> > > > I would like to compile mdbtools on windows like a dll to bind it to PHP as > > extension. > > I would like try this on a Eclipse IDE using the gnu C compiler ported to > > windows ( mingW32 http://www.mingw.org ). > > The main reason to me do this is to port a small windows tool to convert > > MDB file to DBF Unix on both ways. > > That is why I using PHP language since I will have interpreters on both OS. > > And on Linux side my option is to use this library. > > This is also why I do not want to use windows readers for the access file. > > > > Unfortunely I do not know how to create change configure scripts but If > > someone point me the way I can read instructions. > > Then try run configure under cygwin command line. > > I downloaded the branch 0.6PRE from CVS into a Eclipse Project. > > Or I do not know if would be better create an standalone GNUMakefile for > > build on windows and just run make command. > > > > > > ------------------------------------------------------------------------------ > > WhatsUp Gold - Download Free Network Management Software > > The most intuitive, comprehensive, and cost-effective network > > management toolset available today. Delivers lowest initial > > acquisition cost and overall TCO of any competing solution. > > http://p.sf.net/sfu/whatsupgold-sd > > _______________________________________________ > > mdbtools-dev mailing list > > mdb...@li... > > https://lists.sourceforge.net/lists/listinfo/mdbtools-dev > > > > |
From: Leonardo F. <leo...@gm...> - 2011-04-27 14:19:35
|
I do have executable files (.exe and .dll) of some (not all) mdbtools utilities. I tried to compile them with mingW32 and Cygwin, but I failed; luckily I found them compiled somewhere in the web, if you need I can link or send them to you. By the way, do you speak Italian Cristiano? 2011/4/27 Cristiano Sumariva <sum...@gm...> > I would like to compile mdbtools on windows like a dll to bind it to PHP as > extension. > I would like try this on a Eclipse IDE using the gnu C compiler ported to > windows ( mingW32 http://www.mingw.org ). > The main reason to me do this is to port a small windows tool to convert > MDB file to DBF Unix on both ways. > That is why I using PHP language since I will have interpreters on both OS. > And on Linux side my option is to use this library. > This is also why I do not want to use windows readers for the access file. > > Unfortunely I do not know how to create change configure scripts but If > someone point me the way I can read instructions. > Then try run configure under cygwin command line. > I downloaded the branch 0.6PRE from CVS into a Eclipse Project. > Or I do not know if would be better create an standalone GNUMakefile for > build on windows and just run make command. > > > ------------------------------------------------------------------------------ > WhatsUp Gold - Download Free Network Management Software > The most intuitive, comprehensive, and cost-effective network > management toolset available today. Delivers lowest initial > acquisition cost and overall TCO of any competing solution. > http://p.sf.net/sfu/whatsupgold-sd > _______________________________________________ > mdbtools-dev mailing list > mdb...@li... > https://lists.sourceforge.net/lists/listinfo/mdbtools-dev > > |
From: Cristiano S. <sum...@gm...> - 2011-04-27 13:37:35
|
I would like to compile mdbtools on windows like a dll to bind it to PHP as extension. I would like try this on a Eclipse IDE using the gnu C compiler ported to windows ( mingW32 http://www.mingw.org ). The main reason to me do this is to port a small windows tool to convert MDB file to DBF Unix on both ways. That is why I using PHP language since I will have interpreters on both OS. And on Linux side my option is to use this library. This is also why I do not want to use windows readers for the access file. Unfortunely I do not know how to create change configure scripts but If someone point me the way I can read instructions. Then try run configure under cygwin command line. I downloaded the branch 0.6PRE from CVS into a Eclipse Project. Or I do not know if would be better create an standalone GNUMakefile for build on windows and just run make command. |
From: Chris C. <cc...@fi...> - 2011-04-11 12:27:56
|
Hi Jakob, On 09/04/11 02:07 AM, Jakob Egger wrote: > Dear Chris, > Are you really sure that you are using the patched version of MDB > Tools? Maybe you have some library issues: it could be that you still > have an old version of libmdb somewhere, and that mdb-export > dynamically links against that old version. Maybe you need to type > "make install" to install the new library after compiling? (Note: I > use my custom build script for libmdb, so I'm not sure how you're > supposed to compile mdb tools) > > for debugging, try "which mdb-export" to make sure you are calling > the newly compiled version of mdb-export. then try > "ldd /usr/bin/mdb-export" to find out against which libmdb it is > linked. Then check the linked "libmdb" file's creation date. The problem was indeed the libraries - I'm using a Debian system at work, and they've split the mdb-tools package into many pieces (mdbtools, mdbtools-dev, libmdbtools, libmdbodbc). I had removed the packaged version of mdbtools but didn't remove libmdbtools. After having cleaned out the packaged library files, all the data files are interpreted correctly. Thanks again! I use Slackware at home and generally don't have to deal with issues like this, since Slackware tends to package everything together (or you just build it yourself anyway). -- Chris Craig Software Developer Fibernetics Corp 605 Boxwood Dr Cambridge ON N3E 1A5 519-489-6700 x 753 |
From: Jakob E. <jab...@gm...> - 2011-04-09 06:13:31
|
1) Sorry, don't know anything about this 2) I think mdb-tables has the command line option "-S" to show "system tables" (those whose names start with "MSys") However, that's not the same as hidden tables in Access. Access also hides some tables that don't start with MSys, but these should always be "visible" in mdb-tables AFAIK. On 07.04.2011, at 06:31, Dale Scott wrote: > Thanks Jakob (and everyone else who replied). I’m making progress using the command line utilities from PHP now and so far so good. All should be good as I just need to periodically synchronize a MySQL database with a medium-size Access database - at least nightly but maybe hourly, and possibly user initiated when it’s necessary to pull immediately from Access to MySQL (mentioning this in case someone can say from experience it will be way too slow to be practical). > > And now just another couple questions…. > > 1) At least on my FreeBSD system, the mdbtools-0.5 utilities are dynamically linked while compiling from the github head gives statically linked utilities. Does anyone know if this is unique to FreeSD, or if it’s just a change in the way mdbtools compiles? (and why?) > > 2) The database I’m reading from has a couple tables “hidden” from Access (or rather, they seem to be “System objects” and have to be specifically unhidden to be visible). Mdb-tables in Mdbtools-0.5 returns all the tables, including the “hidden” ones, but the latest mdb-tables does not return these tables (just all the others). Anyone know why? (I can probably manage without the “hidden” tables, but one of them has username/passwords I was hoping to use to authenticate web users hitting the MySQL database) I can send an example database if anyone wants to take a look. > > Dale > > From: Jakob Egger [mailto:jab...@gm...] > Sent: Sunday, March 27, 2011 2:56 AM > To: Dale Scott > Subject: Re: [mdb-dev] mdbtools with php > > Hi Dale, > > I found it easiest to simply call the command line tools from php (mdb-tables and mdb-export), and parse the data using the CSV functions in PHP. > > However, it only makes sense if you access data a table at a time. If you only need a few records, this method is probably very slow. > > As an example, here's how I read MDB databases from within php: > > <?php > > $file = "NWind.mdb"; > foreach(tablesInFile($file) as $table) { > echo "<h1>".htmlspecialchars($table)."</h1>"; > echo "<table>"; > foreach(rowsInTable($file, $table) as $row) { > echo "<tr>"; > foreach($row as $columnName=>$columnValue) { > echo "<td>".htmlspecialchars($columnValue)."</td>"; > } > echo "/<tr>"; > } > echo "</table>"; > } > > function tablesInFile($file) { > exec("/usr/bin/mdb-tables -1 " . escapeshellarg($file), $tables ); > return $tables; > } > > function rowsInTable($file, $table) { > $csv = popen("/usr/bin/mdb-export -q \\\" -X \\\\ " . escapeshellarg($file) . " " . escapeshellarg($table), "r"); > $header = fgetcsv($csv); > $rows = array(); > while($row=fgetcsv($csv)) { > $rows[] = array_combine($header, $row); > } > return $rows; > } > > ?> > > > Best regards, > Jakob > > > On 26.03.2011, at 21:15, Dale Scott wrote: > > > Hi, how is mdbtools being used with php? I first tried pecl-mdbtools. Now I'm trying ODBC (via unixODBC). Are there other and/or better methods? > > Also, I'm having trouble with either unixODBC or mdbtools segfaulting when I try to open a database, so I'm rebuilding everything from scratch on a new install of FreeBSD-7.4-RELEASE with latest ports to make sure I don't have a problem with wrong versions of libraries or something. If anyone has any suggestions, I'm all ears (it will be tomorrow until I can run the tests again). > > Dale > > > ------------------------------------------------------------------------------ > Enable your software for Intel(R) Active Management Technology to meet the > growing manageability and security demands of your customers. Businesses > are taking advantage of Intel(R) vPro (TM) technology - will your software > be a part of the solution? Download the Intel(R) Manageability Checker > today! http://p.sf.net/sfu/intel-dev2devmar_______________________________________________ > mdbtools-dev mailing list > mdb...@li... > https://lists.sourceforge.net/lists/listinfo/mdbtools-dev > |
From: Jakob E. <jab...@gm...> - 2011-04-09 06:07:18
|
Dear Chris, The problem you are describing looks like the old Numeric problem, where the first two digits after the decimal point are lost. This problem was fixed in January here: https://github.com/brianb/mdbtools/commit/82b28d684547f4619ea022ac1a20d872f1396cee Then there is a second problem, when you have more than a total of 9 digits, or when you have negative numbers. This issue was fixed in March here: https://github.com/brianb/mdbtools/commit/1f3c04990d5d70622c015f2880769bc44257efa4 Are you really sure that you are using the patched version of MDB Tools? Maybe you have some library issues: it could be that you still have an old version of libmdb somewhere, and that mdb-export dynamically links against that old version. Maybe you need to type "make install" to install the new library after compiling? (Note: I use my custom build script for libmdb, so I'm not sure how you're supposed to compile mdb tools) for debugging, try "which mdb-export" to make sure you are calling the newly compiled version of mdb-export. then try "ldd /usr/bin/mdb-export" to find out against which libmdb it is linked. Then check the linked "libmdb" file's creation date. Greetings, Jakob On 08.04.2011, at 22:32, Chris Craig wrote: > Jakob Egger <jabakobob <at> gmail.com> writes: >> Dear friends, >> >> I finally found out how NUMERIC fields are really stored, so let me share this >> with you. > > This is great work Jakob, I was wondering why the numeric fields weren't being > loaded correctly with mdb-tools, I guess they were not fully supported. > > Unfortunately your patch doesn't seem to fix the issue with the MDB files I'm > receiving - In fact I loaded your sample file into Access 2007, made some minor > modifications to the schema (changed scale from 5 to 6, for example), and after > saving, the data was no longer read correctly. > > Here are a few sample files that load correctly in Access 2007 - > "Database200x.mdb" have bits taken from the actual files I've been processing, > "decimals2000.mdb" is the reformatted version of your sample file. Interestingly > Access decided it needed to be 80% larger or so... > > decimals2000.mdb: > https://docs.google.com/leaf? > id=0B41UJ3cF5h0CMGM5YmQ3YWItMDk0Ni00MTE4LTk1NGItNjFlNzZlMjUyNzc5&hl=en > > Database2003.mdb > https://docs.google.com/leaf? > id=0B41UJ3cF5h0COTM2MTU1MzItYTI5Mi00YjUzLWFlMzMtZTIyMDkxNjBkN2Q3&hl=en > > Database2000.mdb > https://docs.google.com/leaf? > id=0B41UJ3cF5h0CMjI2MDM5ZTAtODk1ZS00ODkwLWE1OWEtNDkwYzM3NmFiYTY5&hl=en > > For the last two files the data should be: > ON,0.0055,0.000715,0.433333 > ON,0.0025,0.000325,0.133333 > > Using mdb-export (compiled on debian 64-bit or freebsd 7 on i386) it comes out > as: > ON,0000000000.5500,0000000000.0715,0000000000.3333 > ON,0000000000.2500,0000000000.0325,0000000000.3333 > > Actually now I just took a closer look at your sample file, and it doesn't seem > to be handled properly either... I've double checked the source and it's > definitely the patched version of data.c (mdb_num_to_string has been replaced by > mdb_numeric_to_string, etc). > > I'll take a look at the files and code myself and see what I can glean... > > Thanks! > > > ------------------------------------------------------------------------------ > Xperia(TM) PLAY > It's a major breakthrough. An authentic gaming > smartphone on the nation's most reliable network. > And it wants your games. > http://p.sf.net/sfu/verizon-sfdev > _______________________________________________ > mdbtools-dev mailing list > mdb...@li... > https://lists.sourceforge.net/lists/listinfo/mdbtools-dev |
From: Chris C. <cc...@fi...> - 2011-04-08 20:35:20
|
Jakob Egger <jabakobob <at> gmail.com> writes: > Dear friends, > > I finally found out how NUMERIC fields are really stored, so let me share this > with you. This is great work Jakob, I was wondering why the numeric fields weren't being loaded correctly with mdb-tools, I guess they were not fully supported. Unfortunately your patch doesn't seem to fix the issue with the MDB files I'm receiving - In fact I loaded your sample file into Access 2007, made some minor modifications to the schema (changed scale from 5 to 6, for example), and after saving, the data was no longer read correctly. Here are a few sample files that load correctly in Access 2007 - "Database200x.mdb" have bits taken from the actual files I've been processing, "decimals2000.mdb" is the reformatted version of your sample file. Interestingly Access decided it needed to be 80% larger or so... decimals2000.mdb: https://docs.google.com/leaf? id=0B41UJ3cF5h0CMGM5YmQ3YWItMDk0Ni00MTE4LTk1NGItNjFlNzZlMjUyNzc5&hl=en Database2003.mdb https://docs.google.com/leaf? id=0B41UJ3cF5h0COTM2MTU1MzItYTI5Mi00YjUzLWFlMzMtZTIyMDkxNjBkN2Q3&hl=en Database2000.mdb https://docs.google.com/leaf? id=0B41UJ3cF5h0CMjI2MDM5ZTAtODk1ZS00ODkwLWE1OWEtNDkwYzM3NmFiYTY5&hl=en For the last two files the data should be: ON,0.0055,0.000715,0.433333 ON,0.0025,0.000325,0.133333 Using mdb-export (compiled on debian 64-bit or freebsd 7 on i386) it comes out as: ON,0000000000.5500,0000000000.0715,0000000000.3333 ON,0000000000.2500,0000000000.0325,0000000000.3333 Actually now I just took a closer look at your sample file, and it doesn't seem to be handled properly either... I've double checked the source and it's definitely the patched version of data.c (mdb_num_to_string has been replaced by mdb_numeric_to_string, etc). I'll take a look at the files and code myself and see what I can glean... Thanks! |
From: Dale S. <dal...@sh...> - 2011-04-07 04:31:20
|
Thanks Jakob (and everyone else who replied). I'm making progress using the command line utilities from PHP now and so far so good. All should be good as I just need to periodically synchronize a MySQL database with a medium-size Access database - at least nightly but maybe hourly, and possibly user initiated when it's necessary to pull immediately from Access to MySQL (mentioning this in case someone can say from experience it will be way too slow to be practical). And now just another couple questions.. 1) At least on my FreeBSD system, the mdbtools-0.5 utilities are dynamically linked while compiling from the github head gives statically linked utilities. Does anyone know if this is unique to FreeSD, or if it's just a change in the way mdbtools compiles? (and why?) 2) The database I'm reading from has a couple tables "hidden" from Access (or rather, they seem to be "System objects" and have to be specifically unhidden to be visible). Mdb-tables in Mdbtools-0.5 returns all the tables, including the "hidden" ones, but the latest mdb-tables does not return these tables (just all the others). Anyone know why? (I can probably manage without the "hidden" tables, but one of them has username/passwords I was hoping to use to authenticate web users hitting the MySQL database) I can send an example database if anyone wants to take a look. Dale From: Jakob Egger [mailto:jab...@gm...] Sent: Sunday, March 27, 2011 2:56 AM To: Dale Scott Subject: Re: [mdb-dev] mdbtools with php Hi Dale, I found it easiest to simply call the command line tools from php (mdb-tables and mdb-export), and parse the data using the CSV functions in PHP. However, it only makes sense if you access data a table at a time. If you only need a few records, this method is probably very slow. As an example, here's how I read MDB databases from within php: <?php $file = "NWind.mdb"; foreach(tablesInFile($file) as $table) { echo "<h1>".htmlspecialchars($table)."</h1>"; echo "<table>"; foreach(rowsInTable($file, $table) as $row) { echo "<tr>"; foreach($row as $columnName=>$columnValue) { echo "<td>".htmlspecialchars($columnValue)."</td>"; } echo "/<tr>"; } echo "</table>"; } function tablesInFile($file) { exec("/usr/bin/mdb-tables -1 " . escapeshellarg($file), $tables ); return $tables; } function rowsInTable($file, $table) { $csv = popen("/usr/bin/mdb-export -q \\\ <smb://> " -X \\\\ <smb://> " . escapeshellarg($file) . " " . escapeshellarg($table), "r"); $header = fgetcsv($csv); $rows = array(); while($row=fgetcsv($csv)) { $rows[] = array_combine($header, $row); } return $rows; } ?> Best regards, Jakob On 26.03.2011, at 21:15, Dale Scott wrote: Hi, how is mdbtools being used with php? I first tried pecl-mdbtools. Now I'm trying ODBC (via unixODBC). Are there other and/or better methods? Also, I'm having trouble with either unixODBC or mdbtools segfaulting when I try to open a database, so I'm rebuilding everything from scratch on a new install of FreeBSD-7.4-RELEASE with latest ports to make sure I don't have a problem with wrong versions of libraries or something. If anyone has any suggestions, I'm all ears (it will be tomorrow until I can run the tests again). Dale ---------------------------------------------------------------------------- -- Enable your software for Intel(R) Active Management Technology to meet the growing manageability and security demands of your customers. Businesses are taking advantage of Intel(R) vPro (TM) technology - will your software be a part of the solution? Download the Intel(R) Manageability Checker today! http://p.sf.net/sfu/intel-dev2devmar________________________________________ _______ mdbtools-dev mailing list mdb...@li... https://lists.sourceforge.net/lists/listinfo/mdbtools-dev |
From: Alex M. <al...@no...> - 2011-03-27 20:14:37
|
On 26.03.2011 21:15, Dale Scott wrote: > Hi, how is mdbtools being used with php? I first tried pecl-mdbtools. > Now I'm trying ODBC (via unixODBC). Are there other and/or better methods? > > Also, I'm having trouble with either unixODBC or mdbtools segfaulting > when I try to open a database, so I'm rebuilding everything from scratch > on a new install of FreeBSD-7.4-RELEASE with latest ports to make sure I > don't have a problem with wrong versions of libraries or something. If > anyone has any suggestions, I'm all ears (it will be tomorrow until I > can run the tests again). Hello Dale, i'm using PECL mdbtools on Linux (both versions 0.5.x and 1.0.0). It works pretty well, except that you cannot open more than one table at a time, and that there are (or have been) issues with long MEMO fields in databases. I'm using code like this (first script, still used for debugging): <? dl('mdbtools.so'); $dbh = mdb_open("../uploads/test.mdb"); $t = mdb_table_open($dbh,'TESTTABLE'); $count = 0; while ($r = mdb_fetch_assoc($t)) { $count++; print_r($r); } print "FETCHED $count \n"; mdb_table_close($t); mdb_close($dbh); ?> hope that helps, Alex |
From: Jakob E. <jab...@gm...> - 2011-03-27 08:56:35
|
Hi Dale, I found it easiest to simply call the command line tools from php (mdb-tables and mdb-export), and parse the data using the CSV functions in PHP. However, it only makes sense if you access data a table at a time. If you only need a few records, this method is probably very slow. As an example, here's how I read MDB databases from within php: <?php $file = "NWind.mdb"; foreach(tablesInFile($file) as $table) { echo "<h1>".htmlspecialchars($table)."</h1>"; echo "<table>"; foreach(rowsInTable($file, $table) as $row) { echo "<tr>"; foreach($row as $columnName=>$columnValue) { echo "<td>".htmlspecialchars($columnValue)."</td>"; } echo "/<tr>"; } echo "</table>"; } function tablesInFile($file) { exec("/usr/bin/mdb-tables -1 " . escapeshellarg($file), $tables ); return $tables; } function rowsInTable($file, $table) { $csv = popen("/usr/bin/mdb-export -q \\\" -X \\\\ " . escapeshellarg($file) . " " . escapeshellarg($table), "r"); $header = fgetcsv($csv); $rows = array(); while($row=fgetcsv($csv)) { $rows[] = array_combine($header, $row); } return $rows; } ?> Best regards, Jakob On 26.03.2011, at 21:15, Dale Scott wrote: > Hi, how is mdbtools being used with php? I first tried pecl-mdbtools. Now I'm trying ODBC (via unixODBC). Are there other and/or better methods? > > Also, I'm having trouble with either unixODBC or mdbtools segfaulting when I try to open a database, so I'm rebuilding everything from scratch on a new install of FreeBSD-7.4-RELEASE with latest ports to make sure I don't have a problem with wrong versions of libraries or something. If anyone has any suggestions, I'm all ears (it will be tomorrow until I can run the tests again). > > Dale > > > ------------------------------------------------------------------------------ > Enable your software for Intel(R) Active Management Technology to meet the > growing manageability and security demands of your customers. Businesses > are taking advantage of Intel(R) vPro (TM) technology - will your software > be a part of the solution? Download the Intel(R) Manageability Checker > today! http://p.sf.net/sfu/intel-dev2devmar_______________________________________________ > mdbtools-dev mailing list > mdb...@li... > https://lists.sourceforge.net/lists/listinfo/mdbtools-dev |
From: Dale S. <dal...@sh...> - 2011-03-26 20:15:37
|
Hi, how is mdbtools being used with php? I first tried pecl-mdbtools. Now I'm trying ODBC (via unixODBC). Are there other and/or better methods? Also, I'm having trouble with either unixODBC or mdbtools segfaulting when I try to open a database, so I'm rebuilding everything from scratch on a new install of FreeBSD-7.4-RELEASE with latest ports to make sure I don't have a problem with wrong versions of libraries or something. If anyone has any suggestions, I'm all ears (it will be tomorrow until I can run the tests again). Dale |
From: Jakob E. <jab...@gm...> - 2011-03-26 16:07:06
|
Okay this is the patch for the memory overflow issue related to memo fields. There where two issues: 1) an invalid encoding could lead to an infinite loop that would after some time cause an invalid write access 2) the last character of a buffer was set to zero, but actually the character right after the buffer was set. This might not be a problem if MDB_BIND_SIZE is not a power of two, because the allocator might actually allocate more memory than was requested. One issue still remains: Memo fields can contain up to 64K characters, so MDB_BIND_SIZE should be at least 64K*3+1 (an UCS2 character will need up to 3 bytes in UTF-8). However, this will drastically increase memory usage for tables with many columns. In the future, we should rewrite all those parts so that we allocate the memory lazily when reading a memo field, and allocate only as much as we actually need. In some cases, Memo fields could contain more that 64K characters, but let's not worry about that right now. At any rate, here's the patch (I just found out it was already on my github page anyways...) From d8bac7fd263b47b7e9eb146da3ee2ffbcf7f3307 Mon Sep 17 00:00:00 2001 From: jakob <jab...@gm...> Date: Thu, 17 Mar 2011 20:11:06 +0100 Subject: [PATCH] Fixed a buffer overflow with long MEMO fields --- include/mdbtools.h | 2 +- src/libmdb/data.c | 2 +- src/libmdb/iconv.c | 21 ++++++++++++--------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/include/mdbtools.h b/include/mdbtools.h index 8286d77..98da37d 100644 --- a/include/mdbtools.h +++ b/include/mdbtools.h @@ -46,7 +46,7 @@ #define MDB_MAX_IDX_COLS 10 #define MDB_CATALOG_PG 18 #define MDB_MEMO_OVERHEAD 12 -#define MDB_BIND_SIZE 16384 +#define MDB_BIND_SIZE 200000 enum { MDB_PAGE_DB = 0, diff --git a/src/libmdb/data.c b/src/libmdb/data.c index 4109b5a..0e2bb0e 100644 --- a/src/libmdb/data.c +++ b/src/libmdb/data.c @@ -675,7 +675,7 @@ static char *mdb_memo_to_string(MdbHandle *mdb, int start, int size) gint32 row_start, pg_row; size_t len; void *buf, *pg_buf = mdb->pg_buf; - char *text = (char *) g_malloc(MDB_BIND_SIZE); + char *text = (char *) g_malloc(MDB_BIND_SIZE+1); if (size<MDB_MEMO_OVERHEAD) { strcpy(text, ""); diff --git a/src/libmdb/iconv.c b/src/libmdb/iconv.c index d58be97..2f449a3 100644 --- a/src/libmdb/iconv.c +++ b/src/libmdb/iconv.c @@ -65,18 +65,21 @@ mdb_unicode2ascii(MdbHandle *mdb, char *src, size_t slen, char *dest, size_t dle in_ptr = (tmp) ? tmp : src; out_ptr = dest; len_in = (tmp) ? tlen : slen; - len_out = dlen; + len_out = dlen-1; #if HAVE_ICONV //printf("1 len_in %d len_out %d\n",len_in, len_out); while (1) { iconv(mdb->iconv_in, &in_ptr, &len_in, &out_ptr, &len_out); - if ((!len_in) || (errno == E2BIG)) break; - /* Don't bail if impossible conversion is encountered */ - in_ptr += (IS_JET4(mdb)) ? 2 : 1; - len_in -= (IS_JET4(mdb)) ? 2 : 1; - *out_ptr++ = '?'; - len_out--; + /* retry if there still are input bytes and output bytes left */ + if (len_out && len_in && (errno==EILSEQ || errno==EINVAL)) { + in_ptr += (IS_JET4(mdb)) ? 2 : 1; + len_in -= (IS_JET4(mdb)) ? 2 : 1; + *out_ptr++ = '?'; + len_out--; + } else { + break; + } } //printf("2 len_in %d len_out %d\n",len_in, len_out); dlen -= len_out; @@ -84,7 +87,7 @@ mdb_unicode2ascii(MdbHandle *mdb, char *src, size_t slen, char *dest, size_t dle if (IS_JET3(mdb)) { size_t copy_len = len_in; if (copy_len > dlen) - copy_len = dlen; + copy_len = dlen-1; strncpy(out_ptr, in_ptr, copy_len); dlen = copy_len; } else { @@ -97,7 +100,7 @@ mdb_unicode2ascii(MdbHandle *mdb, char *src, size_t slen, char *dest, size_t dle #endif if (tmp) g_free(tmp); - dest[dlen]='\0'; + dest[dlen-1]='\0'; //printf("dest %s\n",dest); return dlen; } -- 1.7.2.3+GitX On 26.03.2011, at 15:01, Alex Mayrhofer wrote: > On 25.03.2011 18:57, Jakob Egger wrote: >> There's a memory overflow bug in the Memo-to-string function (character set conversion) somewhere, I fixed it but I still need to prepare it for github. Maybe I'll have time to sort through my changes on the weekend. Does your database by any chance contain large Memo fields? One workaround could be to compile MDB Tools with a larger bind size (I think the default is 10000, try using 200000). The bind size is declared in mdbtools.h, I think. > > Jakob, > > thanks for that hint. You're right, the database contains some large > memo fields. After increasing the bind size and rebuilding mdb-export > (as well as my PHP script making use of the mdbtools binding) runs > through - great! > > However, i understand that this is a temporary fix? Would be great to > get access to the patch you mentioned... > >> I'd be happy to test your mdb file if you send it to me. > > I'll send it to you in private mail. > > thanks! > > Alex > > ------------------------------------------------------------------------------ > Enable your software for Intel(R) Active Management Technology to meet the > growing manageability and security demands of your customers. Businesses > are taking advantage of Intel(R) vPro (TM) technology - will your software > be a part of the solution? Download the Intel(R) Manageability Checker > today! http://p.sf.net/sfu/intel-dev2devmar > _______________________________________________ > mdbtools-dev mailing list > mdb...@li... > https://lists.sourceforge.net/lists/listinfo/mdbtools-dev |