From: Nirgal V. <con...@ni...> - 2011-03-06 12:10:51
|
On Friday 04 March 2011 18:29:22 Dmitry Nikitin wrote: > Hi, Nirgal Vourgère! > You job is greate. Thanks. > I found your git-repository and compiled worked and new functionality mdbtools. I don't have a git repository. Brian Burns is the author. The latest repository is located at https://github.com/brianb/mdbtools.git I occasionaly update some unoffical debian packages at http://www.nirgal.com/mdbtools/ > But when I would build the RPM package for my distr (Mandriva 2010), the build CFLAGS of: > CFLAGS="-O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -DHAVE_ICONV -DSQL" > give the errors in sources: > > gcc -DHAVE_CONFIG_H -I. -I../../include -I../../include -DORBIT2=1 -pthread -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/libglade-2.0 -I/usr/include/libxml2 -I/usr/include/libgnomeui-2.0 -I/usr/include/libart-2.0 -I/usr/include/gconf/2 -I/usr/include/gnome-keyring-1 -I/usr/include/libgnome-2.0 -I/usr/include/libbonoboui-2.0 -I/usr/include/libgnomecanvas-2.0 -I/usr/include/gnome-vfs-2.0 -I/usr/lib64/gnome-vfs-2.0/include -I/usr/include/orbit-2.0 -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/include/libbonobo-2.0 -I/usr/include/bonobo-activation-2.0 -I/usr/include/gail-1.0 -DDATADIR="\"/usr/local/share\"" -DGMDB_ICONDIR="\"/usr/local/share/gmdb/glade/\"" -DGMDB_GLADEDIR="\"/usr/local/share/gmdb/glade/\"" -O2 -g -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -DHAVE_ICONV -DSQL -DHAVE_ICONV -DSQL -MT main2.o -MD -MP -MF .deps/main2.Tpo -c -o main2.o main2.c > main2.c: In function ‘gmdb_about_cb’: > main2.c:75: warning: passing argument 1 of ‘gtk_show_about_dialog’ from incompatible pointer type > /usr/include/gtk-2.0/gtk/gtkaboutdialog.h:67: note: expected ‘struct GtkWindow *’ but argument is of type ‘struct GtkWidget *’ > main2.c: In function ‘gmdb_help_cb’: > main2.c:105: error: format not a string literal and no format arguments > make[3]: *** [main2.o] Error 1 > > This errors take the CFLAGS="-Werror=format-security", without this flags compiled as is. I think it's not the proper way to fix that. It's a very interresting warning/error message my compiler doesn't show. A pity. I think it's the same problem than using "printf(message)" when you have no idea whether the message might contain "%". You should use puts(message) or printf("%s", message) in these cases. Attached is a patch. Does it help? > Also give errors in build mdbtools with unixODBC: > Making all in odbc > make[2]: Вхожу у каталог "/home/luckas/rpm/BUILD/mdbtools-0.6pre1.patched/src/odbc" > /bin/sh ../../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../../include -I../../include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include -O2 -g -pipe -Wformat -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -DHAVE_ICONV -DSQL -DHAVE_ICONV -DSQL -DUNIXODBC -MT odbc.lo -MD -MP -MF .deps/odbc.Tpo -c -o odbc.lo odbc.c > libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../../include -I../../include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include -O2 -g -pipe -Wformat -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -DHAVE_ICONV -DSQL -DHAVE_ICONV -DSQL -DUNIXODBC -MT odbc.lo -MD -MP -MF .deps/odbc.Tpo -c odbc.c -fPIC -DPIC -o .libs/odbc.o > odbc.c:223: error: expected declaration specifiers or ‘...’ before ‘SQLROWOFFSET’ > odbc.c:224: error: expected declaration specifiers or ‘...’ before ‘SQLROWSETSIZE’ > odbc.c:220: error: conflicting types for ‘SQLExtendedFetch’ > /usr/include/sqlext.h:1857: note: previous declaration of ‘SQLExtendedFetch’ was here > odbc.c: In function ‘SQLExtendedFetch’: > odbc.c:236: error: ‘pcrow’ undeclared (first use in this function) > odbc.c:236: error: (Each undeclared identifier is reported only once > odbc.c:236: error: for each function it appears in.) > odbc.c: At top level: > odbc.c:1485: error: expected declaration specifiers or ‘...’ before ‘SQLROWCOUNT’ > odbc.c:1482: error: conflicting types for ‘SQLSetStmtOption’ > /usr/include/sql.h:796: note: previous declaration of ‘SQLSetStmtOption’ was here > make[2]: *** [odbc.lo] Error 1 > > My configurations: > Mandriva 2010.0, x86_64, mdbtools-git-2011-02-28, lib64gtk+2.0_0-devel-2.18.9-1.2mdv2010.0.x86_64, lib64unixODBC-devel-2.2.14-8mdv2010.0.x86_64 Attached is another fix for that one. > Also I would like propouse a some thinks: > 1) need to fix maximum varchar (255) for mysql I read limit is 65535 since mysql 5.0.3. http://dev.mysql.com/doc/refman/5.0/en/char.html > 2) need to fix the procedure of sanitize (-S) the dump of MDB files. You already changes dates to utf-8 codepage, and the more "dummy" > MS windows users and "admins" used the non ASCII symbols for names of tables and columns in the MDB-files, like as cyrilic :( > May be the procedure of sanitize can replace the symbols in names as transliterate (need check the match of names and length?) > Now, the replaced only spaces in names as "_", and .... the other non-english symbols taking "____________________________" as name of table. Sanitize is really buggy. I would recommand removing it from the code. All backends should now handle the non ascii characters in table/colum names correctly, quoting them. Do you really need -S? If using Jet3, don't forget to set MDB_JET3_CHARSET as described in mdb-schema manual and HACKING file. |