From 2c74bbef1c8dabf8d80f1221d5764c76786349d4 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Tue, 31 Aug 2010 16:20:51 +0200 Subject: [PATCH] Initial commit of ProzGUI 2.0.5beta --- ABOUT-NLS | 296 + AUTHORS | 1 + COPYING | 340 + CREDITS | 18 + CREDITS-old-proz | 118 + CVS/Entries | 23 + CVS/Repository | 1 + CVS/Root | 1 + ChangeLog | 229 + INSTALL | 182 + Makefile.am | 1 + Makefile.in | 562 ++ NEWS | 1 + README | 119 + TODO | 37 + acconfig.h | 26 + acinclude.m4 | 666 ++ aclocal.m4 | 5099 ++++++++++ config.guess | 1363 +++ config.h.in | 263 + config.sub | 1366 +++ configure | 15696 ++++++++++++++++++++++++++++++ configure.in | 157 + depcomp | 423 + docs/CVS/Entries | 3 + docs/CVS/Repository | 1 + docs/CVS/Root | 1 + docs/FAQ | 264 + docs/Makefile | 0 install-sh | 251 + intl/CVS/Entries | 33 + intl/CVS/Repository | 1 + intl/CVS/Root | 1 + intl/ChangeLog | 1746 ++++ intl/Makefile.in | 312 + intl/VERSION | 1 + intl/bindtextdom.c | 368 + intl/config.charset | 438 + intl/dcgettext.c | 57 + intl/dcigettext.c | 1257 +++ intl/dcngettext.c | 59 + intl/dgettext.c | 58 + intl/dngettext.c | 60 + intl/explodename.c | 191 + intl/finddomain.c | 197 + intl/gettext.c | 63 + intl/gettext.h | 101 + intl/gettextP.h | 251 + intl/hash-string.h | 58 + intl/intl-compat.c | 165 + intl/l10nflist.c | 404 + intl/libgettext.h | 48 + intl/libgnuintl.h | 127 + intl/libintl.glibc | 116 + intl/loadinfo.h | 108 + intl/loadmsgcat.c | 566 ++ intl/localcharset.c | 271 + intl/locale.alias | 77 + intl/localealias.c | 403 + intl/ngettext.c | 67 + intl/plural.c | 1325 +++ intl/plural.y | 412 + intl/po2tbl.sed | 0 intl/ref-add.sin | 31 + intl/ref-del.sin | 26 + intl/textdomain.c | 141 + libprozilla/ABOUT-NLS | 226 + libprozilla/AUTHORS | 21 + libprozilla/COPYING | 340 + libprozilla/CREDITS | 0 libprozilla/CVS/Entries | 31 + libprozilla/CVS/Repository | 1 + libprozilla/CVS/Root | 1 + libprozilla/ChangeLog | 964 ++ libprozilla/INSTALL | 182 + libprozilla/Makefile.am | 7 + libprozilla/Makefile.in | 555 ++ libprozilla/NEWS | 4 + libprozilla/README | 62 + libprozilla/TODO | 29 + libprozilla/acconfig.h | 25 + libprozilla/acinclude.m4 | 666 ++ libprozilla/aclocal.m4 | 5207 ++++++++++ libprozilla/config.guess | 1363 +++ libprozilla/config.h.in | 327 + libprozilla/config.sub | 1470 +++ libprozilla/configure | 13925 ++++++++++++++++++++++++++ libprozilla/configure.in | 152 + libprozilla/depcomp | 423 + libprozilla/docs/CVS/Entries | 4 + libprozilla/docs/CVS/Repository | 1 + libprozilla/docs/CVS/Root | 1 + libprozilla/docs/HACKING | 198 + libprozilla/docs/Makefile.am | 6 + libprozilla/docs/Makefile.in | 294 + libprozilla/install-sh | 251 + libprozilla/intl/CVS/Entries | 34 + libprozilla/intl/CVS/Repository | 1 + libprozilla/intl/CVS/Root | 1 + libprozilla/intl/ChangeLog | 1746 ++++ libprozilla/intl/Makefile.in | 312 + libprozilla/intl/VERSION | 1 + libprozilla/intl/bindtextdom.c | 368 + libprozilla/intl/config.charset | 438 + libprozilla/intl/dcgettext.c | 57 + libprozilla/intl/dcigettext.c | 1257 +++ libprozilla/intl/dcngettext.c | 59 + libprozilla/intl/dgettext.c | 58 + libprozilla/intl/dngettext.c | 60 + libprozilla/intl/explodename.c | 191 + libprozilla/intl/finddomain.c | 197 + libprozilla/intl/gettext.c | 63 + libprozilla/intl/gettext.h | 101 + libprozilla/intl/gettextP.h | 251 + libprozilla/intl/hash-string.h | 58 + libprozilla/intl/intl-compat.c | 165 + libprozilla/intl/l10nflist.c | 404 + libprozilla/intl/libgettext.h | 48 + libprozilla/intl/libgnuintl.h | 127 + libprozilla/intl/libintl.glibc | 116 + libprozilla/intl/loadinfo.h | 108 + libprozilla/intl/loadmsgcat.c | 566 ++ libprozilla/intl/localcharset.c | 271 + libprozilla/intl/locale.alias | 77 + libprozilla/intl/localealias.c | 403 + libprozilla/intl/ngettext.c | 67 + libprozilla/intl/plural.c | 1325 +++ libprozilla/intl/plural.y | 412 + libprozilla/intl/po2tbl.sed | 0 libprozilla/intl/ref-add.sin | 31 + libprozilla/intl/ref-del.sin | 26 + libprozilla/intl/textdomain.c | 141 + libprozilla/libtool.m4 | 3704 +++++++ libprozilla/ltdl.m4 | 395 + libprozilla/ltmain.sh | 5062 ++++++++++ libprozilla/man/CVS/Entries | 1 + libprozilla/man/CVS/Repository | 1 + libprozilla/man/CVS/Root | 1 + libprozilla/missing | 336 + libprozilla/mkinstalldirs | 40 + libprozilla/po/CVS/Entries | 15 + libprozilla/po/CVS/Repository | 1 + libprozilla/po/CVS/Root | 1 + libprozilla/po/ChangeLog | 4 + libprozilla/po/Makefile.in.in | 248 + libprozilla/po/POTFILES.in | 15 + libprozilla/po/cat-id-tbl.c | 739 ++ libprozilla/po/fr.gmo | Bin 0 -> 16040 bytes libprozilla/po/fr.po | 787 ++ libprozilla/po/it.gmo | Bin 0 -> 16667 bytes libprozilla/po/it.po | 793 ++ libprozilla/po/libprozilla.pot | 739 ++ libprozilla/po/nl.gmo | Bin 0 -> 15269 bytes libprozilla/po/nl.po | 771 ++ libprozilla/po/pt_BR.gmo | Bin 0 -> 15503 bytes libprozilla/po/pt_BR.po | 776 ++ libprozilla/po/ro.gmo | Bin 0 -> 15236 bytes libprozilla/po/ro.po | 775 ++ libprozilla/po/stamp-cat-id | 1 + libprozilla/src/CVS/Entries | 39 + libprozilla/src/CVS/Repository | 1 + libprozilla/src/CVS/Root | 1 + libprozilla/src/Makefile.am | 40 + libprozilla/src/Makefile.in | 525 + libprozilla/src/common.h | 170 + libprozilla/src/connect.c | 337 + libprozilla/src/connect.h | 57 + libprozilla/src/connection.c | 710 ++ libprozilla/src/connection.h | 63 + libprozilla/src/debug.c | 113 + libprozilla/src/debug.h | 33 + libprozilla/src/download.c | 2213 +++++ libprozilla/src/download.h | 51 + libprozilla/src/ftp-retr.c | 338 + libprozilla/src/ftp-retr.h | 40 + libprozilla/src/ftp.c | 1194 +++ libprozilla/src/ftp.h | 77 + libprozilla/src/ftpparse.c | 238 + libprozilla/src/ftpparse.h | 52 + libprozilla/src/ftpsearch.c | 1104 +++ libprozilla/src/ftpsearch.h | 29 + libprozilla/src/getopt.c | 1156 +++ libprozilla/src/getopt.h | 142 + libprozilla/src/http-retr.c | 526 + libprozilla/src/http-retr.h | 39 + libprozilla/src/http.c | 899 ++ libprozilla/src/http.h | 60 + libprozilla/src/logfile.c | 331 + libprozilla/src/logfile.h | 41 + libprozilla/src/main.c | 227 + libprozilla/src/misc.c | 527 + libprozilla/src/misc.h | 50 + libprozilla/src/netrc.c | 293 + libprozilla/src/netrc.h | 66 + libprozilla/src/ping.c | 318 + libprozilla/src/ping.h | 31 + libprozilla/src/prozilla.h | 569 ++ libprozilla/src/test.c | 70 + libprozilla/src/url.c | 1138 +++ libprozilla/src/url.h | 74 + libprozilla/stamp-h | 1 + libprozilla/stamp-h.in | 1 + ltdl.m4 | 395 + ltmain.sh | 5062 ++++++++++ man/Makefile.am | 2 + man/Makefile.in | 352 + man/prozgui.1 | 105 + missing | 336 + mkinstalldirs | 40 + po/CVS/Entries | 9 + po/CVS/Repository | 1 + po/CVS/Root | 1 + po/ChangeLog | 4 + po/Makefile.in.in | 248 + po/POTFILES.in | 7 + po/cat-id-tbl.c | 567 ++ po/fr.gmo | Bin 0 -> 10156 bytes po/fr.po | 523 + po/fr.po~ | 523 + po/it.gmo | Bin 0 -> 10080 bytes po/it.po | 498 + po/it.po~ | 498 + po/nl.gmo | Bin 0 -> 3781 bytes po/nl.po | 422 + po/nl.po~ | 422 + po/prozgui.pot | 567 ++ po/pt_BR.gmo | Bin 0 -> 9320 bytes po/pt_BR.po | 504 + po/pt_BR.po~ | 504 + po/ro.gmo | Bin 0 -> 7931 bytes po/ro.po | 445 + po/ro.po~ | 445 + po/stamp-cat-id | 1 + prozgui-static-rpm.spec | 130 + prozgui.spec | 95 + src/BigProZilla01.xpm | 3496 +++++++ src/CVS/Entries | 24 + src/CVS/Repository | 1 + src/CVS/Root | 1 + src/Fl_Progress.H | 68 + src/Fl_Progress.cxx | 121 + src/Fl_ProgressBox.H | 30 + src/Fl_ProgressBox.cxx | 65 + src/Makefile.am | 15 + src/Makefile.in | 558 ++ src/dl_win.cxx | 273 + src/dl_win.fl | 288 + src/dl_win.h | 102 + src/download_win.cpp | 953 ++ src/download_win.h | 111 + src/ftps_win.cxx | 46 + src/ftps_win.fl | 52 + src/ftps_win.h | 23 + src/ftpsearch_win.cpp | 235 + src/ftpsearch_win.h | 67 + src/getopt.c | 1156 +++ src/getopt.h | 142 + src/images/BigProZilla01.xpm | 3496 +++++++ src/images/CVS/Entries | 4 + src/images/CVS/Repository | 1 + src/images/CVS/Root | 1 + src/images/Pz12.xpm | 225 + src/images/Pzdlwin.xpm | 308 + src/images/pause.xpm | 25 + src/images/play.xpm | 27 + src/init.cpp | 179 + src/init.h | 27 + src/main.cpp | 508 + src/main.h | 67 + src/options.cpp | 259 + src/options.h | 9 + src/prefs.cpp | 532 + src/prefs.h | 23 + src/savefile.cpp | 90 + src/savefile.h | 10 + src/we.cxx | 4682 +++++++++ src/we.fl | 400 + src/we.h | 67 + stamp-h | 1 + stamp-h.in | 1 + 280 files changed, 133987 insertions(+) create mode 100644 ABOUT-NLS create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 CREDITS create mode 100644 CREDITS-old-proz create mode 100644 CVS/Entries create mode 100644 CVS/Repository create mode 100644 CVS/Root create mode 100644 ChangeLog create mode 100644 INSTALL create mode 100644 Makefile.am create mode 100644 Makefile.in create mode 100644 NEWS create mode 100644 README create mode 100644 TODO create mode 100644 acconfig.h create mode 100644 acinclude.m4 create mode 100644 aclocal.m4 create mode 100755 config.guess create mode 100644 config.h.in create mode 100755 config.sub create mode 100755 configure create mode 100644 configure.in create mode 100755 depcomp create mode 100644 docs/CVS/Entries create mode 100644 docs/CVS/Repository create mode 100644 docs/CVS/Root create mode 100644 docs/FAQ create mode 100644 docs/Makefile create mode 100755 install-sh create mode 100644 intl/CVS/Entries create mode 100644 intl/CVS/Repository create mode 100644 intl/CVS/Root create mode 100644 intl/ChangeLog create mode 100644 intl/Makefile.in create mode 100644 intl/VERSION create mode 100644 intl/bindtextdom.c create mode 100755 intl/config.charset create mode 100644 intl/dcgettext.c create mode 100644 intl/dcigettext.c create mode 100644 intl/dcngettext.c create mode 100644 intl/dgettext.c create mode 100644 intl/dngettext.c create mode 100644 intl/explodename.c create mode 100644 intl/finddomain.c create mode 100644 intl/gettext.c create mode 100644 intl/gettext.h create mode 100644 intl/gettextP.h create mode 100644 intl/hash-string.h create mode 100644 intl/intl-compat.c create mode 100644 intl/l10nflist.c create mode 100644 intl/libgettext.h create mode 100644 intl/libgnuintl.h create mode 100644 intl/libintl.glibc create mode 100644 intl/loadinfo.h create mode 100644 intl/loadmsgcat.c create mode 100644 intl/localcharset.c create mode 100644 intl/locale.alias create mode 100644 intl/localealias.c create mode 100644 intl/ngettext.c create mode 100644 intl/plural.c create mode 100644 intl/plural.y create mode 100644 intl/po2tbl.sed create mode 100644 intl/ref-add.sin create mode 100644 intl/ref-del.sin create mode 100644 intl/textdomain.c create mode 100644 libprozilla/ABOUT-NLS create mode 100644 libprozilla/AUTHORS create mode 100644 libprozilla/COPYING create mode 100644 libprozilla/CREDITS create mode 100644 libprozilla/CVS/Entries create mode 100644 libprozilla/CVS/Repository create mode 100644 libprozilla/CVS/Root create mode 100644 libprozilla/ChangeLog create mode 100644 libprozilla/INSTALL create mode 100644 libprozilla/Makefile.am create mode 100644 libprozilla/Makefile.in create mode 100644 libprozilla/NEWS create mode 100644 libprozilla/README create mode 100644 libprozilla/TODO create mode 100644 libprozilla/acconfig.h create mode 100644 libprozilla/acinclude.m4 create mode 100644 libprozilla/aclocal.m4 create mode 100755 libprozilla/config.guess create mode 100644 libprozilla/config.h.in create mode 100755 libprozilla/config.sub create mode 100755 libprozilla/configure create mode 100644 libprozilla/configure.in create mode 100755 libprozilla/depcomp create mode 100644 libprozilla/docs/CVS/Entries create mode 100644 libprozilla/docs/CVS/Repository create mode 100644 libprozilla/docs/CVS/Root create mode 100644 libprozilla/docs/HACKING create mode 100644 libprozilla/docs/Makefile.am create mode 100644 libprozilla/docs/Makefile.in create mode 100755 libprozilla/install-sh create mode 100644 libprozilla/intl/CVS/Entries create mode 100644 libprozilla/intl/CVS/Repository create mode 100644 libprozilla/intl/CVS/Root create mode 100644 libprozilla/intl/ChangeLog create mode 100644 libprozilla/intl/Makefile.in create mode 100644 libprozilla/intl/VERSION create mode 100644 libprozilla/intl/bindtextdom.c create mode 100755 libprozilla/intl/config.charset create mode 100644 libprozilla/intl/dcgettext.c create mode 100644 libprozilla/intl/dcigettext.c create mode 100644 libprozilla/intl/dcngettext.c create mode 100644 libprozilla/intl/dgettext.c create mode 100644 libprozilla/intl/dngettext.c create mode 100644 libprozilla/intl/explodename.c create mode 100644 libprozilla/intl/finddomain.c create mode 100644 libprozilla/intl/gettext.c create mode 100644 libprozilla/intl/gettext.h create mode 100644 libprozilla/intl/gettextP.h create mode 100644 libprozilla/intl/hash-string.h create mode 100644 libprozilla/intl/intl-compat.c create mode 100644 libprozilla/intl/l10nflist.c create mode 100644 libprozilla/intl/libgettext.h create mode 100644 libprozilla/intl/libgnuintl.h create mode 100644 libprozilla/intl/libintl.glibc create mode 100644 libprozilla/intl/loadinfo.h create mode 100644 libprozilla/intl/loadmsgcat.c create mode 100644 libprozilla/intl/localcharset.c create mode 100644 libprozilla/intl/locale.alias create mode 100644 libprozilla/intl/localealias.c create mode 100644 libprozilla/intl/ngettext.c create mode 100644 libprozilla/intl/plural.c create mode 100644 libprozilla/intl/plural.y create mode 100644 libprozilla/intl/po2tbl.sed create mode 100644 libprozilla/intl/ref-add.sin create mode 100644 libprozilla/intl/ref-del.sin create mode 100644 libprozilla/intl/textdomain.c create mode 100644 libprozilla/libtool.m4 create mode 100644 libprozilla/ltdl.m4 create mode 100644 libprozilla/ltmain.sh create mode 100644 libprozilla/man/CVS/Entries create mode 100644 libprozilla/man/CVS/Repository create mode 100644 libprozilla/man/CVS/Root create mode 100755 libprozilla/missing create mode 100755 libprozilla/mkinstalldirs create mode 100644 libprozilla/po/CVS/Entries create mode 100644 libprozilla/po/CVS/Repository create mode 100644 libprozilla/po/CVS/Root create mode 100644 libprozilla/po/ChangeLog create mode 100644 libprozilla/po/Makefile.in.in create mode 100644 libprozilla/po/POTFILES.in create mode 100644 libprozilla/po/cat-id-tbl.c create mode 100644 libprozilla/po/fr.gmo create mode 100644 libprozilla/po/fr.po create mode 100644 libprozilla/po/it.gmo create mode 100644 libprozilla/po/it.po create mode 100644 libprozilla/po/libprozilla.pot create mode 100644 libprozilla/po/nl.gmo create mode 100644 libprozilla/po/nl.po create mode 100644 libprozilla/po/pt_BR.gmo create mode 100644 libprozilla/po/pt_BR.po create mode 100644 libprozilla/po/ro.gmo create mode 100644 libprozilla/po/ro.po create mode 100644 libprozilla/po/stamp-cat-id create mode 100644 libprozilla/src/CVS/Entries create mode 100644 libprozilla/src/CVS/Repository create mode 100644 libprozilla/src/CVS/Root create mode 100644 libprozilla/src/Makefile.am create mode 100644 libprozilla/src/Makefile.in create mode 100644 libprozilla/src/common.h create mode 100644 libprozilla/src/connect.c create mode 100644 libprozilla/src/connect.h create mode 100644 libprozilla/src/connection.c create mode 100644 libprozilla/src/connection.h create mode 100644 libprozilla/src/debug.c create mode 100644 libprozilla/src/debug.h create mode 100644 libprozilla/src/download.c create mode 100644 libprozilla/src/download.h create mode 100644 libprozilla/src/ftp-retr.c create mode 100644 libprozilla/src/ftp-retr.h create mode 100644 libprozilla/src/ftp.c create mode 100644 libprozilla/src/ftp.h create mode 100644 libprozilla/src/ftpparse.c create mode 100644 libprozilla/src/ftpparse.h create mode 100644 libprozilla/src/ftpsearch.c create mode 100644 libprozilla/src/ftpsearch.h create mode 100644 libprozilla/src/getopt.c create mode 100644 libprozilla/src/getopt.h create mode 100644 libprozilla/src/http-retr.c create mode 100644 libprozilla/src/http-retr.h create mode 100644 libprozilla/src/http.c create mode 100644 libprozilla/src/http.h create mode 100644 libprozilla/src/logfile.c create mode 100644 libprozilla/src/logfile.h create mode 100644 libprozilla/src/main.c create mode 100644 libprozilla/src/misc.c create mode 100644 libprozilla/src/misc.h create mode 100644 libprozilla/src/netrc.c create mode 100644 libprozilla/src/netrc.h create mode 100644 libprozilla/src/ping.c create mode 100644 libprozilla/src/ping.h create mode 100644 libprozilla/src/prozilla.h create mode 100644 libprozilla/src/test.c create mode 100644 libprozilla/src/url.c create mode 100644 libprozilla/src/url.h create mode 100644 libprozilla/stamp-h create mode 100644 libprozilla/stamp-h.in create mode 100644 ltdl.m4 create mode 100644 ltmain.sh create mode 100644 man/Makefile.am create mode 100644 man/Makefile.in create mode 100644 man/prozgui.1 create mode 100755 missing create mode 100755 mkinstalldirs create mode 100644 po/CVS/Entries create mode 100644 po/CVS/Repository create mode 100644 po/CVS/Root create mode 100644 po/ChangeLog create mode 100644 po/Makefile.in.in create mode 100644 po/POTFILES.in create mode 100644 po/cat-id-tbl.c create mode 100644 po/fr.gmo create mode 100644 po/fr.po create mode 100644 po/fr.po~ create mode 100644 po/it.gmo create mode 100644 po/it.po create mode 100644 po/it.po~ create mode 100644 po/nl.gmo create mode 100644 po/nl.po create mode 100644 po/nl.po~ create mode 100644 po/prozgui.pot create mode 100644 po/pt_BR.gmo create mode 100644 po/pt_BR.po create mode 100644 po/pt_BR.po~ create mode 100644 po/ro.gmo create mode 100644 po/ro.po create mode 100644 po/ro.po~ create mode 100644 po/stamp-cat-id create mode 100644 prozgui-static-rpm.spec create mode 100644 prozgui.spec create mode 100644 src/BigProZilla01.xpm create mode 100644 src/CVS/Entries create mode 100644 src/CVS/Repository create mode 100644 src/CVS/Root create mode 100644 src/Fl_Progress.H create mode 100644 src/Fl_Progress.cxx create mode 100644 src/Fl_ProgressBox.H create mode 100644 src/Fl_ProgressBox.cxx create mode 100644 src/Makefile.am create mode 100644 src/Makefile.in create mode 100644 src/dl_win.cxx create mode 100644 src/dl_win.fl create mode 100644 src/dl_win.h create mode 100644 src/download_win.cpp create mode 100644 src/download_win.h create mode 100644 src/ftps_win.cxx create mode 100644 src/ftps_win.fl create mode 100644 src/ftps_win.h create mode 100644 src/ftpsearch_win.cpp create mode 100644 src/ftpsearch_win.h create mode 100644 src/getopt.c create mode 100644 src/getopt.h create mode 100644 src/images/BigProZilla01.xpm create mode 100644 src/images/CVS/Entries create mode 100644 src/images/CVS/Repository create mode 100644 src/images/CVS/Root create mode 100644 src/images/Pz12.xpm create mode 100644 src/images/Pzdlwin.xpm create mode 100644 src/images/pause.xpm create mode 100644 src/images/play.xpm create mode 100644 src/init.cpp create mode 100644 src/init.h create mode 100644 src/main.cpp create mode 100644 src/main.h create mode 100644 src/options.cpp create mode 100644 src/options.h create mode 100644 src/prefs.cpp create mode 100644 src/prefs.h create mode 100644 src/savefile.cpp create mode 100644 src/savefile.h create mode 100644 src/we.cxx create mode 100644 src/we.fl create mode 100644 src/we.h create mode 100644 stamp-h create mode 100644 stamp-h.in diff --git a/ABOUT-NLS b/ABOUT-NLS new file mode 100644 index 0000000..7e6b380 --- /dev/null +++ b/ABOUT-NLS @@ -0,0 +1,296 @@ +Notes on the Free Translation Project +************************************* + + Free software is going international! The Free Translation Project +is a way to get maintainers of free software, translators, and users all +together, so that will gradually become able to speak many languages. +A few packages already provide translations for their messages. + + If you found this `ABOUT-NLS' file inside a distribution, you may +assume that the distributed package does use GNU `gettext' internally, +itself available at your nearest GNU archive site. But you do _not_ +need to install GNU `gettext' prior to configuring, installing or using +this package with messages translated. + + Installers will find here some useful hints. These notes also +explain how users should proceed for getting the programs to use the +available translations. They tell how people wanting to contribute and +work at translations should contact the appropriate team. + + When reporting bugs in the `intl/' directory or bugs which may be +related to internationalization, you should tell about the version of +`gettext' which is used. The information can be found in the +`intl/VERSION' file, in internationalized packages. + +Quick configuration advice +========================== + + If you want to exploit the full power of internationalization, you +should configure it using + + ./configure --with-included-gettext + +to force usage of internationalizing routines provided within this +package, despite the existence of internationalizing capabilities in the +operating system where this package is being installed. So far, only +the `gettext' implementation in the GNU C library version 2 provides as +many features (such as locale alias, message inheritance, automatic +charset conversion or plural form handling) as the implementation here. +It is also not possible to offer this additional functionality on top +of a `catgets' implementation. Future versions of GNU `gettext' will +very likely convey even more functionality. So it might be a good idea +to change to GNU `gettext' as soon as possible. + + So you need _not_ provide this option if you are using GNU libc 2 or +you have installed a recent copy of the GNU gettext package with the +included `libintl'. + +INSTALL Matters +=============== + + Some packages are "localizable" when properly installed; the +programs they contain can be made to speak your own native language. +Most such packages use GNU `gettext'. Other packages have their own +ways to internationalization, predating GNU `gettext'. + + By default, this package will be installed to allow translation of +messages. It will automatically detect whether the system already +provides the GNU `gettext' functions. If not, the GNU `gettext' own +library will be used. This library is wholly contained within this +package, usually in the `intl/' subdirectory, so prior installation of +the GNU `gettext' package is _not_ required. Installers may use +special options at configuration time for changing the default +behaviour. The commands: + + ./configure --with-included-gettext + ./configure --disable-nls + +will respectively bypass any pre-existing `gettext' to use the +internationalizing routines provided within this package, or else, +_totally_ disable translation of messages. + + When you already have GNU `gettext' installed on your system and run +configure without an option for your new package, `configure' will +probably detect the previously built and installed `libintl.a' file and +will decide to use this. This might be not what is desirable. You +should use the more recent version of the GNU `gettext' library. I.e. +if the file `intl/VERSION' shows that the library which comes with this +package is more recent, you should use + + ./configure --with-included-gettext + +to prevent auto-detection. + + The configuration process will not test for the `catgets' function +and therefore it will not be used. The reason is that even an +emulation of `gettext' on top of `catgets' could not provide all the +extensions of the GNU `gettext' library. + + Internationalized packages have usually many `po/LL.po' files, where +LL gives an ISO 639 two-letter code identifying the language. Unless +translations have been forbidden at `configure' time by using the +`--disable-nls' switch, all available translations are installed +together with the package. However, the environment variable `LINGUAS' +may be set, prior to configuration, to limit the installed set. +`LINGUAS' should then contain a space separated list of two-letter +codes, stating which languages are allowed. + +Using This Package +================== + + As a user, if your language has been installed for this package, you +only have to set the `LANG' environment variable to the appropriate +`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, +and `CC' is an ISO 3166 two-letter country code. For example, let's +suppose that you speak German and live in Germany. At the shell +prompt, merely execute `setenv LANG de_DE' (in `csh'), +`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). +This can be done from your `.login' or `.profile' file, once and for +all. + + You might think that the country code specification is redundant. +But in fact, some languages have dialects in different countries. For +example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The +country code serves to distinguish the dialects. + + Not all programs have translations for all languages. By default, an +English message is shown in place of a nonexistent translation. If you +understand other languages, you can set up a priority list of languages. +This is done through a different environment variable, called +`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' +for the purpose of message handling, but you still need to have `LANG' +set to the primary language; this is required by other parts of the +system libraries. For example, some Swedish users who would rather +read translations in German than English for when Swedish is not +available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. + + In the `LANGUAGE' environment variable, but not in the `LANG' +environment variable, `LL_CC' combinations can be abbreviated as `LL' +to denote the language's main dialect. For example, `de' is equivalent +to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' +(Portuguese as spoken in Portugal) in this context. + +Translating Teams +================= + + For the Free Translation Project to be a success, we need interested +people who like their own language and write it well, and who are also +able to synergize with other translators speaking the same language. +Each translation team has its own mailing list. The up-to-date list of +teams can be found at the Free Translation Project's homepage, +`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" +area. + + If you'd like to volunteer to _work_ at translating messages, you +should become a member of the translating team for your own language. +The subscribing address is _not_ the same as the list itself, it has +`-request' appended. For example, speakers of Swedish can send a +message to `sv-request@li.org', having this message body: + + subscribe + + Keep in mind that team members are expected to participate +_actively_ in translations, or at solving translational difficulties, +rather than merely lurking around. If your team does not exist yet and +you want to start one, or if you are unsure about what to do or how to +get started, please write to `translation@iro.umontreal.ca' to reach the +coordinator for all translator teams. + + The English team is special. It works at improving and uniformizing +the terminology in use. Proven linguistic skill are praised more than +programming skill, here. + +Available Packages +================== + + Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of May 2001. +The matrix shows, in regard of each package, for which languages PO +files have been submitted to translation coordination, with a +translation percentage of at least 50%. + + Ready PO files bg cs da de el en eo es et fi fr gl hr id it + +----------------------------------------------+ + a2ps | [] [] | + bash | [] [] [] [] | + bison | [] [] [] [] | + clisp | [] [] [] [] | + cpio | [] [] [] [] | + diffutils | [] [] [] [] [] [] [] | + enscript | [] [] | + error | [] | + fileutils | [] [] [] [] [] [] [] | + findutils | [] [] [] [] [] [] [] [] | + flex | [] [] [] | + gawk | | + gcal | | + gcc | [] | + gettext | [] [] [] [] [] [] [] [] [] | + gnupg | [] [] [] [] [] | + grep | [] [] [] | + hello | [] [] [] [] [] [] [] [] [] | + id-utils | [] [] | + indent | [] [] [] [] [] | + libc | [] [] [] [] [] [] [] [] | + lilypond | | + lynx | [] [] [] | + m4 | [] [] [] [] [] [] [] | + make | [] [] [] [] | + parted | [] [] | + ptx | [] [] [] [] [] [] [] | + python | | + recode | [] [] [] [] [] [] [] [] | + sed | [] [] [] [] [] [] [] [] [] | + sh-utils | [] [] [] [] [] [] [] [] [] | + sharutils | [] [] [] [] [] [] [] | + soundtracker | | + sp | | + tar | [] [] [] [] [] [] [] [] | + texinfo | [] [] [] [] | + textutils | [] [] [] [] [] [] [] | + util-linux | [] | + wdiff | [] [] [] [] [] [] [] | + wget | [] [] [] [] [] [] [] [] [] | + +----------------------------------------------+ + bg cs da de el en eo es et fi fr gl hr id it + 0 14 21 27 10 1 8 20 13 1 28 17 0 9 11 + + ja ko lv nl no pl pt pt_BR ru sk sl sv tr zh + +----------------------------------------------+ + a2ps | [] [] [] | 5 + bash | | 4 + bison | [] [] [] | 7 + clisp | [] | 5 + cpio | [] [] [] [] [] | 9 + diffutils | [] [] [] | 10 + enscript | [] [] [] | 5 + error | | 1 + fileutils | [] [] [] [] [] [] [] [] [] | 16 + findutils | [] [] [] [] [] [] | 14 + flex | [] [] [] | 6 + gawk | | 0 + gcal | | 0 + gcc | [] | 2 + gettext | [] [] [] [] [] [] [] [] [] [] | 19 + gnupg | [] [] [] | 8 + grep | | 3 + hello | [] [] [] [] [] [] [] [] | 17 + id-utils | [] [] [] | 5 + indent | [] [] [] [] [] [] [] | 12 + libc | [] [] [] [] [] [] [] | 15 + lilypond | [] | 1 + lynx | [] [] [] [] [] | 8 + m4 | [] [] [] [] [] | 12 + make | [] [] [] [] [] | 9 + parted | [] [] [] | 5 + ptx | [] [] [] [] [] [] | 13 + python | | 0 + recode | [] [] [] | 11 + sed | [] [] [] [] [] [] [] | 16 + sh-utils | [] [] [] [] [] [] [] [] [] [] | 19 + sharutils | [] [] [] [] | 11 + soundtracker | | 0 + sp | | 0 + tar | [] [] [] [] [] [] [] [] | 16 + texinfo | [] [] | 6 + textutils | [] [] [] [] [] [] [] [] | 15 + util-linux | [] | 2 + wdiff | [] [] [] [] [] | 12 + wget | [] [] [] [] [] [] [] [] | 17 + +----------------------------------------------+ + 29 teams ja ko lv nl no pl pt pt_BR ru sk sl sv tr zh + 40 domains 18 8 0 23 6 16 1 15 26 9 9 20 2 3 336 + + Some counters in the preceding matrix are higher than the number of +visible blocks let us expect. This is because a few extra PO files are +used for implementing regional variants of languages, or language +dialects. + + For a PO file in the matrix above to be effective, the package to +which it applies should also have been internationalized and +distributed as such by its maintainer. There might be an observable +lag between the mere existence a PO file and its wide availability in a +distribution. + + If May 2001 seems to be old, you may fetch a more recent copy of +this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date +matrix with full percentage details can be found at +`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. + +Using `gettext' in new packages +=============================== + + If you are writing a freely available program and want to +internationalize it you are welcome to use GNU `gettext' in your +package. Of course the GNU Public License applies to your sources from +then if you include `gettext' directly in your distribution on but +since you are writing free software anyway this is no restriction. + + Once the sources are change appropriately and the setup can handle to +use of `gettext' the only thing missing are the translations. The Free +Translation Project is also available for packages which are not +developed inside the GNU project. Therefore the information given above +applies also for every other Free Software Project. Contact +`translation@iro.umontreal.ca' to make the `.pot' files available to +the translation teams. + diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..a727474 --- /dev/null +++ b/AUTHORS @@ -0,0 +1 @@ +Please see the file CREDITS. diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..d60c31a --- /dev/null +++ b/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/CREDITS b/CREDITS new file mode 100644 index 0000000..0a8a201 --- /dev/null +++ b/CREDITS @@ -0,0 +1,18 @@ +Here is a list of people who have contributed to the prozilla project, +arranged in a alphabetical order. + +Alberto Zanoni +Calin Damian +Christophe Fergeau +David L. Matthews +Emanuele Tatti +Eric Lassauge +Flower +Gustavo Noronha Silva (KoV) +Kalum Somaratna (Grendel) +Krogg +Pablo Iranzo Gómez +Ruben Boer +Ralph Slooten +Silviu Marin-Caea +Uwe Hermann diff --git a/CREDITS-old-proz b/CREDITS-old-proz new file mode 100644 index 0000000..c7dd93a --- /dev/null +++ b/CREDITS-old-proz @@ -0,0 +1,118 @@ +This is a list of people who contributed to the old branch of prozilla, ie the console one, it is only fair to them that I list them here as the encouragement given to me for the old prozilla project was vital int he developement of libprozilla. + +Richard Dawe +------------------------------------------------------------------------ +Makefile fixes, several bugfixes, beta testing, correction of spelling, +and the gproz script for starting Prozilla in gtk mode, and for several +excellent suggestions for improvement, the prompting for overwriting files +were all his suggestions, he also submitted the patch which made prozilla +access the appropriate sysconfdir/prozilla.conf file it was compiled with. + +Biscuit +------------------------------------- +Beta testing, and suggestions for improvement. + +Wget and it's author +-------------------- +For a well designed utility. I used it's URL +parsing function and some of it's HTTP code for the download accelerator. + +Lourens Veen +------------------------- +Discovered a important bug due to incompatibilities in the ncurses libraries +function definitions between versions 4.x and 5.x. Also found a compilation +problem due to a missing header file. + +D. J. Bernstein +------------------------------- +I adopted his well designed ftp parsing library (ftpparse.c and ftpparse.h) +for the FTP LIST commands output. His code made the parsing of LIST commands +output which has no defined format, much easier. + +Flower +-------------------------- +Bug reports, and a lot suggestions for improvement. ProZilla 1.01 contains +a lot of his suggestions, and has made Prozilla more versatile and stable. +He also added the support for a configuration file for prozilla and +cleaned up the part regarding the installation of the manpages. + +Silviu Marin-Caea +------------------------------------ +For his persistence in tracking down bugs, and for his practical +suggestions, the most important one was to encourage me to add the retry +feature for each connection and correcting a bug with the percent counter. +Many of the new changes in ProZilla 1.04b are due to feedback from him. +The mailing list was provided by him which has helped +in the development of prozilla a lot and thanks too for the bug report +related to the premature termination of the downloads. + +Ralph Slooten +----------------------------------------- +He corrected some of my faulty English in the connection display, it now +more appropriately displays "Completed" instead of "All done" and the +errors README, and also for the suggestions for future improvement and +testing of ProZilla, together with contributing RPM's of prozilla. + +Tse Chi Ming +----------------------------------------- +He informed me about a bug which occurred with version 1.06pre0 when files +less than 7 bytes in size were downloaded using the http protocol. + +"Gustavo Noronha Silva (KoV)" +------------------------------------------------- +The prozilla man page was written by him, and he is acting as the debian +maintainer for prozilla. He also brought to notice an important bug in the +ftp code. + +Calum Selkirk +------------------------------------------- +For the modified RPM script. + +Seth Cohn +------------------------------- +He brought to my notice the bug that caused the screen corruption and also +suggested a way to fix it. + +Davy Durham +----------------------------------- +He did testing, and suggestions. + +Uwe Hermann +----------------------------------- +For the patch which corrected my incorrect spelling, and for the ideas +about correcting the layout of the distribution, and the changes to the +man page. + +Drew +------------------- +For the idea to add a progress displayer for the file rebuilding process +once the download is completed. + +Steven Hatfield +--------------------------------------- +He reported the bug about the ~./netrc file being not handled. + +Guillermo Pereyra Irujo +---------------------------------------------- +For informing that in the curses display the status and received titles +were reversed. + +Andy Jeffries +------------------------------------- +Suggesting that support for bandwith limiting should be implemented. + +Michael Duelli +-------------------------------- +Patches correcting sytaxes and simplifying the code in the help and +license functions, and adding support so prozilla can download multiple +URL's (not yet added). He also corrected the over scrolling which occured +in the curses window. The new burst download speed indicator is also +thanks to him. + +Kalum Somaratna +--------------------------------- +Hmm..thats me..well what can you say about yourself ;). Well I designed +Prozilla and coded most of it from scratch, with the kind help and +contributions from all the people above. I also contributed to unfound +bugs (hopefully none) lurking out there... + diff --git a/CVS/Entries b/CVS/Entries new file mode 100644 index 0000000..1b59372 --- /dev/null +++ b/CVS/Entries @@ -0,0 +1,23 @@ +/AUTHORS/1.1.1.1/Tue Jun 5 23:44:04 2001// +/Makefile.am/1.1.1.1/Tue Jun 5 23:44:02 2001// +/NEWS/1.1.1.1/Tue Jun 5 23:44:04 2001// +/acconfig.h/1.1.1.1/Tue Jun 5 23:44:02 2001// +D/docs//// +D/src//// +/COPYING/1.1/Mon Jun 11 03:40:12 2001// +/INSTALL/1.1/Mon Jun 11 03:39:34 2001// +/TODO/1.1/Mon Jun 11 10:16:20 2001// +/acinclude.m4/1.2/Mon Jun 11 13:48:54 2001// +/install-sh/1.1/Mon Jun 11 03:40:39 2001// +/missing/1.1/Mon Jun 11 03:40:54 2001// +/mkinstalldirs/1.1/Mon Jun 11 13:48:54 2001// +/README/1.2/Sun Jul 22 17:09:03 2001// +/stamp-h.in/1.1.1.1/Sat Aug 4 23:16:43 2001// +/CREDITS/1.1/Sun Aug 5 07:09:21 2001// +/CREDITS-old-proz/1.1/Sun Aug 5 07:11:45 2001// +/ChangeLog/1.8/Wed Aug 8 00:04:04 2001// +/Makefile.in/1.3/Sat Aug 4 23:16:39 2001// +/aclocal.m4/1.3/Thu Aug 9 23:32:19 2001// +/config.h.in/1.2/Sat Aug 4 23:04:10 2001// +/configure/1.2/Sat Aug 4 23:16:39 2001// +/configure.in/1.2/Sat Aug 4 23:16:37 2001// diff --git a/CVS/Repository b/CVS/Repository new file mode 100644 index 0000000..ee75d5c --- /dev/null +++ b/CVS/Repository @@ -0,0 +1 @@ +fltkproz diff --git a/CVS/Root b/CVS/Root new file mode 100644 index 0000000..0e741fc --- /dev/null +++ b/CVS/Root @@ -0,0 +1 @@ +:pserver:kalum@cvs.delrom.ro:/home/cvsroot diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..252df4b --- /dev/null +++ b/ChangeLog @@ -0,0 +1,229 @@ +Changes in version 2.0.5beta +------------------------ +The threads now all download to a single file, so now there is no need for +a lengthy and slow download joining process. Also this saves the hard disk +space. + +Applied Ralphs patch which fixes several wrong links to delrom.ro and has +changed them to genesys.ro + + +Changes in version 2.0.4beta3 +------------------------ + +Filesearching.com was added to the ftpsearch server list as the default as +lycos.com has stopped there service. + +Start, Stop and Remove from list buttons added to the menu. The list of +downloads is aved to a file as well, so it is saved between sessions. The +Stop button is not yet operational. + +Eric Lassauge submitted a patch which added +a french translation and also corrected several grammatical errors in my +code (Thanks Eric) + +Changes in version 2.0.4beta2 +------------------------ + +The URL parsing code was changed. + +The Start Download button in the ftpsearch Window allows the user to abort +the ftpsearch or ping prior to it being completed. + +ftpsearch.uniovi.es added as another ftpsearch server (but it doesn't seem +to contain as much results as lycos) + +libprozilla has improved error handling for multiple server based +downloads. + +Emanuele Tatti's updated itallian translation was added. + +If no mirrors are found the ftpsearch window is closed. + +configure now checks for sys/stat.h as on solaris this wasnt being +included : Keith Leng + +Changes in version 2.0.4-beta +------------------------ +Support for FTPSearch and pinging to select the fastest server(s). + +Multiple server downloads, based on the ftpsearch results prozilla will +make multiple connections to different servers and download the file +simultaneously, this should give you a further speed increase. + +Itallian translation by Emanuele Tatti added. + +A bug in which HTTP-PROXY was not selectable in the http-proxy preferences +was fixed. + +Improved error handling while downloading. + +Alberto Zanoni helped to fix a compilation +error and several warnings in prozgui. + +Usual Bugfixes. + +Changes in version 2.0.2 +------------------------ + +The we.cxx file generated by FLUID was not compatible with the fltk +-1.0.10 library (it refused to compile), so it was regenerated by FLUID +1.0.9 and it is fixed now. Thanks to David L. Matthews +for reporting this. + +A cool progress bar was added, it was based on the progress bar available +at the FLTK bazar. Its slightly modified so as to add a textual progress +display on top of the bar as well. + +The password during FTP transfers is hidden, if it is not annonymous, this +was based on a suggestion by Calin Damian . + +The romanian translation by Flower for the GUI was available today and has +been added, now prozilla GUI should speak romanian. + +Added the manpage which was written by Gustavo. + +Gustavo's libtoolising patch for libprozilla was added :) + +Changes in version 2.0.1 +--------------------------- + +2001-08-25 Kalum / Grendel + + * src/download_win.cpp (start_download): Fixed a annoying bug + which made the screen not refresh properly. + +Changes in Version 2.0.0 +----------------------------- + +2001-08-23 Kalum / Grendel + + * src/download_win.cpp: Added a pause button, and fixed a error + where the download didnt restart properly after a server lied + about being able to resume. + +2001-08-21 Kalum / Grendel + + * src/main.cpp (cb_url_input_ok): Added a check to see if the URL + contains a file, ie if it contains just a hostname it refuses to + proceed. + +2001-08-17 Kalum / Grendel + + * src/download_win.cpp (handle_joining_thread): Fixed a display + bug which did not update the file rebuilding pregres bar when + the file size was not known. + +2001-08-14 Kalum / Grendel + + * src/main.h: Make it use dgettextr + instead of gettext, so I defined _(String) dgettext(PACKAGE, + String) + + +2001-08-14 Kalum / Grendel + + * Added KoV's portugese translation and we now have portugese + prozila, slight cosmetic changes were necessary since it appears + that the portugese laguage has certain texts which were larger + than I anticipated, this was fixed by asking the widgets to wrap + the text. + * Added prozillas own URL open dialog, which replaces the generic + FLTK one. + +2001-08-13 Kalum / Grendel + + * Added support for GNU gettext. + +2001-08-12 Kalum / Grendel + + * src/download_win.h: Changed the enums in dlg_class to be prefixed by DLG_xxx + changed the enums in dlwin_status_t to DL_xxxx + + *It now checks and warns about overwriting the target file. + +2001-08-08 Kalum / Grendel + + * src/download_win.cpp (handle_download_thread): Fixed the bug + bought to notice by Ralph Slooten, where the hours and minutes + left were displayed incorrectly in the estiamted time remaining + box. + +2001-08-05 Kalum / Grendel + + * src/Makefile.am : Fixed a bug where the prozilla library in the + libpath was linked instead of the one in ../../libprozilla/src + + * src/download_win.cpp: The window modal was changed slightly so + as to allow the handling of task, ie not let fltk interrupt the + processing as happens when you use modal dialogs like the fl_ask + functions. + +Changes Prior to 2.0.0 +--------------------------- + +2001-08-02 Kalum / Grendel + + * Added a prozilla icon which was kindly drawn by Krogg, added + checks for libxpm which is needed to draw the icon, the + localtion of the fltk headers and libs can be specified via the + ./configure sript now + +2001-08-01 Kalum / Grendel + + * src/main.cpp: Added option parsing (currently does not parse any + options) and the abilty to handle multiple URL's on the + commandline. + +2001-07-29 Kalum / Grendel + + * src/options.cpp (set_runtime_values): + Now the file fragments are downloaded to the directory where the + output file is created. + +2001-07-20 Kalum / Grendel + + * Added Kroggs cool logo for prozilla (Thanks Krogg) + * Fixed the bug where the the GUI froze at startup. + +2001-07-11 Kalum / Grendel + + * Now we have a rebuilding file window with a progress bar, and + message display :-) + +2001-07-09 Kalum / Grendel + + * src/prefs.cpp: Now we save the entire set of preferences in the + dialog. + +2001-07-08 + + * Added prefs.cpp and prefs.h which saves prozillas runtime + parameters to a ~/.prozilla/prozconfig file. It also loads the + parameters from the file. + +2001-07-07 + + * src/main.h: home_dir added to the runtime struct and inited. + +2001-07-06 + + * src/options.cpp : The Preferences panel now displays + options for not using PASV for ftp transfers, and for + using the no-cache directive. + +2001-07-02 + * Displays estimated time in hours/minutes/sec + +2001-06-21 + * Increased the polling rate to every 0.4 /sec, added + some CREDITS to the about box. + +2001-06-18 + + * src/download_win.cpp (my_cb): Added dl_win.cxx which is + generated by FLUID so that dialogs can be created quickly and + easily. + (my_cb): Now checks whether the number of threads are the same as + the previous occasion when resuming a download and + takes approprite action. diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..b42a17a --- /dev/null +++ b/INSTALL @@ -0,0 +1,182 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..8c609bd --- /dev/null +++ b/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = libprozilla intl po src man diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..4a8cb5d --- /dev/null +++ b/Makefile.in @@ -0,0 +1,562 @@ +# Makefile.in generated by automake 1.7 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POFILES = @POFILES@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +THREAD_LIBS = @THREAD_LIBS@ +UNAME = @UNAME@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +subdirs = @subdirs@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SUBDIRS = libprozilla intl po src man +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = intl/Makefile +DIST_SOURCES = + +RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ + ps-recursive install-info-recursive uninstall-info-recursive \ + all-recursive install-data-recursive install-exec-recursive \ + installdirs-recursive install-recursive uninstall-recursive \ + check-recursive installcheck-recursive +DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \ + Makefile.am Makefile.in NEWS TODO acconfig.h acinclude.m4 \ + aclocal.m4 config.guess config.h.in config.sub configure \ + configure.in depcomp install-sh ltmain.sh missing mkinstalldirs +DIST_SUBDIRS = $(SUBDIRS) +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: + +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) + +$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +$(ACLOCAL_M4): configure.in acinclude.m4 + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h + +$(srcdir)/config.h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) $(top_srcdir)/acconfig.h + cd $(top_srcdir) && $(AUTOHEADER) + touch $(srcdir)/config.h.in + +distclean-hdr: + -rm -f config.h stamp-h1 +intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = . +distdir = $(PACKAGE)-$(VERSION) + +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } + +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkinstalldirs) $(distdir)/intl $(distdir)/po + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist dist-all: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + $(am__remove_distdir) + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && $(mkinstalldirs) $$dc_destdir \ + && cd $(distdir)/=build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + --with-included-gettext \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ + && rm -f $(distdir).tar.gz \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @echo "$(distdir).tar.gz is ready for distribution" | \ + sed 'h;s/./=/g;p;x;p;x' +distuninstallcheck: + cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: + +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) +distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf autom4te.cache +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive dist dist-all dist-gzip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-recursive distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am dvi-recursive info info-am \ + info-recursive install install-am install-data install-data-am \ + install-data-recursive install-exec install-exec-am \ + install-exec-recursive install-info install-info-am \ + install-info-recursive install-man install-recursive \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am installdirs-recursive maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive mostlyclean \ + mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ + pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ + tags-recursive uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-recursive + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..62cb36f --- /dev/null +++ b/NEWS @@ -0,0 +1 @@ +Please see the file ChangeLog diff --git a/README b/README new file mode 100644 index 0000000..a565218 --- /dev/null +++ b/README @@ -0,0 +1,119 @@ + ProZilla the Download Accelerator for Linux + GUI 2.04 Release + ============================================ + +Welcome, gentle reader. + +ProZilla is a download accelerator for Linux which gives you a 200% to +300% improvement (or possibly more depending on your connection) in your +file downloading speeds. + +Features: +Supports FTP +Supports HTTP including redirection. +Proxy servers supported. +Resume Supported. +Improved error checking and correction. +Complete acceleration: The file will be downloaded as fast as possible as +your bandwidth allows. +FTP passwords can be specified with the URL, or can be obtained +automatically from the .netrc if it exists. +The number of connections that prozilla uses can be changed. + +***NEW** +Now the downloads are ALL to a SINGLE file. There is no downloading to +individual files as was done previously. +Multiple server based downlaoding is supported based on ftpsearch and +ping results obtaines for a URL prozilla will attempt to make multiple +connections to different servers and try to speed up the download even +more. + + +1. Configuring +-------------- +Please type, +./configure +from the ProZilla directory to configure the package. + +Typing ./configure --help, will show you the various options that you can +use to change the configuration process. + +Please note that you have to have the pthread library and the FLTK (Fast +Light Toolkit) library installed to compile this. + +You can obtain the FLTK toolkit from , RPMS can be +obntained from rpmfind.net. + +NOTE:: +-------- +Please use the FLTK release 1.0.x libraries, the latest is FLTK +1.0.11, as the newer beta 1.1.x have a incompatibility in the API which +will not let prozgui compile, so if you want to still use the FLTK 1.1.x +series then please follow the intructions in file Fl_Progress.cxx in the +src subdirectory in lines 77, and 80. + +2. Building +----------- +Once the configuration process is finished, please type +make +to start the compilation of the package. + +3. Installing +------------- +If the make process was successful, then you can install it by typing +make install +which will install the binaries in the /usr/local/bin directory by default. +If you wish another directory, you can change this with the --prefix option +supplied to configure. + +If you wish that the binaries be stripped too (reduces the size), please +type +make install-strip + + +4. Running +---------- +Running: +The syntax will be, +prozgui +where URL is the file you wish to download. + +For example, +prozgui ftp://gnu.org/pub/README +will connect to to the server gnu.org and start the download of the file +README from the pub directory. + +If you want ProZilla to use a different username or password for ftp sessions, +than the default anonymous login, you can specify it in the command line, or +if you have a .netrc file, it will automatically select the appropriate +username password combination for the particular host, otherwise it will use +the default anonymous login. + + +A small note +------------ +ProZilla was written by Kalum Somaratana (aka Grendel) +For the complete list of the people who were kind enough to contribute to +ProZilla please read the CREDITS file and the AUTHORS file. + +It was written to fulfill the need of a good quality download accelerator +for Linux, which would allow users (especially the people with slow dialup +connections) to download files as fast as possible as their connection +would allow. + +For Windoze users there already existed a good download accelerator but +for Linux users unfortunately there wasn't much of a choice, and we hope +that ProZilla will improve that situation considerably. + +Although we have taken great pains to test this application extensively, +there probably may be a few bugs :(, since this is the first major +release. However if you come across them we kindly request you to inform +us and we will make sure that they will be +removed from the next release. + +We sincerely hope that you will like the download accelerator.. +Enjoy! + +Kalum Somaratana (Grendel) + + diff --git a/TODO b/TODO new file mode 100644 index 0000000..9dc3d23 --- /dev/null +++ b/TODO @@ -0,0 +1,37 @@ +Preferences: + *Preferences to be saved + :DONE + + *Number of Threads maximun reduced to 15 or so, 30 is way to many + *Someone might need them , I thought 30 was to little ;) + + *Preferences to oppen with General, and not Proxies + :DONE + + +Main: + *Add About screen + :DONE + *Made downloading screens dockable in Main window? + *Change taskbar name to ProzGUI or domething, not download. + :DONE Prozilla - Download Accelerator + *Why ALT-n and ALT-o? CTRL is used standardly for this IMHO. + :DONE + *Options should be called "Preferences". + :DONE + *Shortcut to this should be thern CTRL-p or something. + :DONE + + +Add URL: + *Maybe a cooler Logo? + *Choice of how many threads that 1 download should have. + *Choice of whether to ftpsearch or not. + :DONE + + +Download screen: + *Buttons should be changed to Cancel and Resume or something. + *When one shuts screen down, and asked for resuming or cancelling, + buttons should be changed from "Yes" and "No" + diff --git a/acconfig.h b/acconfig.h new file mode 100644 index 0000000..73c7298 --- /dev/null +++ b/acconfig.h @@ -0,0 +1,26 @@ +/* For use by autoheader. */ + +#ifndef CONFIG_H +#define CONFIG_H /* To stop multiple inclusions. */ + + +/* Enable GNU extensions. */ +#undef _GNU_SOURCE + +#undef ENABLE_NLS +#undef HAVE_CATGETS +#undef HAVE_GETTEXT +#undef HAVE_LC_MESSAGES +#undef HAVE_STPCPY + +/* Define to 'int' if not already defined by the system. */ +#undef socklen_t + + +@TOP@ +/* autoheader generated things inserted here. */ +@BOTTOM@ + + +#endif /* CONFIG_H */ + diff --git a/acinclude.m4 b/acinclude.m4 new file mode 100644 index 0000000..3619d49 --- /dev/null +++ b/acinclude.m4 @@ -0,0 +1,666 @@ +dnl @synopsis AC_caolan_FUNC_WHICH_GETHOSTBYNAME_R +dnl +dnl Provides a test to determine the correct +dnl way to call gethostbyname_r: +dnl +dnl - defines HAVE_FUNC_GETHOSTBYNAME_R_6 if it needs 6 arguments (e.g linux) +dnl - defines HAVE_FUNC_GETHOSTBYNAME_R_5 if it needs 5 arguments (e.g. solaris) +dnl - defines HAVE_FUNC_GETHOSTBYNAME_R_3 if it needs 3 arguments (e.g. osf/1) +dnl +dnl If used in conjunction in gethostname.c the api demonstrated +dnl in test.c can be used regardless of which gethostbyname_r +dnl exists. These example files found at +dnl . +dnl +dnl Based on David Arnold's autoconf suggestion in the threads faq. +dnl +dnl @author Caolan McNamara +dnl +AC_DEFUN(AC_caolan_FUNC_WHICH_GETHOSTBYNAME_R, +[AC_CACHE_CHECK(for which type of gethostbyname_r, ac_cv_func_which_gethostname_r, [ +AC_CHECK_FUNC(gethostbyname_r, [ + AC_TRY_COMPILE([ +# include + ], [ + + char *name; + struct hostent *he; + struct hostent_data data; + (void) gethostbyname_r(name, he, &data); + + ],ac_cv_func_which_gethostname_r=three, + [ +dnl ac_cv_func_which_gethostname_r=no + AC_TRY_COMPILE([ +# include + ], [ + char *name; + struct hostent *he, *res; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop) + ],ac_cv_func_which_gethostname_r=six, + + [ +dnl ac_cv_func_which_gethostname_r=no + AC_TRY_COMPILE([ +# include + ], [ + char *name; + struct hostent *he; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop) + ],ac_cv_func_which_gethostname_r=five,ac_cv_func_which_gethostname_r=no) + + ] + + ) + ] + )] + ,ac_cv_func_which_gethostname_r=no)]) + +if test $ac_cv_func_which_gethostname_r = six; then + AC_DEFINE(HAVE_FUNC_GETHOSTBYNAME_R_6) +elif test $ac_cv_func_which_gethostname_r = five; then + AC_DEFINE(HAVE_FUNC_GETHOSTBYNAME_R_5) +elif test $ac_cv_func_which_gethostname_r = three; then + AC_DEFINE(HAVE_FUNC_GETHOSTBYNAME_R_3) + +fi + +]) + +dnl @synopsis TYPE_SOCKLEN_T +dnl +dnl Check whether sys/socket.h defines type socklen_t. Please note +dnl that some systems require sys/types.h to be included before +dnl sys/socket.h can be compiled. +dnl +dnl @author Lars Brinkhoff +dnl +AC_DEFUN([TYPE_SOCKLEN_T], +[AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t, +[ + AC_TRY_COMPILE( + [#include + #include ], + [socklen_t len = 42; return 0;], + ac_cv_type_socklen_t=yes, + ac_cv_type_socklen_t=no) +]) + if test $ac_cv_type_socklen_t != yes; then + AC_DEFINE(socklen_t, int) + fi +]) + +#serial AM1 + +dnl From Bruno Haible. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, + [AC_TRY_LINK([#include ], + [char* cs = nl_langinfo(CODESET);], + am_cv_langinfo_codeset=yes, + am_cv_langinfo_codeset=no) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET, 1, + [Define if you have and nl_langinfo(CODESET).]) + fi +]) +# Macro to add for using GNU gettext. +# Ulrich Drepper , 1995. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. + +# serial 10 + +dnl Usage: AM_WITH_NLS([TOOLSYMBOL], [NEEDSYMBOL], [LIBDIR]). +dnl If TOOLSYMBOL is specified and is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). Otherwise, a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. +dnl LIBDIR is used to find the intl libraries. If empty, +dnl the value `$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_WITH_NLS], + [AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + INTLLIBS= + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + AC_DEFINE(ENABLE_NLS, 1, + [Define to 1 if translation of program messages to the user's native language + is requested.]) + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH(included-gettext, + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + CATOBJEXT=NONE + + dnl Add a version number to the cache macros. + define(gt_cv_func_gnugettext_libc, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libc]) + define(gt_cv_func_gnugettext_libintl, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libintl]) + + AC_CHECK_HEADER(libintl.h, + [AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, + [AC_TRY_LINK([#include +extern int _nl_msg_cat_cntr;], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr], + gt_cv_func_gnugettext_libc=yes, + gt_cv_func_gnugettext_libc=no)]) + + if test "$gt_cv_func_gnugettext_libc" != "yes"; then + AC_CACHE_CHECK([for GNU gettext in libintl], + gt_cv_func_gnugettext_libintl, + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -lintl $LIBICONV" + AC_TRY_LINK([#include +extern int _nl_msg_cat_cntr;], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr], + gt_cv_func_gnugettext_libintl=yes, + gt_cv_func_gnugettext_libintl=no) + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if test "$gt_cv_func_gnugettext_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ + && test "$PACKAGE" != gettext; }; then + AC_DEFINE(HAVE_GETTEXT, 1, + [Define if the GNU gettext() function is already present or preinstalled.]) + + if test "$gt_cv_func_gnugettext_libintl" = "yes"; then + dnl If iconv() is in a separate libiconv library, then anyone + dnl linking with libintl{.a,.so} also needs to link with + dnl libiconv. + INTLLIBS="-lintl $LIBICONV" + fi + + gt_save_LIBS="$LIBS" + LIBS="$LIBS $INTLLIBS" + AC_CHECK_FUNCS(dcgettext) + LIBS="$gt_save_LIBS" + + dnl Search for GNU msgfmt in the PATH. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + dnl Search for GNU xgettext in the PATH. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) + + CATOBJEXT=.gmo + fi + ]) + + if test "$CATOBJEXT" = "NONE"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + INTLOBJS="\$(GETTOBJS)" + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) + AC_SUBST(MSGFMT) + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + CATOBJEXT=.gmo + INTLLIBS="ifelse([$3],[],\$(top_builddir)/intl,[$3])/libintl.ifelse([$1], use-libtool, [l], [])a $LIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU msgfmt. + if test "$GMSGFMT" != ":"; then + dnl If it is no GNU msgfmt we define it as : so that the + dnl Makefiles still can work. + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then + : ; + else + AC_MSG_RESULT( + [found msgfmt program is not GNU msgfmt; ignore it]) + GMSGFMT=":" + fi + fi + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then + : ; + else + AC_MSG_RESULT( + [found xgettext program is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + AC_OUTPUT_COMMANDS( + [for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + fi + ;; + esac + done]) + + + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl intl/plural.c is generated from intl/plural.y. It requires bison, + dnl because plural.y uses bison specific features. It requires at least + dnl bison-1.26 because earlier versions generate a plural.c that doesn't + dnl compile. + dnl bison is only needed for the maintainer (who touches plural.y). But in + dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put + dnl the rule in general Makefile. Now, some people carelessly touch the + dnl files or have a broken "make" program, hence the plural.c rule will + dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not + dnl present or too old. + AC_CHECK_PROGS([INTLBISON], [bison]) + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + dnl Found it, now check the version. + AC_MSG_CHECKING([version of bison]) +changequote(<<,>>)dnl + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison .* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) +changequote([,])dnl + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + AC_MSG_RESULT([$ac_prog_version]) + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + + dnl These rules are solely for the distribution goal. While doing this + dnl we only have to keep exactly one list of the available catalogs + dnl in configure.in. + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + + dnl Make all variables we use known to autoconf. + AC_SUBST(BUILD_INCLUDED_LIBINTL) + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATALOGS) + AC_SUBST(CATOBJEXT) + AC_SUBST(GMOFILES) + AC_SUBST(INTLLIBS) + AC_SUBST(INTLOBJS) + AC_SUBST(POFILES) + AC_SUBST(POSUB) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST(DATADIRNAME) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST(INSTOBJEXT) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST(GENCAT) + ]) + +dnl Usage: Just like AM_WITH_NLS, which see. +AC_DEFUN([AM_GNU_GETTEXT], + [AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_ISC_POSIX])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([jm_GLIBC21])dnl + + AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getcwd getegid geteuid \ +getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \ +strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) + + AM_ICONV + AM_LANGINFO_CODESET + AM_LC_MESSAGES + AM_WITH_NLS([$1],[$2],[$3]) + + if test "x$CATOBJEXT" != "x"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + AC_MSG_CHECKING(for catalogs to be installed) + NEW_LINGUAS= + for presentlang in $ALL_LINGUAS; do + useit=no + for desiredlang in ${LINGUAS-$ALL_LINGUAS}; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + NEW_LINGUAS="$NEW_LINGUAS $presentlang" + fi + done + LINGUAS=$NEW_LINGUAS + AC_MSG_RESULT($LINGUAS) + fi + + dnl Construct list of names of catalog files to be constructed. + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly + dnl find the mkinstalldirs script in another subdir but $(top_srcdir). + dnl Try to locate is. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=ifelse([$1], use-libtool, [l], []) + AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) + ]) +#serial 2 + +# Test for the GNU C Library, version 2.1 or newer. +# From Bruno Haible. + +AC_DEFUN([jm_GLIBC21], + [ + AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, + ac_cv_gnu_library_2_1, + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + ], + ac_cv_gnu_library_2_1=yes, + ac_cv_gnu_library_2_1=no) + ] + ) + AC_SUBST(GLIBC21) + GLIBC21="$ac_cv_gnu_library_2_1" + ] +) +#serial AM2 + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + + AC_ARG_WITH([libiconv-prefix], +[ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [ + for dir in `echo "$withval" | tr : ' '`; do + if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi + if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi + done + ]) + + AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS -liconv" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi + LIBICONV= + if test "$am_cv_lib_iconv" = yes; then + LIBICONV="-liconv" + fi + AC_SUBST(LIBICONV) +]) +#serial 1 +# This test replaces the one in autoconf. +# Currently this macro should have the same name as the autoconf macro +# because gettext's gettext.m4 (distributed in the automake package) +# still uses it. Otherwise, the use in gettext.m4 makes autoheader +# give these diagnostics: +# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX +# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX + +undefine([AC_ISC_POSIX]) + +AC_DEFUN([AC_ISC_POSIX], + [ + dnl This test replaces the obsolescent AC_ISC_POSIX kludge. + AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) + ] +) +# Check whether LC_MESSAGES is available in . +# Ulrich Drepper , 1995. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. + +# serial 2 + +AC_DEFUN([AM_LC_MESSAGES], + [if test $ac_cv_header_locale_h = yes; then + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) + if test $am_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, + [Define if your file defines LC_MESSAGES.]) + fi + fi]) +# Search path for a program which passes the given test. +# Ulrich Drepper , 1996. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. + +# serial 2 + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + /*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in ifelse([$5], , $PATH, [$5]); do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..fd82c00 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,5099 @@ +# generated automatically by aclocal 1.7 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +dnl @synopsis AC_caolan_FUNC_WHICH_GETHOSTBYNAME_R +dnl +dnl Provides a test to determine the correct +dnl way to call gethostbyname_r: +dnl +dnl - defines HAVE_FUNC_GETHOSTBYNAME_R_6 if it needs 6 arguments (e.g linux) +dnl - defines HAVE_FUNC_GETHOSTBYNAME_R_5 if it needs 5 arguments (e.g. solaris) +dnl - defines HAVE_FUNC_GETHOSTBYNAME_R_3 if it needs 3 arguments (e.g. osf/1) +dnl +dnl If used in conjunction in gethostname.c the api demonstrated +dnl in test.c can be used regardless of which gethostbyname_r +dnl exists. These example files found at +dnl . +dnl +dnl Based on David Arnold's autoconf suggestion in the threads faq. +dnl +dnl @author Caolan McNamara +dnl +AC_DEFUN(AC_caolan_FUNC_WHICH_GETHOSTBYNAME_R, +[AC_CACHE_CHECK(for which type of gethostbyname_r, ac_cv_func_which_gethostname_r, [ +AC_CHECK_FUNC(gethostbyname_r, [ + AC_TRY_COMPILE([ +# include + ], [ + + char *name; + struct hostent *he; + struct hostent_data data; + (void) gethostbyname_r(name, he, &data); + + ],ac_cv_func_which_gethostname_r=three, + [ +dnl ac_cv_func_which_gethostname_r=no + AC_TRY_COMPILE([ +# include + ], [ + char *name; + struct hostent *he, *res; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop) + ],ac_cv_func_which_gethostname_r=six, + + [ +dnl ac_cv_func_which_gethostname_r=no + AC_TRY_COMPILE([ +# include + ], [ + char *name; + struct hostent *he; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop) + ],ac_cv_func_which_gethostname_r=five,ac_cv_func_which_gethostname_r=no) + + ] + + ) + ] + )] + ,ac_cv_func_which_gethostname_r=no)]) + +if test $ac_cv_func_which_gethostname_r = six; then + AC_DEFINE(HAVE_FUNC_GETHOSTBYNAME_R_6) +elif test $ac_cv_func_which_gethostname_r = five; then + AC_DEFINE(HAVE_FUNC_GETHOSTBYNAME_R_5) +elif test $ac_cv_func_which_gethostname_r = three; then + AC_DEFINE(HAVE_FUNC_GETHOSTBYNAME_R_3) + +fi + +]) + +dnl @synopsis TYPE_SOCKLEN_T +dnl +dnl Check whether sys/socket.h defines type socklen_t. Please note +dnl that some systems require sys/types.h to be included before +dnl sys/socket.h can be compiled. +dnl +dnl @author Lars Brinkhoff +dnl +AC_DEFUN([TYPE_SOCKLEN_T], +[AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t, +[ + AC_TRY_COMPILE( + [#include + #include ], + [socklen_t len = 42; return 0;], + ac_cv_type_socklen_t=yes, + ac_cv_type_socklen_t=no) +]) + if test $ac_cv_type_socklen_t != yes; then + AC_DEFINE(socklen_t, int) + fi +]) + +#serial AM1 + +dnl From Bruno Haible. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, + [AC_TRY_LINK([#include ], + [char* cs = nl_langinfo(CODESET);], + am_cv_langinfo_codeset=yes, + am_cv_langinfo_codeset=no) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET, 1, + [Define if you have and nl_langinfo(CODESET).]) + fi +]) +# Macro to add for using GNU gettext. +# Ulrich Drepper , 1995. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. + +# serial 10 + +dnl Usage: AM_WITH_NLS([TOOLSYMBOL], [NEEDSYMBOL], [LIBDIR]). +dnl If TOOLSYMBOL is specified and is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). Otherwise, a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. +dnl LIBDIR is used to find the intl libraries. If empty, +dnl the value `$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_WITH_NLS], + [AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + INTLLIBS= + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + AC_DEFINE(ENABLE_NLS, 1, + [Define to 1 if translation of program messages to the user's native language + is requested.]) + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH(included-gettext, + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + CATOBJEXT=NONE + + dnl Add a version number to the cache macros. + define(gt_cv_func_gnugettext_libc, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libc]) + define(gt_cv_func_gnugettext_libintl, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libintl]) + + AC_CHECK_HEADER(libintl.h, + [AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, + [AC_TRY_LINK([#include +extern int _nl_msg_cat_cntr;], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr], + gt_cv_func_gnugettext_libc=yes, + gt_cv_func_gnugettext_libc=no)]) + + if test "$gt_cv_func_gnugettext_libc" != "yes"; then + AC_CACHE_CHECK([for GNU gettext in libintl], + gt_cv_func_gnugettext_libintl, + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -lintl $LIBICONV" + AC_TRY_LINK([#include +extern int _nl_msg_cat_cntr;], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr], + gt_cv_func_gnugettext_libintl=yes, + gt_cv_func_gnugettext_libintl=no) + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if test "$gt_cv_func_gnugettext_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ + && test "$PACKAGE" != gettext; }; then + AC_DEFINE(HAVE_GETTEXT, 1, + [Define if the GNU gettext() function is already present or preinstalled.]) + + if test "$gt_cv_func_gnugettext_libintl" = "yes"; then + dnl If iconv() is in a separate libiconv library, then anyone + dnl linking with libintl{.a,.so} also needs to link with + dnl libiconv. + INTLLIBS="-lintl $LIBICONV" + fi + + gt_save_LIBS="$LIBS" + LIBS="$LIBS $INTLLIBS" + AC_CHECK_FUNCS(dcgettext) + LIBS="$gt_save_LIBS" + + dnl Search for GNU msgfmt in the PATH. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + dnl Search for GNU xgettext in the PATH. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) + + CATOBJEXT=.gmo + fi + ]) + + if test "$CATOBJEXT" = "NONE"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + INTLOBJS="\$(GETTOBJS)" + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) + AC_SUBST(MSGFMT) + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + CATOBJEXT=.gmo + INTLLIBS="ifelse([$3],[],\$(top_builddir)/intl,[$3])/libintl.ifelse([$1], use-libtool, [l], [])a $LIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU msgfmt. + if test "$GMSGFMT" != ":"; then + dnl If it is no GNU msgfmt we define it as : so that the + dnl Makefiles still can work. + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then + : ; + else + AC_MSG_RESULT( + [found msgfmt program is not GNU msgfmt; ignore it]) + GMSGFMT=":" + fi + fi + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then + : ; + else + AC_MSG_RESULT( + [found xgettext program is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + AC_OUTPUT_COMMANDS( + [for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + fi + ;; + esac + done]) + + + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl intl/plural.c is generated from intl/plural.y. It requires bison, + dnl because plural.y uses bison specific features. It requires at least + dnl bison-1.26 because earlier versions generate a plural.c that doesn't + dnl compile. + dnl bison is only needed for the maintainer (who touches plural.y). But in + dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put + dnl the rule in general Makefile. Now, some people carelessly touch the + dnl files or have a broken "make" program, hence the plural.c rule will + dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not + dnl present or too old. + AC_CHECK_PROGS([INTLBISON], [bison]) + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + dnl Found it, now check the version. + AC_MSG_CHECKING([version of bison]) +changequote(<<,>>)dnl + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison .* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) +changequote([,])dnl + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + AC_MSG_RESULT([$ac_prog_version]) + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + + dnl These rules are solely for the distribution goal. While doing this + dnl we only have to keep exactly one list of the available catalogs + dnl in configure.in. + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + + dnl Make all variables we use known to autoconf. + AC_SUBST(BUILD_INCLUDED_LIBINTL) + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATALOGS) + AC_SUBST(CATOBJEXT) + AC_SUBST(GMOFILES) + AC_SUBST(INTLLIBS) + AC_SUBST(INTLOBJS) + AC_SUBST(POFILES) + AC_SUBST(POSUB) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST(DATADIRNAME) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST(INSTOBJEXT) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST(GENCAT) + ]) + +dnl Usage: Just like AM_WITH_NLS, which see. +AC_DEFUN([AM_GNU_GETTEXT], + [AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_ISC_POSIX])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([jm_GLIBC21])dnl + + AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getcwd getegid geteuid \ +getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \ +strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) + + AM_ICONV + AM_LANGINFO_CODESET + AM_LC_MESSAGES + AM_WITH_NLS([$1],[$2],[$3]) + + if test "x$CATOBJEXT" != "x"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + AC_MSG_CHECKING(for catalogs to be installed) + NEW_LINGUAS= + for presentlang in $ALL_LINGUAS; do + useit=no + for desiredlang in ${LINGUAS-$ALL_LINGUAS}; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + NEW_LINGUAS="$NEW_LINGUAS $presentlang" + fi + done + LINGUAS=$NEW_LINGUAS + AC_MSG_RESULT($LINGUAS) + fi + + dnl Construct list of names of catalog files to be constructed. + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly + dnl find the mkinstalldirs script in another subdir but $(top_srcdir). + dnl Try to locate is. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=ifelse([$1], use-libtool, [l], []) + AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) + ]) +#serial 2 + +# Test for the GNU C Library, version 2.1 or newer. +# From Bruno Haible. + +AC_DEFUN([jm_GLIBC21], + [ + AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, + ac_cv_gnu_library_2_1, + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + ], + ac_cv_gnu_library_2_1=yes, + ac_cv_gnu_library_2_1=no) + ] + ) + AC_SUBST(GLIBC21) + GLIBC21="$ac_cv_gnu_library_2_1" + ] +) +#serial AM2 + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + + AC_ARG_WITH([libiconv-prefix], +[ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [ + for dir in `echo "$withval" | tr : ' '`; do + if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi + if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi + done + ]) + + AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS -liconv" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi + LIBICONV= + if test "$am_cv_lib_iconv" = yes; then + LIBICONV="-liconv" + fi + AC_SUBST(LIBICONV) +]) +#serial 1 +# This test replaces the one in autoconf. +# Currently this macro should have the same name as the autoconf macro +# because gettext's gettext.m4 (distributed in the automake package) +# still uses it. Otherwise, the use in gettext.m4 makes autoheader +# give these diagnostics: +# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX +# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX + +undefine([AC_ISC_POSIX]) + +AC_DEFUN([AC_ISC_POSIX], + [ + dnl This test replaces the obsolescent AC_ISC_POSIX kludge. + AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) + ] +) +# Check whether LC_MESSAGES is available in . +# Ulrich Drepper , 1995. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. + +# serial 2 + +AC_DEFUN([AM_LC_MESSAGES], + [if test $ac_cv_header_locale_h = yes; then + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) + if test $am_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, + [Define if your file defines LC_MESSAGES.]) + fi + fi]) +# Search path for a program which passes the given test. +# Ulrich Drepper , 1996. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. + +# serial 2 + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + /*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in ifelse([$5], , $PATH, [$5]); do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# This macro actually does too much some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 8 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +AC_PREREQ([2.54]) + +# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow +# the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], [AC_PACKAGE_TARNAME])dnl + AC_SUBST([VERSION], [AC_PACKAGE_VERSION])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_MISSING_PROG(AMTAR, tar) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl + +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[_am_stamp_count=`expr ${_am_stamp_count-0} + 1` +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.7])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# +# Check to make sure that the build environment is sane. +# + +# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# -*- Autoconf -*- + + +# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# AM_AUX_DIR_EXPAND + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +# Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50]) + +AC_DEFUN([AM_AUX_DIR_EXPAND], [ +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# AM_PROG_INSTALL_STRIP + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# serial 4 -*- Autoconf -*- + +# Copyright 1999, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + echo '#include "conftest.h"' > conftest.c + echo 'int i;' > conftest.h + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=conftest.c object=conftest.o \ + depfile=conftest.Po tmpdepfile=conftest.TPo \ + $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && + grep conftest.h conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[rm -f .deps 2>/dev/null +mkdir .deps 2>/dev/null +if test -d .deps; then + DEPDIR=.deps +else + # MS-DOS does not allow filenames that begin with a dot. + DEPDIR=_deps +fi +rmdir .deps 2>/dev/null +AC_SUBST([DEPDIR]) +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking Speeds up one-time builds + --enable-dependency-tracking Do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +#serial 2 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # We invoke sed twice because it is the simplest approach to + # changing $(DEPDIR) to its actual value in the expansion. + for file in `sed -n -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +doit: + @echo done +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST(am__include) +AC_SUBST(am__quote) +AC_MSG_RESULT($_am_result) +rm -f confinc confmf +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 5 + +AC_PREREQ(2.52) + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]) +fi])]) + +# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- + +# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_PREREQ([2.52]) + +# serial 6 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- + +# serial 46 AC_PROG_LIBTOOL + +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +]) + +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.13)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl +AC_REQUIRE([LT_AC_PROG_SED])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +_LT_AC_PROG_ECHO_BACKSLASH +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE(libtool-lock, + [ --disable-libtool-lock avoid locking (might break parallel builds)]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_SAVE + AC_LANG_C + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_RESTORE]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + + # recent cygwin and mingw systems supply a stub DllMain which the user + # can override, but on older systems we have to supply one + AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain, + [AC_TRY_LINK([], + [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*); + DllMain (0, 0, 0);], + [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])]) + + case $host/$CC in + *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*) + # old mingw systems require "-dll" to link a DLL, while more recent ones + # require "-mdll" + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -mdll" + AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch, + [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])]) + CFLAGS="$SAVE_CFLAGS" ;; + *-*-cygwin* | *-*-pw32*) + # cygwin systems need to pass --dll to the linker, and not link + # crt.o which will require a WinMain@16 definition. + lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;; + esac + ;; + ]) +esac + +_LT_AC_LTCONFIG_HACK + +]) + +# AC_LIBTOOL_HEADER_ASSERT +# ------------------------ +AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT], +[AC_CACHE_CHECK([whether $CC supports assert without backlinking], + [lt_cv_func_assert_works], + [case $host in + *-*-solaris*) + if test "$GCC" = yes && test "$with_gnu_ld" != yes; then + case `$CC --version 2>/dev/null` in + [[12]].*) lt_cv_func_assert_works=no ;; + *) lt_cv_func_assert_works=yes ;; + esac + fi + ;; + esac]) + +if test "x$lt_cv_func_assert_works" = xyes; then + AC_CHECK_HEADERS(assert.h) +fi +])# AC_LIBTOOL_HEADER_ASSERT + +# _LT_AC_CHECK_DLFCN +# -------------------- +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h) +])# _LT_AC_CHECK_DLFCN + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris* | sysv5*) + symcode='[[BDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $host_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[[ABCDGISTW]]' +fi + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. +lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[[]] = +{ +EOF + sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$no_builtin_flag" + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AC_FD_CC + fi + else + echo "cannot find nm_test_var in $nlist" >&AC_FD_CC + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC + fi + else + echo "$progname: failed program was:" >&AC_FD_CC + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +if test -z "$lt_cv_sys_global_symbol_pipe"; then + global_symbol_to_cdecl= + global_symbol_to_c_name_address= +else + global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" + global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" +fi +if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; +then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + +# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR +# --------------------------------- +AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR], +[# Find the correct PATH separator. Usually this is `:', but +# DJGPP uses `;' like DOS. +if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) lt_cv_sys_path_separator=';' ;; + *) lt_cv_sys_path_separator=':' ;; + esac + PATH_SEPARATOR=$lt_cv_sys_path_separator +fi +])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +AC_DIVERT_POP +])# _LT_AC_PROG_ECHO_BACKSLASH + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ------------------------------------------------------------------ +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[if test "$cross_compiling" = yes; then : + [$4] +else + AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_unknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + +# AC_LIBTOOL_DLOPEN_SELF +# ------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + cygwin* | mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + +AC_DEFUN([_LT_AC_LTCONFIG_HACK], +[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='s/\([[\\"\\`$\\\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([[\\"\\`\\\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" +need_locks="$enable_libtool_lock" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +if test x"$host" != x"$build"; then + ac_tool_prefix=${host_alias}- +else + ac_tool_prefix= +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case $host_os in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="[$]2" + +AC_MSG_CHECKING([for objdir]) +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +AC_MSG_RESULT($objdir) + + +AC_ARG_WITH(pic, +[ --with-pic try to use only PIC/non-PIC objects [default=use both]], +pic_mode="$withval", pic_mode=default) +test -z "$pic_mode" && pic_mode=default + +# We assume here that the value for lt_cv_prog_cc_pic will not be cached +# in isolation, and that seeing it set (from the cache) indicates that +# the associated values are set (in the cache) correctly too. +AC_MSG_CHECKING([for $compiler option to produce PIC]) +AC_CACHE_VAL(lt_cv_prog_cc_pic, +[ lt_cv_prog_cc_pic= + lt_cv_prog_cc_shlib= + lt_cv_prog_cc_wl= + lt_cv_prog_cc_static= + lt_cv_prog_cc_no_builtin= + lt_cv_prog_cc_can_build_shared=$can_build_shared + + if test "$GCC" = yes; then + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-static' + + case $host_os in + aix*) + # Below there is a dirty hack to force normal static linking with -ldl + # The problem is because libdl dynamically linked with both libc and + # libC (AIX C++ library), which obviously doesn't included in libraries + # list by gcc. This cause undefined symbols with -static flags. + # This hack allows C programs to be linked with "-static -ldl", but + # not sure about C++ programs. + lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_cv_prog_cc_pic='-fno-common' + ;; + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_cv_prog_cc_pic=-Kconform_pic + fi + ;; + *) + lt_cv_prog_cc_pic='-fPIC' + ;; + esac + else + # PORTME Check for PIC flags for the system compiler. + case $host_os in + aix3* | aix4* | aix5*) + lt_cv_prog_cc_wl='-Wl,' + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_cv_prog_cc_static='-Bstatic' + else + lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + hpux9* | hpux10* | hpux11*) + # Is there a better lt_cv_prog_cc_static that works with the bundled CC? + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" + lt_cv_prog_cc_pic='+Z' + ;; + + irix5* | irix6* | nonstopux*) + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + + newsos6) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + ;; + + osf3* | osf4* | osf5*) + # All OSF/1 code is PIC. + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + ;; + + sco3.2v5*) + lt_cv_prog_cc_pic='-Kpic' + lt_cv_prog_cc_static='-dn' + lt_cv_prog_cc_shlib='-belf' + ;; + + solaris*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + sunos4*) + lt_cv_prog_cc_pic='-PIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Qoption ld ' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + uts4*) + lt_cv_prog_cc_pic='-pic' + lt_cv_prog_cc_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_cv_prog_cc_pic='-Kconform_pic' + lt_cv_prog_cc_static='-Bstatic' + fi + ;; + + *) + lt_cv_prog_cc_can_build_shared=no + ;; + esac + fi +]) +if test -z "$lt_cv_prog_cc_pic"; then + AC_MSG_RESULT([none]) +else + AC_MSG_RESULT([$lt_cv_prog_cc_pic]) + + # Check to make sure the pic_flag actually works. + AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works]) + AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" + AC_TRY_COMPILE([], [], [dnl + case $host_os in + hpux9* | hpux10* | hpux11*) + # On HP-UX, both CC and GCC only warn that PIC is supported... then + # they create non-PIC objects. So, if there were any warnings, we + # assume that PIC is not supported. + if test -s conftest.err; then + lt_cv_prog_cc_pic_works=no + else + lt_cv_prog_cc_pic_works=yes + fi + ;; + *) + lt_cv_prog_cc_pic_works=yes + ;; + esac + ], [dnl + lt_cv_prog_cc_pic_works=no + ]) + CFLAGS="$save_CFLAGS" + ]) + + if test "X$lt_cv_prog_cc_pic_works" = Xno; then + lt_cv_prog_cc_pic= + lt_cv_prog_cc_can_build_shared=no + else + lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" + fi + + AC_MSG_RESULT([$lt_cv_prog_cc_pic_works]) +fi + +# Check for any special shared library compilation flags. +if test -n "$lt_cv_prog_cc_shlib"; then + AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries]) + if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then : + else + AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure]) + lt_cv_prog_cc_can_build_shared=no + fi +fi + +AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works]) +AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl + lt_cv_prog_cc_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" + AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes]) + LDFLAGS="$save_LDFLAGS" +]) + +# Belt *and* braces to stop my trousers falling down: +test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +AC_MSG_RESULT([$lt_cv_prog_cc_static_works]) + +pic_flag="$lt_cv_prog_cc_pic" +special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +wl="$lt_cv_prog_cc_wl" +link_static_flag="$lt_cv_prog_cc_static" +no_builtin_flag="$lt_cv_prog_cc_no_builtin" +can_build_shared="$lt_cv_prog_cc_can_build_shared" + + +# Check to see if options -o and -c are simultaneously supported by compiler +AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext]) +AC_CACHE_VAL([lt_cv_compiler_c_o], [ +$rm -r conftest 2>/dev/null +mkdir conftest +cd conftest +echo "int some_variable = 0;" > conftest.$ac_ext +mkdir out +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +# that will create temporary files in the current directory regardless of +# the output directory. Thus, making CWD read-only will cause this test +# to fail, enabling locking or at least warning the user not to do parallel +# builds. +chmod -w . +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +compiler_c_o=no +if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s out/conftest.err; then + lt_cv_compiler_c_o=no + else + lt_cv_compiler_c_o=yes + fi +else + # Append any errors to the config.log. + cat out/conftest.err 1>&AC_FD_CC + lt_cv_compiler_c_o=no +fi +CFLAGS="$save_CFLAGS" +chmod u+w . +$rm conftest* out/* +rmdir out +cd .. +rmdir conftest +$rm -r conftest 2>/dev/null +]) +compiler_c_o=$lt_cv_compiler_c_o +AC_MSG_RESULT([$compiler_c_o]) + +if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + AC_MSG_CHECKING([if $compiler supports -c -o file.lo]) + AC_CACHE_VAL([lt_cv_compiler_o_lo], [ + lt_cv_compiler_o_lo=no + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + save_objext="$ac_objext" + ac_objext=lo + AC_TRY_COMPILE([], [int some_variable = 0;], [dnl + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + lt_cv_compiler_o_lo=no + else + lt_cv_compiler_o_lo=yes + fi + ]) + ac_objext="$save_objext" + CFLAGS="$save_CFLAGS" + ]) + compiler_o_lo=$lt_cv_compiler_o_lo + AC_MSG_RESULT([$compiler_o_lo]) +else + compiler_o_lo=no +fi + +# Check to see if we can do hard links to lock some files if needed +hard_links="nottested" +if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi + +if test "$GCC" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions]) + echo "int some_variable = 0;" > conftest.$ac_ext + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" + compiler_rtti_exceptions=no + AC_TRY_COMPILE([], [int some_variable = 0;], [dnl + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + compiler_rtti_exceptions=no + else + compiler_rtti_exceptions=yes + fi + ]) + CFLAGS="$save_CFLAGS" + AC_MSG_RESULT([$compiler_rtti_exceptions]) + + if test "$compiler_rtti_exceptions" = "yes"; then + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' + else + no_builtin_flag=' -fno-builtin' + fi +fi + +# See if the linker supports building shared libraries. +AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries]) + +allow_undefined_flag= +no_undefined_flag= +need_lib_prefix=unknown +need_version=unknown +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +archive_cmds= +archive_expsym_cmds= +old_archive_from_new_cmds= +old_archive_from_expsyms_cmds= +export_dynamic_flag_spec= +whole_archive_flag_spec= +thread_safe_flag_spec= +hardcode_into_libs=no +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= +link_all_deplibs=unknown +always_export_symbols=no +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +# include_expsyms should be a list of space-separated symbols to be *always* +# included in the symbol list +include_expsyms= +# exclude_expsyms can be an egrep regular expression of symbols to exclude +# it will be wrapped by ` (' and `)$', so one must not match beginning or +# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +# as well as any symbol that contains `d'. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +# platforms (ab)use it in PIC code, but their linkers get confused if +# the symbol is explicitly referenced. Since portable code cannot +# rely on this symbol name, it's probably fine to never include it in +# preloaded symbol tables. +extract_expsyms_cmds= + +case $host_os in +cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; +openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX, the GNU linker is very broken + # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=yes + + extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ + sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ + test -f $output_objdir/impgen.exe || (cd $output_objdir && \ + if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ + else $CC -o impgen impgen.c ; fi)~ + $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' + + old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' + + # cygwin and mingw dlls have different entry points and sets of symbols + # to exclude. + # FIXME: what about values for MSVC? + dll_entry=__cygwin_dll_entry@12 + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ + case $host_os in + mingw*) + # mingw values + dll_entry=_DllMainCRTStartup@12 + dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ + ;; + esac + + # mingw and cygwin differ, and it's simplest to just exclude the union + # of the two symbol sets. + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 + + # recent cygwin and mingw systems supply a stub DllMain which the user + # can override, but on older systems we have to supply one (in ltdll.c) + if test "x$lt_cv_need_dllmain" = "xyes"; then + ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " + ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ + test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' + else + ltdll_obj= + ltdll_cmds= + fi + + # Extract the symbol export list from an `--export-all' def file, + # then regenerate the def file from the symbol export list, so that + # the compiled dll only exports the symbol export list. + # Be careful not to strip the DATA tag left be newer dlltools. + export_symbols_cmds="$ltdll_cmds"' + $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ + sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' + + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is. + # If DATA tags from a recent dlltool are present, honour them! + archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname-def; + else + echo EXPORTS > $output_objdir/$soname-def; + _lt_hint=1; + cat $export_symbols | while read symbol; do + set dummy \$symbol; + case \[$]# in + 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; + 4) echo " \[$]2 \[$]3 \[$]4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;; + *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;; + esac; + _lt_hint=`expr 1 + \$_lt_hint`; + done; + fi~ + '"$ltdll_cmds"' + $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ + $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ + $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + case $host_os in + cygwin* | mingw* | pw32*) + # dlltool doesn't understand --whole-archive et. al. + whole_archive_flag_spec= + ;; + *) + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + ;; + esac + fi +else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + hardcode_direct=yes + archive_cmds='' + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + + shared_flag='-shared' + else + # not using gcc + if test "$host_cpu" = ia64; then + shared_flag='${wl}-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall can do strange things, so it is better to + # generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='${wl}-berok' + # This is a bit strange, but is similar to how AIX traditionally builds + # it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[[012]]) + allow_undefined_flag='-undefined suppress' + ;; + *) # Darwin 1.3 on + allow_undefined_flag='-flat_namespace -undefined suppress' + ;; + esac + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. Also zsh mangles + # `"' quotes if we put them in here... so don't! + archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)' + # We need to add '_' to the symbols in $export_symbols first + #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' + hardcode_direct=yes + hardcode_shlibpath_var=no + whole_archive_flag_spec='-all_load $convenience' + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9* | hpux10* | hpux11*) + case $host_os in + hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; + esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case "$host_os" in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + #Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + export_dynamic_flag_spec='${wl}-Bexport' + ;; + + solaris*) + # gcc --version < 3.0 without binutils cannot create self contained + # shared libraries reliably, requiring libgcc.a to resolve some of + # the object symbols generated in some cases. Libraries that use + # assert need libgcc.a to resolve __eprintf, for example. Linking + # a copy of libgcc.a into every shared library to guarantee resolving + # such symbols causes other problems: According to Tim Van Holder + # , C++ libraries end up with a separate + # (to the application) exception stack for one thing. + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + case `$CC --version 2>/dev/null` in + [[12]].*) + cat <&2 + +*** Warning: Releases of GCC earlier than version 3.0 cannot reliably +*** create self contained shared libraries on Solaris systems, without +*** introducing a dependency on libgcc.a. Therefore, libtool is disabling +*** -no-undefined support, which will at least allow you to build shared +*** libraries. However, you may find that when you link such libraries +*** into an application without using GCC, you have to manually add +*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to +*** upgrade to a newer version of GCC. Another option is to rebuild your +*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. + +EOF + no_undefined_flag= + ;; + esac + fi + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5uw7* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac +fi +AC_MSG_RESULT([$ld_shlibs]) +test "$ld_shlibs" = no && can_build_shared=no + +# Check hardcoding attributes. +AC_MSG_CHECKING([how to hardcode library paths into programs]) +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$hardcode_shlibpath_var" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +AC_MSG_RESULT([$hardcode_action]) + +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi + +reload_cmds='$LD$reload_flag -o $output$reload_objs' +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +# PORTME Fill in your ld.so characteristics +AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can + # not hardcode correct soname into executable. Probably we can + # add versioning support to collect2, so additional links can + # be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}.so$major' + fi + shlibpath_var=LIBPATH + fi + hardcode_into_libs=yes + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi4*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + export_dynamic_flag_spec=-rdynamic + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + need_version=no + need_lib_prefix=no + case $GCC,$host_os in + yes,cygwin*) + library_names_spec='$libname.dll.a' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' + postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog .libs/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + ;; + yes,mingw*) + library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"` + ;; + yes,pw32*) + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' + ;; + *) + library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' + soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + *) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) version_type=irix ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' + soname_spec='${libname}${release}.so$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case "$host_os" in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_version=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + hardcode_into_libs=yes + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='$libname.so.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +# Report the final consequences. +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +AC_LIBTOOL_DLOPEN_SELF + +if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + AC_CACHE_VAL([lt_cv_archive_cmds_need_lc], + [$rm conftest* + echo 'static int dummy;' > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile); then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_cv_prog_cc_wl + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi]) + AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) + ;; + esac +fi +need_lc=${lt_cv_archive_cmds_need_lc-yes} + +# The second clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + : +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + test -f Makefile && make "$ltmain" +fi + +if test -f "$ltmain"; then + trap "$rm \"${ofile}T\"; exit 1" 1 2 15 + $rm -f "${ofile}T" + + echo creating $ofile + + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS SED \ + AR AR_FLAGS CC LD LN_S NM SHELL \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ + thread_safe_flag_spec whole_archive_flag_spec libname_spec \ + library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ + postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ + old_striplib striplib file_magic_cmd export_symbols_cmds \ + deplibs_check_method allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ + global_symbol_to_c_name_address \ + hardcode_libdir_flag_spec hardcode_libdir_separator \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case $var in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + cat <<__EOF__ > "${ofile}T" +#! $SHELL + +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996-2000 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="${SED} -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$need_lc + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# The default C compiler. +CC=$lt_CC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_pic_flag +pic_mode=$pic_mode + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_compiler_c_o + +# Can we write directly to a .lo ? +compiler_o_lo=$lt_compiler_o_lo + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_link_static_flag + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + case $host_os in + aix3*) + cat <<\EOF >> "${ofile}T" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + case $host_os in + cygwin* | mingw* | pw32* | os2*) + cat <<'EOF' >> "${ofile}T" + # This is a source program that is used to create dlls on Windows + # Don't remove nor modify the starting and closing comments +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ + # This is a source program that is used to create import libraries + # on Windows for dlls which lack them. Don't remove nor modify the + # starting and closing comments +# /* impgen.c starts here */ +# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +# +# This file is part of GNU libtool. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# */ +# +# #include /* for printf() */ +# #include /* for open(), lseek(), read() */ +# #include /* for O_RDONLY, O_BINARY */ +# #include /* for strdup() */ +# +# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +# #ifndef O_BINARY +# #define O_BINARY 0 +# #endif +# +# static unsigned int +# pe_get16 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[2]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 2); +# return b[0] + (b[1]<<8); +# } +# +# static unsigned int +# pe_get32 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[4]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 4); +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# static unsigned int +# pe_as32 (ptr) +# void *ptr; +# { +# unsigned char *b = ptr; +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# int +# main (argc, argv) +# int argc; +# char *argv[]; +# { +# int dll; +# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +# unsigned long export_rva, export_size, nsections, secptr, expptr; +# unsigned long name_rvas, nexp; +# unsigned char *expdata, *erva; +# char *filename, *dll_name; +# +# filename = argv[1]; +# +# dll = open(filename, O_RDONLY|O_BINARY); +# if (dll < 1) +# return 1; +# +# dll_name = filename; +# +# for (i=0; filename[i]; i++) +# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +# dll_name = filename + i +1; +# +# pe_header_offset = pe_get32 (dll, 0x3c); +# opthdr_ofs = pe_header_offset + 4 + 20; +# num_entries = pe_get32 (dll, opthdr_ofs + 92); +# +# if (num_entries < 1) /* no exports */ +# return 1; +# +# export_rva = pe_get32 (dll, opthdr_ofs + 96); +# export_size = pe_get32 (dll, opthdr_ofs + 100); +# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +# secptr = (pe_header_offset + 4 + 20 + +# pe_get16 (dll, pe_header_offset + 4 + 16)); +# +# expptr = 0; +# for (i = 0; i < nsections; i++) +# { +# char sname[8]; +# unsigned long secptr1 = secptr + 40 * i; +# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +# lseek(dll, secptr1, SEEK_SET); +# read(dll, sname, 8); +# if (vaddr <= export_rva && vaddr+vsize > export_rva) +# { +# expptr = fptr + (export_rva - vaddr); +# if (export_rva + export_size > vaddr + vsize) +# export_size = vsize - (export_rva - vaddr); +# break; +# } +# } +# +# expdata = (unsigned char*)malloc(export_size); +# lseek (dll, expptr, SEEK_SET); +# read (dll, expdata, export_size); +# erva = expdata - export_rva; +# +# nexp = pe_as32 (expdata+24); +# name_rvas = pe_as32 (expdata+32); +# +# printf ("EXPORTS\n"); +# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) + + mv -f "${ofile}T" "$ofile" || \ + (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") + chmod +x "$ofile" +fi + +])# _LT_AC_LTCONFIG_HACK + +# AC_LIBTOOL_DLOPEN - enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) + +# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) + +# AC_ENABLE_SHARED - implement the --enable-shared flag +# Usage: AC_ENABLE_SHARED[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(shared, +changequote(<<, >>)dnl +<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case $enableval in +yes) enable_shared=yes ;; +no) enable_shared=no ;; +*) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl +]) + +# AC_DISABLE_SHARED - set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no)]) + +# AC_ENABLE_STATIC - implement the --enable-static flag +# Usage: AC_ENABLE_STATIC[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(static, +changequote(<<, >>)dnl +<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case $enableval in +yes) enable_static=yes ;; +no) enable_static=no ;; +*) + enable_static=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_static=AC_ENABLE_STATIC_DEFAULT)dnl +]) + +# AC_DISABLE_STATIC - set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no)]) + + +# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag +# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(fast-install, +changequote(<<, >>)dnl +<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case $enableval in +yes) enable_fast_install=yes ;; +no) enable_fast_install=no ;; +*) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl +]) + +# AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no)]) + +# AC_LIBTOOL_PICMODE - implement the --with-pic flag +# Usage: AC_LIBTOOL_PICMODE[(MODE)] +# Where MODE is either `yes' or `no'. If omitted, it defaults to +# `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default)]) + + +# AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in + /*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; + ?:/*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +]) + + +# AC_PATH_MAGIC - find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl +AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH) + else + MAGIC_CMD=: + fi +fi +]) + + +# AC_PROG_LD - find the path to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH(gnu-ld, +[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], +test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | [[A-Za-z]]:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$lt_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_PROG_LD_GNU +]) + +# AC_PROG_LD_GNU - +AC_DEFUN([AC_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + lt_cv_prog_gnu_ld=yes +else + lt_cv_prog_gnu_ld=no +fi]) +with_gnu_ld=$lt_cv_prog_gnu_ld +]) + +# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker +# -- PORTME Some linkers may need a different reload flag. +AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], +[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag, +[lt_cv_ld_reload_flag='-r']) +reload_flag=$lt_cv_ld_reload_flag +test -n "$reload_flag" && reload_flag=" $reload_flag" +]) + +# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], +[AC_CACHE_CHECK([how to recognise dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given egrep regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi4*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin* | mingw* | pw32*) + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' + lt_cv_file_magic_cmd='/usr/bin/file -L' + case "$host_os" in + rhapsody* | darwin1.[[012]]) + lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` + ;; + *) # Darwin 1.3 on + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' + ;; + esac + ;; + +freebsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20*|hpux11*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + irix5* | nonstopux*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" + ;; + esac + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux-gnu*) + case $host_cpu in + alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64*) + lt_cv_deplibs_check_method=pass_all ;; + *) + # glibc up to 2.1.1 does not perform some relocations on ARM + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; + esac + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +openbsd*) + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' + else + lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + fi + ;; + +osf3* | osf4* | osf5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' + lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +sysv5uw[[78]]* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +]) + + +# AC_PROG_NM - find the path to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl +AC_MSG_CHECKING([for BSD-compatible nm]) +AC_CACHE_VAL(lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/${ac_tool_prefix}nm + if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then + lt_cv_path_NM="$tmp_nm -B" + break + elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + lt_cv_path_NM="$tmp_nm -p" + break + else + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +AC_MSG_RESULT([$NM]) +]) + +# AC_CHECK_LIBM - check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32*) + # These system don't have libm + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, main, LIBM="-lm") + ;; +esac +]) + +# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl convenience library and LTDLINCL to the include flags for +# the libltdl header and adds --enable-ltdl-convenience to the +# configure arguments. Note that LIBLTDL and LTDLINCL are not +# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not +# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed +# with '${top_builddir}/' and LTDLINCL will be prefixed with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +]) + +# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl installable library and LTDLINCL to the include flags for +# the libltdl header and adds --enable-ltdl-install to the configure +# arguments. Note that LIBLTDL and LTDLINCL are not AC_SUBSTed, nor is +# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed +# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will +# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed +# with '${top_srcdir}/' (note the single quotes!). If your package is +# not flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, main, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +]) + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_executable_p="test -f" +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext" + fi + done + done +done + + # Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/sed$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + _max=0 + _count=0 + # Add /usr/xpg4/bin/sed as it is typically found on Solaris + # along with /bin/sed that truncates output. + for _sed in $_sed_list /usr/xpg4/bin/sed; do + test ! -f ${_sed} && break + cat /dev/null > "$tmp/sed.in" + _count=0 + echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in" + # Check for GNU sed and select it if it is found. + if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then + lt_cv_path_SED=${_sed} + break + fi + while true; do + cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp" + mv "$tmp/sed.tmp" "$tmp/sed.in" + cp "$tmp/sed.in" "$tmp/sed.nl" + echo >>"$tmp/sed.nl" + ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break + cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break + # 40000 chars as input seems more than enough + test $_count -gt 10 && break + _count=`expr $_count + 1` + if test $_count -gt $_max; then + _max=$_count + lt_cv_path_SED=$_sed + fi + done + done + rm -rf "$tmp" +]) +if test "X$SED" != "X"; then + lt_cv_path_SED=$SED +else + SED=$lt_cv_path_SED +fi +AC_MSG_RESULT([$SED]) +]) + diff --git a/config.guess b/config.guess new file mode 100755 index 0000000..5145e35 --- /dev/null +++ b/config.guess @@ -0,0 +1,1363 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002 Free Software Foundation, Inc. + +timestamp='2002-10-21' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# This shell variable is my proudest work .. or something. --bje + +set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ; +(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old) + || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ; +dummy=$tmpdir/dummy ; +files="$dummy.c $dummy.o $dummy.rel $dummy" ; +trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + rm -f $files ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; +unset files' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + eval $set_cc_for_build + cat <$dummy.s + .data +\$Lformat: + .byte 37,100,45,37,120,10,0 # "%d-%x\n" + + .text + .globl main + .align 4 + .ent main +main: + .frame \$30,16,\$26,0 + ldgp \$29,0(\$27) + .prologue 1 + .long 0x47e03d80 # implver \$0 + lda \$2,-1 + .long 0x47e20c21 # amask \$2,\$1 + lda \$16,\$Lformat + mov \$0,\$17 + not \$1,\$18 + jsr \$26,printf + ldgp \$29,0(\$26) + mov 0,\$16 + jsr \$26,exit + .end main +EOF + $CC_FOR_BUILD -o $dummy $dummy.s 2>/dev/null + if test "$?" = 0 ; then + case `$dummy` in + 0-0) + UNAME_MACHINE="alpha" + ;; + 1-0) + UNAME_MACHINE="alphaev5" + ;; + 1-1) + UNAME_MACHINE="alphaev56" + ;; + 1-101) + UNAME_MACHINE="alphapca56" + ;; + 2-303) + UNAME_MACHINE="alphaev6" + ;; + 2-307) + UNAME_MACHINE="alphaev67" + ;; + 2-1307) + UNAME_MACHINE="alphaev68" + ;; + 3-1307) + UNAME_MACHINE="alphaev7" + ;; + esac + fi + rm -f $dummy.s $dummy && rmdir $tmpdir + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 + rm -f $dummy.c $dummy && rmdir $tmpdir + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 + rm -f $dummy.c $dummy && rmdir $tmpdir + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi + rm -f $dummy.c $dummy && rmdir $tmpdir + fi ;; + esac + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 + rm -f $dummy.c $dummy && rmdir $tmpdir + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3D:*:*:*) + echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + rm -f $dummy.c && rmdir $tmpdir + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:3*) + echo i386-pc-interix3 + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i386-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + rm -f $dummy.c && rmdir $tmpdir + test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + rm -f $dummy.c && rmdir $tmpdir + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + echo `uname -p`-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 +rm -f $dummy.c $dummy && rmdir $tmpdir + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/config.h.in b/config.h.in new file mode 100644 index 0000000..ac7df23 --- /dev/null +++ b/config.h.in @@ -0,0 +1,263 @@ +/* config.h.in. Generated from configure.in by autoheader. */ +/* For use by autoheader. */ + +#ifndef CONFIG_H +#define CONFIG_H /* To stop multiple inclusions. */ + + +/* Enable GNU extensions. */ +#undef _GNU_SOURCE + +#undef ENABLE_NLS +#undef HAVE_CATGETS +#undef HAVE_GETTEXT +#undef HAVE_LC_MESSAGES +#undef HAVE_STPCPY + +/* Define to 'int' if not already defined by the system. */ +#undef socklen_t + + +/* autoheader generated things inserted here. */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END + +/* Define to 1 if using `alloca.c'. */ +#undef C_ALLOCA + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* Define to 1 if you have `alloca', as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_ARGZ_H + +/* Define to 1 if you have the `dcgettext' function. */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the `feof_unlocked' function. */ +#undef HAVE_FEOF_UNLOCKED + +/* Define to 1 if you have the `fgets_unlocked' function. */ +#undef HAVE_FGETS_UNLOCKED + +/* Define to 1 if you have the header file. */ +#undef HAVE_FL_FL_H + +/* Define to 1 if you have the `getcwd' function. */ +#undef HAVE_GETCWD + +/* Define to 1 if you have the `getegid' function. */ +#undef HAVE_GETEGID + +/* Define to 1 if you have the `geteuid' function. */ +#undef HAVE_GETEUID + +/* Define to 1 if you have the `getgid' function. */ +#undef HAVE_GETGID + +/* Define to 1 if you have the `getpagesize' function. */ +#undef HAVE_GETPAGESIZE + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define to 1 if you have the `getuid' function. */ +#undef HAVE_GETUID + +/* Define if you have the iconv() function. */ +#undef HAVE_ICONV + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET + +/* Define if your file defines LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES + +/* Define to 1 if you have the `fltk' library (-lfltk). */ +#undef HAVE_LIBFLTK + +/* Define to 1 if you have the `GL' library (-lGL). */ +#undef HAVE_LIBGL + +/* Define to 1 if you have the `m' library (-lm). */ +#undef HAVE_LIBM + +/* Define to 1 if you have the `X11' library (-lX11). */ +#undef HAVE_LIBX11 + +/* Define to 1 if you have the `Xext' library (-lXext). */ +#undef HAVE_LIBXEXT + +/* Define to 1 if you have the `Xpm' library (-lXpm). */ +#undef HAVE_LIBXPM + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MALLOC_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `mempcpy' function. */ +#undef HAVE_MEMPCPY + +/* Define to 1 if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define to 1 if you have the `munmap' function. */ +#undef HAVE_MUNMAP + +/* Define to 1 if you have the header file. */ +#undef HAVE_NL_TYPES_H + +/* Define to 1 if you have the `putenv' function. */ +#undef HAVE_PUTENV + +/* Define to 1 if you have the `setenv' function. */ +#undef HAVE_SETENV + +/* Define to 1 if you have the `setlocale' function. */ +#undef HAVE_SETLOCALE + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDDEF_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `stpcpy' function. */ +#undef HAVE_STPCPY + +/* Define to 1 if you have the `strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define to 1 if you have the `strchr' function. */ +#undef HAVE_STRCHR + +/* Define to 1 if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strncasecmp' function. */ +#undef HAVE_STRNCASECMP + +/* Define to 1 if you have the `strtoul' function. */ +#undef HAVE_STRTOUL + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the `tsearch' function. */ +#undef HAVE_TSEARCH + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `__argz_count' function. */ +#undef HAVE___ARGZ_COUNT + +/* Define to 1 if you have the `__argz_next' function. */ +#undef HAVE___ARGZ_NEXT + +/* Define to 1 if you have the `__argz_stringify' function. */ +#undef HAVE___ARGZ_STRINGIFY + +/* Define as const if the declaration of iconv() needs const. */ +#undef ICONV_CONST + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define to 1 if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME + +/* Define to 1 if your declares `struct tm'. */ +#undef TM_IN_SYS_TIME + +/* Version number of package */ +#undef VERSION + +/* Define to 1 if the X Window System is missing or not being used. */ +#undef X_DISPLAY_MISSING + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define as `__inline' if that's what the C compiler calls it, or to nothing + if it is not supported. */ +#undef inline + +/* Define to `long' if does not define. */ +#undef off_t + +/* Define to `unsigned' if does not define. */ +#undef size_t + + +#endif /* CONFIG_H */ + diff --git a/config.sub b/config.sub new file mode 100755 index 0000000..c00604f --- /dev/null +++ b/config.sub @@ -0,0 +1,1366 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. + +timestamp='2001-05-30' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \ + | arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \ + | pyramid | mn10200 | mn10300 | tron | a29k \ + | 580 | i960 | h8300 \ + | x86 | ppcbe | mipsbe | mipsle | shbe | shle \ + | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ + | hppa64 \ + | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \ + | alphaev6[78] \ + | we32k | ns16k | clipper | i370 | sh | sh[34] \ + | powerpc | powerpcle \ + | 1750a | dsp16xx | pdp10 | pdp11 \ + | mips16 | mips64 | mipsel | mips64el \ + | mips64orion | mips64orionel | mipstx39 | mipstx39el \ + | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ + | mips64vr5000 | miprs64vr5000el | mcore | s390 | s390x \ + | sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \ + | v850 | c4x \ + | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \ + | pj | pjl | h8500 | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + # FIXME: clean up the formatting here. + vax-* | tahoe-* | i*86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ + | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \ + | arm-* | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ + | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ + | xmp-* | ymp-* \ + | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \ + | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \ + | hppa2.0n-* | hppa64-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \ + | alphaev6[78]-* \ + | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ + | clipper-* | orion-* \ + | sparclite-* | pdp10-* | pdp11-* | sh-* | sh[34]-* | sh[34]eb-* \ + | powerpc-* | powerpcle-* | sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \ + | mips16-* | mips64-* | mipsel-* \ + | mips64el-* | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ + | mipstx39-* | mipstx39el-* | mcore-* \ + | f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \ + | [cjt]90-* \ + | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ + | thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \ + | bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | ymp) + basic_machine=ymp-cray + os=-unicos + ;; + cray2) + basic_machine=cray2-cray + os=-unicos + ;; + [cjt]90) + basic_machine=${basic_machine}-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mipsel*-linux*) + basic_machine=mipsel-unknown + os=-linux-gnu + ;; + mips*-linux*) + basic_machine=mips-unknown + os=-linux-gnu + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon) + basic_machine=i686-pc + ;; + pentiumii | pentium2) + basic_machine=i686-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sparclite-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=t3e-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + windows32) + basic_machine=i386-pc + os=-windows32-msvcrt + ;; + xmp) + basic_machine=xmp-cray + os=-unicos + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + mips) + if [ x$os = x-linux-gnu ]; then + basic_machine=mips-unknown + else + basic_machine=mips-mips + fi + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh3 | sh4) + basic_machine=sh-unknown + ;; + sparc | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + c4x*) + basic_machine=c4x-none + os=-coff + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -os2*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto*) + os=-nto-qnx + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/configure b/configure new file mode 100755 index 0000000..368263b --- /dev/null +++ b/configure @@ -0,0 +1,15696 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.56. +# +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Find the correct PATH separator. Usually this is `:', but +# DJGPP uses `;' like DOS. +if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) lt_cv_sys_path_separator=';' ;; + *) lt_cv_sys_path_separator=':' ;; + esac + PATH_SEPARATOR=$lt_cv_sys_path_separator +fi + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="src/main.cpp" +ac_subdirs_all="$ac_subdirs_all libprozilla" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE subdirs build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP UNAME LN_S ECHO RANLIB ac_ct_RANLIB CXXCPP EGREP LIBTOOL ALLOCA GLIBC21 LIBICONV USE_NLS MSGFMT GMSGFMT XGETTEXT INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATALOGS CATOBJEXT GMOFILES INTLLIBS INTLOBJS POFILES POSUB DATADIRNAME INSTOBJEXT GENCAT MKINSTALLDIRS INTL_LIBTOOL_SUFFIX_PREFIX THREAD_LIBS X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP +ac_env_CXXCPP_set=${CXXCPP+set} +ac_env_CXXCPP_value=$CXXCPP +ac_cv_env_CXXCPP_set=${CXXCPP+set} +ac_cv_env_CXXCPP_value=$CXXCPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +X features: + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking Speeds up one-time builds + --enable-dependency-tracking Do not reject slow dependency extractors + --enable-static=PKGS build static libraries default=yes + --enable-shared=PKGS build shared libraries default=no + --enable-fast-install=PKGS optimize for fast installation default=yes + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-nls do not use Native Language Support + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-fltk-libs set directory for FLTK library + --with-fltk-includes set directory for FLTK includes + --with-gnu-ld assume the C compiler uses GNU ld default=no + --with-pic try to use only PIC/non-PIC objects default=use both + --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib + --with-included-gettext use the GNU gettext library included here + --with-x use the X Window System + +Some influential environment variables: + CXX C++ compiler command + CXXFLAGS C++ compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CC C compiler command + CFLAGS C compiler flags + CPP C preprocessor + CXXCPP C++ preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.56. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core core.* *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + +am__api_version="1.7" +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + # test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=prozgui + VERSION=2.0.4 + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. + + + + + ac_config_headers="$ac_config_headers config.h" + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +rm -f .deps 2>/dev/null +mkdir .deps 2>/dev/null +if test -d .deps; then + DEPDIR=.deps +else + # MS-DOS does not allow filenames that begin with a dot. + DEPDIR=_deps +fi +rmdir .deps 2>/dev/null + + + ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +doit: + @echo done +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C++ compiler default output" >&5 +echo $ECHO_N "checking for C++ compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C++ compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5 +echo $ECHO_N "checking whether the C++ compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C++ compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C++ compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cxx_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + echo '#include "conftest.h"' > conftest.c + echo 'int i;' > conftest.h + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=conftest.c object=conftest.o \ + depfile=conftest.Po tmpdepfile=conftest.TPo \ + $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && + grep conftest.h conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + + + echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 +echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 +if test "${ac_cv_lib_cposix_strerror+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcposix $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strerror (); +int +main () +{ +strerror (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_cposix_strerror=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_cposix_strerror=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 +echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 +if test $ac_cv_lib_cposix_strerror = yes; then + LIBS="$LIBS -lcposix" +fi + + + + + + +subdirs="$subdirs libprozilla" + + + +# Check whether --with-fltk-libs or --without-fltk-libs was given. +if test "${with_fltk_libs+set}" = set; then + withval="$with_fltk_libs" + LDFLAGS="-L$withval $LDFLAGS" +fi; + + +# Check whether --with-fltk-includes or --without-fltk-includes was given. +if test "${with_fltk_includes+set}" = set; then + withval="$with_fltk_includes" + CFLAGS="-I$withval $CFLAGS" + CXXFLAGS="-I$withval $CXXFLAGS" +fi; + + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + echo '#include "conftest.h"' > conftest.c + echo 'int i;' > conftest.h + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=conftest.c object=conftest.o \ + depfile=conftest.Po tmpdepfile=conftest.TPo \ + $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && + grep conftest.h conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cxx_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + echo '#include "conftest.h"' > conftest.c + echo 'int i;' > conftest.h + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=conftest.c object=conftest.o \ + depfile=conftest.Po tmpdepfile=conftest.TPo \ + $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && + grep conftest.h conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +# Extract the first word of "uname", so it can be a program name with args. +set dummy uname; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_UNAME+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$UNAME"; then + ac_cv_prog_UNAME="$UNAME" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_UNAME="uname" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_UNAME" && ac_cv_prog_UNAME=":" +fi +fi +UNAME=$ac_cv_prog_UNAME +if test -n "$UNAME"; then + echo "$as_me:$LINENO: result: $UNAME" >&5 +echo "${ECHO_T}$UNAME" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +# Check whether --enable-static or --disable-static was given. +if test "${enable_static+set}" = set; then + enableval="$enable_static" + p=${PACKAGE-default} +case $enableval in +yes) enable_static=yes ;; +no) enable_static=no ;; +*) + enable_static=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_static=yes +fi; +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + p=${PACKAGE-default} +case $enableval in +yes) enable_shared=yes ;; +no) enable_shared=no ;; +*) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_shared=no +fi; +# Check whether --enable-fast-install or --disable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval="$enable_fast_install" + p=${PACKAGE-default} +case $enableval in +yes) enable_fast_install=yes ;; +no) enable_fast_install=no ;; +*) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_fast_install=yes +fi; +# Find the correct PATH separator. Usually this is `:', but +# DJGPP uses `;' like DOS. +if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) lt_cv_sys_path_separator=';' ;; + *) lt_cv_sys_path_separator=':' ;; + esac + PATH_SEPARATOR=$lt_cv_sys_path_separator +fi + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$lt_cv_path_LD" +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + lt_cv_prog_gnu_ld=yes +else + lt_cv_prog_gnu_ld=no +fi +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + +echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +reload_flag=$lt_cv_ld_reload_flag +test -n "$reload_flag" && reload_flag=" $reload_flag" + +echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/${ac_tool_prefix}nm + if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then + lt_cv_path_NM="$tmp_nm -B" + break + elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + lt_cv_path_NM="$tmp_nm -p" + break + else + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi + +NM="$lt_cv_path_NM" +echo "$as_me:$LINENO: result: $NM" >&5 +echo "${ECHO_T}$NM" >&6 + +echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 +if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_executable_p="test -f" +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext" + fi + done + done +done + + # Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/sed$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + _max=0 + _count=0 + # Add /usr/xpg4/bin/sed as it is typically found on Solaris + # along with /bin/sed that truncates output. + for _sed in $_sed_list /usr/xpg4/bin/sed; do + test ! -f ${_sed} && break + cat /dev/null > "$tmp/sed.in" + _count=0 + echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in" + # Check for GNU sed and select it if it is found. + if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then + lt_cv_path_SED=${_sed} + break + fi + while true; do + cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp" + mv "$tmp/sed.tmp" "$tmp/sed.in" + cp "$tmp/sed.in" "$tmp/sed.nl" + echo >>"$tmp/sed.nl" + ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break + cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break + # 40000 chars as input seems more than enough + test $_count -gt 10 && break + _count=`expr $_count + 1` + if test $_count -gt $_max; then + _max=$_count + lt_cv_path_SED=$_sed + fi + done + done + rm -rf "$tmp" + +fi + +if test "X$SED" != "X"; then + lt_cv_path_SED=$SED +else + SED=$lt_cv_path_SED +fi +echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6 + +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 +echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given egrep regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi4*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin* | mingw* | pw32*) + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' + lt_cv_file_magic_cmd='/usr/bin/file -L' + case "$host_os" in + rhapsody* | darwin1.[012]) + lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` + ;; + *) # Darwin 1.3 on + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' + ;; + esac + ;; + +freebsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20*|hpux11*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + irix5* | nonstopux*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" + ;; + esac + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux-gnu*) + case $host_cpu in + alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64*) + lt_cv_deplibs_check_method=pass_all ;; + *) + # glibc up to 2.1.1 does not perform some relocations on ARM + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; + esac + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +openbsd*) + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' + else + lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + fi + ;; + +osf3* | osf4* | osf5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' + lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +sysv5uw[78]* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; +esac + +fi +echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method + + + + + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo "$as_me:$LINENO: checking command to parse $NM output" >&5 +echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6 +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris* | sysv5*) + symcode='[BDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $host_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[ABCDGISTW]' +fi + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. +lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + rm -f conftest* + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{ +EOF + sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +if test -z "$lt_cv_sys_global_symbol_pipe"; then + global_symbol_to_cdecl= + global_symbol_to_c_name_address= +else + global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" + global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" +fi +if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; +then + echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6 +else + echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6 +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +echo "$as_me:$LINENO: result: $CXXCPP" >&5 +echo "${ECHO_T}$CXXCPP" >&6 +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in + /*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; + ?:/*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="/usr/bin:$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in + /*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; + ?:/*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="/usr/bin:$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 5797 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_cc_needs_belf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +lt_cv_cc_needs_belf=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + + +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" +need_locks="$enable_libtool_lock" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +if test x"$host" != x"$build"; then + ac_tool_prefix=${host_alias}- +else + ac_tool_prefix= +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case $host_os in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="$2" + +echo "$as_me:$LINENO: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +echo "$as_me:$LINENO: result: $objdir" >&5 +echo "${ECHO_T}$objdir" >&6 + + + +# Check whether --with-pic or --without-pic was given. +if test "${with_pic+set}" = set; then + withval="$with_pic" + pic_mode="$withval" +else + pic_mode=default +fi; +test -z "$pic_mode" && pic_mode=default + +# We assume here that the value for lt_cv_prog_cc_pic will not be cached +# in isolation, and that seeing it set (from the cache) indicates that +# the associated values are set (in the cache) correctly too. +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 +if test "${lt_cv_prog_cc_pic+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_cc_pic= + lt_cv_prog_cc_shlib= + lt_cv_prog_cc_wl= + lt_cv_prog_cc_static= + lt_cv_prog_cc_no_builtin= + lt_cv_prog_cc_can_build_shared=$can_build_shared + + if test "$GCC" = yes; then + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-static' + + case $host_os in + aix*) + # Below there is a dirty hack to force normal static linking with -ldl + # The problem is because libdl dynamically linked with both libc and + # libC (AIX C++ library), which obviously doesn't included in libraries + # list by gcc. This cause undefined symbols with -static flags. + # This hack allows C programs to be linked with "-static -ldl", but + # not sure about C++ programs. + lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_cv_prog_cc_pic='-fno-common' + ;; + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_cv_prog_cc_pic=-Kconform_pic + fi + ;; + *) + lt_cv_prog_cc_pic='-fPIC' + ;; + esac + else + # PORTME Check for PIC flags for the system compiler. + case $host_os in + aix3* | aix4* | aix5*) + lt_cv_prog_cc_wl='-Wl,' + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_cv_prog_cc_static='-Bstatic' + else + lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + hpux9* | hpux10* | hpux11*) + # Is there a better lt_cv_prog_cc_static that works with the bundled CC? + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" + lt_cv_prog_cc_pic='+Z' + ;; + + irix5* | irix6* | nonstopux*) + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + + newsos6) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + ;; + + osf3* | osf4* | osf5*) + # All OSF/1 code is PIC. + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + ;; + + sco3.2v5*) + lt_cv_prog_cc_pic='-Kpic' + lt_cv_prog_cc_static='-dn' + lt_cv_prog_cc_shlib='-belf' + ;; + + solaris*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + sunos4*) + lt_cv_prog_cc_pic='-PIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Qoption ld ' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + uts4*) + lt_cv_prog_cc_pic='-pic' + lt_cv_prog_cc_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_cv_prog_cc_pic='-Kconform_pic' + lt_cv_prog_cc_static='-Bstatic' + fi + ;; + + *) + lt_cv_prog_cc_can_build_shared=no + ;; + esac + fi + +fi + +if test -z "$lt_cv_prog_cc_pic"; then + echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6 +else + echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5 +echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 + + # Check to make sure the pic_flag actually works. + echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 + if test "${lt_cv_prog_cc_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + case $host_os in + hpux9* | hpux10* | hpux11*) + # On HP-UX, both CC and GCC only warn that PIC is supported... then + # they create non-PIC objects. So, if there were any warnings, we + # assume that PIC is not supported. + if test -s conftest.err; then + lt_cv_prog_cc_pic_works=no + else + lt_cv_prog_cc_pic_works=yes + fi + ;; + *) + lt_cv_prog_cc_pic_works=yes + ;; + esac + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + lt_cv_prog_cc_pic_works=no + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + +fi + + + if test "X$lt_cv_prog_cc_pic_works" = Xno; then + lt_cv_prog_cc_pic= + lt_cv_prog_cc_can_build_shared=no + else + lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" + fi + + echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5 +echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 +fi + +# Check for any special shared library compilation flags. +if test -n "$lt_cv_prog_cc_shlib"; then + { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 +echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} + if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : + else + { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} + lt_cv_prog_cc_can_build_shared=no + fi +fi + +echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 +if test "${lt_cv_prog_cc_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_cc_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_prog_cc_static_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi + + +# Belt *and* braces to stop my trousers falling down: +test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5 +echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 + +pic_flag="$lt_cv_prog_cc_pic" +special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +wl="$lt_cv_prog_cc_wl" +link_static_flag="$lt_cv_prog_cc_static" +no_builtin_flag="$lt_cv_prog_cc_no_builtin" +can_build_shared="$lt_cv_prog_cc_can_build_shared" + + +# Check to see if options -o and -c are simultaneously supported by compiler +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +$rm -r conftest 2>/dev/null +mkdir conftest +cd conftest +echo "int some_variable = 0;" > conftest.$ac_ext +mkdir out +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +# that will create temporary files in the current directory regardless of +# the output directory. Thus, making CWD read-only will cause this test +# to fail, enabling locking or at least warning the user not to do parallel +# builds. +chmod -w . +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +compiler_c_o=no +if { (eval echo configure:6326: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s out/conftest.err; then + lt_cv_compiler_c_o=no + else + lt_cv_compiler_c_o=yes + fi +else + # Append any errors to the config.log. + cat out/conftest.err 1>&5 + lt_cv_compiler_c_o=no +fi +CFLAGS="$save_CFLAGS" +chmod u+w . +$rm conftest* out/* +rmdir out +cd .. +rmdir conftest +$rm -r conftest 2>/dev/null + +fi + +compiler_c_o=$lt_cv_compiler_c_o +echo "$as_me:$LINENO: result: $compiler_c_o" >&5 +echo "${ECHO_T}$compiler_c_o" >&6 + +if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 + if test "${lt_cv_compiler_o_lo+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + lt_cv_compiler_o_lo=no + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + save_objext="$ac_objext" + ac_objext=lo + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +int some_variable = 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + lt_cv_compiler_o_lo=no + else + lt_cv_compiler_o_lo=yes + fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + ac_objext="$save_objext" + CFLAGS="$save_CFLAGS" + +fi + + compiler_o_lo=$lt_cv_compiler_o_lo + echo "$as_me:$LINENO: result: $compiler_o_lo" >&5 +echo "${ECHO_T}$compiler_o_lo" >&6 +else + compiler_o_lo=no +fi + +# Check to see if we can do hard links to lock some files if needed +hard_links="nottested" +if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +if test "$GCC" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 + echo "int some_variable = 0;" > conftest.$ac_ext + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" + compiler_rtti_exceptions=no + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +int some_variable = 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + compiler_rtti_exceptions=no + else + compiler_rtti_exceptions=yes + fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$compiler_rtti_exceptions" >&6 + + if test "$compiler_rtti_exceptions" = "yes"; then + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' + else + no_builtin_flag=' -fno-builtin' + fi +fi + +# See if the linker supports building shared libraries. +echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 + +allow_undefined_flag= +no_undefined_flag= +need_lib_prefix=unknown +need_version=unknown +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +archive_cmds= +archive_expsym_cmds= +old_archive_from_new_cmds= +old_archive_from_expsyms_cmds= +export_dynamic_flag_spec= +whole_archive_flag_spec= +thread_safe_flag_spec= +hardcode_into_libs=no +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= +link_all_deplibs=unknown +always_export_symbols=no +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +# include_expsyms should be a list of space-separated symbols to be *always* +# included in the symbol list +include_expsyms= +# exclude_expsyms can be an egrep regular expression of symbols to exclude +# it will be wrapped by ` (' and `)$', so one must not match beginning or +# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +# as well as any symbol that contains `d'. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +# platforms (ab)use it in PIC code, but their linkers get confused if +# the symbol is explicitly referenced. Since portable code cannot +# rely on this symbol name, it's probably fine to never include it in +# preloaded symbol tables. +extract_expsyms_cmds= + +case $host_os in +cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; +openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX, the GNU linker is very broken + # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=yes + + extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ + sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ + test -f $output_objdir/impgen.exe || (cd $output_objdir && \ + if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ + else $CC -o impgen impgen.c ; fi)~ + $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' + + old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' + + # cygwin and mingw dlls have different entry points and sets of symbols + # to exclude. + # FIXME: what about values for MSVC? + dll_entry=__cygwin_dll_entry@12 + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ + case $host_os in + mingw*) + # mingw values + dll_entry=_DllMainCRTStartup@12 + dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ + ;; + esac + + # mingw and cygwin differ, and it's simplest to just exclude the union + # of the two symbol sets. + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 + + # recent cygwin and mingw systems supply a stub DllMain which the user + # can override, but on older systems we have to supply one (in ltdll.c) + if test "x$lt_cv_need_dllmain" = "xyes"; then + ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " + ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ + test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' + else + ltdll_obj= + ltdll_cmds= + fi + + # Extract the symbol export list from an `--export-all' def file, + # then regenerate the def file from the symbol export list, so that + # the compiled dll only exports the symbol export list. + # Be careful not to strip the DATA tag left be newer dlltools. + export_symbols_cmds="$ltdll_cmds"' + $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ + sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' + + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is. + # If DATA tags from a recent dlltool are present, honour them! + archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname-def; + else + echo EXPORTS > $output_objdir/$soname-def; + _lt_hint=1; + cat $export_symbols | while read symbol; do + set dummy \$symbol; + case \$# in + 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; + 4) echo " \$2 \$3 \$4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;; + *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; + esac; + _lt_hint=`expr 1 + \$_lt_hint`; + done; + fi~ + '"$ltdll_cmds"' + $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ + $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ + $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + case $host_os in + cygwin* | mingw* | pw32*) + # dlltool doesn't understand --whole-archive et. al. + whole_archive_flag_spec= + ;; + *) + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + ;; + esac + fi +else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + hardcode_direct=yes + archive_cmds='' + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + + shared_flag='-shared' + else + # not using gcc + if test "$host_cpu" = ia64; then + shared_flag='${wl}-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall can do strange things, so it is better to + # generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='${wl}-berok' + # This is a bit strange, but is similar to how AIX traditionally builds + # it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag='-undefined suppress' + ;; + *) # Darwin 1.3 on + allow_undefined_flag='-flat_namespace -undefined suppress' + ;; + esac + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. Also zsh mangles + # `"' quotes if we put them in here... so don't! + archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)' + # We need to add '_' to the symbols in $export_symbols first + #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' + hardcode_direct=yes + hardcode_shlibpath_var=no + whole_archive_flag_spec='-all_load $convenience' + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9* | hpux10* | hpux11*) + case $host_os in + hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; + esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + #Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + export_dynamic_flag_spec='${wl}-Bexport' + ;; + + solaris*) + # gcc --version < 3.0 without binutils cannot create self contained + # shared libraries reliably, requiring libgcc.a to resolve some of + # the object symbols generated in some cases. Libraries that use + # assert need libgcc.a to resolve __eprintf, for example. Linking + # a copy of libgcc.a into every shared library to guarantee resolving + # such symbols causes other problems: According to Tim Van Holder + # , C++ libraries end up with a separate + # (to the application) exception stack for one thing. + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + case `$CC --version 2>/dev/null` in + [12].*) + cat <&2 + +*** Warning: Releases of GCC earlier than version 3.0 cannot reliably +*** create self contained shared libraries on Solaris systems, without +*** introducing a dependency on libgcc.a. Therefore, libtool is disabling +*** -no-undefined support, which will at least allow you to build shared +*** libraries. However, you may find that when you link such libraries +*** into an application without using GCC, you have to manually add +*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to +*** upgrade to a newer version of GCC. Another option is to rebuild your +*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. + +EOF + no_undefined_flag= + ;; + esac + fi + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5uw7* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac +fi +echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6 +test "$ld_shlibs" = no && can_build_shared=no + +# Check hardcoding attributes. +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$hardcode_shlibpath_var" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6 + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +reload_cmds='$LD$reload_flag -o $output$reload_objs' +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +# PORTME Fill in your ld.so characteristics +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can + # not hardcode correct soname into executable. Probably we can + # add versioning support to collect2, so additional links can + # be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}.so$major' + fi + shlibpath_var=LIBPATH + fi + hardcode_into_libs=yes + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi4*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + export_dynamic_flag_spec=-rdynamic + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + need_version=no + need_lib_prefix=no + case $GCC,$host_os in + yes,cygwin*) + library_names_spec='$libname.dll.a' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' + postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog .libs/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + ;; + yes,mingw*) + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"` + ;; + yes,pw32*) + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll' + ;; + *) + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' + soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + *) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) version_type=irix ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' + soname_spec='${libname}${release}.so$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case "$host_os" in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_version=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + hardcode_into_libs=yes + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='$libname.so.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +# Report the final consequences. +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + cygwin* | mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + if test "${lt_cv_archive_cmds_need_lc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + $rm conftest* + echo 'static int dummy;' > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_cv_prog_cc_wl + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi +fi + + echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5 +echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 + ;; + esac +fi +need_lc=${lt_cv_archive_cmds_need_lc-yes} + +# The second clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + : +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + test -f Makefile && make "$ltmain" +fi + +if test -f "$ltmain"; then + trap "$rm \"${ofile}T\"; exit 1" 1 2 15 + $rm -f "${ofile}T" + + echo creating $ofile + + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS SED \ + AR AR_FLAGS CC LD LN_S NM SHELL \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ + thread_safe_flag_spec whole_archive_flag_spec libname_spec \ + library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ + postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ + old_striplib striplib file_magic_cmd export_symbols_cmds \ + deplibs_check_method allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ + global_symbol_to_c_name_address \ + hardcode_libdir_flag_spec hardcode_libdir_separator \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case $var in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + cat <<__EOF__ > "${ofile}T" +#! $SHELL + +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996-2000 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="${SED} -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$need_lc + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# The default C compiler. +CC=$lt_CC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_pic_flag +pic_mode=$pic_mode + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_compiler_c_o + +# Can we write directly to a .lo ? +compiler_o_lo=$lt_compiler_o_lo + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_link_static_flag + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + case $host_os in + aix3*) + cat <<\EOF >> "${ofile}T" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + case $host_os in + cygwin* | mingw* | pw32* | os2*) + cat <<'EOF' >> "${ofile}T" + # This is a source program that is used to create dlls on Windows + # Don't remove nor modify the starting and closing comments +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ + # This is a source program that is used to create import libraries + # on Windows for dlls which lack them. Don't remove nor modify the + # starting and closing comments +# /* impgen.c starts here */ +# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +# +# This file is part of GNU libtool. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# */ +# +# #include /* for printf() */ +# #include /* for open(), lseek(), read() */ +# #include /* for O_RDONLY, O_BINARY */ +# #include /* for strdup() */ +# +# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +# #ifndef O_BINARY +# #define O_BINARY 0 +# #endif +# +# static unsigned int +# pe_get16 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[2]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 2); +# return b[0] + (b[1]<<8); +# } +# +# static unsigned int +# pe_get32 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[4]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 4); +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# static unsigned int +# pe_as32 (ptr) +# void *ptr; +# { +# unsigned char *b = ptr; +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# int +# main (argc, argv) +# int argc; +# char *argv[]; +# { +# int dll; +# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +# unsigned long export_rva, export_size, nsections, secptr, expptr; +# unsigned long name_rvas, nexp; +# unsigned char *expdata, *erva; +# char *filename, *dll_name; +# +# filename = argv[1]; +# +# dll = open(filename, O_RDONLY|O_BINARY); +# if (dll < 1) +# return 1; +# +# dll_name = filename; +# +# for (i=0; filename[i]; i++) +# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +# dll_name = filename + i +1; +# +# pe_header_offset = pe_get32 (dll, 0x3c); +# opthdr_ofs = pe_header_offset + 4 + 20; +# num_entries = pe_get32 (dll, opthdr_ofs + 92); +# +# if (num_entries < 1) /* no exports */ +# return 1; +# +# export_rva = pe_get32 (dll, opthdr_ofs + 96); +# export_size = pe_get32 (dll, opthdr_ofs + 100); +# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +# secptr = (pe_header_offset + 4 + 20 + +# pe_get16 (dll, pe_header_offset + 4 + 16)); +# +# expptr = 0; +# for (i = 0; i < nsections; i++) +# { +# char sname[8]; +# unsigned long secptr1 = secptr + 40 * i; +# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +# lseek(dll, secptr1, SEEK_SET); +# read(dll, sname, 8); +# if (vaddr <= export_rva && vaddr+vsize > export_rva) +# { +# expptr = fptr + (export_rva - vaddr); +# if (export_rva + export_size > vaddr + vsize) +# export_size = vsize - (export_rva - vaddr); +# break; +# } +# } +# +# expdata = (unsigned char*)malloc(export_size); +# lseek (dll, expptr, SEEK_SET); +# read (dll, expdata, export_size); +# erva = expdata - export_rva; +# +# nexp = pe_as32 (expdata+24); +# name_rvas = pe_as32 (expdata+32); +# +# printf ("EXPORTS\n"); +# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) + + mv -f "${ofile}T" "$ofile" || \ + (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") + chmod +x "$ofile" +fi + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + + +ALL_LINGUAS="pt_BR nl ro it fr" +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset x; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *ccp; + char **p; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_const=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +#define const +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6 +if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_inline=$ac_kw; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 +case $ac_cv_c_inline in + inline | yes) ;; + no) +cat >>confdefs.h <<\_ACEOF +#define inline +_ACEOF + ;; + *) cat >>confdefs.h <<_ACEOF +#define inline $ac_cv_c_inline +_ACEOF + ;; +esac + +echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6 +if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((off_t *) 0) + return 0; +if (sizeof (off_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_off_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_off_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6 +if test $ac_cv_type_off_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define off_t long +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_size_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned +_ACEOF + +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_working_alloca_h=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 +if test $ac_cv_working_alloca_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA_H 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +int +main () +{ +char *p = (char *) alloca (1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_alloca_works=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 + +if test $ac_cv_func_alloca_works = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA 1 +_ACEOF + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +#define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#if defined(CRAY) && ! defined(CRAY2) +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_stack_direction=0 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +int +find_stack_direction () +{ + static char *addr = 0; + auto char dummy; + if (addr == 0) + { + addr = &dummy; + return find_stack_direction (); + } + else + return (&dummy > addr) ? 1 : -1; +} + +int +main () +{ + exit (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_stack_direction=-1 +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + + + +for ac_header in stdlib.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in getpagesize +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +echo "$as_me:$LINENO: checking for working mmap" >&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_mmap_fixed_mapped=no +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +/* malloc might have been renamed as rpl_malloc. */ +#undef malloc + +/* Thanks to Mike Haertel and Jim Avera for this test. + Here is a matrix of mmap possibilities: + mmap private not fixed + mmap private fixed at somewhere currently unmapped + mmap private fixed at somewhere already mapped + mmap shared not fixed + mmap shared fixed at somewhere currently unmapped + mmap shared fixed at somewhere already mapped + For private mappings, we should verify that changes cannot be read() + back from the file, nor mmap's back from the file at a different + address. (There have been systems where private was not correctly + implemented like the infamous i386 svr4.0, and systems where the + VM page cache was not coherent with the file system buffer cache + like early versions of FreeBSD and possibly contemporary NetBSD.) + For shared mappings, we should conversely verify that changes get + propagated back to all the places they're supposed to be. + + Grep wants private fixed already mapped. + The main things grep needs to know about mmap are: + * does it exist and is it safe to write into the mmap'd area + * how to use it (BSD variants) */ + +#include +#include + +#if !STDC_HEADERS && !HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#if !HAVE_GETPAGESIZE +/* Assume that all systems that can run configure have sys/param.h. */ +# if !HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# if HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + +int +main () +{ + char *data, *data2, *data3; + int i, pagesize; + int fd; + + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) + exit (1); + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + exit (1); + if (write (fd, data, pagesize) != pagesize) + exit (1); + close (fd); + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + exit (1); + data2 = (char *) malloc (2 * pagesize); + if (!data2) + exit (1); + data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + exit (1); + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + exit (1); + if (read (fd, data3, pagesize) != pagesize) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + exit (1); + close (fd); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mmap_fixed_mapped=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_func_mmap_fixed_mapped=no +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 +if test $ac_cv_func_mmap_fixed_mapped = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_MMAP 1 +_ACEOF + +fi +rm -f conftest.mmap + + + echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 +echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 +if test "${ac_cv_gnu_library_2_1+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Lucky GNU user" >/dev/null 2>&1; then + ac_cv_gnu_library_2_1=yes +else + ac_cv_gnu_library_2_1=no +fi +rm -f conftest* + + + +fi +echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 +echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 + + GLIBC21="$ac_cv_gnu_library_2_1" + + + + + + + + + + + + + +for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + + + + + + + + + + + + + + + +for ac_func in feof_unlocked fgets_unlocked getcwd getegid geteuid \ +getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \ +strdup strtoul tsearch __argz_count __argz_stringify __argz_next +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + +# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. +if test "${with_libiconv_prefix+set}" = set; then + withval="$with_libiconv_prefix" + + for dir in `echo "$withval" | tr : ' '`; do + if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi + if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi + done + +fi; + + echo "$as_me:$LINENO: checking for iconv" >&5 +echo $ECHO_N "checking for iconv... $ECHO_C" >&6 +if test "${am_cv_func_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS -liconv" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 +echo "${ECHO_T}$am_cv_func_iconv" >&6 + if test "$am_cv_func_iconv" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ICONV 1 +_ACEOF + + echo "$as_me:$LINENO: checking for iconv declaration" >&5 +echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6 + if test "${am_cv_proto_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_proto_iconv_arg1="" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_proto_iconv_arg1="const" +fi +rm -f conftest.$ac_objext conftest.$ac_ext + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" +fi + + am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + echo "$as_me:$LINENO: result: ${ac_t:- + }$am_cv_proto_iconv" >&5 +echo "${ECHO_T}${ac_t:- + }$am_cv_proto_iconv" >&6 + +cat >>confdefs.h <<_ACEOF +#define ICONV_CONST $am_cv_proto_iconv_arg1 +_ACEOF + + fi + LIBICONV= + if test "$am_cv_lib_iconv" = yes; then + LIBICONV="-liconv" + fi + + + + echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 +if test "${am_cv_langinfo_codeset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +char* cs = nl_langinfo(CODESET); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_langinfo_codeset=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_langinfo_codeset=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 + if test $am_cv_langinfo_codeset = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LANGINFO_CODESET 1 +_ACEOF + + fi + + if test $ac_cv_header_locale_h = yes; then + echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 +echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 +if test "${am_cv_val_LC_MESSAGES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +return LC_MESSAGES + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_val_LC_MESSAGES=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_val_LC_MESSAGES=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6 + if test $am_cv_val_LC_MESSAGES = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LC_MESSAGES 1 +_ACEOF + + fi + fi + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + USE_NLS=$enableval +else + USE_NLS=yes +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + INTLLIBS= + + if test "$USE_NLS" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define ENABLE_NLS 1 +_ACEOF + + echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 +echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 + +# Check whether --with-included-gettext or --without-included-gettext was given. +if test "${with_included_gettext+set}" = set; then + withval="$with_included_gettext" + nls_cv_force_use_gnu_gettext=$withval +else + nls_cv_force_use_gnu_gettext=no +fi; + echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 +echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + CATOBJEXT=NONE + + + + + if test "${ac_cv_header_libintl_h+set}" = set; then + echo "$as_me:$LINENO: checking for libintl.h" >&5 +echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6 +if test "${ac_cv_header_libintl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +echo "${ECHO_T}$ac_cv_header_libintl_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking libintl.h usability" >&5 +echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking libintl.h presence" >&5 +echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: libintl.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: libintl.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: libintl.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for libintl.h" >&5 +echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6 +if test "${ac_cv_header_libintl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_libintl_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +echo "${ECHO_T}$ac_cv_header_libintl_h" >&6 + +fi +if test $ac_cv_header_libintl_h = yes; then + echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 +echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 +if test "${gt_cv_func_gnugettext1_libc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + _nl_msg_cat_cntr + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_gnugettext1_libc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_gnugettext1_libc=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 +echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 + + if test "$gt_cv_func_gnugettext1_libc" != "yes"; then + echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 +echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 +if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -lintl $LIBICONV" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + _nl_msg_cat_cntr + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_gnugettext1_libintl=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_gnugettext1_libintl=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5 +echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6 + fi + + if test "$gt_cv_func_gnugettext1_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ + && test "$PACKAGE" != gettext; }; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETTEXT 1 +_ACEOF + + + if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then + INTLLIBS="-lintl $LIBICONV" + fi + + gt_save_LIBS="$LIBS" + LIBS="$LIBS $INTLLIBS" + +for ac_func in dcgettext +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + LIBS="$gt_save_LIBS" + + # Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGFMT" in + /*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1; then + ac_cv_path_MSGFMT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT + +if test -n "$GMSGFMT"; then + echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +echo "${ECHO_T}$GMSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + # Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$XGETTEXT" in + /*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1; then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +echo "${ECHO_T}$XGETTEXT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + CATOBJEXT=.gmo + fi + +fi + + + + if test "$CATOBJEXT" = "NONE"; then + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + INTLOBJS="\$(GETTOBJS)" + # Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGFMT" in + /*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1; then + ac_cv_path_MSGFMT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT + +if test -n "$GMSGFMT"; then + echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +echo "${ECHO_T}$GMSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$XGETTEXT" in + /*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1; then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +echo "${ECHO_T}$XGETTEXT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + CATOBJEXT=.gmo + INTLLIBS="\$(top_builddir)/intl/libintl.a $LIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + if test "$GMSGFMT" != ":"; then + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then + : ; + else + echo "$as_me:$LINENO: result: found msgfmt program is not GNU msgfmt; ignore it" >&5 +echo "${ECHO_T}found msgfmt program is not GNU msgfmt; ignore it" >&6 + GMSGFMT=":" + fi + fi + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then + : ; + else + echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 +echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 + XGETTEXT=":" + fi + fi + + POSUB=po + fi + ac_config_commands="$ac_config_commands default-1" + + + + if test "$PACKAGE" = gettext; then + BUILD_INCLUDED_LIBINTL=yes + fi + + for ac_prog in bison +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_INTLBISON+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$INTLBISON"; then + ac_cv_prog_INTLBISON="$INTLBISON" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_INTLBISON="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +INTLBISON=$ac_cv_prog_INTLBISON +if test -n "$INTLBISON"; then + echo "$as_me:$LINENO: result: $INTLBISON" >&5 +echo "${ECHO_T}$INTLBISON" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$INTLBISON" && break +done + + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + echo "$as_me:$LINENO: checking version of bison" >&5 +echo $ECHO_N "checking version of bison... $ECHO_C" >&6 + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison .* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + + + + + + + + + + + + nls_cv_header_intl= + nls_cv_header_libgt= + + DATADIRNAME=share + + + INSTOBJEXT=.mo + + + GENCAT=gencat + + + + if test "x$CATOBJEXT" != "x"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + echo "$as_me:$LINENO: checking for catalogs to be installed" >&5 +echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6 + NEW_LINGUAS= + for presentlang in $ALL_LINGUAS; do + useit=no + for desiredlang in ${LINGUAS-$ALL_LINGUAS}; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + NEW_LINGUAS="$NEW_LINGUAS $presentlang" + fi + done + LINGUAS=$NEW_LINGUAS + echo "$as_me:$LINENO: result: $LINGUAS" >&5 +echo "${ECHO_T}$LINGUAS" >&6 + fi + + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + + + INTL_LIBTOOL_SUFFIX_PREFIX= + + + + +echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset x; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *ccp; + char **p; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_const=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +#define const +_ACEOF + +fi + +echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 +if test "${ac_cv_header_time+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include + +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_time=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_time=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$ac_cv_header_time" >&6 +if test $ac_cv_header_time = yes; then + +cat >>confdefs.h <<\_ACEOF +#define TIME_WITH_SYS_TIME 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 +echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 +if test "${ac_cv_struct_tm+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include + +int +main () +{ +struct tm *tp; tp->tm_sec; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_struct_tm=time.h +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_struct_tm=sys/time.h +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 +echo "${ECHO_T}$ac_cv_struct_tm" >&6 +if test $ac_cv_struct_tm = sys/time.h; then + +cat >>confdefs.h <<\_ACEOF +#define TM_IN_SYS_TIME 1 +_ACEOF + +fi + + + + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + + + + + +for ac_header in string.h sys/time.h sys/types.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + +for ac_func in strdup +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in strcasecmp +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +for ac_func in strncasecmp +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_size_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for socklen_t" >&5 +echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 +if test "${ac_cv_type_socklen_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + #include +int +main () +{ +socklen_t len = 42; return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_socklen_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_socklen_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5 +echo "${ECHO_T}$ac_cv_type_socklen_t" >&6 + if test $ac_cv_type_socklen_t != yes; then + cat >>confdefs.h <<\_ACEOF +#define socklen_t int +_ACEOF + + fi + + + + +for ac_header in FL/Fl.H +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + have_fltk=yes +else + have_fltk=no +fi + +done + + + +OLDLIBS="$LIBS" + + +echo "$as_me:$LINENO: checking for X" >&5 +echo $ECHO_N "checking for X... $ECHO_C" >&6 + + +# Check whether --with-x or --without-x was given. +if test "${with_x+set}" = set; then + withval="$with_x" + +fi; +# $have_x is `yes', `no', `disabled', or empty when we do not yet know. +if test "x$with_x" = xno; then + # The user explicitly disabled X. + have_x=disabled +else + if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then + # Both variables are already set. + have_x=yes + else + if test "${ac_cv_have_x+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # One or both of the vars are not set, and there is no cached value. +ac_x_includes=no ac_x_libraries=no +rm -fr conftest.dir +if mkdir conftest.dir; then + cd conftest.dir + # Make sure to not put "make" in the Imakefile rules, since we grep it out. + cat >Imakefile <<'_ACEOF' +acfindx: + @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' +_ACEOF + if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. + eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` + # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. + for ac_extension in a so sl; do + if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && + test -f $ac_im_libdir/libX11.$ac_extension; then + ac_im_usrlibdir=$ac_im_libdir; break + fi + done + # Screen out bogus values from the imake configuration. They are + # bogus both because they are the default anyway, and because + # using them would break gcc on systems where it needs fixed includes. + case $ac_im_incroot in + /usr/include) ;; + *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; + esac + case $ac_im_usrlibdir in + /usr/lib | /lib) ;; + *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; + esac + fi + cd .. + rm -fr conftest.dir +fi + +# Standard set of common directories for X headers. +# Check X11 before X11Rn because it is often a symlink to the current release. +ac_x_header_dirs=' +/usr/X11/include +/usr/X11R6/include +/usr/X11R5/include +/usr/X11R4/include + +/usr/include/X11 +/usr/include/X11R6 +/usr/include/X11R5 +/usr/include/X11R4 + +/usr/local/X11/include +/usr/local/X11R6/include +/usr/local/X11R5/include +/usr/local/X11R4/include + +/usr/local/include/X11 +/usr/local/include/X11R6 +/usr/local/include/X11R5 +/usr/local/include/X11R4 + +/usr/X386/include +/usr/x386/include +/usr/XFree86/include/X11 + +/usr/include +/usr/local/include +/usr/unsupported/include +/usr/athena/include +/usr/local/x11r5/include +/usr/lpp/Xamples/include + +/usr/openwin/include +/usr/openwin/share/include' + +if test "$ac_x_includes" = no; then + # Guess where to find include files, by looking for Intrinsic.h. + # First, try using that file with no special directory specified. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # We can compile using X headers with no special include directory. +ac_x_includes= +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + for ac_dir in $ac_x_header_dirs; do + if test -r "$ac_dir/X11/Intrinsic.h"; then + ac_x_includes=$ac_dir + break + fi +done +fi +rm -f conftest.err conftest.$ac_ext +fi # $ac_x_includes = no + +if test "$ac_x_libraries" = no; then + # Check for the libraries. + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS + LIBS="-lXt $LIBS" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +XtMalloc (0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + LIBS=$ac_save_LIBS +# We can link X programs with no special library path. +ac_x_libraries= +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +LIBS=$ac_save_LIBS +for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` +do + # Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl; do + if test -r $ac_dir/libXt.$ac_extension; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi # $ac_x_libraries = no + +if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then + # Didn't find X anywhere. Cache the known absence of X. + ac_cv_have_x="have_x=no" +else + # Record where we found X for the cache. + ac_cv_have_x="have_x=yes \ + ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" +fi +fi + + fi + eval "$ac_cv_have_x" +fi # $with_x != no + +if test "$have_x" != yes; then + echo "$as_me:$LINENO: result: $have_x" >&5 +echo "${ECHO_T}$have_x" >&6 + no_x=yes +else + # If each of the values was on the command line, it overrides each guess. + test "x$x_includes" = xNONE && x_includes=$ac_x_includes + test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries + # Update the cache value to reflect the command line values. + ac_cv_have_x="have_x=yes \ + ac_x_includes=$x_includes ac_x_libraries=$x_libraries" + echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 +echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 +fi + + + if test "$x_libraries" = "/usr/lib"; then + echo "Ignoring X library directory \"$x_libraries\" requested by configure." + x_libraries="NONE" + fi + + if test ! "$x_libraries" = "NONE" -a ! "$x_libraries" = ""; then + LDFLAGS="$LDFLAGS -L$x_libraries" + if test "$uname" = "SunOS"; then + LDFLAGS="$LDFLAGS -R$x_libraries" + fi + fi + + + if test "$x_includes" = "/usr/include"; then + echo "Ignoring X include directory \"$x_includes\" requested by configure." + x_includes="NONE" + fi + + if test ! "$x_includes" = "NONE" -a ! "$x_includes" = ""; then + CFLAGS="$CFLAGS -I$x_includes" + CXXFLAGS="$CXXFLAGS -I$x_includes" + fi + + +case $host in + *-*-freebsd*) + THREAD_LIBS="-pthread" + ;; + *-*-openbsd*) + THREAD_LIBS="-pthread" + ;; + *) + echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5 +echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6 +if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char pthread_create (); +int +main () +{ +pthread_create (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_pthread_pthread_create=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_pthread_pthread_create=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5 +echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6 +if test $ac_cv_lib_pthread_pthread_create = yes; then + THREAD_LIBS="-lpthread" +else + { { echo "$as_me:$LINENO: error: ** The pthread library is not installed.**" >&5 +echo "$as_me: error: ** The pthread library is not installed.**" >&2;} + { (exit 1); exit 1; }; } +fi + + ;; +esac + + + + + +echo "$as_me:$LINENO: checking for pow in -lm" >&5 +echo $ECHO_N "checking for pow in -lm... $ECHO_C" >&6 +if test "${ac_cv_lib_m_pow+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char pow (); +int +main () +{ +pow (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_m_pow=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_m_pow=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_m_pow" >&5 +echo "${ECHO_T}$ac_cv_lib_m_pow" >&6 +if test $ac_cv_lib_m_pow = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBM 1 +_ACEOF + + LIBS="-lm $LIBS" + +fi + + + +echo "$as_me:$LINENO: checking for XOpenDisplay in -lX11" >&5 +echo $ECHO_N "checking for XOpenDisplay in -lX11... $ECHO_C" >&6 +if test "${ac_cv_lib_X11_XOpenDisplay+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lX11 $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XOpenDisplay (); +int +main () +{ +XOpenDisplay (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_X11_XOpenDisplay=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_X11_XOpenDisplay=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XOpenDisplay" >&5 +echo "${ECHO_T}$ac_cv_lib_X11_XOpenDisplay" >&6 +if test $ac_cv_lib_X11_XOpenDisplay = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBX11 1 +_ACEOF + + LIBS="-lX11 $LIBS" + +fi + + +echo "$as_me:$LINENO: checking for XdbeQueryExtension in -lXext" >&5 +echo $ECHO_N "checking for XdbeQueryExtension in -lXext... $ECHO_C" >&6 +if test "${ac_cv_lib_Xext_XdbeQueryExtension+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lXext $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XdbeQueryExtension (); +int +main () +{ +XdbeQueryExtension (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_Xext_XdbeQueryExtension=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_Xext_XdbeQueryExtension=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XdbeQueryExtension" >&5 +echo "${ECHO_T}$ac_cv_lib_Xext_XdbeQueryExtension" >&6 +if test $ac_cv_lib_Xext_XdbeQueryExtension = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBXEXT 1 +_ACEOF + + LIBS="-lXext $LIBS" + +fi + + + +echo "$as_me:$LINENO: checking for XpmCreatePixmapFromData in -lXpm" >&5 +echo $ECHO_N "checking for XpmCreatePixmapFromData in -lXpm... $ECHO_C" >&6 +if test "${ac_cv_lib_Xpm_XpmCreatePixmapFromData+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lXpm $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XpmCreatePixmapFromData (); +int +main () +{ +XpmCreatePixmapFromData (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_Xpm_XpmCreatePixmapFromData=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_Xpm_XpmCreatePixmapFromData=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&5 +echo "${ECHO_T}$ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&6 +if test $ac_cv_lib_Xpm_XpmCreatePixmapFromData = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBXPM 1 +_ACEOF + + LIBS="-lXpm $LIBS" + +fi + + +echo "$as_me:$LINENO: checking for numericsort in -lfltk" >&5 +echo $ECHO_N "checking for numericsort in -lfltk... $ECHO_C" >&6 +if test "${ac_cv_lib_fltk_numericsort+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lfltk $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char numericsort (); +int +main () +{ +numericsort (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_fltk_numericsort=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_fltk_numericsort=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_fltk_numericsort" >&5 +echo "${ECHO_T}$ac_cv_lib_fltk_numericsort" >&6 +if test $ac_cv_lib_fltk_numericsort = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBFLTK 1 +_ACEOF + + LIBS="-lfltk $LIBS" + +fi + + + if test "$ac_cv_lib_fltk_numericsort" = no; then + unset ac_cv_lib_fltk_numericsort + +echo "$as_me:$LINENO: checking for glEnable in -lGL" >&5 +echo $ECHO_N "checking for glEnable in -lGL... $ECHO_C" >&6 +if test "${ac_cv_lib_GL_glEnable+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lGL $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char glEnable (); +int +main () +{ +glEnable (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_GL_glEnable=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_GL_glEnable=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_GL_glEnable" >&5 +echo "${ECHO_T}$ac_cv_lib_GL_glEnable" >&6 +if test $ac_cv_lib_GL_glEnable = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBGL 1 +_ACEOF + + LIBS="-lGL $LIBS" + +fi + + +echo "$as_me:$LINENO: checking for numericsort in -lfltk" >&5 +echo $ECHO_N "checking for numericsort in -lfltk... $ECHO_C" >&6 +if test "${ac_cv_lib_fltk_numericsort+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lfltk $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char numericsort (); +int +main () +{ +numericsort (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_fltk_numericsort=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_fltk_numericsort=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_fltk_numericsort" >&5 +echo "${ECHO_T}$ac_cv_lib_fltk_numericsort" >&6 +if test $ac_cv_lib_fltk_numericsort = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBFLTK 1 +_ACEOF + + LIBS="-lfltk $LIBS" + +fi + + fi + + +if test "$no_x" = yes; then + # Not all programs may use this symbol, but it does not hurt to define it. + +cat >>confdefs.h <<\_ACEOF +#define X_DISPLAY_MISSING 1 +_ACEOF + + X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= +else + if test -n "$x_includes"; then + X_CFLAGS="$X_CFLAGS -I$x_includes" + fi + + # It would also be nice to do this for all -L options, not just this one. + if test -n "$x_libraries"; then + X_LIBS="$X_LIBS -L$x_libraries" + # For Solaris; some versions of Sun CC require a space after -R and + # others require no space. Words are not sufficient . . . . + case `(uname -sr) 2>/dev/null` in + "SunOS 5"*) + echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 +echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 + ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_R_nospace=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_R_nospace=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + if test $ac_R_nospace = yes; then + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + X_LIBS="$X_LIBS -R$x_libraries" + else + LIBS="$ac_xsave_LIBS -R $x_libraries" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_R_space=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_R_space=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + if test $ac_R_space = yes; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + X_LIBS="$X_LIBS -R $x_libraries" + else + echo "$as_me:$LINENO: result: neither works" >&5 +echo "${ECHO_T}neither works" >&6 + fi + fi + LIBS=$ac_xsave_LIBS + esac + fi + + # Check for system-dependent libraries X programs must link with. + # Do this before checking for the system-independent R6 libraries + # (-lICE), since we may need -lsocket or whatever for X linking. + + if test "$ISC" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" + else + # Martyn Johnson says this is needed for Ultrix, if the X + # libraries were built with DECnet support. And Karl Berry says + # the Alpha needs dnet_stub (dnet does not exist). + ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XOpenDisplay (); +int +main () +{ +XOpenDisplay (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 +echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 +if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dnet_ntoa (); +int +main () +{ +dnet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dnet_dnet_ntoa=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dnet_dnet_ntoa=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 +echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 +if test $ac_cv_lib_dnet_dnet_ntoa = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" +fi + + if test $ac_cv_lib_dnet_dnet_ntoa = no; then + echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 +echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 +if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet_stub $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dnet_ntoa (); +int +main () +{ +dnet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dnet_stub_dnet_ntoa=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dnet_stub_dnet_ntoa=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 +echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 +if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" +fi + + fi +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LIBS="$ac_xsave_LIBS" + + # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, + # to get the SysV transport functions. + # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) + # needs -lnsl. + # The nsl library prevents programs from opening the X display + # on Irix 5.2, according to T.E. Dickey. + # The functions gethostbyname, getservbyname, and inet_addr are + # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. + echo "$as_me:$LINENO: checking for gethostbyname" >&5 +echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 +if test "${ac_cv_func_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char gethostbyname (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) +choke me +#else +char (*f) () = gethostbyname; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_gethostbyname=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 + + if test $ac_cv_func_gethostbyname = no; then + echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 +echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 +if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +int +main () +{ +gethostbyname (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_nsl_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_nsl_gethostbyname=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 +if test $ac_cv_lib_nsl_gethostbyname = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" +fi + + if test $ac_cv_lib_nsl_gethostbyname = no; then + echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 +echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 +if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +int +main () +{ +gethostbyname (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_bsd_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_bsd_gethostbyname=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 +if test $ac_cv_lib_bsd_gethostbyname = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" +fi + + fi + fi + + # lieder@skyler.mavd.honeywell.com says without -lsocket, + # socket/setsockopt and other routines are undefined under SCO ODT + # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary + # on later versions), says Simon Leinen: it contains gethostby* + # variants that don't use the name server (or something). -lsocket + # must be given before -lnsl if both are needed. We assume that + # if connect needs -lnsl, so does gethostbyname. + echo "$as_me:$LINENO: checking for connect" >&5 +echo $ECHO_N "checking for connect... $ECHO_C" >&6 +if test "${ac_cv_func_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char connect (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char connect (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_connect) || defined (__stub___connect) +choke me +#else +char (*f) () = connect; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_connect=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_connect=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 +echo "${ECHO_T}$ac_cv_func_connect" >&6 + + if test $ac_cv_func_connect = no; then + echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 +echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $X_EXTRA_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char connect (); +int +main () +{ +connect (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_socket_connect=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_socket_connect=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 +if test $ac_cv_lib_socket_connect = yes; then + X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" +fi + + fi + + # Guillermo Gomez says -lposix is necessary on A/UX. + echo "$as_me:$LINENO: checking for remove" >&5 +echo $ECHO_N "checking for remove... $ECHO_C" >&6 +if test "${ac_cv_func_remove+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char remove (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char remove (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_remove) || defined (__stub___remove) +choke me +#else +char (*f) () = remove; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_remove=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_remove=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 +echo "${ECHO_T}$ac_cv_func_remove" >&6 + + if test $ac_cv_func_remove = no; then + echo "$as_me:$LINENO: checking for remove in -lposix" >&5 +echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 +if test "${ac_cv_lib_posix_remove+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lposix $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char remove (); +int +main () +{ +remove (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_posix_remove=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_posix_remove=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 +echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 +if test $ac_cv_lib_posix_remove = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" +fi + + fi + + # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. + echo "$as_me:$LINENO: checking for shmat" >&5 +echo $ECHO_N "checking for shmat... $ECHO_C" >&6 +if test "${ac_cv_func_shmat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shmat (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shmat (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shmat) || defined (__stub___shmat) +choke me +#else +char (*f) () = shmat; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shmat=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shmat=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 +echo "${ECHO_T}$ac_cv_func_shmat" >&6 + + if test $ac_cv_func_shmat = no; then + echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 +echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 +if test "${ac_cv_lib_ipc_shmat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lipc $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shmat (); +int +main () +{ +shmat (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ipc_shmat=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ipc_shmat=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 +echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 +if test $ac_cv_lib_ipc_shmat = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" +fi + + fi + fi + + # Check for libraries that X11R6 Xt/Xaw programs need. + ac_save_LDFLAGS=$LDFLAGS + test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" + # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to + # check for ICE first), but we must link in the order -lSM -lICE or + # we get undefined symbols. So assume we have SM if we have ICE. + # These have to be linked with before -lX11, unlike the other + # libraries we check for below, so use a different variable. + # John Interrante, Karl Berry + echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 +echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 +if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lICE $X_EXTRA_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char IceConnectionNumber (); +int +main () +{ +IceConnectionNumber (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ICE_IceConnectionNumber=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ICE_IceConnectionNumber=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 +echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 +if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then + X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" +fi + + LDFLAGS=$ac_save_LDFLAGS + +fi + +if test "$X_PRE_LIBS" != ""; then + echo "Ignoring libraries \"$X_PRE_LIBS\" requested by configure." + fi + if test "$X_LIBS" = " -L/usr/lib"; then + echo "Ignoring X library directory \"$X_LIBS\" requested by + configure." + X_LIBS="" +fi + + +CXXFLAGS="-Wall -ggdb -D_REENTRANT" + ac_config_files="$ac_config_files Makefile src/Makefile man/Makefile intl/Makefile po/Makefile.in" +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.56. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.56, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "man/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; + "intl/Makefile" ) CONFIG_FILES="$CONFIG_FILES intl/Makefile" ;; + "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@AMTAR@,$AMTAR,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CXXDEPMODE@,$CXXDEPMODE,;t t +s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t +s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t +s,@subdirs@,$subdirs,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@CPP@,$CPP,;t t +s,@UNAME@,$UNAME,;t t +s,@LN_S@,$LN_S,;t t +s,@ECHO@,$ECHO,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@CXXCPP@,$CXXCPP,;t t +s,@EGREP@,$EGREP,;t t +s,@LIBTOOL@,$LIBTOOL,;t t +s,@ALLOCA@,$ALLOCA,;t t +s,@GLIBC21@,$GLIBC21,;t t +s,@LIBICONV@,$LIBICONV,;t t +s,@USE_NLS@,$USE_NLS,;t t +s,@MSGFMT@,$MSGFMT,;t t +s,@GMSGFMT@,$GMSGFMT,;t t +s,@XGETTEXT@,$XGETTEXT,;t t +s,@INTLBISON@,$INTLBISON,;t t +s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t +s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t +s,@CATALOGS@,$CATALOGS,;t t +s,@CATOBJEXT@,$CATOBJEXT,;t t +s,@GMOFILES@,$GMOFILES,;t t +s,@INTLLIBS@,$INTLLIBS,;t t +s,@INTLOBJS@,$INTLOBJS,;t t +s,@POFILES@,$POFILES,;t t +s,@POSUB@,$POSUB,;t t +s,@DATADIRNAME@,$DATADIRNAME,;t t +s,@INSTOBJEXT@,$INSTOBJEXT,;t t +s,@GENCAT@,$GENCAT,;t t +s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t +s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t +s,@THREAD_LIBS@,$THREAD_LIBS,;t t +s,@X_CFLAGS@,$X_CFLAGS,;t t +s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t +s,@X_LIBS@,$X_LIBS,;t t +s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +_am_stamp_count=`expr ${_am_stamp_count-0} + 1` +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # We invoke sed twice because it is the simplest approach to + # changing $(DEPDIR) to its actual value in the expansion. + for file in `sed -n -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + default-1 ) for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + fi + ;; + esac + done ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + +# +# CONFIG_SUBDIRS section. +# +if test "$no_recursion" != yes; then + + # Remove --cache-file and --srcdir arguments so they do not pile up. + ac_sub_configure_args= + ac_prev= + for ac_arg in $ac_configure_args; do + if test -n "$ac_prev"; then + ac_prev= + continue + fi + case $ac_arg in + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ + | --c=*) + ;; + --config-cache | -C) + ;; + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + ;; + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + ;; + *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;; + esac + done + + # Always prepend --prefix to ensure using the same prefix + # in subdir configurations. + ac_sub_configure_args="--prefix=$prefix $ac_sub_configure_args" + + ac_popdir=`pwd` + for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue + + # Do not complain, so a configure script can configure whichever + # parts of a large source tree are present. + test -d $srcdir/$ac_dir || continue + + { echo "$as_me:$LINENO: configuring in $ac_dir" >&5 +echo "$as_me: configuring in $ac_dir" >&6;} + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + cd $ac_dir + + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + ac_sub_configure="$SHELL '$ac_srcdir/configure.gnu'" + elif test -f $ac_srcdir/configure; then + ac_sub_configure="$SHELL '$ac_srcdir/configure'" + elif test -f $ac_srcdir/configure.in; then + ac_sub_configure=$ac_configure + else + { echo "$as_me:$LINENO: WARNING: no configuration information is in $ac_dir" >&5 +echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} + ac_sub_configure= + fi + + # The recursion is here. + if test -n "$ac_sub_configure"; then + # Make the cache file name correct relative to the subdirectory. + case $cache_file in + [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; + *) # Relative path. + ac_sub_cache_file=$ac_top_builddir$cache_file ;; + esac + + { echo "$as_me:$LINENO: running $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 +echo "$as_me: running $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} + # The eval makes quoting arguments work. + eval $ac_sub_configure $ac_sub_configure_args \ + --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir || + { { echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5 +echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;} + { (exit 1); exit 1; }; } + fi + + cd $ac_popdir + done +fi + diff --git a/configure.in b/configure.in new file mode 100644 index 0000000..9f786cd --- /dev/null +++ b/configure.in @@ -0,0 +1,157 @@ +AC_PREREQ(2.13) + +AC_INIT(src/main.cpp) + +AM_INIT_AUTOMAKE(prozgui, 2.0.4) + +AM_CONFIG_HEADER(config.h) + +AC_LANG_CPLUSPLUS +AC_ISC_POSIX + +AC_CONFIG_SUBDIRS(libprozilla) + +AC_ARG_WITH(fltk-libs, [ --with-fltk-libs set directory for FLTK library], + LDFLAGS="-L$withval $LDFLAGS",) + +AC_ARG_WITH(fltk-includes, [ --with-fltk-includes set directory for FLTK includes], + CFLAGS="-I$withval $CFLAGS" + CXXFLAGS="-I$withval $CXXFLAGS",) + + +dnl LDLIBS="-lX11 -lXext -lm" +AC_CANONICAL_HOST + +dnl --------------------------------------------------------------------------- +dnl Checks for programs. +dnl --------------------------------------------------------------------------- +AC_PROG_CC +AC_PROG_CXX +AC_PROG_CPP +AC_PROG_INSTALL +AC_CHECK_PROG(UNAME,uname,uname,:) +AM_ENABLE_STATIC +AM_DISABLE_SHARED +AC_PROG_LIBTOOL +dnl ------------- +dnl gettext stuff +dnl ------------- +ALL_LINGUAS="pt_BR nl ro it fr" +AM_GNU_GETTEXT + + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_HEADER_TIME +AC_STRUCT_TM + + + +dnl Check for libraries... +dnl LDFLAGS="${LDFLAGS:=}" +dnl AC_SUBST(LDFLAGS) + +dnl Checks for header files. +AC_HEADER_STDC +AC_CHECK_HEADERS(string.h sys/time.h sys/types.h unistd.h) + + +dnl Checks for string functions. +AC_CHECK_FUNCS(strdup) +AC_CHECK_FUNCS(strcasecmp) +AC_CHECK_FUNCS(strncasecmp) + +dnl --------------------------------------------------------------------------- +dnl Checks for libraries. +dnl --------------------------------------------------------------------------- + +AC_TYPE_SIZE_T +TYPE_SOCKLEN_T + + +dnl ============== +dnl CHECK FLTK LIB +dnl ============== +AC_CHECK_HEADERS(FL/Fl.H, have_fltk=yes, have_fltk=no) + +dnl AC_SUBST(FLTK_LIBS) +dnl AC_SUBST(FLTK_DIR) + +dnl Check for GUI libraries... +OLDLIBS="$LIBS" + + +AC_PATH_X + + if test "$x_libraries" = "/usr/lib"; then + echo "Ignoring X library directory \"$x_libraries\" requested by configure." + x_libraries="NONE" + fi + + if test ! "$x_libraries" = "NONE" -a ! "$x_libraries" = ""; then + LDFLAGS="$LDFLAGS -L$x_libraries" + if test "$uname" = "SunOS"; then + LDFLAGS="$LDFLAGS -R$x_libraries" + fi + fi + + + if test "$x_includes" = "/usr/include"; then + echo "Ignoring X include directory \"$x_includes\" requested by configure." + x_includes="NONE" + fi + + if test ! "$x_includes" = "NONE" -a ! "$x_includes" = ""; then + CFLAGS="$CFLAGS -I$x_includes" + CXXFLAGS="$CXXFLAGS -I$x_includes" + fi + + +case $host in + *-*-freebsd*) + THREAD_LIBS="-pthread" + ;; + *-*-openbsd*) + THREAD_LIBS="-pthread" + ;; + *) + AC_CHECK_LIB(pthread, pthread_create, + THREAD_LIBS="-lpthread", + AC_MSG_ERROR([** The pthread library is not installed.**])) + ;; +esac +AC_SUBST(THREAD_LIBS) + + + +AC_CHECK_LIB(m,pow) + +AC_CHECK_LIB(X11,XOpenDisplay) +AC_CHECK_LIB(Xext,XdbeQueryExtension) + +AC_CHECK_LIB(Xpm,XpmCreatePixmapFromData) +dnl Check FLTK by itself +AC_CHECK_LIB(fltk,numericsort) + + dnl Check FLTK + OpenGL to see if that works... + if test "$ac_cv_lib_fltk_numericsort" = no; then + unset ac_cv_lib_fltk_numericsort + AC_CHECK_LIB(GL,glEnable) + AC_CHECK_LIB(fltk,numericsort) + fi + +dnl AC_CHECK_LIB(fltk,main) + +AC_PATH_XTRA +if test "$X_PRE_LIBS" != ""; then + echo "Ignoring libraries \"$X_PRE_LIBS\" requested by configure." + fi + if test "$X_LIBS" = " -L/usr/lib"; then + echo "Ignoring X library directory \"$X_LIBS\" requested by + configure." + X_LIBS="" +fi + + +CXXFLAGS="-Wall -ggdb -D_REENTRANT" +AC_OUTPUT(Makefile src/Makefile man/Makefile intl/Makefile po/Makefile.in) diff --git a/depcomp b/depcomp new file mode 100755 index 0000000..807b991 --- /dev/null +++ b/depcomp @@ -0,0 +1,423 @@ +#! /bin/sh + +# depcomp - compile a program generating dependencies as side-effects +# Copyright 1999, 2000 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi +# `libtool' can also be set to `yes' or `no'. + +if test -z "$depfile"; then + base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` + dir=`echo "$object" | sed 's,/.*$,/,'` + if test "$dir" = "$object"; then + dir= + fi + # FIXME: should be _deps on DOS. + depfile="$dir.deps/$base" +fi + +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. This file always lives in the current directory. + # Also, the AIX compiler puts `$object:' at the start of each line; + # $object doesn't have directory information. + stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + outname="$stripped.o" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + tmpdepfile1="$dir.libs/$base.lo.d" + tmpdepfile2="$dir.libs/$base.d" + "$@" -Wc,-MD + else + tmpdepfile1="$dir$base.o.d" + tmpdepfile2="$dir$base.d" + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + if test -f "$tmpdepfile1"; then + tmpdepfile="$tmpdepfile1" + else + tmpdepfile="$tmpdepfile2" + fi + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a space and a tab in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. We will use -o /dev/null later, + # however we can't do the remplacement now because + # `-o $object' might simply not be used + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + "$@" -o /dev/null $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + -*) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 diff --git a/docs/CVS/Entries b/docs/CVS/Entries new file mode 100644 index 0000000..15efef6 --- /dev/null +++ b/docs/CVS/Entries @@ -0,0 +1,3 @@ +/Makefile/1.1.1.1/Tue Jun 5 23:44:07 2001// +/FAQ/1.2/Thu Aug 2 09:49:27 2001// +D diff --git a/docs/CVS/Repository b/docs/CVS/Repository new file mode 100644 index 0000000..1ca7397 --- /dev/null +++ b/docs/CVS/Repository @@ -0,0 +1 @@ +fltkproz/docs diff --git a/docs/CVS/Root b/docs/CVS/Root new file mode 100644 index 0000000..0e741fc --- /dev/null +++ b/docs/CVS/Root @@ -0,0 +1 @@ +:pserver:kalum@cvs.delrom.ro:/home/cvsroot diff --git a/docs/FAQ b/docs/FAQ new file mode 100644 index 0000000..5965a01 --- /dev/null +++ b/docs/FAQ @@ -0,0 +1,264 @@ +This is the ProZilla Frequently-Asked Questions List. + +Copyright (C) 2000 Kalum Somaratna (Grendel). + +This FAQ list may be freely distributed with the ProZilla package or any +part thereof, provided that this copyright notice is left intact on all +copies. + +ProZilla FAQ List +****************** + +ProZilla is a download accelerator for Linux, which makes multiple +connections to the server and downloads the file in chunks thus making +the download much faster than it would have been possible if it was done +using a single connection based conventional method like netscape and wget +do. In addition it supports downloading from multiple server based on +ftpsearch results and pinging them. + +Table of Contents +***************** + + +ProZilla FAQ List + +1 I'm in a hurry and I don't want to read all those doc's.... + +2 What systems does it run on? + +3 Configuration Issues + 3.1 What on earth hapenned to the old ProZilla config files? + +4 Downloading issues + 4.1 ProZilla says "Resume not supported"? + 4.2 ProZilla is using only a single connection sometimes? + 4.3 1 connection says "login rejected", but the rest are OK? + 4.4 ProZilla says "Error while getting info from the server"? + 4.5 ProZilla mucks up my file, it is corrupted....? + 4.6 I want ProZilla to try infinitely because of my bad connection? + 4.7 I am using 10 connections but I can only see 4 in the display? + 4.8 I hate to type in the URL every time I have to download something, + isn't there any better way to do this? + +5 FTPSearch Issues + 5.1 How do I do a FTP search? + +6. Miscellaneous + 6.1 Where can I get ProZilla? + 6.2 Bugs / Where do I post bugs? + +1 I'm in a hurry and I don't want to read all those *!@! docs.... +***************************************************************** + +_*Q*: I want to get started immediately, tell me what to do or else..... + +*A*: OK, assuming that ProZilla is installed correctly using either the +RPM's or from the source, just type +"proz commandline" from the command prompt, where commandline is the URL +which you wish to download and it will begin the download. + +Example: +prozgui www.gnu.org/xxx.jpj +Will cause ProZilla to connect to +gnu.org and download the file xxx.jpg and save it in to the current +directory. + +2 What systems does it run on? +***************************************************************** + +_*Q*: What systems does it run on? + +*A*: Currently it runs only on Linux, since that is the only OS that I +have access to, apart from windoze which doesn't count as a OS anyway..;) + + +3.1 Configuring ProZilla +************************ + +_*Q*: What on earth hapenned to the old ProZilla config files? + +*A*: The GUI versions store there configuration file in the ~/.prozilla +directory. The GUI versions ignore any /etc/prozilla.conf or +~/prozilla.conf. + +4.1 ProZilla says "Resume not supported"? +****************************************** + +_*Q*: Hey! Sometimes ProZilla says "Resume not supported" and proceeds +with just a single download...what is hapenning? + +*A*: Well unfortunately there is no standardized way of getting the size +of a file under the FTP protocol, many servers support the SIZE command, +which is what ProZilla uses (and when this fails the LIST command) to get +the file size, and this works for most FTP servers. However there are some +very ancient FTP servers out there which don't support either of these +popular methods, thus when ProZilla can't get the size of a file it has to +use a single download method and get the bytes until the server says the +end of the file has been reached. + +The other reason why it can say "Resume not supported" is that when the +FTP server doesn't support the REST command, which again is a problem with +ancient FTP servers. The REST command is used to ask the FTP server to +restart the Download from a certain file position, and as you may see when +the server doesn't support REST no resuming is possible. + +4.2 ProZilla is using only a single connection sometimes? +********************************************************* + +*A*: There are sevral reasons for this all are unavoidable. + +1. The server doesnt support getting the file in portions. + +In this case we can't split the download, and have to use a single +conenction and get the complete file. + +2. We are going throuh a proxy. (you have specified a proxy) + +Most proxies support specifying a range of bytes in a file to retreive, so +this shouldnt be a problem unless your proxy does not allwo this basic +functionality, if it does not support it then there is little you can do +except try to use another proxy server or use a direct connection. + +The other problem is that when you have specified the FTP proxy as a HTTP +proxy, most of the FTP through HTTP proxies (Squid etc) do not support +getting a FTP file in a range we want, so again prozilla has to use one +connection and worse still it cant resume either becuase the HTTP proxy +which is used for FTP does not support. + + +4.3 1 connection says "login rejected", but the rest are OK? +************************************************************ + +_*Q*: While downloading with multiple connections, I see that one +connections status is "login rejected", what do I do know, do I restart it +or watch and see what happens. + + +*A*: Please *don't* restart, just let the download proceed and you will +see that the connection resumes after sometime when one connection has +finished downloading it's portion. + +The reason is that some FTP servers administrators have disallowed more +than n connections per IP address. where N can mean anything from 1 to the +number of connections that ProZilla is attempting. + +So assuming that ProZilla is attempting to make 4 connections, and the +sysadmin (The *beep*!) has allowed only 2 connections per IP address, +ProZilla will begin with 2 downloads, and the FTP server will reject the +other 2 login attempts, however ProZilla will continue, and when one of +the current downloads has terminated, it will retry logging in and proceed +with the download, so there is no need to restart, please allow it to +continue. + + +4.4 ProZilla says "Error while getting info from the server"? +************************************************************* + +_*Q*: I tried to start a download but ProZilla aborted with the strange +message "Error while getting info from the server", is this a bug with +ProZilla? + +*A*: Well this is most probably due to a data transfer error, it maybe a +bad connection, or a incompatible server, or it maybe that you need a +user/name password combo to access the server. Usually there is a small +message above this which indicates why this happened. + +However if another downloader like netscape or wget works with the URL and +ProZilla does not, this is most probably a error with ProZilla and I would +appreciate it if you could post the URL and the error you received to +, so that it can be removed from the next release. + +4.5 ProZilla mucks up my file, the file is is corrupted! +******************************************************** + +_*Q*: I downloaded this zip(tar,gz etc) file using ProZilla and when I +tested it on my system the file has CRC errors, is this a bug? + +*A*: There are three possibilities, the file on the server maybe corrupted. +The way to do check this is download the file using a single connection, +either using "ProZilla -1 URL" , or using GNU wget or netscape, and test +the file, if the file still has CRC problems it means that the file on the +server is corrupt and there is no problem with ProZilla. + +Another one is that you are downloading from multiple servers after a +ftpsearch and ping. Well if one server has a bad file then necesasrily the +download will be corrupted. + +The other possibility is that there is a bug in ProZilla, the way to check +this is that after a single connection download, if the files CRC checks +out correctly, and the corruption only happens when you use ProZilla, then +it is a bug and it kindly should be reported to ,with +the URL so that it can be removed from the next release. + +4.6 I want ProZilla to keep on trying more than the default attempts! +******************************************************************** + +_*Q*: Oi! I have this really bad connection and ProZilla gets a lot of +errors and eventually say that "connection x has been tried x number of +times" and quits, what can I do about this! I am too lazy to get a better +connection and I want ProZilla to continue to keep trying until it dies! + +*A*: There are several things that you can do, you can ask prozilla to +make unlimited attempts at getting a succesful download, by using the +--retries=0 options. + +Or you can try to increases the delay between each try by using the +--retry-delay option, for example to make ProZilla delay 60 seconds before +retrying a connection, please specify --retry-delay=60. + +4.8 I hate to type in the URL everytime I have to download something! +********************************************************************* + +_*Q*: ProZilla is good but I hate to type the URL everytime I have to start +a download, isn't there anything that I can do about this. + +*A*: You can in netscape select "Copy URL Location" and then open up +prozilla's open url dialog box and press CTRL-V to paste it in from the +clipboard. + +The other method is to ask your browser to launch prozilla whenever you +want a URL downloaded, this can be done for galeon, and it should be +possible on other browsers. If anyone does this please tell me the methods +so as I can add them to this FAQ so others can do so too. + +5 FTPSearch +***************************************************************** +_*Q*: How do I run a ftpsearch, it seems to be off by default?? + +*A*: FTPSearch can be turned on by default by clicking in the box in the +preferences dialog in the FTPSearch tab. + + +_*Q*:What is this Pinging and why is it not working when I am using a FTP +Proxy? + +*A*: As you know prozilla pings a list of ftpsearch returned servers to +determine their suitability to be used as downloads, since prozilla runs with +the normal user priviledges the real PING cannot be performed and thus +prozilla does a tcp ping to port 21 on the target server, thus if your +ISP/Firewall has blocked acess to port 21 on remote machines this will +neccessarily fail. If you have any ideas on how to solve this issue please +contact me. + +6 Miscellaneous +***************************************************************** + +6.1 ProZilla homepage / Getting Prozilla +********************************************************* + +_*Q*: Where is the homepage for ProZilla... + +*A*: http://www.prozilla.genesys.ro is the ProZilla homepage +where you can get the latest versions and updates about ProZilla. + +6.2 Bugs / Where do I post bugs? +********************************************************* + +_*Q*: Where do I post bugs? + +*A*: The prozilla developers mailing list will +wellcome them. + + + + diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..e69de29 diff --git a/install-sh b/install-sh new file mode 100755 index 0000000..e9de238 --- /dev/null +++ b/install-sh @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + chmodcmd="" + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/intl/CVS/Entries b/intl/CVS/Entries new file mode 100644 index 0000000..14d86be --- /dev/null +++ b/intl/CVS/Entries @@ -0,0 +1,33 @@ +/plural.c/1.1/Fri Jun 22 15:59:35 2001// +/ChangeLog/1.2/Fri Jun 22 15:59:26 2001// +/Makefile.in/1.2/Fri Jun 22 15:59:35 2001// +/VERSION/1.2/Fri Jun 22 15:59:53 2001// +/bindtextdom.c/1.2/Fri Jun 22 15:59:25 2001// +/dcgettext.c/1.2/Fri Jun 22 15:59:26 2001// +/dgettext.c/1.2/Fri Jun 22 15:59:27 2001// +/explodename.c/1.2/Fri Jun 22 15:59:28 2001// +/finddomain.c/1.2/Fri Jun 22 15:59:28 2001// +/gettext.c/1.2/Fri Jun 22 15:59:29 2001// +/gettext.h/1.2/Fri Jun 22 15:59:29 2001// +/gettextP.h/1.2/Fri Jun 22 15:59:30 2001// +/hash-string.h/1.2/Fri Jun 22 15:59:31 2001// +/intl-compat.c/1.2/Fri Jun 22 15:59:31 2001// +/l10nflist.c/1.2/Fri Jun 22 15:59:32 2001// +/libgettext.h/1.2/Fri Jun 22 15:59:33 2001// +/loadinfo.h/1.2/Fri Jun 22 15:59:33 2001// +/loadmsgcat.c/1.2/Fri Jun 22 15:59:34 2001// +/localealias.c/1.2/Fri Jun 22 15:59:34 2001// +/textdomain.c/1.2/Fri Jun 22 15:59:36 2001// +/config.charset/1.1/Fri Jun 22 15:59:26 2001// +/dcigettext.c/1.1/Fri Jun 22 15:59:26 2001// +/dcngettext.c/1.1/Fri Jun 22 15:59:26 2001// +/libgnuintl.h/1.1/Fri Jun 22 15:59:33 2001// +/libintl.glibc/1.1/Fri Jun 22 15:59:33 2001// +/localcharset.c/1.1/Fri Jun 22 15:59:34 2001// +/locale.alias/1.1/Fri Jun 22 15:59:34 2001// +/ngettext.c/1.1/Fri Jun 22 15:59:35 2001// +/plural.y/1.1/Fri Jun 22 15:59:35 2001// +/ref-add.sin/1.1/Fri Jun 22 15:59:35 2001// +/ref-del.sin/1.1/Fri Jun 22 15:59:35 2001// +/dngettext.c/1.1/Fri Jun 22 15:59:27 2001// +D diff --git a/intl/CVS/Repository b/intl/CVS/Repository new file mode 100644 index 0000000..bbfe66c --- /dev/null +++ b/intl/CVS/Repository @@ -0,0 +1 @@ +libprozilla/intl diff --git a/intl/CVS/Root b/intl/CVS/Root new file mode 100644 index 0000000..0e741fc --- /dev/null +++ b/intl/CVS/Root @@ -0,0 +1 @@ +:pserver:kalum@cvs.delrom.ro:/home/cvsroot diff --git a/intl/ChangeLog b/intl/ChangeLog new file mode 100644 index 0000000..de85bb4 --- /dev/null +++ b/intl/ChangeLog @@ -0,0 +1,1746 @@ +2001-05-23 Bruno Haible + + * gettext-0.10.38 released. + +2001-05-22 Bruno Haible + + * Makefile.in (install-data): Install plural.c as well. + (uninstall): Uninstall plural.c as well. + +2001-05-18 Bruno Haible + + * Makefile.in (dist): Don't assume $(srcdir) = ".". Distribute + file in either current directory or $(srcdir), whichever exists. + +2001-05-11 Bruno Haible + + * Makefile.in (install-exec): Don't install charset.alias on glibc 2.1 + systems. + +2001-04-30 Bruno Haible + + * dcigettext.c (getuid, getgid, geteuid, getegid): Provide default + definitions. Needed for mingw32. + +2001-04-19 Bruno Haible + + * gettext-0.10.37 released. + +2001-04-19 Bruno Haible + + * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 1:1:0. + +2001-04-19 Bruno Haible + + * loadmsgcat.c (_nl_init_domain_conv): Don't append //TRANSLIT when + the libiconv version is smaller than 1.5. + +2001-04-09 Bruno Haible + + * loadmsgcat.c: Don't use GNU C extensions if __APPLE_CC__ is defined. + Apple's MacOS X compiler has not all the features that the regular + GCC with the same version number has. + +2001-04-07 Bruno Haible + + * gettextP.h (struct loaded_domain): Add codeset_cntr field. + (struct binding): Add codeset_cntr field. + (_nl_load_domain): Add domainbinding argument. + (_nl_init_domain_conv, _nl_free_domain_conv): New declarations. + (_nl_find_msg): New declaration, moved here from loadinfo.h. + * loadinfo.h (struct loaded_l10nfile): Remove domainbinding field. + (_nl_make_l10nflist): Remove domainbinding argument. + (_nl_find_msg): Move declaration to gettextP.h. + * bindtextdom.c (set_binding_values): Initialize ->codeset_cntr to 0. + Increment it when ->codeset is changed. + * dcigettext.c (DCIGETTEXT): Pass binding to _nl_find_msg. + (_nl_find_msg): Add domainbinding argument. Reinitialize the converter + if domainbinding->codeset_cntr has been incremented. + * finddomain.c (_nl_find_domain): Don't pass domainbinding to + _nl_make_l10nflist(). Pass it to _nl_load_domain() instead. + * l10nflist.c (_nl_make_l10nflist): Remove domainbinding argument. + * loadmsgcat.c (_nl_init_domain_conv): New function, extracted from + _nl_load_domain. Append //TRANSLIT also when using libiconv. + (_nl_free_domain_conv): New function, extracted from _nl_unload_domain. + (_nl_load_domain): Add domainbinding argument. Call + _nl_init_domain_conv. + (_nl_unload_domain): Call _nl_free_domain_conv. + +2001-04-09 Bruno Haible + + * dcigettext.c (HAVE_LOCALE_NULL): Don't define if __GNU_LIBRARY__ < 2 + (Linux libc5). + +2001-04-04 Bruno Haible + + * dcigettext.c (HAVE_LOCALE_NULL): Define also if __GNU_LIBRARY__. + +2001-04-04 Bruno Haible + + * Makefile.in (libdir, includedir, datadir): Use the autoconf + determined value, in order to respect the configure arguments. + (gettextsrcdir): Use $(datadir), not @datadir@. + +2001-03-29 Bruno Haible + + * gettext-0.10.36 released. + +2001-03-25 Bruno Haible + + * Makefile.in (install-data): Set execution bits on installed + config.charset. + +2001-03-23 Bruno Haible + + * Makefile.in (YACC): Use @INTLBISON@ instead of bison. + +2001-03-21 Bruno Haible + + * dcigettext.c (_nl_state_lock): Mark as #ifdef _LIBC. AIX 3 xlc + chokes on empty macro arguments. + * plural.y: Add #pragma for alloca on AIX 3. + +2001-03-20 Bruno Haible + + * Makefile.in (DISTFILES.generated): New variable. + (DISTFILES.gettext): Remove plural.c. + (dist): Use DISTFILES.generated. + (YACC): Use "bison -y" instead of @YACC@. + Needed for "make dist" to work in normal packages. + +2001-03-20 Bruno Haible + + * Makefile.in (dist): Don't depend on $(DISTFILES). Instead, generate + the files to be distributed through a recursive 'make' call. + +2001-03-17 Bruno Haible + + * gettextP.h (struct expression): Add operators lnot, less_than, + greater_than, less_or_equal, greater_or_equal. Replace args2/args3 + union by a 'nargs' counter and an 'args[]' array. + * plural.y: Don't include stdarg.h. + (new_exp): New function. + (new_exp_0, new_exp_2, new_exp_3): Rewritten to call new_exp. + (new_exp_1): New function. + ('?' ':'): Make right-associative. + (EQUOP2): New token, replaces '=' and '!'. + (CMPOP2): New token. + (ADDOP2): New token, replaces '+' and '-'. + (MULOP2): New token, replaces '*', '/' and '%'. + ('!'): New token. + (exp): Add rules for CMPOP2 and '!'. Don't call YYABORT. + (start): Call YYABORT here. + (FREE_EXPRESSION): Update. + (yylex): Don't skip "\\n". Recognize comparison and '!' operators. + Update for new token symbols. + * loadmsgcat.c (plvar, plone, germanic_plural, init_germanic_plural): + Update. + * dcigettext.c (_nl_find_msg): Optimize for space. + (plural_eval): Recognize comparison and '!' operators. Optimize for + space. + + * dcigettext.c (transcmp): New declaration. + +2001-03-10 Bruno Haible + + * Makefile.in (libintl.la): Pass -liconv and flag -no-undefined. + Needed on platforms like BeOS. + + * Makefile.in (all-no-yes): Depend on libgnuintl.$la, not libintl.$la. + (libgnuintl.a, libgnuintl.la): New targets. Needed for linking + ../tests/tstgettext on systems which have gettext() in libintl.so. + + * localcharset.c (locale_charset): Allow wildcard syntax. Resolve + alias also if codeset is empty. + * config.charset (BeOS): Use wildcard syntax. + + * loadmsgcat.c (_nl_load_domain): locale_charset() doesn't return NULL + any more. + +2001-03-09 Bruno Haible + + * config.charset: Update from libiconv-1.6. + * localcharset.c: Likewise. + +2001-02-25 Ulrich Drepper + + * locale.alias: Don't use nb_NO but define aliases for it. + +2001-01-26 Ulrich Drepper + + * loadmsgcat.c: Include for _LIBC. + +2001-03-09 Bruno Haible + + * dcigettext.c (transmem_block_t): Change to unsigned char, to avoid + compiler warning. + (_nl_find_msg): Add casts to avoid compiler warnings. + +2001-03-09 Bruno Haible + + * Makefile.in (DISTFILES.common): Remove ChangeLog. + (DISTFILES.obsolete): New variable. + (install-data): Install ChangeLog.inst as ChangeLog. Remove the files + listed in DISTFILES.obsolete. + (uninstall): Simplify. + (distclean): Remove ChangeLog.inst. + (dist): Mention ChangeLog explicitly. + +2001-03-04 Bruno Haible + + * dcigettext.c (ISSLASH, HAS_DEVICE, IS_ABSOLUTE_PATH, + IS_PATH_WITH_DIR): New macros. + (DCIGETTEXT): Use IS_ABSOLUTE_PATH and IS_PATH_WITH_DIR. Increment + path_max proportionally. + * loadinfo.h (PATH_SEPARATOR): New macro. + * l10nflist.c (_nl_make_l10nflist): Use PATH_SEPARATOR instead of ':'. + * localealias.c (_nl_expand_alias): Likewise. + * libgnuintl.h (gettext) [DJGPP]: Define as a macro as well. + +2001-03-06 Bruno Haible + + * libgnuintl.h (LC_MESSAGES): Don't define on Solaris. + +2001-02-24 Bruno Haible + + * dcigettext.c: Update comment about HAVE_LOCALE_NULL. + +2001-02-05 Bruno Haible + + * libgnuintl.h (LC_MESSAGES): Provide a default value. + +2001-01-30 Bruno Haible + + * config.charset: Update for FreeBSD 4.2. + +2001-01-21 Bruno Haible + + Use libtool. + * Makefile.in (l): Use INTL_LIBTOOL_SUFFIX_PREFIX instead of l. + (all-no): When USE_INCLUDED_LIBINTL is 'no' but BUILD_INCLUDED_LIBINTL + is 'yes', still build libintl.$la because the testsuite needs it. + (libintl.la): Add $(CPPFLAGS) $(CFLAGS) $(XCFLAGS). Linking via $(CC) + must use all $(CFLAGS). + (install-exec): Use libtool to install libintl.$la. + (uninstall): Use libtool to uninstall libintl.$la. + (mostlyclean): Remove *.la and the .libs subdir. + * intl-compat.c: Reorder. Add comment. + +2001-01-20 Bruno Haible + + * loadmsgcat.c (O_BINARY): Define on platforms that don't have it. + (_nl_load_domain): Open the catalog file in binary mode. + +2001-01-24 Bruno Haible + + * gettextP.h (SWAP): Remove declaration, to work around a compilation + failure on alphaev5-cray-unicosmk2.0.5.X. + +2001-01-15 Bruno Haible + + * dcigettext.c (_nl_find_msg): Cast the second iconv() arg, to avoid + a warning. + +2001-01-07 Bruno Haible + + * gettextP.h (__gettextdebug): Remove declaration. + (gettext_free_exp__, gettextparse__): New non-libc declarations. + * plural.y [!_LIBC]: Define gettextparse__, gettext_free_exp__, not + __gettextparse, __gettext_free_exp. + * loadmsgcat.c [!_LIBC]: Use gettextparse__, not __gettextparse. + +2001-01-07 Bruno Haible + + * libgnuintl.h: Renamed from intlh.inst.in. + Remove comment about __builtin_constant_p. + (gettext): Use NULL. + * libgettext.h: Completely rewritten. Now a conditional wrapper around + . Keep the handling of ENABLE_NLS and gettext_noop, remove + everything else. + * gettextP.h: Include gettext.h, for nls_uint32. + (gettext__, dgettext__, dcgettext__, textdomain__, bindtextdomain__, + bind_textdomain_codeset__): New declarations, from old libgettext.h. + * gettext.h: Don't include . + * Makefile.in (HEADERS): Add libgnuintl.h. + (DISTFILES.gettext): Remove intlh.inst.in. + (all-yes): Depend on libintl.h instead of intlh.inst. + (libintl.h): New target. Create as a copy of libgnuintl.h. + (intlh.inst): Remove target. + (install-exec): Update. + ($(OBJECTS): Depend on libgnuintl.h, not libgettext.h. + (mostlyclean): Remove libintl.h instead of intlh.inst. + (dist-libc): Remove target. + * bindtextdom.c: Include libgnuintl.h instead of libgettext.h. Don't + include gettext.h. + * dcgettext.c: Likewise. + * dcigettext.c: Likewise. + * dcngettext.c: Likewise. + * dngettext.c: Likewise. + * finddomain.c: Likewise. + * ngettext.c: Likewise. + * textdomain.c: Likewise. + * dgettext.c: Include libgnuintl.h instead of libgettext.h. Include + gettextP.h. + * gettext.c: Likewise. + * intl-compat.c: Likewise. + * localealias.c: Don't include gettext.h. + * plural.y: Likewise. + +2001-01-07 Bruno Haible + + Assume , , , exist. + * intlh.inst.in: Likewise. + * libgettext.h: Likewise. + * gettextP.h: Likewise. + * bindtextdom.c: Likewise. + * dcigettext.c: Likewise. + * dgettext.c: Likewise. + * dngettext.c: Likewise. + * explodename.c: Likewise. + * finddomain.c: Likewise. + * gettext.c: Likewise. + * l10nflist.c: Likewise. + * loadmsgcat.c: Likewise. + * localealias.c: Likewise. + * ngettext.c: Likewise. + * textdomain.c: Likewise. + +2001-01-06 Bruno Haible + + Remove catgets fallback code. + - It does not handle message clash prevention through domains and + dgettext(). + - It does not handle message catalog inheritance and the LANGUAGE + environment variable. + - It does not handle locale aliases. + - It does not handle automatic charset conversion. + - It does not handle plural form handling and ngettext(). + - It uses a slow string to integer conversion. + - It is sensitive against installation problems. + * cat-compat.c: Remove file. + * po2msg.sin, po2tbl.sin: Remove files. + * Makefile.in (datadir): Assume DATADIRNAME = share. + (SOURCES): Remove cat-compat.c. + (DISTFILES.common): Remove po2msg.sin, po2tbl.sin. + (distclean): No need to remove po2msg.sed, po2tbl.sed. + (../po/cat-id-tbl.$lo): Remove rule. + * libgettext.h (_msg_ent): Remove. + (_msg_tbl, _msg_tbl_length): Remove declarations. + (gettext, dgettext, ngettext, dngettext): Don't depend on + !HAVE_CATGETS. + +2001-01-04 Ulrich Drepper + + * plural.y (yylex): Minimal improvement in number scanner. + +2001-01-02 Ulrich Drepper + + * dcigettext.c (guess_category_value): Rewrite so that LANGUAGE value + is ignored if the selected locale is the C locale. + +2000-11-20 Ulrich Drepper + + * dcigettext.c (transcmp): Make s1 and s2 const. + * loadmsgcat.c (_nl_load_domain): Rearrange domain initialization to + avoid warning. + +2000-11-09 Ulrich Drepper + + * locale.alias: Add thai. + Patch by Chanop Silpa-Anan . + +2001-01-05 Bruno Haible + + * Makefile.in (INCLUDES): Remove reference to $(top_srcdir)/lib. + (.SUFFIXES): Put .c before .y, so that Solaris "make" uses the .c.o + rule, not the builtin .y.o rule. + (.y.c): Use $< instead of $^. $^ is not supported by SUSV2 "make" + specification. Remove $*.h explicitly: we don't need plural.h. + * gettextP.h: Include . + (__gettext_free_exp, __gettextparse): Convert prototype to K&R C + syntax. + * bindtextdom.c (offsetof): Provide fallback for platforms that lack + it, like SunOS4. + (set_binding_values): Convert prototype to K&R C syntax. + * cat-compat.c: Include stdlib.h, string.h whenever possible. + * dcigettext.c: Ignore the value of C_ALLOCA, because libintl.a + must not depend on external .o files. + (offsetof): Provide fallback for platforms that lack it, like SunOS4. + (transcmp): Convert to K&R C syntax. + * explodename.c Include stdlib.h whenever possible. + (_nl_find_language): Convert to K&R C syntax. + * finddomain.c: Include stdlib.h whenever possible. + * l10nflist.c Include stdlib.h whenever possible. + (_nl_normalize_codeset): Use tolower, not _tolower. + * loadmsgcat.c: Include stdlib.h whenever possible. + Include headers needed for alloca(). + (freea): New macro. + (_nl_load_domain): Add fallback code for platforms lacking strtoul, + like SunOS4. Add fallback code for platforms lacking alloca. + * localealias.c: Include stdlib.h whenever possible. + (ADD_BLOCK, FREE_BLOCK): Remove macros. + (freea): New macro. + (read_alias_file): Simplify fallback code for platforms lacking alloca. + * plural.y (new_exp_0, new_exp_2, new_exp_3): New functions. + (new_exp): Remove function. + (__gettext_free_exp, yylex, yyerror): Convert to K&R C syntax. + * textdomain.c: Include stdlib.h whenever possible. + * gettext.c: Likewise. + * ngettext.c: Likewise. + * localcharset.c (volatile): Define to empty if not using ANSI C. + +2001-01-01 Bruno Haible + + * Makefile.in (mostlyclean): Remove intlh.inst, charset.alias, + ref-add.sed, ref-del.sed. + (distclean): In the gettext package, remove VERSION. + +2001-01-01 Bruno Haible + + Finish implementation of plural form handling. + * dcigettext.c (known_translation_t): Rename 'domain' field to + 'domainname'. Remove 'plindex' field. Add 'domain' and + 'translation_length' fields. + (transcmp): Don't compare 'plindex' fields. + (plural_lookup): New function. + (DCIGETTEXT): Change cache handing in the plural case. Don't call + plural_eval before the translation and its catalog file have been + found. Remove plindex from cache key. Add 'translation_length' and + 'domain' to cache result. + (_nl_find_msg): Remove index argument, return length of translation + to the caller instead. Weaken comparison of string lengths, to account + for plural entries. Call iconv() on the entire result string, not + only on the portion needed so far. + * loadinfo.h (_nl_find_msg): Remove index argument, add lengthp + argument. + * loadmsgcat.c (_nl_load_domain): Adapt to _nl_find_msg change. + + * intl-compat.c (dcngettext, dngettext, ngettext): New functions. + * libgettext.h (ngettext__, dngettext__, dcngettext__): New + declarations. + (ngettext, dngettext): Add missing macro argument. + + * intlh.inst.in (ngettext, dngettext): Add missing macro argument. + +2000-12-31 Bruno Haible + + * gettextP.h (ZERO): New macro. + (struct binding): Always use ZERO. + * bindtextdom.c (set_binding_values): Use offsetof, not sizeof. + Include whenever possible. + * dcigettext.c (ZERO): Remove macro. + (struct transmem_list): Use ZERO. + (DCIGETTEXT): Use offsetof, not sizeof. + Include whenever possible. + + * config.charset: Update from libiconv-1.5.1. + * localcharset.c: Likewise. + +2000-12-30 Bruno Haible + + * locale.alias: New file, moved here from ../misc/locale.alias. Add + "Packages using this file" line. + * Makefile.in (DISTFILES.common): Add locale.alias. + (install-exec, uninstall): Install/deinstall locale.alias. + +2000-10-30 Ulrich Drepper + + * dcigettext.c (guess_category_value): For libc always use the + setlocale() method. + +2000-10-20 Ulrich Drepper + + * libintl.glibc (ngettext macro): Add missing parameter. + (dngettext macro): Likewise. + +2000-10-14 Ulrich Drepper + + * localealias.c (read_alias_file): Update string pointers in map[] + if realloc() changed the values. + Patch by Jakub Jelinek . + +2000-08-31 Ulrich Drepper + + * loadmsgcat.c: Use *stat64 instead of *stat internally. + + * dcigettext.c (free_mem): Correct freeing of _nl_domain_bindings + list. + +2000-08-27 Ulrich Drepper + + * dcigettext.c (DCIGETTEXT): Remove _nl_find_language in code to + determine invalid locale name. + +2000-08-20 Ulrich Drepper + + * dcigettext.c: Unify use of function aliases to make more compact + PLT. + + * loadmsgcat.c (_nl_unload_domain): Also free conv_tab element. + Pretty printing. + * plural.y (new_exp): Take number of optional parameters in second + parameter. Test for correct number of parameters and free correctly + in case of failure. Adjust all callers. + (yylex): Fix handling of '\0'. Allow ';' as terminator character. + +2000-07-14 Bruno Haible + + * dcigettext.c (dcigettext): Call plural_eval on all platforms, not + only those having tsearch. + +2000-06-30 Ulrich Drepper + + * dcigettext.c (_nl_find_msg): Correct reallocation of buffers in + case the translation is too large. Remember allocated memory blocks + in a list. + (free_mem): Free memory for translations. + +2000-06-16 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): Call norm_add_slashes with new + parameter to always enable transliteration. + +1998-10-20 Paul Eggert + + * po2tbl.sin: Escape trigraphs. + +2000-10-12 Bruno Haible + + * finddomain.c: Remove unneeded includes. + +2000-10-12 Bruno Haible + + * localealias.c (memcpy): Return first argument, just like the real + memcpy function does. + * bindtextdom.c (memcpy): Likewise. + * finddomain.c (memcpy): Likewise. + * l10nflist.c (memcpy): Likewise. + * textdomain.c (memcpy): Likewise. + From Paul Eggert . + +2000-09-29 Bruno Haible + + * libintl.glibc: Update from current glibc version. + +2000-09-18 Bruno Haible + + * dcigettext.c: Outside libc, use local variable names that don't + clash with those in libc. + * bindtextdom.c: Likewise. + * textdomain.c: Likewise. + +2000-07-31 Bruno Haible + + * plural.y: Include config.h. Needed to define 'inline' away for C + compilers that don't support it. + (yylex): Don't use gcc specific case range syntax. + * loadmsgcat.y (INIT_GERMANIC_PLURAL): New macro, for old compilers. + +2000-07-28 Bruno Haible + + Simplification: In all cases where $(gnulocaledir) is used, it is + identical to $(localedir). + * Makefile.in (DEFS): Remove setting for GNULOCALEDIR. + * dcigettext.c (_nl_default_dirname): Initialize with LOCALEDIR. + +2000-07-28 Bruno Haible + + * xopen-msg.sed: Renamed to ... + * po2msg.sin: ... here. + * linux-msg.sed: Remove file. + * Makefile.in (DISTFILES.common): Update. + +2000-07-28 Bruno Haible + + * po2tbl.sed.in: Renamed to ... + * po2tbl.sin: ... here. + * Makefile.in (DISTFILES.common): Update. + +2000-07-28 Bruno Haible + + * Makefile.in (uninstall): Synchronize with the install target. + Really remove charset.alias when its reference count drops to 0. + +2000-07-28 Bruno Haible + + * Makefile.in (mkinstalldirs): New macro. Needed when configured with + --srcdir=; then ac_aux_dir will be a relative + pathname rooted at the top builddir, and @MKINSTALLDIRS@ likewise. + (install-exec, install-data): Use it. + +2000-07-26 Bruno Haible + + * Makefile.in (install-exec, install-data): Use $(SHELL) for calling + $(MKINSTALLDIRS), don't rely on its execution permissions. + + * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): New variables. + (libintl.la): Use them. + + * Makefile.in (install-exec, install-data, uninstall): Provide DESTDIR + support, as recommended by GNU standards. Fix misapplied 2000-06-16 + patch. + +2000-06-16 Bruno Haible + + * Makefile.in (COMSRCS): Add localcharset.c. + (OBJECTS): Add localcharset.$lo. + (DISTFILES.common): Add config.charset, ref-{add,del}.sin. + (DEFS): Add -DLIBDIR. + (all-yes): Add charset.alias, ref-{add,del}.sed. + (.SUFFIXES): Add .sin and .sed. + (.sin.sed, charset.alias): New rules. + (install-exec, uninstall): Install/deinstall charset.alias. + * localcharset.c: New file, from fileutils-4.0u. + * config.charset: New file, from fileutils-4.0u. + * red-add.sin, ref-del.sin: New files, from fileutils-4.0u. + + * intlh.inst.in (bind_textdomain_codeset): New declaration. + * libgettext.h (bind_textdomain_codeset, bind_textdomain_codeset__): + New declarations. + (bind_textdomain_codeset) [!ENABLE_NLS]: New macro. + * cat-compat.c (bind_textdomain_codeset): New function. + * intl-compat.c (bind_textdomain_codeset): New function. + + * libgettext.h (ngettext, dngettext, dcngettext): New + declarations. + (dcgettext): Remove macro definition. + (textdomain, bindtextdomain) [!ENABLE_NLS]: Parenthesize argument. + * intlh.inst.in (ngettext, dngettext, dcngettext): New + declarations. + (dcgettext): Remove macro definition. + + * *.h, *.c, *.y: Change copyright notice from LGPL to GPL. + +2000-05-21 Ulrich Drepper + + * dcigettext.c: Fix typo in comment. + +2000-05-08 Andreas Jaeger + + * bindtextdom.c (set_binding_values): Add prototype. + +2000-05-05 Bruno Haible + + * dcigettext.c (alignof): New macro. + (_nl_find_msg): Use it instead of __alignof__. Pass correct output + buffer length to __gconv/iconv. If malloc (freemem_size) fails, set + freemem_size to 0. + +2000-05-05 Bruno Haible + + * dcigettext.c (dcigettext): Fix interpretation of tsearch + return value. + +2000-05-06 Ulrich Drepper + + * dcigettext.c (DCIGETTEXT): Always define local variable `index'. + (mempcpy): Correct typo in parameter list. + + * hash-string.h: Don't include . + + * *.c, *.h, *.y: Update from glibc version. + +1998-04-29 Paul Eggert + + * Makefile.in (aliaspath): Don't put `.' at the end. + +1998-06-01 Ulrich Drepper + + * localealias.c (read_alias_file): Undo last change. + * l10nflist.c (_nl_normalize_codeset): Likewise. + * loadinfo.h: Likewise. + +1998-05-23 Ulrich Drepper + + * dcgettext.c: Don't use any alloca hack when C_ALLOCA is defined. + +1998-05-01 08:47 Ulrich Drepper + + * gettext-0.10.35 released. + +1998-04-29 Ulrich Drepper + + * intl/localealias.c (read_alias_file): Use unsigned char for + local variables. Remove unused variable tp. + * intl/l10nflist.c (_nl_normalize_codeset): Use unsigned char * + for type of codeset. For loosing Solaris systems. + * intl/loadinfo.h: Adapt prototype of _nl_normalize_codeset. + * intl/bindtextdom.c (BINDTEXTDOMAIN): Don't define local variable + len if not needed. + Patches by Jim Meyering. + +1998-04-28 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): Don't assign the element use_mmap if + mmap is not supported. + + * hash-string.h: Don't include . + +1998-04-27 Ulrich Drepper + + * textdomain.c: Use strdup is available. + + * localealias.c: Define HAVE_MEMPCPY so that we can use this + function. Define and use semapahores to protect modfication of + global objects when compiling for glibc. Add code to allow + freeing alias table. + + * l10nflist.c: Don't assume stpcpy not being a macro. + + * gettextP.h: Define internal_function macri if not already done. + Use glibc byte-swap macros instead of defining SWAP when compiled + for glibc. + (struct loaded_domain): Add elements to allow unloading. + + * Makefile.in (distclean): Don't remove libintl.h here. + + * bindtextdomain.c: Carry over changes from glibc. Use strdup if + available. + + * dcgettext.c: Don't assume stpcpy not being a macro. Mark internal + functions. Add memory freeing code for glibc. + + * dgettext.c: Update copyright. + + * explodename.c: Include stdlib.h and string.h only if they exist. + Use strings.h eventually. + + * finddomain.c: Mark internal functions. Use strdup if available. + Add memory freeing code for glibc. + +1997-10-10 20:00 Ulrich Drepper + + * libgettext.h: Fix dummy textdomain and bindtextdomain macros. + They should return reasonable values. + Reported by Tom Tromey . + +1997-09-16 03:33 Ulrich Drepper + + * libgettext.h: Define PARAMS also to `args' if __cplusplus is defined. + * intlh.inst.in: Likewise. + Reported by Jean-Marc Lasgouttes . + + * libintl.glibc: Update from current glibc version. + +1997-09-06 02:10 Ulrich Drepper + + * intlh.inst.in: Reformat copyright. + +1997-08-19 15:22 Ulrich Drepper + + * dcgettext.c (DCGETTEXT): Remove wrong comment. + +1997-08-16 00:13 Ulrich Drepper + + * Makefile.in (install-data): Don't change directory to install. + +1997-08-01 14:30 Ulrich Drepper + + * cat-compat.c: Fix copyright. + + * localealias.c: Don't define strchr unless !HAVE_STRCHR. + + * loadmsgcat.c: Update copyright. Fix typos. + + * l10nflist.c: Don't define strchr unless !HAVE_STRCHR. + (_nl_make_l10nflist): Handle sponsor and revision correctly. + + * gettext.c: Update copyright. + * gettext.h: Likewise. + * hash-string.h: Likewise. + + * finddomain.c: Remoave dead code. Define strchr only if + !HAVE_STRCHR. + + * explodename.c: Include . + + * explodename.c: Reformat copyright text. + (_nl_explode_name): Fix typo. + + * dcgettext.c: Define and use __set_errno. + (guess_category_value): Don't use setlocale if HAVE_LC_MESSAGES is + not defined. + + * bindtextdom.c: Pretty printing. + +1997-05-01 02:25 Ulrich Drepper + + * dcgettext.c (guess_category_value): Don't depend on + HAVE_LC_MESSAGES. We don't need the macro here. + Patch by Bruno Haible . + + * cat-compat.c (textdomain): DoN't refer to HAVE_SETLOCALE_NULL + macro. Instead use HAVE_LOCALE_NULL and define it when using + glibc, as in dcgettext.c. + Patch by Bruno Haible . + + * Makefile.in (CPPFLAGS): New variable. Reported by Franc,ois + Pinard. + +Mon Mar 10 06:51:17 1997 Ulrich Drepper + + * Makefile.in: Implement handling of libtool. + + * gettextP.h: Change data structures for use of generic lowlevel + i18n file handling. + +Wed Dec 4 20:21:18 1996 Ulrich Drepper + + * textdomain.c: Put parentheses around arguments of memcpy macro + definition. + * localealias.c: Likewise. + * l10nflist.c: Likewise. + * finddomain.c: Likewise. + * bindtextdom.c: Likewise. + Reported by Thomas Esken. + +Mon Nov 25 22:57:51 1996 Ulrich Drepper + + * textdomain.c: Move definition of `memcpy` macro to right + position. + +Fri Nov 22 04:01:58 1996 Ulrich Drepper + + * finddomain.c [!HAVE_STRING_H && !_LIBC]: Define memcpy using + bcopy if not already defined. Reported by Thomas Esken. + * bindtextdom.c: Likewise. + * l10nflist.c: Likewise. + * localealias.c: Likewise. + * textdomain.c: Likewise. + +Tue Oct 29 11:10:27 1996 Ulrich Drepper + + * Makefile.in (libdir): Change to use exec_prefix instead of + prefix. Reported by Knut-HĺvardAksnes . + +Sat Aug 31 03:07:09 1996 Ulrich Drepper + + * l10nflist.c (_nl_normalize_codeset): We convert to lower case, + so don't prepend uppercase `ISO' for only numeric arg. + +Fri Jul 19 00:15:46 1996 Ulrich Drepper + + * l10nflist.c: Move inclusion of argz.h, ctype.h, stdlib.h after + definition of _GNU_SOURCE. Patch by Roland McGrath. + + * Makefile.in (uninstall): Fix another bug with `for' loop and + empty arguments. Patch by Jim Meyering. Correct name os + uninstalled files: no intl- prefix anymore. + + * Makefile.in (install-data): Again work around shells which + cannot handle mpty for list. Reported by Jim Meyering. + +Sat Jul 13 18:11:35 1996 Ulrich Drepper + + * Makefile.in (install): Split goal. Now depend on install-exec + and install-data. + (install-exec, install-data): New goals. Created from former + install goal. + Reported by Karl Berry. + +Sat Jun 22 04:58:14 1996 Ulrich Drepper + + * Makefile.in (MKINSTALLDIRS): New variable. Path to + mkinstalldirs script. + (install): use MKINSTALLDIRS variable or if the script is not present + try to find it in the $top_scrdir). + +Wed Jun 19 02:56:56 1996 Ulrich Drepper + + * l10nflist.c: Linux libc *partly* includes the argz_* functions. + Grr. Work around by renaming the static version and use macros + for renaming. + +Tue Jun 18 20:11:17 1996 Ulrich Drepper + + * l10nflist.c: Correct presence test macros of __argz_* functions. + + * l10nflist.c: Include based on test of it instead when + __argz_* functions are available. + Reported by Andreas Schwab. + +Thu Jun 13 15:17:44 1996 Ulrich Drepper + + * explodename.c, l10nflist.c: Define NULL for dumb systems. + +Tue Jun 11 17:05:13 1996 Ulrich Drepper + + * intlh.inst.in, libgettext.h (dcgettext): Rename local variable + result to __result to prevent name clash. + + * l10nflist.c, localealias.c, dcgettext.c: Define _GNU_SOURCE to + get prototype for stpcpy and strcasecmp. + + * intlh.inst.in, libgettext.h: Move declaration of + `_nl_msg_cat_cntr' outside __extension__ block to prevent warning + from gcc's -Wnested-extern option. + +Fri Jun 7 01:58:00 1996 Ulrich Drepper + + * Makefile.in (install): Remove comment. + +Thu Jun 6 17:28:17 1996 Ulrich Drepper + + * Makefile.in (install): Work around for another Buglix stupidity. + Always use an `else' close for `if's. Reported by Nelson Beebe. + + * Makefile.in (intlh.inst): Correct typo in phony rule. + Reported by Nelson Beebe. + +Thu Jun 6 01:49:52 1996 Ulrich Drepper + + * dcgettext.c (read_alias_file): Rename variable alloca_list to + block_list as the macro calls assume. + Patch by Eric Backus. + + * localealias.c [!HAVE_ALLOCA]: Define alloca as macro using + malloc. + (read_alias_file): Rename varriabe alloca_list to block_list as the + macro calls assume. + Patch by Eric Backus. + + * l10nflist.c: Correct conditional for inclusion. + Reported by Roland McGrath. + + * Makefile.in (all): Depend on all-@USE_INCLUDED_LIBINTL@, not + all-@USE_NLS@. + + * Makefile.in (install): intlh.inst comes from local dir, not + $(srcdir). + + * Makefile.in (intlh.inst): Special handling of this goal. If + used in gettext, this is really a rul to construct this file. If + used in any other package it is defined as a .PHONY rule with + empty body. + + * finddomain.c: Extract locale file information handling into + l10nfile.c. Rename local stpcpy__ function to stpcpy. + + * dcgettext.c (stpcpy): Add local definition. + + * l10nflist.c: Solve some portability problems. Patches partly by + Thomas Esken. Add local definition of stpcpy. + +Tue Jun 4 02:47:49 1996 Ulrich Drepper + + * intlh.inst.in: Don't depend including on + HAVE_LOCALE_H. Instead configure must rewrite this fiile + depending on the result of the configure run. + + * Makefile.in (install): libintl.inst is now called intlh.inst. + Add rules for updating intlh.inst from intlh.inst.in. + + * libintl.inst: Renamed to intlh.inst.in. + + * localealias.c, dcgettext.c [__GNUC__]: Define HAVE_ALLOCA to 1 + because gcc has __buitlin_alloca. + Reported by Roland McGrath. + +Mon Jun 3 00:32:16 1996 Ulrich Drepper + + * Makefile.in (installcheck): New goal to fulfill needs of + automake's distcheck. + + * Makefile.in (install): Reorder commands so that VERSION is + found. + + * Makefile.in (gettextsrcdir): Now use subdirectory intl/ in + @datadir@/gettext. + (COMSRCS): Add l10nfile.c. + (OBJECTS): Add l10nfile.o. + (DISTFILES): Rename to DISTFILE.normal. Remove $(DISTFILES.common). + (DISTFILE.gettext): Remove $(DISTFILES.common). + (all-gettext): Remove goal. + (install): If $(PACKAGE) = gettext install, otherwose do nothing. No + package but gettext itself should install libintl.h + headers. + (dist): Extend goal to work for gettext, too. + (dist-gettext): Remove goal. + + * dcgettext.c [!HAVE_ALLOCA]: Define macro alloca by using malloc. + +Sun Jun 2 17:33:06 1996 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): Parameter is now comes from + find_l10nfile. + +Sat Jun 1 02:23:03 1996 Ulrich Drepper + + * l10nflist.c (__argz_next): Add definition. + + * dcgettext.c [!HAVE_ALLOCA]: Add code for handling missing alloca + code. Use new l10nfile handling. + + * localealias.c [!HAVE_ALLOCA]: Add code for handling missing + alloca code. + + * l10nflist.c: Initial revision. + +Tue Apr 2 18:51:18 1996 Ulrich Drepper + + * Makefile.in (all-gettext): New goal. Same as all-yes. + +Thu Mar 28 23:01:22 1996 Karl Eichwalder + + * Makefile.in (gettextsrcdir): Define using @datadir@. + +Tue Mar 26 12:39:14 1996 Ulrich Drepper + + * finddomain.c: Include . Reported by Roland McGrath. + +Sat Mar 23 02:00:35 1996 Ulrich Drepper + + * finddomain.c (stpcpy): Rename to stpcpy__ to prevent clashing + with external declaration. + +Sat Mar 2 00:47:09 1996 Ulrich Drepper + + * Makefile.in (all-no): Rename from all_no. + +Sat Feb 17 00:25:59 1996 Ulrich Drepper + + * gettextP.h [loaded_domain]: Array `successor' must now contain up + to 63 elements (because of codeset name normalization). + + * finddomain.c: Implement codeset name normalization. + +Thu Feb 15 04:39:09 1996 Ulrich Drepper + + * Makefile.in (all): Define to `all-@USE_NLS@'. + (all-yes, all_no): New goals. `all-no' is noop, `all-yes' + is former all. + +Mon Jan 15 21:46:01 1996 Howard Gayle + + * localealias.c (alias_compare): Increment string pointers in loop + of strcasecmp replacement. + +Fri Dec 29 21:16:34 1995 Ulrich Drepper + + * Makefile.in (install-src): Who commented this goal out ? :-) + +Fri Dec 29 15:08:16 1995 Ulrich Drepper + + * dcgettext.c (DCGETTEXT): Save `errno'. Failing system calls + should not effect it because a missing catalog is no error. + Reported by Harald Knig . + +Tue Dec 19 22:09:13 1995 Ulrich Drepper + + * Makefile.in (Makefile): Explicitly use $(SHELL) for running + shell scripts. + +Fri Dec 15 17:34:59 1995 Andreas Schwab + + * Makefile.in (install-src): Only install library and header when + we use the own implementation. Don't do it when using the + system's gettext or catgets functions. + + * dcgettext.c (find_msg): Must not swap domain->hash_size here. + +Sat Dec 9 16:24:37 1995 Ulrich Drepper + + * localealias.c, libintl.inst, libgettext.h, hash-string.h, + gettextP.h, finddomain.c, dcgettext.c, cat-compat.c: + Use PARAMS instead of __P. Suggested by Roland McGrath. + +Tue Dec 5 11:39:14 1995 Larry Schwimmer + + * libgettext.h: Use `#if !defined (_LIBINTL_H)' instead of `#if + !_LIBINTL_H' because Solaris defines _LIBINTL_H as empty. + +Mon Dec 4 15:42:07 1995 Ulrich Drepper + + * Makefile.in (install-src): + Install libintl.inst instead of libintl.h.install. + +Sat Dec 2 22:51:38 1995 Marcus Daniels + + * cat-compat.c (textdomain): + Reverse order in which files are tried you load. First + try local file, when this failed absolute path. + +Wed Nov 29 02:03:53 1995 Nelson H. F. Beebe + + * cat-compat.c (bindtextdomain): Add missing { }. + +Sun Nov 26 18:21:41 1995 Ulrich Drepper + + * libintl.inst: Add missing __P definition. Reported by Nelson Beebe. + + * Makefile.in: + Add dummy `all' and `dvi' goals. Reported by Tom Tromey. + +Sat Nov 25 16:12:01 1995 Franc,ois Pinard + + * hash-string.h: Capitalize arguments of macros. + +Sat Nov 25 12:01:36 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): Prevent files names longer than 13 + characters. libintl.h.glibc->libintl.glibc, + libintl.h.install->libintl.inst. Reported by Joshua R. Poulson. + +Sat Nov 25 11:31:12 1995 Eric Backus + + * dcgettext.c: Fix bug in preprocessor conditionals. + +Sat Nov 25 02:35:27 1995 Nelson H. F. Beebe + + * libgettext.h: Solaris cc does not understand + #if !SYMBOL1 && !SYMBOL2. Sad but true. + +Thu Nov 23 16:22:14 1995 Ulrich Drepper + + * hash-string.h (hash_string): + Fix for machine with >32 bit `unsigned long's. + + * dcgettext.c (DCGETTEXT): + Fix horrible bug in loop for alternative translation. + +Thu Nov 23 01:45:29 1995 Ulrich Drepper + + * po2tbl.sed.in, linux-msg.sed, xopen-msg.sed: + Some further simplifications in message number generation. + +Mon Nov 20 21:08:43 1995 Ulrich Drepper + + * libintl.h.glibc: Use __const instead of const in prototypes. + + * Makefile.in (install-src): + Install libintl.h.install instead of libintl.h. This + is a stripped-down version. Suggested by Peter Miller. + + * libintl.h.install, libintl.h.glibc: Initial revision. + + * localealias.c (_nl_expand_alias, read_alias_file): + Protect prototypes in type casts by __P. + +Tue Nov 14 16:43:58 1995 Ulrich Drepper + + * hash-string.h: Correct prototype for hash_string. + +Sun Nov 12 12:42:30 1995 Ulrich Drepper + + * hash-string.h (hash_string): Add prototype. + + * gettextP.h: Fix copyright. + (SWAP): Add prototype. + +Wed Nov 8 22:56:33 1995 Ulrich Drepper + + * localealias.c (read_alias_file): Forgot sizeof. + Avoid calling *printf function. This introduces a big overhead. + Patch by Roland McGrath. + +Tue Nov 7 14:21:08 1995 Ulrich Drepper + + * finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy. + + * finddomain.c (stpcpy): + Define substitution function local. The macro was to flaky. + + * cat-compat.c: Fix typo. + + * xopen-msg.sed, linux-msg.sed: + While bringing message number to right place only accept digits. + + * linux-msg.sed, xopen-msg.sed: Now that the counter does not have + leading 0s we don't need to remove them. Reported by Marcus + Daniels. + + * Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in + dependency. Reported by Marcus Daniels. + + * cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement. + Generally cleanup using #if instead of #ifndef. + + * Makefile.in: Correct typos in comment. By Franc,ois Pinard. + +Mon Nov 6 00:27:02 1995 Ulrich Drepper + + * Makefile.in (install-src): Don't install libintl.h and libintl.a + if we use an available gettext implementation. + +Sun Nov 5 22:02:08 1995 Ulrich Drepper + + * libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS. Reported + by Franc,ois Pinard. + + * libgettext.h: Use #if instead of #ifdef/#ifndef. + + * finddomain.c: + Comments describing what has to be done should start with FIXME. + +Sun Nov 5 19:38:01 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): Split. Use DISTFILES with normal meaning. + DISTFILES.common names the files common to both dist goals. + DISTFILES.gettext are the files only distributed in GNU gettext. + +Sun Nov 5 17:32:54 1995 Ulrich Drepper + + * dcgettext.c (DCGETTEXT): Correct searching in derived locales. + This was necessary since a change in _nl_find_msg several weeks + ago. I really don't know this is still not fixed. + +Sun Nov 5 12:43:12 1995 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL. This + might mark a special condition. + + * finddomain.c (make_entry_rec): Don't make illegal entry as decided. + + * Makefile.in (dist): Suppress error message when ln failed. + Get files from $(srcdir) explicitly. + + * libgettext.h (gettext_const): Rename to gettext_noop. + +Fri Nov 3 07:36:50 1995 Ulrich Drepper + + * finddomain.c (make_entry_rec): + Protect against wrong locale names by testing mask. + + * libgettext.h (gettext_const): Add macro definition. + Capitalize macro arguments. + +Thu Nov 2 23:15:51 1995 Ulrich Drepper + + * finddomain.c (_nl_find_domain): + Test for pointer != NULL before accessing value. + Reported by Tom Tromey. + + * gettext.c (NULL): + Define as (void*)0 instad of 0. Reported by Franc,ois Pinard. + +Mon Oct 30 21:28:52 1995 Ulrich Drepper + + * po2tbl.sed.in: Serious typo bug fixed by Jim Meyering. + +Sat Oct 28 23:20:47 1995 Ulrich Drepper + + * libgettext.h: Disable dcgettext optimization for Solaris 2.3. + + * localealias.c (alias_compare): + Peter Miller reported that tolower in some systems is + even dumber than I thought. Protect call by `isupper'. + +Fri Oct 27 22:22:51 1995 Ulrich Drepper + + * Makefile.in (libdir, includedir): New variables. + (install-src): Install libintl.a and libintl.h in correct dirs. + +Fri Oct 27 22:07:29 1995 Ulrich Drepper + + * Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c. + + * po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques. + + * localealias.c: + Fix typo and superflous test. Reported by Christian von Roques. + +Fri Oct 6 11:52:05 1995 Ulrich Drepper + + * finddomain.c (_nl_find_domain): + Correct some remainder from the pre-CEN syntax. Now + we don't have a constant number of successors anymore. + +Wed Sep 27 21:41:13 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): Add libintl.h.glibc. + + * Makefile.in (dist-libc): Add goal for packing sources for glibc. + (COMSRCS, COMHDRS): Splitted to separate sources shared with glibc. + + * loadmsgcat.c: Forget to continue #if line. + + * localealias.c: + [_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name + space clean. + + * dcgettext.c, finddomain.c: Better comment to last change. + + * loadmsgcat.c: + [_LIBC]: Rename fstat, open, close, read, mmap, and munmap to + __fstat, __open, __close, __read, __mmap, and __munmap resp + to keep ANSI C name space clean. + + * finddomain.c: + [_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean. + + * dcgettext.c: + [_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to + keep ANSI C name space clean. + + * libgettext.h: + Include sys/types.h for those old SysV systems out there. + Reported by Francesco Potorti`. + + * loadmsgcat.c (use_mmap): Define if compiled for glibc. + + * bindtextdom.c: Include all those standard headers + unconditionally if _LIBC is defined. + + * finddomain.c: Fix 2 times defiend -> defined. + + * textdomain.c: Include libintl.h instead of libgettext.h when + compiling for glibc. Include all those standard headers + unconditionally if _LIBC is defined. + + * localealias.c, loadmsgcat.c: Prepare to be compiled in glibc. + + * gettext.c: + Include libintl.h instead of libgettext.h when compiling for glibc. + Get NULL from stddef.h if we compile for glibc. + + * finddomain.c: Include libintl.h instead of libgettext.h when + compiling for glibc. Include all those standard headers + unconditionally if _LIBC is defined. + + * dcgettext.c: Include all those standard headers unconditionally + if _LIBC is defined. + + * dgettext.c: If compiled in glibc include libintl.h instead of + libgettext.h. + (locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc. + + * dcgettext.c: If compiled in glibc include libintl.h instead of + libgettext.h. + (getcwd): Don't rely on HAVE_GETCWD when compiling for glibc. + + * bindtextdom.c: + If compiled in glibc include libintl.h instead of libgettext.h. + +Mon Sep 25 22:23:06 1995 Ulrich Drepper + + * localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0. + Reported by Marcus Daniels. + + * cat-compat.c (bindtextdomain): + String used in putenv must not be recycled. + Reported by Marcus Daniels. + + * libgettext.h (__USE_GNU_GETTEXT): + Additional symbol to signal that we use GNU gettext + library. + + * cat-compat.c (bindtextdomain): + Fix bug with the strange stpcpy replacement. + Reported by Nelson Beebe. + +Sat Sep 23 08:23:51 1995 Ulrich Drepper + + * cat-compat.c: Include for stpcpy prototype. + + * localealias.c (read_alias_file): + While expand strdup code temporary variable `cp' hided + higher level variable with same name. Rename to `tp'. + + * textdomain.c (textdomain): + Avoid warning by using temporary variable in strdup code. + + * finddomain.c (_nl_find_domain): Remove unused variable `application'. + +Thu Sep 21 15:51:44 1995 Ulrich Drepper + + * localealias.c (alias_compare): + Use strcasecmp() only if available. Else use + implementation in place. + + * intl-compat.c: + Wrapper functions now call *__ functions instead of __*. + + * libgettext.h: Declare prototypes for *__ functions instead for __*. + + * cat-compat.c, loadmsgcat.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + + * bindtextdom.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + Rename to bindtextdomain__ if not used in GNU C Library. + + * dgettext.c: + Rename function to dgettext__ if not used in GNU C Library. + + * gettext.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + Functions now called gettext__ if not used in GNU C Library. + + * dcgettext.c, localealias.c, textdomain.c, finddomain.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + +Sun Sep 17 23:14:49 1995 Ulrich Drepper + + * finddomain.c: Correct some bugs in handling of CEN standard + locale definitions. + +Thu Sep 7 01:49:28 1995 Ulrich Drepper + + * finddomain.c: Implement CEN syntax. + + * gettextP.h (loaded_domain): Extend number of successors to 31. + +Sat Aug 19 19:25:29 1995 Ulrich Drepper + + * Makefile.in (aliaspath): Remove path to X11 locale dir. + + * Makefile.in: Make install-src depend on install. This helps + gettext to install the sources and other packages can use the + install goal. + +Sat Aug 19 15:19:33 1995 Ulrich Drepper + + * Makefile.in (uninstall): Remove stuff installed by install-src. + +Tue Aug 15 13:13:53 1995 Ulrich Drepper + + * VERSION.in: Initial revision. + + * Makefile.in (DISTFILES): + Add VERSION file. This is not necessary for gettext, but + for other packages using this library. + +Tue Aug 15 06:16:44 1995 Ulrich Drepper + + * gettextP.h (_nl_find_domain): + New prototype after changing search strategy. + + * finddomain.c (_nl_find_domain): + We now try only to find a specified catalog. Fall back to other + catalogs listed in the locale list is now done in __dcgettext. + + * dcgettext.c (__dcgettext): + Now we provide message fall back even to different languages. + I.e. if a message is not available in one language all the other + in the locale list a tried. Formerly fall back was only possible + within one language. Implemented by moving one loop from + _nl_find_domain to here. + +Mon Aug 14 23:45:50 1995 Ulrich Drepper + + * Makefile.in (gettextsrcdir): + Directory where source of GNU gettext library are made + available. + (INSTALL, INSTALL_DATA): Programs used for installing sources. + (gettext-src): New. Rule to install GNU gettext sources for use in + gettextize shell script. + +Sun Aug 13 14:40:48 1995 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): + Use mmap for loading only when munmap function is + also available. + + * Makefile.in (install): Depend on `all' goal. + +Wed Aug 9 11:04:33 1995 Ulrich Drepper + + * localealias.c (read_alias_file): + Do not overwrite '\n' when terminating alias value string. + + * localealias.c (read_alias_file): + Handle long lines. Ignore the rest not fitting in + the buffer after the initial `fgets' call. + +Wed Aug 9 00:54:29 1995 Ulrich Drepper + + * gettextP.h (_nl_load_domain): + Add prototype, replacing prototype for _nl_load_msg_cat. + + * finddomain.c (_nl_find_domain): + Remove unneeded variable filename and filename_len. + (expand_alias): Remove prototype because functions does not + exist anymore. + + * localealias.c (read_alias_file): + Change type of fname_len parameter to int. + (xmalloc): Add prototype. + + * loadmsgcat.c: Better prototypes for xmalloc. + +Tue Aug 8 22:30:39 1995 Ulrich Drepper + + * finddomain.c (_nl_find_domain): + Allow alias name to be constructed from the four components. + + * Makefile.in (aliaspath): New variable. Set to preliminary value. + (SOURCES): Add localealias.c. + (OBJECTS): Add localealias.o. + + * gettextP.h: Add prototype for _nl_expand_alias. + + * finddomain.c: Aliasing handled in intl/localealias.c. + + * localealias.c: Aliasing for locale names. + + * bindtextdom.c: Better prototypes for xmalloc and xstrdup. + +Mon Aug 7 23:47:42 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): gettext.perl is now found in misc/. + + * cat-compat.c (bindtextdomain): + Correct implementation. dirname parameter was not used. + Reported by Marcus Daniels. + + * gettextP.h (loaded_domain): + New fields `successor' and `decided' for oo, lazy + message handling implementation. + + * dcgettext.c: + Adopt for oo, lazy message handliing. + Now we can inherit translations from less specific locales. + (find_msg): New function. + + * loadmsgcat.c, finddomain.c: + Complete rewrite. Implement oo, lazy message handling :-). + We now have an additional environment variable `LANGUAGE' with + a higher priority than LC_ALL for the LC_MESSAGE locale. + Here we can set a colon separated list of specifications each + of the form `language[_territory[.codeset]][@modifier]'. + +Sat Aug 5 09:55:42 1995 Ulrich Drepper + + * finddomain.c (unistd.h): + Include to get _PC_PATH_MAX defined on system having it. + +Fri Aug 4 22:42:00 1995 Ulrich Drepper + + * finddomain.c (stpcpy): Include prototype. + + * Makefile.in (dist): Remove `copying instead' message. + +Wed Aug 2 18:52:03 1995 Ulrich Drepper + + * Makefile.in (ID, TAGS): Do not use $^. + +Tue Aug 1 20:07:11 1995 Ulrich Drepper + + * Makefile.in (TAGS, ID): Use $^ as command argument. + (TAGS): Give etags -o option t write to current directory, + not $(srcdir). + (ID): Use $(srcdir) instead os $(top_srcdir)/src. + (distclean): Remove ID. + +Sun Jul 30 11:51:46 1995 Ulrich Drepper + + * Makefile.in (gnulocaledir): + New variable, always using share/ for data directory. + (DEFS): Add GNULOCALEDIR, used in finddomain.c. + + * finddomain.c (_nl_default_dirname): + Set to GNULOCALEDIR, because it always has to point + to the directory where GNU gettext Library writes it to. + + * intl-compat.c (textdomain, bindtextdomain): + Undefine macros before function definition. + +Sat Jul 22 01:10:02 1995 Ulrich Drepper + + * libgettext.h (_LIBINTL_H): + Protect definition in case where this file is included as + libgettext.h on Solaris machines. Add comment about this. + +Wed Jul 19 02:36:42 1995 Ulrich Drepper + + * intl-compat.c (textdomain): Correct typo. + +Wed Jul 19 01:51:35 1995 Ulrich Drepper + + * dcgettext.c (dcgettext): Function now called __dcgettext. + + * dgettext.c (dgettext): Now called __dgettext and calls + __dcgettext. + + * gettext.c (gettext): + Function now called __gettext and calls __dgettext. + + * textdomain.c (textdomain): Function now called __textdomain. + + * bindtextdom.c (bindtextdomain): Function now called + __bindtextdomain. + + * intl-compat.c: Initial revision. + + * Makefile.in (SOURCES): Add intl-compat.c. + (OBJECTS): We always compile the GNU gettext library functions. + OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o, + and intl-compat.o. + (GETTOBJS): Contains now only intl-compat.o. + + * libgettext.h: + Re-include protection matches dualistic character of libgettext.h. + For all functions in GNU gettext library define __ counter part. + + * finddomain.c (strchr): Define as index if not found in C library. + (_nl_find_domain): For relative paths paste / in between. + +Tue Jul 18 16:37:45 1995 Ulrich Drepper + + * loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h. + + * xopen-msg.sed: Fix bug with `msgstr ""' lines. + A little bit better comments. + +Tue Jul 18 01:18:27 1995 Ulrich Drepper + + * Makefile.in: + po-mode.el, makelinks, combine-sh are now found in ../misc. + + * po-mode.el, makelinks, combine-sh, elisp-comp: + Moved to ../misc/. + + * libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__. + +Sun Jul 16 22:33:02 1995 Ulrich Drepper + + * Makefile.in (INSTALL, INSTALL_DATA): New variables. + (install-data, uninstall): Install/uninstall .elc file. + + * po-mode.el (Installation comment): + Add .pox as possible extension of .po files. + +Sun Jul 16 13:23:27 1995 Ulrich Drepper + + * elisp-comp: Complete new version by Franc,ois: This does not + fail when not compiling in the source directory. + +Sun Jul 16 00:12:17 1995 Ulrich Drepper + + * Makefile.in (../po/cat-id-tbl.o): + Use $(MAKE) instead of make for recursive make. + + * Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh. + (install-exec): Add missing dummy goal. + (install-data, uninstall): @ in multi-line shell command at + beginning, not in front of echo. Reported by Eric Backus. + +Sat Jul 15 00:21:28 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): + Rename libgettext.perl to gettext.perl to fit in 14 chars + file systems. + + * gettext.perl: + Rename to gettext.perl to fit in 14 chars file systems. + +Thu Jul 13 23:17:20 1995 Ulrich Drepper + + * cat-compat.c: If !STDC_HEADERS try to include malloc.h. + +Thu Jul 13 20:55:02 1995 Ulrich Drepper + + * po2tbl.sed.in: Pretty printing. + + * linux-msg.sed, xopen-msg.sed: + Correct bugs with handling substitute flags in branches. + + * hash-string.h (hash_string): + Old K&R compilers don't under stand `unsigned char'. + + * gettext.h (nls_uint32): + Some old K&R compilers (eg HP) don't understand `unsigned int'. + + * cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes. + +Thu Jul 13 01:34:33 1995 Ulrich Drepper + + * Makefile.in (ELCFILES): New variable. + (DISTFILES): Add elisp-comp. + Add implicit rule for .el -> .elc compilation. + (install-data): install $ELCFILES + (clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp. + + * elisp-comp: Initial revision + +Wed Jul 12 16:14:52 1995 Ulrich Drepper + + * Makefile.in: + cat-id-tbl.c is now found in po/. This enables us to use an identical + intl/ directory in all packages. + + * dcgettext.c (dcgettext): hashing does not work for table size <= 2. + + * textdomain.c: fix typo (#if def -> #if defined) + +Tue Jul 11 18:44:43 1995 Ulrich Drepper + + * Makefile.in (stamp-cat-id): use top_srcdir to address source files + (DISTFILES,distclean): move tupdate.perl to src/ + + * po-to-tbl.sed.in: + add additional jump to clear change flag to recognize multiline strings + +Tue Jul 11 01:32:50 1995 Ulrich Drepper + + * textdomain.c: Protect inclusion of stdlib.h and string.h. + + * loadmsgcat.c: Protect inclusion of stdlib.h. + + * libgettext.h: Protect inclusion of locale.h. + Allow use in C++ programs. + Define NULL is not happened already. + + * Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of + po-to-tbl.sed. + (distclean): remove po-to-tbl.sed and tupdate.perl. + + * tupdate.perl.in: Substitute Perl path even in exec line. + Don't include entries without translation from old .po file. + +Tue Jul 4 00:41:51 1995 Ulrich Drepper + + * tupdate.perl.in: use "Updated: " in msgid "". + + * cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR). + Define getenv if !__STDC__. + + * bindtextdom.c: Protect stdlib.h and string.h inclusion. + Define free if !__STDC__. + + * finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. + Define free if !__STDC__. + + * cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. + +Mon Jul 3 23:56:30 1995 Ulrich Drepper + + * Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR. + Remove unneeded $(srcdir) from Makefile.in dependency. + + * makelinks: Add copyright and short description. + + * po-mode.el: Last version for 0.7. + + * tupdate.perl.in: Fix die message. + + * dcgettext.c: Protect include of string.h. + + * gettext.c: Protect include of stdlib.h and further tries to get NULL. + + * finddomain.c: Some corrections in includes. + + * Makefile.in (INCLUDES): Prune list correct path to Makefile.in. + + * po-to-tbl.sed: Adopt for new .po file format. + + * linux-msg.sed, xopen-msg.sed: Adopt for new .po file format. + +Sun Jul 2 23:55:03 1995 Ulrich Drepper + + * tupdate.perl.in: Complete rewrite for new .po file format. + +Sun Jul 2 02:06:50 1995 Ulrich Drepper + + * First official release. This directory contains all the code + needed to internationalize own packages. It provides functions + which allow to use the X/Open catgets function with an interface + like the Uniforum gettext function. For system which does not + have neither of those a complete implementation is provided. diff --git a/intl/Makefile.in b/intl/Makefile.in new file mode 100644 index 0000000..889ba23 --- /dev/null +++ b/intl/Makefile.in @@ -0,0 +1,312 @@ +# Makefile for directory with message catalog handling in GNU NLS Utilities. +# Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = .. +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +transform = @program_transform_name@ +libdir = @libdir@ +includedir = @includedir@ +datadir = @datadir@ +localedir = $(datadir)/locale +gettextsrcdir = $(datadir)/gettext/intl +aliaspath = $(localedir) +subdir = intl + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` + +l = @INTL_LIBTOOL_SUFFIX_PREFIX@ + +AR = ar +CC = @CC@ +LIBTOOL = @LIBTOOL@ +RANLIB = @RANLIB@ +YACC = @INTLBISON@ -y -d +YFLAGS = --name-prefix=__gettext + +DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \ +-DLIBDIR=\"$(libdir)\" @DEFS@ +CPPFLAGS = @CPPFLAGS@ +CFLAGS = @CFLAGS@ +LDFLAGS = @LDFLAGS@ + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +HEADERS = $(COMHDRS) libgnuintl.h libgettext.h loadinfo.h +COMHDRS = gettext.h gettextP.h hash-string.h +SOURCES = $(COMSRCS) intl-compat.c +COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \ +finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \ +explodename.c dcigettext.c dcngettext.c dngettext.c ngettext.c plural.y \ +localcharset.c +OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \ +finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \ +explodename.$lo dcigettext.$lo dcngettext.$lo dngettext.$lo ngettext.$lo \ +plural.$lo localcharset.$lo +GETTOBJS = intl-compat.$lo +DISTFILES.common = Makefile.in \ +config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES) +DISTFILES.generated = plural.c +DISTFILES.normal = VERSION +DISTFILES.gettext = libintl.glibc +DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c + +# Libtool's library version information for libintl. +# Before making a gettext release, the gettext maintainer must change this +# according to the libtool documentation, section "Library interface versions". +# Maintainers of other packages that include the intl directory must *not* +# change these values. +LTV_CURRENT=1 +LTV_REVISION=1 +LTV_AGE=0 + +.SUFFIXES: +.SUFFIXES: .c .y .o .lo .sin .sed +.c.o: + $(COMPILE) $< +.c.lo: + $(LIBTOOL) --mode=compile $(COMPILE) $< + +.y.c: + $(YACC) $(YFLAGS) --output $@ $< + rm -f $*.h + +.sin.sed: + sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > t-$@ + mv t-$@ $@ + +INCLUDES = -I.. -I. -I$(top_srcdir)/intl + +all: all-@USE_INCLUDED_LIBINTL@ +all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed +all-no: all-no-@BUILD_INCLUDED_LIBINTL@ +all-no-yes: libgnuintl.$la +all-no-no: + +libintl.a libgnuintl.a: $(OBJECTS) + rm -f $@ + $(AR) cru $@ $(OBJECTS) + $(RANLIB) $@ + +libintl.la libgnuintl.la: $(OBJECTS) + $(LIBTOOL) --mode=link \ + $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \ + $(OBJECTS) @LIBICONV@ \ + -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \ + -rpath $(libdir) \ + -no-undefined + +libintl.h: libgnuintl.h + cp $(srcdir)/libgnuintl.h libintl.h + +charset.alias: config.charset + $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ + mv t-$@ $@ + +check: all + +# This installation goal is only used in GNU gettext. Packages which +# only use the library should use install instead. + +# We must not install the libintl.h/libintl.a files if we are on a +# system which has the GNU gettext() function in its C library or in a +# separate library. +# If you want to use the one which comes with this version of the +# package, you have to use `configure --with-included-gettext'. +install: install-exec install-data +install-exec: all + if test "$(PACKAGE)" = "gettext" \ + && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ + $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \ + $(LIBTOOL) --mode=install \ + $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + $(mkinstalldirs) $(DESTDIR)$(libdir); \ + temp=$(DESTDIR)$(libdir)/t-charset.alias; \ + dest=$(DESTDIR)$(libdir)/charset.alias; \ + if test -f $(DESTDIR)$(libdir)/charset.alias; then \ + orig=$(DESTDIR)$(libdir)/charset.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + else \ + if test @GLIBC21@ = no; then \ + orig=charset.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + fi; \ + fi; \ + $(mkinstalldirs) $(DESTDIR)$(localedir); \ + test -f $(DESTDIR)$(localedir)/locale.alias \ + && orig=$(DESTDIR)$(localedir)/locale.alias \ + || orig=$(srcdir)/locale.alias; \ + temp=$(DESTDIR)$(localedir)/t-locale.alias; \ + dest=$(DESTDIR)$(localedir)/locale.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + else \ + : ; \ + fi +install-data: all + if test "$(PACKAGE)" = "gettext"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \ + $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \ + dists="$(DISTFILES.common)"; \ + for file in $$dists; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \ + dists="$(DISTFILES.generated)"; \ + for file in $$dists; do \ + if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ + $(INSTALL_DATA) $$dir/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + dists="$(DISTFILES.obsolete)"; \ + for file in $$dists; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + if test "$(PACKAGE)" = "gettext" \ + && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ + rm -f $(DESTDIR)$(includedir)/libintl.h; \ + $(LIBTOOL) --mode=uninstall \ + rm -f $(DESTDIR)$(libdir)/libintl.$la; \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + if test -f $(DESTDIR)$(libdir)/charset.alias; then \ + temp=$(DESTDIR)$(libdir)/t-charset.alias; \ + dest=$(DESTDIR)$(libdir)/charset.alias; \ + sed -f ref-del.sed $$dest > $$temp; \ + if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ + rm -f $$dest; \ + else \ + $(INSTALL_DATA) $$temp $$dest; \ + fi; \ + rm -f $$temp; \ + fi; \ + if test -f $(DESTDIR)$(localedir)/locale.alias; then \ + temp=$(DESTDIR)$(localedir)/t-locale.alias; \ + dest=$(DESTDIR)$(localedir)/locale.alias; \ + sed -f ref-del.sed $$dest > $$temp; \ + if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ + rm -f $$dest; \ + else \ + $(INSTALL_DATA) $$temp $$dest; \ + fi; \ + rm -f $$temp; \ + fi; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext"; then \ + for file in VERSION ChangeLog $(DISTFILES.common) $(DISTFILES.generated); do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +info dvi: + +$(OBJECTS): ../config.h libgnuintl.h +bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h +dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h + +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) + +id: ID + +ID: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) + + +mostlyclean: + rm -f *.a *.la *.o *.lo core core.* + rm -f libintl.h charset.alias ref-add.sed ref-del.sed + rm -f -r .libs _libs + +clean: mostlyclean + +distclean: clean + rm -f Makefile ID TAGS + if test "$(PACKAGE)" = gettext; then \ + rm -f ChangeLog.inst $(DISTFILES.normal); \ + else \ + : ; \ + fi + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + + +# GNU gettext needs not contain the file `VERSION' but contains some +# other files which should not be distributed in other packages. +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: Makefile + if test "$(PACKAGE)" = gettext; then \ + additional="$(DISTFILES.gettext)"; \ + else \ + additional="$(DISTFILES.normal)"; \ + fi; \ + $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \ + for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \ + if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ + ln $$dir/$$file $(distdir) 2> /dev/null \ + || cp -p $$dir/$$file $(distdir); \ + done + +Makefile: Makefile.in ../config.status + cd .. \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/intl/VERSION b/intl/VERSION new file mode 100644 index 0000000..268da64 --- /dev/null +++ b/intl/VERSION @@ -0,0 +1 @@ +GNU gettext library from gettext-0.10.38 diff --git a/intl/bindtextdom.c b/intl/bindtextdom.c new file mode 100644 index 0000000..7e5a74a --- /dev/null +++ b/intl/bindtextdom.c @@ -0,0 +1,368 @@ +/* Implementation of the bindtextdomain(3) function + Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif +#include "gettextP.h" + +#ifdef _LIBC +/* We have to handle multi-threaded applications. */ +# include +#else +/* Provide dummy implementation if this is outside glibc. */ +# define __libc_rwlock_define(CLASS, NAME) +# define __libc_rwlock_wrlock(NAME) +# define __libc_rwlock_unlock(NAME) +#endif + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_dirname _nl_default_dirname__ +# define _nl_domain_bindings _nl_domain_bindings__ +#endif + +/* Some compilers, like SunOS4 cc, don't have offsetof in . */ +#ifndef offsetof +# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) +#endif + +/* @@ end of prolog @@ */ + +/* Contains the default location of the message catalogs. */ +extern const char _nl_default_dirname[]; + +/* List with bindings of specific domains. */ +extern struct binding *_nl_domain_bindings; + +/* Lock variable to protect the global data in the gettext implementation. */ +__libc_rwlock_define (extern, _nl_state_lock) + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define BINDTEXTDOMAIN __bindtextdomain +# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define BINDTEXTDOMAIN bindtextdomain__ +# define BIND_TEXTDOMAIN_CODESET bind_textdomain_codeset__ +#endif + +/* Prototypes for local functions. */ +static void set_binding_values PARAMS ((const char *domainname, + const char **dirnamep, + const char **codesetp)); + +/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP + to be used for the DOMAINNAME message catalog. + If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not + modified, only the current value is returned. + If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither + modified nor returned. */ +static void +set_binding_values (domainname, dirnamep, codesetp) + const char *domainname; + const char **dirnamep; + const char **codesetp; +{ + struct binding *binding; + int modified; + + /* Some sanity checks. */ + if (domainname == NULL || domainname[0] == '\0') + { + if (dirnamep) + *dirnamep = NULL; + if (codesetp) + *codesetp = NULL; + return; + } + + __libc_rwlock_wrlock (_nl_state_lock); + + modified = 0; + + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (binding != NULL) + { + if (dirnamep) + { + const char *dirname = *dirnamep; + + if (dirname == NULL) + /* The current binding has be to returned. */ + *dirnamep = binding->dirname; + else + { + /* The domain is already bound. If the new value and the old + one are equal we simply do nothing. Otherwise replace the + old binding. */ + char *result = binding->dirname; + if (strcmp (dirname, result) != 0) + { + if (strcmp (dirname, _nl_default_dirname) == 0) + result = (char *) _nl_default_dirname; + else + { +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (dirname); +#else + size_t len = strlen (dirname) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result != NULL, 1)) + memcpy (result, dirname, len); +#endif + } + + if (__builtin_expect (result != NULL, 1)) + { + if (binding->dirname != _nl_default_dirname) + free (binding->dirname); + + binding->dirname = result; + modified = 1; + } + } + *dirnamep = result; + } + } + + if (codesetp) + { + const char *codeset = *codesetp; + + if (codeset == NULL) + /* The current binding has be to returned. */ + *codesetp = binding->codeset; + else + { + /* The domain is already bound. If the new value and the old + one are equal we simply do nothing. Otherwise replace the + old binding. */ + char *result = binding->codeset; + if (result == NULL || strcmp (codeset, result) != 0) + { +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (codeset); +#else + size_t len = strlen (codeset) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result != NULL, 1)) + memcpy (result, codeset, len); +#endif + + if (__builtin_expect (result != NULL, 1)) + { + if (binding->codeset != NULL) + free (binding->codeset); + + binding->codeset = result; + binding->codeset_cntr++; + modified = 1; + } + } + *codesetp = result; + } + } + } + else if ((dirnamep == NULL || *dirnamep == NULL) + && (codesetp == NULL || *codesetp == NULL)) + { + /* Simply return the default values. */ + if (dirnamep) + *dirnamep = _nl_default_dirname; + if (codesetp) + *codesetp = NULL; + } + else + { + /* We have to create a new binding. */ + size_t len = strlen (domainname) + 1; + struct binding *new_binding = + (struct binding *) malloc (offsetof (struct binding, domainname) + len); + + if (__builtin_expect (new_binding == NULL, 0)) + goto failed; + + memcpy (new_binding->domainname, domainname, len); + + if (dirnamep) + { + const char *dirname = *dirnamep; + + if (dirname == NULL) + /* The default value. */ + dirname = _nl_default_dirname; + else + { + if (strcmp (dirname, _nl_default_dirname) == 0) + dirname = _nl_default_dirname; + else + { + char *result; +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (dirname); + if (__builtin_expect (result == NULL, 0)) + goto failed_dirname; +#else + size_t len = strlen (dirname) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result == NULL, 0)) + goto failed_dirname; + memcpy (result, dirname, len); +#endif + dirname = result; + } + } + *dirnamep = dirname; + new_binding->dirname = (char *) dirname; + } + else + /* The default value. */ + new_binding->dirname = (char *) _nl_default_dirname; + + new_binding->codeset_cntr = 0; + + if (codesetp) + { + const char *codeset = *codesetp; + + if (codeset != NULL) + { + char *result; + +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (codeset); + if (__builtin_expect (result == NULL, 0)) + goto failed_codeset; +#else + size_t len = strlen (codeset) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result == NULL, 0)) + goto failed_codeset; + memcpy (result, codeset, len); +#endif + codeset = result; + new_binding->codeset_cntr++; + } + *codesetp = codeset; + new_binding->codeset = (char *) codeset; + } + else + new_binding->codeset = NULL; + + /* Now enqueue it. */ + if (_nl_domain_bindings == NULL + || strcmp (domainname, _nl_domain_bindings->domainname) < 0) + { + new_binding->next = _nl_domain_bindings; + _nl_domain_bindings = new_binding; + } + else + { + binding = _nl_domain_bindings; + while (binding->next != NULL + && strcmp (domainname, binding->next->domainname) > 0) + binding = binding->next; + + new_binding->next = binding->next; + binding->next = new_binding; + } + + modified = 1; + + /* Here we deal with memory allocation failures. */ + if (0) + { + failed_codeset: + if (new_binding->dirname != _nl_default_dirname) + free (new_binding->dirname); + failed_dirname: + free (new_binding); + failed: + if (dirnamep) + *dirnamep = NULL; + if (codesetp) + *codesetp = NULL; + } + } + + /* If we modified any binding, we flush the caches. */ + if (modified) + ++_nl_msg_cat_cntr; + + __libc_rwlock_unlock (_nl_state_lock); +} + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +char * +BINDTEXTDOMAIN (domainname, dirname) + const char *domainname; + const char *dirname; +{ + set_binding_values (domainname, &dirname, NULL); + return (char *) dirname; +} + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +char * +BIND_TEXTDOMAIN_CODESET (domainname, codeset) + const char *domainname; + const char *codeset; +{ + set_binding_values (domainname, NULL, &codeset); + return (char *) codeset; +} + +#ifdef _LIBC +/* Aliases for function names in GNU C Library. */ +weak_alias (__bindtextdomain, bindtextdomain); +weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset); +#endif diff --git a/intl/config.charset b/intl/config.charset new file mode 100755 index 0000000..d6f3695 --- /dev/null +++ b/intl/config.charset @@ -0,0 +1,438 @@ +#! /bin/sh +# Output a system dependent table of character encoding aliases. +# +# Copyright (C) 2000-2001 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. +# +# The table consists of lines of the form +# ALIAS CANONICAL +# +# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)". +# ALIAS is compared in a case sensitive way. +# +# CANONICAL is the GNU canonical name for this character encoding. +# It must be an encoding supported by libiconv. Support by GNU libc is +# also desirable. CANONICAL is case insensitive. Usually an upper case +# MIME charset name is preferred. +# The current list of GNU canonical charset names is as follows. +# +# name used by which systems a MIME name? +# ASCII, ANSI_X3.4-1968 glibc solaris freebsd +# ISO-8859-1 glibc aix hpux irix osf solaris freebsd yes +# ISO-8859-2 glibc aix hpux irix osf solaris freebsd yes +# ISO-8859-3 glibc yes +# ISO-8859-4 osf solaris freebsd yes +# ISO-8859-5 glibc aix hpux irix osf solaris freebsd yes +# ISO-8859-6 glibc aix hpux solaris yes +# ISO-8859-7 glibc aix hpux irix osf solaris yes +# ISO-8859-8 glibc aix hpux osf solaris yes +# ISO-8859-9 glibc aix hpux irix osf solaris yes +# ISO-8859-13 glibc +# ISO-8859-15 glibc aix osf solaris freebsd +# KOI8-R glibc solaris freebsd yes +# KOI8-U glibc freebsd yes +# CP437 dos +# CP775 dos +# CP850 aix osf dos +# CP852 dos +# CP855 dos +# CP856 aix +# CP857 dos +# CP861 dos +# CP862 dos +# CP864 dos +# CP865 dos +# CP866 freebsd dos +# CP869 dos +# CP874 win32 dos +# CP922 aix +# CP932 aix win32 dos +# CP943 aix +# CP949 osf win32 dos +# CP950 win32 dos +# CP1046 aix +# CP1124 aix +# CP1129 aix +# CP1250 win32 +# CP1251 glibc win32 +# CP1252 aix win32 +# CP1253 win32 +# CP1254 win32 +# CP1255 win32 +# CP1256 win32 +# CP1257 win32 +# GB2312 glibc aix hpux irix solaris freebsd yes +# EUC-JP glibc aix hpux irix osf solaris freebsd yes +# EUC-KR glibc aix hpux irix osf solaris freebsd yes +# EUC-TW glibc aix hpux irix osf solaris +# BIG5 glibc aix hpux osf solaris freebsd yes +# BIG5HKSCS glibc +# GBK aix osf win32 dos +# GB18030 glibc +# SJIS hpux osf solaris freebsd +# JOHAB glibc win32 +# TIS-620 glibc aix hpux osf solaris +# VISCII glibc yes +# HP-ROMAN8 hpux +# HP-ARABIC8 hpux +# HP-GREEK8 hpux +# HP-HEBREW8 hpux +# HP-TURKISH8 hpux +# HP-KANA8 hpux +# DEC-KANJI osf +# DEC-HANYU osf +# UTF-8 glibc aix hpux osf solaris yes +# +# Note: Names which are not marked as being a MIME name should not be used in +# Internet protocols for information interchange (mail, news, etc.). +# +# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications +# must understand both names and treat them as equivalent. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM + +host="$1" +os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'` +echo "# This file contains a table of character encoding aliases," +echo "# suitable for operating system '${os}'." +echo "# It was automatically generated from config.charset." +# List of references, updated during installation: +echo "# Packages using this file: " +case "$os" in + linux* | *-gnu*) + # With glibc-2.1 or newer, we don't need any canonicalization, + # because glibc has iconv and both glibc and libiconv support all + # GNU canonical names directly. Therefore, the Makefile does not + # need to install the alias file at all. + # The following applies only to glibc-2.0.x and older libcs. + echo "ISO_646.IRV:1983 ASCII" + ;; + aix*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-6 ISO-8859-6" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "IBM-850 CP850" + echo "IBM-856 CP856" + echo "IBM-921 ISO-8859-13" + echo "IBM-922 CP922" + echo "IBM-932 CP932" + echo "IBM-943 CP943" + echo "IBM-1046 CP1046" + echo "IBM-1124 CP1124" + echo "IBM-1129 CP1129" + echo "IBM-1252 CP1252" + echo "IBM-eucCN GB2312" + echo "IBM-eucJP EUC-JP" + echo "IBM-eucKR EUC-KR" + echo "IBM-eucTW EUC-TW" + echo "big5 BIG5" + echo "GBK GBK" + echo "TIS-620 TIS-620" + echo "UTF-8 UTF-8" + ;; + hpux*) + echo "iso88591 ISO-8859-1" + echo "iso88592 ISO-8859-2" + echo "iso88595 ISO-8859-5" + echo "iso88596 ISO-8859-6" + echo "iso88597 ISO-8859-7" + echo "iso88598 ISO-8859-8" + echo "iso88599 ISO-8859-9" + echo "iso885915 ISO-8859-15" + echo "roman8 HP-ROMAN8" + echo "arabic8 HP-ARABIC8" + echo "greek8 HP-GREEK8" + echo "hebrew8 HP-HEBREW8" + echo "turkish8 HP-TURKISH8" + echo "kana8 HP-KANA8" + echo "tis620 TIS-620" + echo "big5 BIG5" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "hp15CN GB2312" + #echo "ccdc ?" # what is this? + echo "SJIS SJIS" + echo "utf8 UTF-8" + ;; + irix*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-9 ISO-8859-9" + echo "eucCN GB2312" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + ;; + osf*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "cp850 CP850" + echo "big5 BIG5" + echo "dechanyu DEC-HANYU" + echo "dechanzi GB2312" + echo "deckanji DEC-KANJI" + echo "deckorean EUC-KR" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "GBK GBK" + echo "KSC5601 CP949" + echo "sdeckanji EUC-JP" + echo "SJIS SJIS" + echo "TACTIS TIS-620" + echo "UTF-8 UTF-8" + ;; + solaris*) + echo "646 ASCII" + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-6 ISO-8859-6" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "koi8-r KOI8-R" + echo "BIG5 BIG5" + echo "gb2312 GB2312" + echo "cns11643 EUC-TW" + echo "5601 EUC-KR" + echo "eucJP EUC-JP" + echo "PCK SJIS" + echo "TIS620.2533 TIS-620" + #echo "sun_eu_greek ?" # what is this? + echo "UTF-8 UTF-8" + ;; + freebsd*) + # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + echo "C ASCII" + echo "US-ASCII ASCII" + for l in la_LN lt_LN; do + echo "$l.ASCII ASCII" + done + for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \ + fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \ + lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do + echo "$l.ISO_8859-1 ISO-8859-1" + echo "$l.DIS_8859-15 ISO-8859-15" + done + for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do + echo "$l.ISO_8859-2 ISO-8859-2" + done + for l in la_LN lt_LT; do + echo "$l.ISO_8859-4 ISO-8859-4" + done + for l in ru_RU ru_SU; do + echo "$l.KOI8-R KOI8-R" + echo "$l.ISO_8859-5 ISO-8859-5" + echo "$l.CP866 CP866" + done + echo "uk_UA.KOI8-U KOI8-U" + echo "zh_TW.BIG5 BIG5" + echo "zh_TW.Big5 BIG5" + echo "zh_CN.EUC GB2312" + echo "ja_JP.EUC EUC-JP" + echo "ja_JP.SJIS SJIS" + echo "ja_JP.Shift_JIS SJIS" + echo "ko_KR.EUC EUC-KR" + ;; + beos*) + # BeOS has a single locale, and it has UTF-8 encoding. + echo "* UTF-8" + ;; + msdosdjgpp*) + # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + echo "#" + echo "# The encodings given here may not all be correct." + echo "# If you find that the encoding given for your language and" + echo "# country is not the one your DOS machine actually uses, just" + echo "# correct it in this file, and send a mail to" + echo "# Juan Manuel Guerrero " + echo "# and Bruno Haible ." + echo "#" + echo "C ASCII" + # ISO-8859-1 languages + echo "ca CP850" + echo "ca_ES CP850" + echo "da CP865" # not CP850 ?? + echo "da_DK CP865" # not CP850 ?? + echo "de CP850" + echo "de_AT CP850" + echo "de_CH CP850" + echo "de_DE CP850" + echo "en CP850" + echo "en_AU CP850" # not CP437 ?? + echo "en_CA CP850" + echo "en_GB CP850" + echo "en_NZ CP437" + echo "en_US CP437" + echo "en_ZA CP850" # not CP437 ?? + echo "es CP850" + echo "es_AR CP850" + echo "es_BO CP850" + echo "es_CL CP850" + echo "es_CO CP850" + echo "es_CR CP850" + echo "es_CU CP850" + echo "es_DO CP850" + echo "es_EC CP850" + echo "es_ES CP850" + echo "es_GT CP850" + echo "es_HN CP850" + echo "es_MX CP850" + echo "es_NI CP850" + echo "es_PA CP850" + echo "es_PY CP850" + echo "es_PE CP850" + echo "es_SV CP850" + echo "es_UY CP850" + echo "es_VE CP850" + echo "et CP850" + echo "et_EE CP850" + echo "eu CP850" + echo "eu_ES CP850" + echo "fi CP850" + echo "fi_FI CP850" + echo "fr CP850" + echo "fr_BE CP850" + echo "fr_CA CP850" + echo "fr_CH CP850" + echo "fr_FR CP850" + echo "ga CP850" + echo "ga_IE CP850" + echo "gd CP850" + echo "gd_GB CP850" + echo "gl CP850" + echo "gl_ES CP850" + echo "id CP850" # not CP437 ?? + echo "id_ID CP850" # not CP437 ?? + echo "is CP861" # not CP850 ?? + echo "is_IS CP861" # not CP850 ?? + echo "it CP850" + echo "it_CH CP850" + echo "it_IT CP850" + echo "lt CP775" + echo "lt_LT CP775" + echo "lv CP775" + echo "lv_LV CP775" + echo "nb CP865" # not CP850 ?? + echo "nb_NO CP865" # not CP850 ?? + echo "nl CP850" + echo "nl_BE CP850" + echo "nl_NL CP850" + echo "nn CP865" # not CP850 ?? + echo "nn_NO CP865" # not CP850 ?? + echo "no CP865" # not CP850 ?? + echo "no_NO CP865" # not CP850 ?? + echo "pt CP850" + echo "pt_BR CP850" + echo "pt_PT CP850" + echo "sv CP850" + echo "sv_SE CP850" + # ISO-8859-2 languages + echo "cs CP852" + echo "cs_CZ CP852" + echo "hr CP852" + echo "hr_HR CP852" + echo "hu CP852" + echo "hu_HU CP852" + echo "pl CP852" + echo "pl_PL CP852" + echo "ro CP852" + echo "ro_RO CP852" + echo "sk CP852" + echo "sk_SK CP852" + echo "sl CP852" + echo "sl_SI CP852" + echo "sq CP852" + echo "sq_AL CP852" + echo "sr CP852" # CP852 or CP866 or CP855 ?? + echo "sr_YU CP852" # CP852 or CP866 or CP855 ?? + # ISO-8859-3 languages + echo "mt CP850" + echo "mt_MT CP850" + # ISO-8859-5 languages + echo "be CP866" + echo "be_BE CP866" + echo "bg CP866" # not CP855 ?? + echo "bg_BG CP866" # not CP855 ?? + echo "mk CP866" # not CP855 ?? + echo "mk_MK CP866" # not CP855 ?? + echo "ru KOI8-R" # not CP866 ?? + echo "ru_RU KOI8-R" # not CP866 ?? + # ISO-8859-6 languages + echo "ar CP864" + echo "ar_AE CP864" + echo "ar_DZ CP864" + echo "ar_EG CP864" + echo "ar_IQ CP864" + echo "ar_IR CP864" + echo "ar_JO CP864" + echo "ar_KW CP864" + echo "ar_MA CP864" + echo "ar_OM CP864" + echo "ar_QA CP864" + echo "ar_SA CP864" + echo "ar_SY CP864" + # ISO-8859-7 languages + echo "el CP869" + echo "el_GR CP869" + # ISO-8859-8 languages + echo "he CP862" + echo "he_IL CP862" + # ISO-8859-9 languages + echo "tr CP857" + echo "tr_TR CP857" + # Japanese + echo "ja CP932" + echo "ja_JP CP932" + # Chinese + echo "zh_CN GBK" + echo "zh_TW CP950" # not CP938 ?? + # Korean + echo "kr CP949" # not CP934 ?? + echo "kr_KR CP949" # not CP934 ?? + # Thai + echo "th CP874" + echo "th_TH CP874" + # Other + echo "eo CP850" + echo "eo_EO CP850" + ;; +esac diff --git a/intl/dcgettext.c b/intl/dcgettext.c new file mode 100644 index 0000000..469e78d --- /dev/null +++ b/intl/dcgettext.c @@ -0,0 +1,57 @@ +/* Implementation of the dcgettext(3) function. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCGETTEXT __dcgettext +# define DCIGETTEXT __dcigettext +#else +# define DCGETTEXT dcgettext__ +# define DCIGETTEXT dcigettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCGETTEXT (domainname, msgid, category) + const char *domainname; + const char *msgid; + int category; +{ + return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dcgettext, dcgettext); +#endif diff --git a/intl/dcigettext.c b/intl/dcigettext.c new file mode 100644 index 0000000..8456550 --- /dev/null +++ b/intl/dcigettext.c @@ -0,0 +1,1257 @@ +/* Implementation of the internal dcigettext function. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +#endif + +#include +#ifndef errno +extern int errno; +#endif +#ifndef __set_errno +# define __set_errno(val) errno = (val) +#endif + +#include +#include + +#include +#if !HAVE_STRCHR && !defined _LIBC +# ifndef strchr +# define strchr index +# endif +#endif + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include + +#if defined HAVE_SYS_PARAM_H || defined _LIBC +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif +#include "hash-string.h" + +/* Thread safetyness. */ +#ifdef _LIBC +# include +#else +/* Provide dummy implementation if this is outside glibc. */ +# define __libc_lock_define_initialized(CLASS, NAME) +# define __libc_lock_lock(NAME) +# define __libc_lock_unlock(NAME) +# define __libc_rwlock_define_initialized(CLASS, NAME) +# define __libc_rwlock_rdlock(NAME) +# define __libc_rwlock_unlock(NAME) +#endif + +/* Alignment of types. */ +#if defined __GNUC__ && __GNUC__ >= 2 +# define alignof(TYPE) __alignof__ (TYPE) +#else +# define alignof(TYPE) \ + ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2) +#endif + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_default_domain _nl_default_default_domain__ +# define _nl_current_default_domain _nl_current_default_domain__ +# define _nl_default_dirname _nl_default_dirname__ +# define _nl_domain_bindings _nl_domain_bindings__ +#endif + +/* Some compilers, like SunOS4 cc, don't have offsetof in . */ +#ifndef offsetof +# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define getcwd __getcwd +# ifndef stpcpy +# define stpcpy __stpcpy +# endif +# define tfind __tfind +#else +# if !defined HAVE_GETCWD +char *getwd (); +# define getcwd(buf, max) getwd (buf) +# else +char *getcwd (); +# endif +# ifndef HAVE_STPCPY +static char *stpcpy PARAMS ((char *dest, const char *src)); +# endif +# ifndef HAVE_MEMPCPY +static void *mempcpy PARAMS ((void *dest, const void *src, size_t n)); +# endif +#endif + +/* Amount to increase buffer size by in each try. */ +#define PATH_INCR 32 + +/* The following is from pathmax.h. */ +/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define + PATH_MAX but might cause redefinition warnings when sys/param.h is + later included (as on MORE/BSD 4.3). */ +#if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__) +# include +#endif + +#ifndef _POSIX_PATH_MAX +# define _POSIX_PATH_MAX 255 +#endif + +#if !defined PATH_MAX && defined _PC_PATH_MAX +# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX)) +#endif + +/* Don't include sys/param.h if it already has been. */ +#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN +# include +#endif + +#if !defined PATH_MAX && defined MAXPATHLEN +# define PATH_MAX MAXPATHLEN +#endif + +#ifndef PATH_MAX +# define PATH_MAX _POSIX_PATH_MAX +#endif + +/* Pathname support. + ISSLASH(C) tests whether C is a directory separator character. + IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, + it may be concatenated to a directory pathname. + IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. + */ +#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ + /* Win32, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +# define HAS_DEVICE(P) \ + ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ + && (P)[1] == ':') +# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) +# define IS_PATH_WITH_DIR(P) \ + (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) +# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) +#endif + +/* XPG3 defines the result of `setlocale (category, NULL)' as: + ``Directs `setlocale()' to query `category' and return the current + setting of `local'.'' + However it does not specify the exact format. Neither do SUSV2 and + ISO C 99. So we can use this feature only on selected systems (e.g. + those using GNU C Library). */ +#if defined _LIBC || (defined __GNU_LIBRARY__ && __GNU_LIBRARY__ >= 2) +# define HAVE_LOCALE_NULL +#endif + +/* This is the type used for the search tree where known translations + are stored. */ +struct known_translation_t +{ + /* Domain in which to search. */ + char *domainname; + + /* The category. */ + int category; + + /* State of the catalog counter at the point the string was found. */ + int counter; + + /* Catalog where the string was found. */ + struct loaded_l10nfile *domain; + + /* And finally the translation. */ + const char *translation; + size_t translation_length; + + /* Pointer to the string in question. */ + char msgid[ZERO]; +}; + +/* Root of the search tree with known translations. We can use this + only if the system provides the `tsearch' function family. */ +#if defined HAVE_TSEARCH || defined _LIBC +# include + +static void *root; + +# ifdef _LIBC +# define tsearch __tsearch +# endif + +/* Function to compare two entries in the table of known translations. */ +static int transcmp PARAMS ((const void *p1, const void *p2)); +static int +transcmp (p1, p2) + const void *p1; + const void *p2; +{ + const struct known_translation_t *s1; + const struct known_translation_t *s2; + int result; + + s1 = (const struct known_translation_t *) p1; + s2 = (const struct known_translation_t *) p2; + + result = strcmp (s1->msgid, s2->msgid); + if (result == 0) + { + result = strcmp (s1->domainname, s2->domainname); + if (result == 0) + /* We compare the category last (though this is the cheapest + operation) since it is hopefully always the same (namely + LC_MESSAGES). */ + result = s1->category - s2->category; + } + + return result; +} +#endif + +/* Name of the default domain used for gettext(3) prior any call to + textdomain(3). The default value for this is "messages". */ +const char _nl_default_default_domain[] = "messages"; + +/* Value used as the default domain for gettext(3). */ +const char *_nl_current_default_domain = _nl_default_default_domain; + +/* Contains the default location of the message catalogs. */ +const char _nl_default_dirname[] = LOCALEDIR; + +/* List with bindings of specific domains created by bindtextdomain() + calls. */ +struct binding *_nl_domain_bindings; + +/* Prototypes for local functions. */ +static char *plural_lookup PARAMS ((struct loaded_l10nfile *domain, + unsigned long int n, + const char *translation, + size_t translation_len)) + internal_function; +static unsigned long int plural_eval PARAMS ((struct expression *pexp, + unsigned long int n)) + internal_function; +static const char *category_to_name PARAMS ((int category)) internal_function; +static const char *guess_category_value PARAMS ((int category, + const char *categoryname)) + internal_function; + + +/* For those loosing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +/* Nothing has to be done. */ +# define ADD_BLOCK(list, address) /* nothing */ +# define FREE_BLOCKS(list) /* nothing */ +#else +struct block_list +{ + void *address; + struct block_list *next; +}; +# define ADD_BLOCK(list, addr) \ + do { \ + struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ + /* If we cannot get a free block we cannot add the new element to \ + the list. */ \ + if (newp != NULL) { \ + newp->address = (addr); \ + newp->next = (list); \ + (list) = newp; \ + } \ + } while (0) +# define FREE_BLOCKS(list) \ + do { \ + while (list != NULL) { \ + struct block_list *old = list; \ + list = list->next; \ + free (old); \ + } \ + } while (0) +# undef alloca +# define alloca(size) (malloc (size)) +#endif /* have alloca */ + + +#ifdef _LIBC +/* List of blocks allocated for translations. */ +typedef struct transmem_list +{ + struct transmem_list *next; + char data[ZERO]; +} transmem_block_t; +static struct transmem_list *transmem_list; +#else +typedef unsigned char transmem_block_t; +#endif + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCIGETTEXT __dcigettext +#else +# define DCIGETTEXT dcigettext__ +#endif + +/* Lock variable to protect the global data in the gettext implementation. */ +#ifdef _LIBC +__libc_rwlock_define_initialized (, _nl_state_lock) +#endif + +/* Checking whether the binaries runs SUID must be done and glibc provides + easier methods therefore we make a difference here. */ +#ifdef _LIBC +# define ENABLE_SECURE __libc_enable_secure +# define DETERMINE_SECURE +#else +# ifndef HAVE_GETUID +# define getuid() 0 +# endif +# ifndef HAVE_GETGID +# define getgid() 0 +# endif +# ifndef HAVE_GETEUID +# define geteuid() getuid() +# endif +# ifndef HAVE_GETEGID +# define getegid() getgid() +# endif +static int enable_secure; +# define ENABLE_SECURE (enable_secure == 1) +# define DETERMINE_SECURE \ + if (enable_secure == 0) \ + { \ + if (getuid () != geteuid () || getgid () != getegid ()) \ + enable_secure = 1; \ + else \ + enable_secure = -1; \ + } +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current + CATEGORY locale and, if PLURAL is nonzero, search over string + depending on the plural form determined by N. */ +char * +DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category) + const char *domainname; + const char *msgid1; + const char *msgid2; + int plural; + unsigned long int n; + int category; +{ +#ifndef HAVE_ALLOCA + struct block_list *block_list = NULL; +#endif + struct loaded_l10nfile *domain; + struct binding *binding; + const char *categoryname; + const char *categoryvalue; + char *dirname, *xdomainname; + char *single_locale; + char *retval; + size_t retlen; + int saved_errno; +#if defined HAVE_TSEARCH || defined _LIBC + struct known_translation_t *search; + struct known_translation_t **foundp = NULL; + size_t msgid_len; +#endif + size_t domainname_len; + + /* If no real MSGID is given return NULL. */ + if (msgid1 == NULL) + return NULL; + + __libc_rwlock_rdlock (_nl_state_lock); + + /* If DOMAINNAME is NULL, we are interested in the default domain. If + CATEGORY is not LC_MESSAGES this might not make much sense but the + definition left this undefined. */ + if (domainname == NULL) + domainname = _nl_current_default_domain; + +#if defined HAVE_TSEARCH || defined _LIBC + msgid_len = strlen (msgid1) + 1; + + /* Try to find the translation among those which we found at + some time. */ + search = (struct known_translation_t *) + alloca (offsetof (struct known_translation_t, msgid) + msgid_len); + memcpy (search->msgid, msgid1, msgid_len); + search->domainname = (char *) domainname; + search->category = category; + + foundp = (struct known_translation_t **) tfind (search, &root, transcmp); + if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr) + { + /* Now deal with plural. */ + if (plural) + retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation, + (*foundp)->translation_length); + else + retval = (char *) (*foundp)->translation; + + __libc_rwlock_unlock (_nl_state_lock); + return retval; + } +#endif + + /* Preserve the `errno' value. */ + saved_errno = errno; + + /* See whether this is a SUID binary or not. */ + DETERMINE_SECURE; + + /* First find matching binding. */ + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (binding == NULL) + dirname = (char *) _nl_default_dirname; + else if (IS_ABSOLUTE_PATH (binding->dirname)) + dirname = binding->dirname; + else + { + /* We have a relative path. Make it absolute now. */ + size_t dirname_len = strlen (binding->dirname) + 1; + size_t path_max; + char *ret; + + path_max = (unsigned int) PATH_MAX; + path_max += 2; /* The getcwd docs say to do this. */ + + for (;;) + { + dirname = (char *) alloca (path_max + dirname_len); + ADD_BLOCK (block_list, dirname); + + __set_errno (0); + ret = getcwd (dirname, path_max); + if (ret != NULL || errno != ERANGE) + break; + + path_max += path_max / 2; + path_max += PATH_INCR; + } + + if (ret == NULL) + { + /* We cannot get the current working directory. Don't signal an + error but simply return the default string. */ + FREE_BLOCKS (block_list); + __set_errno (saved_errno); + return (plural == 0 + ? (char *) msgid1 + /* Use the Germanic plural rule. */ + : n == 1 ? (char *) msgid1 : (char *) msgid2); + } + + stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname); + } + + /* Now determine the symbolic name of CATEGORY and its value. */ + categoryname = category_to_name (category); + categoryvalue = guess_category_value (category, categoryname); + + domainname_len = strlen (domainname); + xdomainname = (char *) alloca (strlen (categoryname) + + domainname_len + 5); + ADD_BLOCK (block_list, xdomainname); + + stpcpy (mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), + domainname, domainname_len), + ".mo"); + + /* Creating working area. */ + single_locale = (char *) alloca (strlen (categoryvalue) + 1); + ADD_BLOCK (block_list, single_locale); + + + /* Search for the given string. This is a loop because we perhaps + got an ordered list of languages to consider for the translation. */ + while (1) + { + /* Make CATEGORYVALUE point to the next element of the list. */ + while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') + ++categoryvalue; + if (categoryvalue[0] == '\0') + { + /* The whole contents of CATEGORYVALUE has been searched but + no valid entry has been found. We solve this situation + by implicitly appending a "C" entry, i.e. no translation + will take place. */ + single_locale[0] = 'C'; + single_locale[1] = '\0'; + } + else + { + char *cp = single_locale; + while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') + *cp++ = *categoryvalue++; + *cp = '\0'; + + /* When this is a SUID binary we must not allow accessing files + outside the dedicated directories. */ + if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale)) + /* Ingore this entry. */ + continue; + } + + /* If the current locale value is C (or POSIX) we don't load a + domain. Return the MSGID. */ + if (strcmp (single_locale, "C") == 0 + || strcmp (single_locale, "POSIX") == 0) + { + FREE_BLOCKS (block_list); + __libc_rwlock_unlock (_nl_state_lock); + __set_errno (saved_errno); + return (plural == 0 + ? (char *) msgid1 + /* Use the Germanic plural rule. */ + : n == 1 ? (char *) msgid1 : (char *) msgid2); + } + + + /* Find structure describing the message catalog matching the + DOMAINNAME and CATEGORY. */ + domain = _nl_find_domain (dirname, single_locale, xdomainname, binding); + + if (domain != NULL) + { + retval = _nl_find_msg (domain, binding, msgid1, &retlen); + + if (retval == NULL) + { + int cnt; + + for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) + { + retval = _nl_find_msg (domain->successor[cnt], binding, + msgid1, &retlen); + + if (retval != NULL) + { + domain = domain->successor[cnt]; + break; + } + } + } + + if (retval != NULL) + { + /* Found the translation of MSGID1 in domain DOMAIN: + starting at RETVAL, RETLEN bytes. */ + FREE_BLOCKS (block_list); + __set_errno (saved_errno); +#if defined HAVE_TSEARCH || defined _LIBC + if (foundp == NULL) + { + /* Create a new entry and add it to the search tree. */ + struct known_translation_t *newp; + + newp = (struct known_translation_t *) + malloc (offsetof (struct known_translation_t, msgid) + + msgid_len + domainname_len + 1); + if (newp != NULL) + { + newp->domainname = + mempcpy (newp->msgid, msgid1, msgid_len); + memcpy (newp->domainname, domainname, domainname_len + 1); + newp->category = category; + newp->counter = _nl_msg_cat_cntr; + newp->domain = domain; + newp->translation = retval; + newp->translation_length = retlen; + + /* Insert the entry in the search tree. */ + foundp = (struct known_translation_t **) + tsearch (newp, &root, transcmp); + if (foundp == NULL + || __builtin_expect (*foundp != newp, 0)) + /* The insert failed. */ + free (newp); + } + } + else + { + /* We can update the existing entry. */ + (*foundp)->counter = _nl_msg_cat_cntr; + (*foundp)->domain = domain; + (*foundp)->translation = retval; + (*foundp)->translation_length = retlen; + } +#endif + /* Now deal with plural. */ + if (plural) + retval = plural_lookup (domain, n, retval, retlen); + + __libc_rwlock_unlock (_nl_state_lock); + return retval; + } + } + } + /* NOTREACHED */ +} + + +char * +internal_function +_nl_find_msg (domain_file, domainbinding, msgid, lengthp) + struct loaded_l10nfile *domain_file; + struct binding *domainbinding; + const char *msgid; + size_t *lengthp; +{ + struct loaded_domain *domain; + size_t act; + char *result; + size_t resultlen; + + if (domain_file->decided == 0) + _nl_load_domain (domain_file, domainbinding); + + if (domain_file->data == NULL) + return NULL; + + domain = (struct loaded_domain *) domain_file->data; + + /* Locate the MSGID and its translation. */ + if (domain->hash_size > 2 && domain->hash_tab != NULL) + { + /* Use the hashing table. */ + nls_uint32 len = strlen (msgid); + nls_uint32 hash_val = hash_string (msgid); + nls_uint32 idx = hash_val % domain->hash_size; + nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); + + while (1) + { + nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]); + + if (nstr == 0) + /* Hash table entry is empty. */ + return NULL; + + /* Compare msgid with the original string at index nstr-1. + We compare the lengths with >=, not ==, because plural entries + are represented by strings with an embedded NUL. */ + if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) >= len + && (strcmp (msgid, + domain->data + W (domain->must_swap, + domain->orig_tab[nstr - 1].offset)) + == 0)) + { + act = nstr - 1; + goto found; + } + + if (idx >= domain->hash_size - incr) + idx -= domain->hash_size - incr; + else + idx += incr; + } + /* NOTREACHED */ + } + else + { + /* Try the default method: binary search in the sorted array of + messages. */ + size_t top, bottom; + + bottom = 0; + top = domain->nstrings; + while (bottom < top) + { + int cmp_val; + + act = (bottom + top) / 2; + cmp_val = strcmp (msgid, (domain->data + + W (domain->must_swap, + domain->orig_tab[act].offset))); + if (cmp_val < 0) + top = act; + else if (cmp_val > 0) + bottom = act + 1; + else + goto found; + } + /* No translation was found. */ + return NULL; + } + + found: + /* The translation was found at index ACT. If we have to convert the + string to use a different character set, this is the time. */ + result = ((char *) domain->data + + W (domain->must_swap, domain->trans_tab[act].offset)); + resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1; + +#if defined _LIBC || HAVE_ICONV + if (domain->codeset_cntr + != (domainbinding != NULL ? domainbinding->codeset_cntr : 0)) + { + /* The domain's codeset has changed through bind_textdomain_codeset() + since the message catalog was initialized or last accessed. We + have to reinitialize the converter. */ + _nl_free_domain_conv (domain); + _nl_init_domain_conv (domain_file, domain, domainbinding); + } + + if ( +# ifdef _LIBC + domain->conv != (__gconv_t) -1 +# else +# if HAVE_ICONV + domain->conv != (iconv_t) -1 +# endif +# endif + ) + { + /* We are supposed to do a conversion. First allocate an + appropriate table with the same structure as the table + of translations in the file, where we can put the pointers + to the converted strings in. + There is a slight complication with plural entries. They + are represented by consecutive NUL terminated strings. We + handle this case by converting RESULTLEN bytes, including + NULs. */ + + if (domain->conv_tab == NULL + && ((domain->conv_tab = (char **) calloc (domain->nstrings, + sizeof (char *))) + == NULL)) + /* Mark that we didn't succeed allocating a table. */ + domain->conv_tab = (char **) -1; + + if (__builtin_expect (domain->conv_tab == (char **) -1, 0)) + /* Nothing we can do, no more memory. */ + goto converted; + + if (domain->conv_tab[act] == NULL) + { + /* We haven't used this string so far, so it is not + translated yet. Do this now. */ + /* We use a bit more efficient memory handling. + We allocate always larger blocks which get used over + time. This is faster than many small allocations. */ + __libc_lock_define_initialized (static, lock) +# define INITIAL_BLOCK_SIZE 4080 + static unsigned char *freemem; + static size_t freemem_size; + + const unsigned char *inbuf; + unsigned char *outbuf; + int malloc_count; +# ifndef _LIBC + transmem_block_t *transmem_list = NULL; +# endif + + __libc_lock_lock (lock); + + inbuf = (const unsigned char *) result; + outbuf = freemem + sizeof (size_t); + + malloc_count = 0; + while (1) + { + transmem_block_t *newmem; +# ifdef _LIBC + size_t non_reversible; + int res; + + if (freemem_size < sizeof (size_t)) + goto resize_freemem; + + res = __gconv (domain->conv, + &inbuf, inbuf + resultlen, + &outbuf, + outbuf + freemem_size - sizeof (size_t), + &non_reversible); + + if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT) + break; + + if (res != __GCONV_FULL_OUTPUT) + { + __libc_lock_unlock (lock); + goto converted; + } + + inbuf = result; +# else +# if HAVE_ICONV + const char *inptr = (const char *) inbuf; + size_t inleft = resultlen; + char *outptr = (char *) outbuf; + size_t outleft; + + if (freemem_size < sizeof (size_t)) + goto resize_freemem; + + outleft = freemem_size - sizeof (size_t); + if (iconv (domain->conv, + (ICONV_CONST char **) &inptr, &inleft, + &outptr, &outleft) + != (size_t) (-1)) + { + outbuf = (unsigned char *) outptr; + break; + } + if (errno != E2BIG) + { + __libc_lock_unlock (lock); + goto converted; + } +# endif +# endif + + resize_freemem: + /* We must allocate a new buffer or resize the old one. */ + if (malloc_count > 0) + { + ++malloc_count; + freemem_size = malloc_count * INITIAL_BLOCK_SIZE; + newmem = (transmem_block_t *) realloc (transmem_list, + freemem_size); +# ifdef _LIBC + if (newmem != NULL) + transmem_list = transmem_list->next; + else + { + struct transmem_list *old = transmem_list; + + transmem_list = transmem_list->next; + free (old); + } +# endif + } + else + { + malloc_count = 1; + freemem_size = INITIAL_BLOCK_SIZE; + newmem = (transmem_block_t *) malloc (freemem_size); + } + if (__builtin_expect (newmem == NULL, 0)) + { + freemem = NULL; + freemem_size = 0; + __libc_lock_unlock (lock); + goto converted; + } + +# ifdef _LIBC + /* Add the block to the list of blocks we have to free + at some point. */ + newmem->next = transmem_list; + transmem_list = newmem; + + freemem = newmem->data; + freemem_size -= offsetof (struct transmem_list, data); +# else + transmem_list = newmem; + freemem = newmem; +# endif + + outbuf = freemem + sizeof (size_t); + } + + /* We have now in our buffer a converted string. Put this + into the table of conversions. */ + *(size_t *) freemem = outbuf - freemem - sizeof (size_t); + domain->conv_tab[act] = (char *) freemem; + /* Shrink freemem, but keep it aligned. */ + freemem_size -= outbuf - freemem; + freemem = outbuf; + freemem += freemem_size & (alignof (size_t) - 1); + freemem_size = freemem_size & ~ (alignof (size_t) - 1); + + __libc_lock_unlock (lock); + } + + /* Now domain->conv_tab[act] contains the translation of all + the plural variants. */ + result = domain->conv_tab[act] + sizeof (size_t); + resultlen = *(size_t *) domain->conv_tab[act]; + } + + converted: + /* The result string is converted. */ + +#endif /* _LIBC || HAVE_ICONV */ + + *lengthp = resultlen; + return result; +} + + +/* Look up a plural variant. */ +static char * +internal_function +plural_lookup (domain, n, translation, translation_len) + struct loaded_l10nfile *domain; + unsigned long int n; + const char *translation; + size_t translation_len; +{ + struct loaded_domain *domaindata = (struct loaded_domain *) domain->data; + unsigned long int index; + const char *p; + + index = plural_eval (domaindata->plural, n); + if (index >= domaindata->nplurals) + /* This should never happen. It means the plural expression and the + given maximum value do not match. */ + index = 0; + + /* Skip INDEX strings at TRANSLATION. */ + p = translation; + while (index-- > 0) + { +#ifdef _LIBC + p = __rawmemchr (p, '\0'); +#else + p = strchr (p, '\0'); +#endif + /* And skip over the NUL byte. */ + p++; + + if (p >= translation + translation_len) + /* This should never happen. It means the plural expression + evaluated to a value larger than the number of variants + available for MSGID1. */ + return (char *) translation; + } + return (char *) p; +} + + +/* Function to evaluate the plural expression and return an index value. */ +static unsigned long int +internal_function +plural_eval (pexp, n) + struct expression *pexp; + unsigned long int n; +{ + switch (pexp->nargs) + { + case 0: + switch (pexp->operation) + { + case var: + return n; + case num: + return pexp->val.num; + default: + break; + } + /* NOTREACHED */ + break; + case 1: + { + /* pexp->operation must be lnot. */ + unsigned long int arg = plural_eval (pexp->val.args[0], n); + return ! arg; + } + case 2: + { + unsigned long int leftarg = plural_eval (pexp->val.args[0], n); + if (pexp->operation == lor) + return leftarg || plural_eval (pexp->val.args[1], n); + else if (pexp->operation == land) + return leftarg && plural_eval (pexp->val.args[1], n); + else + { + unsigned long int rightarg = plural_eval (pexp->val.args[1], n); + + switch (pexp->operation) + { + case mult: + return leftarg * rightarg; + case divide: + return leftarg / rightarg; + case module: + return leftarg % rightarg; + case plus: + return leftarg + rightarg; + case minus: + return leftarg - rightarg; + case less_than: + return leftarg < rightarg; + case greater_than: + return leftarg > rightarg; + case less_or_equal: + return leftarg <= rightarg; + case greater_or_equal: + return leftarg >= rightarg; + case equal: + return leftarg == rightarg; + case not_equal: + return leftarg != rightarg; + default: + break; + } + } + /* NOTREACHED */ + break; + } + case 3: + { + /* pexp->operation must be qmop. */ + unsigned long int boolarg = plural_eval (pexp->val.args[0], n); + return plural_eval (pexp->val.args[boolarg ? 1 : 2], n); + } + } + /* NOTREACHED */ + return 0; +} + + +/* Return string representation of locale CATEGORY. */ +static const char * +internal_function +category_to_name (category) + int category; +{ + const char *retval; + + switch (category) + { +#ifdef LC_COLLATE + case LC_COLLATE: + retval = "LC_COLLATE"; + break; +#endif +#ifdef LC_CTYPE + case LC_CTYPE: + retval = "LC_CTYPE"; + break; +#endif +#ifdef LC_MONETARY + case LC_MONETARY: + retval = "LC_MONETARY"; + break; +#endif +#ifdef LC_NUMERIC + case LC_NUMERIC: + retval = "LC_NUMERIC"; + break; +#endif +#ifdef LC_TIME + case LC_TIME: + retval = "LC_TIME"; + break; +#endif +#ifdef LC_MESSAGES + case LC_MESSAGES: + retval = "LC_MESSAGES"; + break; +#endif +#ifdef LC_RESPONSE + case LC_RESPONSE: + retval = "LC_RESPONSE"; + break; +#endif +#ifdef LC_ALL + case LC_ALL: + /* This might not make sense but is perhaps better than any other + value. */ + retval = "LC_ALL"; + break; +#endif + default: + /* If you have a better idea for a default value let me know. */ + retval = "LC_XXX"; + } + + return retval; +} + +/* Guess value of current locale from value of the environment variables. */ +static const char * +internal_function +guess_category_value (category, categoryname) + int category; + const char *categoryname; +{ + const char *language; + const char *retval; + + /* The highest priority value is the `LANGUAGE' environment + variable. But we don't use the value if the currently selected + locale is the C locale. This is a GNU extension. */ + language = getenv ("LANGUAGE"); + if (language != NULL && language[0] == '\0') + language = NULL; + + /* We have to proceed with the POSIX methods of looking to `LC_ALL', + `LC_xxx', and `LANG'. On some systems this can be done by the + `setlocale' function itself. */ +#if defined _LIBC || (defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL) + retval = setlocale (category, NULL); +#else + /* Setting of LC_ALL overwrites all other. */ + retval = getenv ("LC_ALL"); + if (retval == NULL || retval[0] == '\0') + { + /* Next comes the name of the desired category. */ + retval = getenv (categoryname); + if (retval == NULL || retval[0] == '\0') + { + /* Last possibility is the LANG environment variable. */ + retval = getenv ("LANG"); + if (retval == NULL || retval[0] == '\0') + /* We use C as the default domain. POSIX says this is + implementation defined. */ + return "C"; + } + } +#endif + + return language != NULL && strcmp (retval, "C") != 0 ? language : retval; +} + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (dest, src) + char *dest; + const char *src; +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif + +#if !_LIBC && !HAVE_MEMPCPY +static void * +mempcpy (dest, src, n) + void *dest; + const void *src; + size_t n; +{ + return (void *) ((char *) memcpy (dest, src, n) + n); +} +#endif + + +#ifdef _LIBC +/* If we want to free all resources we have to do some work at + program's end. */ +static void __attribute__ ((unused)) +free_mem (void) +{ + void *old; + + while (_nl_domain_bindings != NULL) + { + struct binding *oldp = _nl_domain_bindings; + _nl_domain_bindings = _nl_domain_bindings->next; + if (oldp->dirname != _nl_default_dirname) + /* Yes, this is a pointer comparison. */ + free (oldp->dirname); + free (oldp->codeset); + free (oldp); + } + + if (_nl_current_default_domain != _nl_default_default_domain) + /* Yes, again a pointer comparison. */ + free ((char *) _nl_current_default_domain); + + /* Remove the search tree with the known translations. */ + __tdestroy (root, free); + root = NULL; + + while (transmem_list != NULL) + { + old = transmem_list; + transmem_list = transmem_list->next; + free (old); + } +} + +text_set_element (__libc_subfreeres, free_mem); +#endif diff --git a/intl/dcngettext.c b/intl/dcngettext.c new file mode 100644 index 0000000..e5da257 --- /dev/null +++ b/intl/dcngettext.c @@ -0,0 +1,59 @@ +/* Implementation of the dcngettext(3) function. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCNGETTEXT __dcngettext +# define DCIGETTEXT __dcigettext +#else +# define DCNGETTEXT dcngettext__ +# define DCIGETTEXT dcigettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCNGETTEXT (domainname, msgid1, msgid2, n, category) + const char *domainname; + const char *msgid1; + const char *msgid2; + unsigned long int n; + int category; +{ + return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dcngettext, dcngettext); +#endif diff --git a/intl/dgettext.c b/intl/dgettext.c new file mode 100644 index 0000000..c513041 --- /dev/null +++ b/intl/dgettext.c @@ -0,0 +1,58 @@ +/* Implementation of the dgettext(3) function. + Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DGETTEXT __dgettext +# define DCGETTEXT __dcgettext +#else +# define DGETTEXT dgettext__ +# define DCGETTEXT dcgettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale. */ +char * +DGETTEXT (domainname, msgid) + const char *domainname; + const char *msgid; +{ + return DCGETTEXT (domainname, msgid, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dgettext, dgettext); +#endif diff --git a/intl/dngettext.c b/intl/dngettext.c new file mode 100644 index 0000000..79aaa9a --- /dev/null +++ b/intl/dngettext.c @@ -0,0 +1,60 @@ +/* Implementation of the dngettext(3) function. + Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DNGETTEXT __dngettext +# define DCNGETTEXT __dcngettext +#else +# define DNGETTEXT dngettext__ +# define DCNGETTEXT dcngettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale and skip message according to the plural form. */ +char * +DNGETTEXT (domainname, msgid1, msgid2, n) + const char *domainname; + const char *msgid1; + const char *msgid2; + unsigned long int n; +{ + return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dngettext, dngettext); +#endif diff --git a/intl/explodename.c b/intl/explodename.c new file mode 100644 index 0000000..c4ddcc4 --- /dev/null +++ b/intl/explodename.c @@ -0,0 +1,191 @@ +/* Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +char * +_nl_find_language (name) + const char *name; +{ + while (name[0] != '\0' && name[0] != '_' && name[0] != '@' + && name[0] != '+' && name[0] != ',') + ++name; + + return (char *) name; +} + + +int +_nl_explode_name (name, language, modifier, territory, codeset, + normalized_codeset, special, sponsor, revision) + char *name; + const char **language; + const char **modifier; + const char **territory; + const char **codeset; + const char **normalized_codeset; + const char **special; + const char **sponsor; + const char **revision; +{ + enum { undecided, xpg, cen } syntax; + char *cp; + int mask; + + *modifier = NULL; + *territory = NULL; + *codeset = NULL; + *normalized_codeset = NULL; + *special = NULL; + *sponsor = NULL; + *revision = NULL; + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_' and `@' if + we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ + mask = 0; + syntax = undecided; + *language = cp = name; + cp = _nl_find_language (*language); + + if (*language == cp) + /* This does not make sense: language has to be specified. Use + this entry as it is without exploding. Perhaps it is an alias. */ + cp = strchr (*language, '\0'); + else if (cp[0] == '_') + { + /* Next is the territory. */ + cp[0] = '\0'; + *territory = ++cp; + + while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@' + && cp[0] != '+' && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= TERRITORY; + + if (cp[0] == '.') + { + /* Next is the codeset. */ + syntax = xpg; + cp[0] = '\0'; + *codeset = ++cp; + + while (cp[0] != '\0' && cp[0] != '@') + ++cp; + + mask |= XPG_CODESET; + + if (*codeset != cp && (*codeset)[0] != '\0') + { + *normalized_codeset = _nl_normalize_codeset (*codeset, + cp - *codeset); + if (strcmp (*codeset, *normalized_codeset) == 0) + free ((char *) *normalized_codeset); + else + mask |= XPG_NORM_CODESET; + } + } + } + + if (cp[0] == '@' || (syntax != xpg && cp[0] == '+')) + { + /* Next is the modifier. */ + syntax = cp[0] == '@' ? xpg : cen; + cp[0] = '\0'; + *modifier = ++cp; + + while (syntax == cen && cp[0] != '\0' && cp[0] != '+' + && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= XPG_MODIFIER | CEN_AUDIENCE; + } + + if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_')) + { + syntax = cen; + + if (cp[0] == '+') + { + /* Next is special application (CEN syntax). */ + cp[0] = '\0'; + *special = ++cp; + + while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= CEN_SPECIAL; + } + + if (cp[0] == ',') + { + /* Next is sponsor (CEN syntax). */ + cp[0] = '\0'; + *sponsor = ++cp; + + while (cp[0] != '\0' && cp[0] != '_') + ++cp; + + mask |= CEN_SPONSOR; + } + + if (cp[0] == '_') + { + /* Next is revision (CEN syntax). */ + cp[0] = '\0'; + *revision = ++cp; + + mask |= CEN_REVISION; + } + } + + /* For CEN syntax values it might be important to have the + separator character in the file name, not for XPG syntax. */ + if (syntax == xpg) + { + if (*territory != NULL && (*territory)[0] == '\0') + mask &= ~TERRITORY; + + if (*codeset != NULL && (*codeset)[0] == '\0') + mask &= ~XPG_CODESET; + + if (*modifier != NULL && (*modifier)[0] == '\0') + mask &= ~XPG_MODIFIER; + } + + return mask; +} diff --git a/intl/finddomain.c b/intl/finddomain.c new file mode 100644 index 0000000..4882554 --- /dev/null +++ b/intl/finddomain.c @@ -0,0 +1,197 @@ +/* Handle list of needed message catalogs + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ +/* List of already loaded domains. */ +static struct loaded_l10nfile *_nl_loaded_domains; + + +/* Return a data structure describing the message catalog described by + the DOMAINNAME and CATEGORY parameters with respect to the currently + established bindings. */ +struct loaded_l10nfile * +internal_function +_nl_find_domain (dirname, locale, domainname, domainbinding) + const char *dirname; + char *locale; + const char *domainname; + struct binding *domainbinding; +{ + struct loaded_l10nfile *retval; + const char *language; + const char *modifier; + const char *territory; + const char *codeset; + const char *normalized_codeset; + const char *special; + const char *sponsor; + const char *revision; + const char *alias_value; + int mask; + + /* LOCALE can consist of up to four recognized parts for the XPG syntax: + + language[_territory[.codeset]][@modifier] + + and six parts for the CEN syntax: + + language[_territory][+audience][+special][,[sponsor][_revision]] + + Beside the first part all of them are allowed to be missing. If + the full specified locale is not found, the less specific one are + looked for. The various parts will be stripped off according to + the following order: + (1) revision + (2) sponsor + (3) special + (4) codeset + (5) normalized codeset + (6) territory + (7) audience/modifier + */ + + /* If we have already tested for this locale entry there has to + be one data set in the list of loaded domains. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, 0, locale, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, domainname, 0); + if (retval != NULL) + { + /* We know something about this locale. */ + int cnt; + + if (retval->decided == 0) + _nl_load_domain (retval, domainbinding); + + if (retval->data != NULL) + return retval; + + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided == 0) + _nl_load_domain (retval->successor[cnt], domainbinding); + + if (retval->successor[cnt]->data != NULL) + break; + } + return cnt >= 0 ? retval : NULL; + /* NOTREACHED */ + } + + /* See whether the locale value is an alias. If yes its value + *overwrites* the alias name. No test for the original value is + done. */ + alias_value = _nl_expand_alias (locale); + if (alias_value != NULL) + { +#if defined _LIBC || defined HAVE_STRDUP + locale = strdup (alias_value); + if (locale == NULL) + return NULL; +#else + size_t len = strlen (alias_value) + 1; + locale = (char *) malloc (len); + if (locale == NULL) + return NULL; + + memcpy (locale, alias_value, len); +#endif + } + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_' and `@' if + we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ + mask = _nl_explode_name (locale, &language, &modifier, &territory, + &codeset, &normalized_codeset, &special, + &sponsor, &revision); + + /* Create all possible locale entries which might be interested in + generalization. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, mask, language, territory, + codeset, normalized_codeset, modifier, special, + sponsor, revision, domainname, 1); + if (retval == NULL) + /* This means we are out of core. */ + return NULL; + + if (retval->decided == 0) + _nl_load_domain (retval, domainbinding); + if (retval->data == NULL) + { + int cnt; + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided == 0) + _nl_load_domain (retval->successor[cnt], domainbinding); + if (retval->successor[cnt]->data != NULL) + break; + } + } + + /* The room for an alias was dynamically allocated. Free it now. */ + if (alias_value != NULL) + free (locale); + + /* The space for normalized_codeset is dynamically allocated. Free it. */ + if (mask & XPG_NORM_CODESET) + free ((void *) normalized_codeset); + + return retval; +} + + +#ifdef _LIBC +static void __attribute__ ((unused)) +free_mem (void) +{ + struct loaded_l10nfile *runp = _nl_loaded_domains; + + while (runp != NULL) + { + struct loaded_l10nfile *here = runp; + if (runp->data != NULL) + _nl_unload_domain ((struct loaded_domain *) runp->data); + runp = runp->next; + free ((char *) here->filename); + free (here); + } +} + +text_set_element (__libc_subfreeres, free_mem); +#endif diff --git a/intl/gettext.c b/intl/gettext.c new file mode 100644 index 0000000..a640205 --- /dev/null +++ b/intl/gettext.c @@ -0,0 +1,63 @@ +/* Implementation of gettext(3) function. + Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define __need_NULL +# include +#else +# include /* Just for NULL. */ +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define GETTEXT __gettext +# define DCGETTEXT __dcgettext +#else +# define GETTEXT gettext__ +# define DCGETTEXT dcgettext__ +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +char * +GETTEXT (msgid) + const char *msgid; +{ + return DCGETTEXT (NULL, msgid, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__gettext, gettext); +#endif diff --git a/intl/gettext.h b/intl/gettext.h new file mode 100644 index 0000000..eb58890 --- /dev/null +++ b/intl/gettext.h @@ -0,0 +1,101 @@ +/* Description of GNU message catalog format: general file layout. + Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _GETTEXT_H +#define _GETTEXT_H 1 + +#if HAVE_LIMITS_H || _LIBC +# include +#endif + +/* @@ end of prolog @@ */ + +/* The magic number of the GNU message catalog format. */ +#define _MAGIC 0x950412de +#define _MAGIC_SWAPPED 0xde120495 + +/* Revision number of the currently used .mo (binary) file format. */ +#define MO_REVISION_NUMBER 0 + +/* The following contortions are an attempt to use the C preprocessor + to determine an unsigned integral type that is 32 bits wide. An + alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but + as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work + when cross-compiling. */ + +#if __STDC__ +# define UINT_MAX_32_BITS 4294967295U +#else +# define UINT_MAX_32_BITS 0xFFFFFFFF +#endif + +/* If UINT_MAX isn't defined, assume it's a 32-bit type. + This should be valid for all systems GNU cares about because + that doesn't include 16-bit systems, and only modern systems + (that certainly have ) have 64+-bit integral types. */ + +#ifndef UINT_MAX +# define UINT_MAX UINT_MAX_32_BITS +#endif + +#if UINT_MAX == UINT_MAX_32_BITS +typedef unsigned nls_uint32; +#else +# if USHRT_MAX == UINT_MAX_32_BITS +typedef unsigned short nls_uint32; +# else +# if ULONG_MAX == UINT_MAX_32_BITS +typedef unsigned long nls_uint32; +# else + /* The following line is intended to throw an error. Using #error is + not portable enough. */ + "Cannot determine unsigned 32-bit data type." +# endif +# endif +#endif + + +/* Header for binary .mo file format. */ +struct mo_file_header +{ + /* The magic number. */ + nls_uint32 magic; + /* The revision number of the file format. */ + nls_uint32 revision; + /* The number of strings pairs. */ + nls_uint32 nstrings; + /* Offset of table with start offsets of original strings. */ + nls_uint32 orig_tab_offset; + /* Offset of table with start offsets of translation strings. */ + nls_uint32 trans_tab_offset; + /* Size of hashing table. */ + nls_uint32 hash_tab_size; + /* Offset of first hashing entry. */ + nls_uint32 hash_tab_offset; +}; + +struct string_desc +{ + /* Length of addressed string. */ + nls_uint32 length; + /* Offset of string in file. */ + nls_uint32 offset; +}; + +/* @@ begin of epilog @@ */ + +#endif /* gettext.h */ diff --git a/intl/gettextP.h b/intl/gettextP.h new file mode 100644 index 0000000..ee8ca48 --- /dev/null +++ b/intl/gettextP.h @@ -0,0 +1,251 @@ +/* Header describing internals of libintl library. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _GETTEXTP_H +#define _GETTEXTP_H + +#include /* Get size_t. */ + +#ifdef _LIBC +# include "../iconv/gconv_int.h" +#else +# if HAVE_ICONV +# include +# endif +#endif + +#include "loadinfo.h" + +#include "gettext.h" /* Get nls_uint32. */ + +/* @@ end of prolog @@ */ + +#ifndef PARAMS +# if __STDC__ +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#ifndef internal_function +# define internal_function +#endif + +/* Tell the compiler when a conditional or integer expression is + almost always true or almost always false. */ +#ifndef HAVE_BUILTIN_EXPECT +# define __builtin_expect(expr, val) (expr) +#endif + +#ifndef W +# define W(flag, data) ((flag) ? SWAP (data) : (data)) +#endif + + +#ifdef _LIBC +# include +# define SWAP(i) bswap_32 (i) +#else +static inline nls_uint32 +SWAP (i) + nls_uint32 i; +{ + return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); +} +#endif + + +/* This is the representation of the expressions to determine the + plural form. */ +struct expression +{ + int nargs; /* Number of arguments. */ + enum operator + { + /* Without arguments: */ + var, /* The variable "n". */ + num, /* Decimal number. */ + /* Unary operators: */ + lnot, /* Logical NOT. */ + /* Binary operators: */ + mult, /* Multiplication. */ + divide, /* Division. */ + module, /* Module operation. */ + plus, /* Addition. */ + minus, /* Subtraction. */ + less_than, /* Comparison. */ + greater_than, /* Comparison. */ + less_or_equal, /* Comparison. */ + greater_or_equal, /* Comparison. */ + equal, /* Comparision for equality. */ + not_equal, /* Comparision for inequality. */ + land, /* Logical AND. */ + lor, /* Logical OR. */ + /* Ternary operators: */ + qmop /* Question mark operator. */ + } operation; + union + { + unsigned long int num; /* Number value for `num'. */ + struct expression *args[3]; /* Up to three arguments. */ + } val; +}; + +/* This is the data structure to pass information to the parser and get + the result in a thread-safe way. */ +struct parse_args +{ + const char *cp; + struct expression *res; +}; + + +/* The representation of an opened message catalog. */ +struct loaded_domain +{ + const char *data; + int use_mmap; + size_t mmap_size; + int must_swap; + nls_uint32 nstrings; + struct string_desc *orig_tab; + struct string_desc *trans_tab; + nls_uint32 hash_size; + nls_uint32 *hash_tab; + int codeset_cntr; +#ifdef _LIBC + __gconv_t conv; +#else +# if HAVE_ICONV + iconv_t conv; +# endif +#endif + char **conv_tab; + + struct expression *plural; + unsigned long int nplurals; +}; + +/* We want to allocate a string at the end of the struct. But ISO C + doesn't allow zero sized arrays. */ +#ifdef __GNUC__ +# define ZERO 0 +#else +# define ZERO 1 +#endif + +/* A set of settings bound to a message domain. Used to store settings + from bindtextdomain() and bind_textdomain_codeset(). */ +struct binding +{ + struct binding *next; + char *dirname; + int codeset_cntr; /* Incremented each time codeset changes. */ + char *codeset; + char domainname[ZERO]; +}; + +/* A counter which is incremented each time some previous translations + become invalid. + This variable is part of the external ABI of the GNU libintl. */ +extern int _nl_msg_cat_cntr; + +struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname, + char *__locale, + const char *__domainname, + struct binding *__domainbinding)) + internal_function; +void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain, + struct binding *__domainbinding)) + internal_function; +void _nl_unload_domain PARAMS ((struct loaded_domain *__domain)) + internal_function; +const char *_nl_init_domain_conv PARAMS ((struct loaded_l10nfile *__domain_file, + struct loaded_domain *__domain, + struct binding *__domainbinding)) + internal_function; +void _nl_free_domain_conv PARAMS ((struct loaded_domain *__domain)) + internal_function; + +char *_nl_find_msg PARAMS ((struct loaded_l10nfile *domain_file, + struct binding *domainbinding, + const char *msgid, size_t *lengthp)) + internal_function; + +#ifdef _LIBC +extern char *__gettext PARAMS ((const char *__msgid)); +extern char *__dgettext PARAMS ((const char *__domainname, + const char *__msgid)); +extern char *__dcgettext PARAMS ((const char *__domainname, + const char *__msgid, int __category)); +extern char *__ngettext PARAMS ((const char *__msgid1, const char *__msgid2, + unsigned long int __n)); +extern char *__dngettext PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int n)); +extern char *__dcngettext PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category)); +extern char *__dcigettext PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category)); +extern char *__textdomain PARAMS ((const char *__domainname)); +extern char *__bindtextdomain PARAMS ((const char *__domainname, + const char *__dirname)); +extern char *__bind_textdomain_codeset PARAMS ((const char *__domainname, + const char *__codeset)); +#else +extern char *gettext__ PARAMS ((const char *__msgid)); +extern char *dgettext__ PARAMS ((const char *__domainname, + const char *__msgid)); +extern char *dcgettext__ PARAMS ((const char *__domainname, + const char *__msgid, int __category)); +extern char *ngettext__ PARAMS ((const char *__msgid1, const char *__msgid2, + unsigned long int __n)); +extern char *dngettext__ PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n)); +extern char *dcngettext__ PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category)); +extern char *dcigettext__ PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category)); +extern char *textdomain__ PARAMS ((const char *__domainname)); +extern char *bindtextdomain__ PARAMS ((const char *__domainname, + const char *__dirname)); +extern char *bind_textdomain_codeset__ PARAMS ((const char *__domainname, + const char *__codeset)); +#endif + +#ifdef _LIBC +extern void __gettext_free_exp PARAMS ((struct expression *exp)) + internal_function; +extern int __gettextparse PARAMS ((void *arg)); +#else +extern void gettext_free_exp__ PARAMS ((struct expression *exp)) + internal_function; +extern int gettextparse__ PARAMS ((void *arg)); +#endif + +/* @@ begin of epilog @@ */ + +#endif /* gettextP.h */ diff --git a/intl/hash-string.h b/intl/hash-string.h new file mode 100644 index 0000000..37d4ce1 --- /dev/null +++ b/intl/hash-string.h @@ -0,0 +1,58 @@ +/* Description of GNU message catalog format: string hashing function. + Copyright (C) 1995, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* @@ end of prolog @@ */ + +#ifndef PARAMS +# if __STDC__ +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +#endif + +/* We assume to have `unsigned long int' value with at least 32 bits. */ +#define HASHWORDBITS 32 + + +/* Defines the so called `hashpjw' function by P.J. Weinberger + [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, + 1986, 1987 Bell Telephone Laboratories, Inc.] */ +static unsigned long int hash_string PARAMS ((const char *__str_param)); + +static inline unsigned long int +hash_string (str_param) + const char *str_param; +{ + unsigned long int hval, g; + const char *str = str_param; + + /* Compute the hash value for the given string. */ + hval = 0; + while (*str != '\0') + { + hval <<= 4; + hval += (unsigned long int) *str++; + g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4)); + if (g != 0) + { + hval ^= g >> (HASHWORDBITS - 8); + hval ^= g; + } + } + return hval; +} diff --git a/intl/intl-compat.c b/intl/intl-compat.c new file mode 100644 index 0000000..b8edaa1 --- /dev/null +++ b/intl/intl-compat.c @@ -0,0 +1,165 @@ +/* intl-compat.c - Stub functions to call gettext functions from GNU gettext + Library. + Copyright (C) 1995, 2000, 2001 Software Foundation, Inc. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "libgnuintl.h" +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +/* This file redirects the gettext functions (without prefix or suffix) to + those defined in the included GNU gettext library (with "__" suffix). + It is compiled into libintl when the included GNU gettext library is + configured --with-included-gettext. + + This redirection works also in the case that the system C library or + the system libintl library contain gettext/textdomain/... functions. + If it didn't, we would need to add preprocessor level redirections to + libgnuintl.h of the following form: + +# define gettext gettext__ +# define dgettext dgettext__ +# define dcgettext dcgettext__ +# define ngettext ngettext__ +# define dngettext dngettext__ +# define dcngettext dcngettext__ +# define textdomain textdomain__ +# define bindtextdomain bindtextdomain__ +# define bind_textdomain_codeset bind_textdomain_codeset__ + + How does this redirection work? There are two cases. + A. When libintl.a is linked into an executable, it works because + functions defined in the executable always override functions in + the shared libraries. + B. When libintl.so is used, it works because + 1. those systems defining gettext/textdomain/... in the C library + (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer) are + ELF systems and define these symbols as weak, thus explicitly + letting other shared libraries override it. + 2. those systems defining gettext/textdomain/... in a standalone + libintl.so library (namely, Solaris 2.3 and newer) have this + shared library in /usr/lib, and the linker will search /usr/lib + *after* the directory where the GNU gettext library is installed. + + A third case, namely when libintl.a is linked into a shared library + whose name is not libintl.so, is not supported. In this case, on + Solaris, when -lintl precedes the linker option for the shared library + containing GNU gettext, the system's gettext would indeed override + the GNU gettext. Anyone doing this kind of stuff must be clever enough + to 1. compile libintl.a with -fPIC, 2. remove -lintl from his linker + command line. */ + + +#undef gettext +#undef dgettext +#undef dcgettext +#undef ngettext +#undef dngettext +#undef dcngettext +#undef textdomain +#undef bindtextdomain +#undef bind_textdomain_codeset + + +char * +gettext (msgid) + const char *msgid; +{ + return gettext__ (msgid); +} + + +char * +dgettext (domainname, msgid) + const char *domainname; + const char *msgid; +{ + return dgettext__ (domainname, msgid); +} + + +char * +dcgettext (domainname, msgid, category) + const char *domainname; + const char *msgid; + int category; +{ + return dcgettext__ (domainname, msgid, category); +} + + +char * +ngettext (msgid1, msgid2, n) + const char *msgid1; + const char *msgid2; + unsigned long int n; +{ + return ngettext__ (msgid1, msgid2, n); +} + + +char * +dngettext (domainname, msgid1, msgid2, n) + const char *domainname; + const char *msgid1; + const char *msgid2; + unsigned long int n; +{ + return dngettext__ (domainname, msgid1, msgid2, n); +} + + +char * +dcngettext (domainname, msgid1, msgid2, n, category) + const char *domainname; + const char *msgid1; + const char *msgid2; + unsigned long int n; + int category; +{ + return dcngettext__ (domainname, msgid1, msgid2, n, category); +} + + +char * +textdomain (domainname) + const char *domainname; +{ + return textdomain__ (domainname); +} + + +char * +bindtextdomain (domainname, dirname) + const char *domainname; + const char *dirname; +{ + return bindtextdomain__ (domainname, dirname); +} + + +char * +bind_textdomain_codeset (domainname, codeset) + const char *domainname; + const char *codeset; +{ + return bind_textdomain_codeset__ (domainname, codeset); +} diff --git a/intl/l10nflist.c b/intl/l10nflist.c new file mode 100644 index 0000000..557253e --- /dev/null +++ b/intl/l10nflist.c @@ -0,0 +1,404 @@ +/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Tell glibc's to provide a prototype for stpcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#if !HAVE_STRCHR && !defined _LIBC +# ifndef strchr +# define strchr index +# endif +#endif + +#if defined _LIBC || defined HAVE_ARGZ_H +# include +#endif +#include +#include +#include + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# ifndef stpcpy +# define stpcpy(dest, src) __stpcpy(dest, src) +# endif +#else +# ifndef HAVE_STPCPY +static char *stpcpy PARAMS ((char *dest, const char *src)); +# endif +#endif + +/* Define function which are usually not available. */ + +#if !defined _LIBC && !defined HAVE___ARGZ_COUNT +/* Returns the number of strings in ARGZ. */ +static size_t argz_count__ PARAMS ((const char *argz, size_t len)); + +static size_t +argz_count__ (argz, len) + const char *argz; + size_t len; +{ + size_t count = 0; + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len + 1; + len -= part_len + 1; + count++; + } + return count; +} +# undef __argz_count +# define __argz_count(argz, len) argz_count__ (argz, len) +#endif /* !_LIBC && !HAVE___ARGZ_COUNT */ + +#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY +/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's + except the last into the character SEP. */ +static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep)); + +static void +argz_stringify__ (argz, len, sep) + char *argz; + size_t len; + int sep; +{ + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len; + len -= part_len + 1; + if (len > 0) + *argz++ = sep; + } +} +# undef __argz_stringify +# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep) +#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */ + +#if !defined _LIBC && !defined HAVE___ARGZ_NEXT +static char *argz_next__ PARAMS ((char *argz, size_t argz_len, + const char *entry)); + +static char * +argz_next__ (argz, argz_len, entry) + char *argz; + size_t argz_len; + const char *entry; +{ + if (entry) + { + if (entry < argz + argz_len) + entry = strchr (entry, '\0') + 1; + + return entry >= argz + argz_len ? NULL : (char *) entry; + } + else + if (argz_len > 0) + return argz; + else + return 0; +} +# undef __argz_next +# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry) +#endif /* !_LIBC && !HAVE___ARGZ_NEXT */ + + +/* Return number of bits set in X. */ +static int pop PARAMS ((int x)); + +static inline int +pop (x) + int x; +{ + /* We assume that no more than 16 bits are used. */ + x = ((x & ~0x5555) >> 1) + (x & 0x5555); + x = ((x & ~0x3333) >> 2) + (x & 0x3333); + x = ((x >> 4) + x) & 0x0f0f; + x = ((x >> 8) + x) & 0xff; + + return x; +} + + +struct loaded_l10nfile * +_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language, + territory, codeset, normalized_codeset, modifier, special, + sponsor, revision, filename, do_allocate) + struct loaded_l10nfile **l10nfile_list; + const char *dirlist; + size_t dirlist_len; + int mask; + const char *language; + const char *territory; + const char *codeset; + const char *normalized_codeset; + const char *modifier; + const char *special; + const char *sponsor; + const char *revision; + const char *filename; + int do_allocate; +{ + char *abs_filename; + struct loaded_l10nfile *last = NULL; + struct loaded_l10nfile *retval; + char *cp; + size_t entries; + int cnt; + + /* Allocate room for the full file name. */ + abs_filename = (char *) malloc (dirlist_len + + strlen (language) + + ((mask & TERRITORY) != 0 + ? strlen (territory) + 1 : 0) + + ((mask & XPG_CODESET) != 0 + ? strlen (codeset) + 1 : 0) + + ((mask & XPG_NORM_CODESET) != 0 + ? strlen (normalized_codeset) + 1 : 0) + + (((mask & XPG_MODIFIER) != 0 + || (mask & CEN_AUDIENCE) != 0) + ? strlen (modifier) + 1 : 0) + + ((mask & CEN_SPECIAL) != 0 + ? strlen (special) + 1 : 0) + + (((mask & CEN_SPONSOR) != 0 + || (mask & CEN_REVISION) != 0) + ? (1 + ((mask & CEN_SPONSOR) != 0 + ? strlen (sponsor) + 1 : 0) + + ((mask & CEN_REVISION) != 0 + ? strlen (revision) + 1 : 0)) : 0) + + 1 + strlen (filename) + 1); + + if (abs_filename == NULL) + return NULL; + + retval = NULL; + last = NULL; + + /* Construct file name. */ + memcpy (abs_filename, dirlist, dirlist_len); + __argz_stringify (abs_filename, dirlist_len, PATH_SEPARATOR); + cp = abs_filename + (dirlist_len - 1); + *cp++ = '/'; + cp = stpcpy (cp, language); + + if ((mask & TERRITORY) != 0) + { + *cp++ = '_'; + cp = stpcpy (cp, territory); + } + if ((mask & XPG_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, codeset); + } + if ((mask & XPG_NORM_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, normalized_codeset); + } + if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0) + { + /* This component can be part of both syntaces but has different + leading characters. For CEN we use `+', else `@'. */ + *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@'; + cp = stpcpy (cp, modifier); + } + if ((mask & CEN_SPECIAL) != 0) + { + *cp++ = '+'; + cp = stpcpy (cp, special); + } + if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0) + { + *cp++ = ','; + if ((mask & CEN_SPONSOR) != 0) + cp = stpcpy (cp, sponsor); + if ((mask & CEN_REVISION) != 0) + { + *cp++ = '_'; + cp = stpcpy (cp, revision); + } + } + + *cp++ = '/'; + stpcpy (cp, filename); + + /* Look in list of already loaded domains whether it is already + available. */ + last = NULL; + for (retval = *l10nfile_list; retval != NULL; retval = retval->next) + if (retval->filename != NULL) + { + int compare = strcmp (retval->filename, abs_filename); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It's not in the list. */ + retval = NULL; + break; + } + + last = retval; + } + + if (retval != NULL || do_allocate == 0) + { + free (abs_filename); + return retval; + } + + retval = (struct loaded_l10nfile *) + malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len) + * (1 << pop (mask)) + * sizeof (struct loaded_l10nfile *))); + if (retval == NULL) + return NULL; + + retval->filename = abs_filename; + retval->decided = (__argz_count (dirlist, dirlist_len) != 1 + || ((mask & XPG_CODESET) != 0 + && (mask & XPG_NORM_CODESET) != 0)); + retval->data = NULL; + + if (last == NULL) + { + retval->next = *l10nfile_list; + *l10nfile_list = retval; + } + else + { + retval->next = last->next; + last->next = retval; + } + + entries = 0; + /* If the DIRLIST is a real list the RETVAL entry corresponds not to + a real file. So we have to use the DIRLIST separation mechanism + of the inner loop. */ + cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask; + for (; cnt >= 0; --cnt) + if ((cnt & ~mask) == 0 + && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0) + && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0)) + { + /* Iterate over all elements of the DIRLIST. */ + char *dir = NULL; + + while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) + != NULL) + retval->successor[entries++] + = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt, + language, territory, codeset, + normalized_codeset, modifier, special, + sponsor, revision, filename, 1); + } + retval->successor[entries] = NULL; + + return retval; +} + +/* Normalize codeset name. There is no standard for the codeset + names. Normalization allows the user to use any of the common + names. The return value is dynamically allocated and has to be + freed by the caller. */ +const char * +_nl_normalize_codeset (codeset, name_len) + const char *codeset; + size_t name_len; +{ + int len = 0; + int only_digit = 1; + char *retval; + char *wp; + size_t cnt; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalnum (codeset[cnt])) + { + ++len; + + if (isalpha (codeset[cnt])) + only_digit = 0; + } + + retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1); + + if (retval != NULL) + { + if (only_digit) + wp = stpcpy (retval, "iso"); + else + wp = retval; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalpha (codeset[cnt])) + *wp++ = tolower (codeset[cnt]); + else if (isdigit (codeset[cnt])) + *wp++ = codeset[cnt]; + + *wp = '\0'; + } + + return (const char *) retval; +} + + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (dest, src) + char *dest; + const char *src; +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif diff --git a/intl/libgettext.h b/intl/libgettext.h new file mode 100644 index 0000000..553382c --- /dev/null +++ b/intl/libgettext.h @@ -0,0 +1,48 @@ +/* Convenience header for conditional use of GNU . + Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _LIBGETTEXT_H +#define _LIBGETTEXT_H 1 + +/* NLS can be disabled through the configure --disable-nls option. */ +#if ENABLE_NLS + +/* Get declarations of GNU message catalog functions. */ +# include + +#else + +# define gettext(Msgid) (Msgid) +# define dgettext(Domainname, Msgid) (Msgid) +# define dcgettext(Domainname, Msgid, Category) (Msgid) +# define ngettext(Msgid1, Msgid2, N) \ + ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2)) +# define dngettext(Domainname, Msgid1, Msgid2, N) \ + ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2)) +# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ + ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2)) +# define textdomain(Domainname) ((char *) (Domainname)) +# define bindtextdomain(Domainname, Dirname) ((char *) (Dirname)) +# define bind_textdomain_codeset(Domainname, Codeset) ((char *) (Codeset)) + +#endif + +/* For automatical extraction of messages sometimes no real + translation is needed. Instead the string itself is the result. */ +#define gettext_noop(Str) (Str) + +#endif /* _LIBGETTEXT_H */ diff --git a/intl/libgnuintl.h b/intl/libgnuintl.h new file mode 100644 index 0000000..577001a --- /dev/null +++ b/intl/libgnuintl.h @@ -0,0 +1,127 @@ +/* Message catalogs for internationalization. + Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _LIBINTL_H +#define _LIBINTL_H 1 + +#include + +/* The LC_MESSAGES locale category is the category used by the functions + gettext() and dgettext(). It is specified in POSIX, but not in ANSI C. + On systems that don't define it, use an arbitrary value instead. + On Solaris, defines __LOCALE_H then includes (i.e. + this file!) and then only defines LC_MESSAGES. To avoid a redefinition + warning, don't define LC_MESSAGES in this case. */ +#if !defined LC_MESSAGES && !defined __LOCALE_H +# define LC_MESSAGES 1729 +#endif + +/* We define an additional symbol to signal that we use the GNU + implementation of gettext. */ +#define __USE_GNU_GETTEXT 1 + +/* Resolve a platform specific conflict on DJGPP. GNU gettext takes + precedence over _conio_gettext. */ +#ifdef __DJGPP__ +# undef gettext +# define gettext gettext +#endif + +#ifndef PARAMS +# if __STDC__ || defined __cplusplus +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +extern char *gettext PARAMS ((const char *__msgid)); + +/* Look up MSGID in the DOMAINNAME message catalog for the current + LC_MESSAGES locale. */ +extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid)); + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid, + int __category)); + + +/* Similar to `gettext' but select the plural form corresponding to the + number N. */ +extern char *ngettext PARAMS ((const char *__msgid1, const char *__msgid2, + unsigned long int __n)); + +/* Similar to `dgettext' but select the plural form corresponding to the + number N. */ +extern char *dngettext PARAMS ((const char *__domainname, const char *__msgid1, + const char *__msgid2, unsigned long int __n)); + +/* Similar to `dcgettext' but select the plural form corresponding to the + number N. */ +extern char *dcngettext PARAMS ((const char *__domainname, const char *__msgid1, + const char *__msgid2, unsigned long int __n, + int __category)); + + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +extern char *textdomain PARAMS ((const char *__domainname)); + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +extern char *bindtextdomain PARAMS ((const char *__domainname, + const char *__dirname)); + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +extern char *bind_textdomain_codeset PARAMS ((const char *__domainname, + const char *__codeset)); + + +/* Optimized version of the functions above. */ +#if defined __OPTIMIZED +/* These are macros, but could also be inline functions. */ + +# define gettext(msgid) \ + dgettext (NULL, msgid) + +# define dgettext(domainname, msgid) \ + dcgettext (domainname, msgid, LC_MESSAGES) + +# define ngettext(msgid1, msgid2, n) \ + dngettext (NULL, msgid1, msgid2, n) + +# define dngettext(domainname, msgid1, msgid2, n) \ + dcngettext (domainname, msgid1, msgid2, n, LC_MESSAGES) + +#endif /* Optimizing. */ + + +#ifdef __cplusplus +} +#endif + +#endif /* libintl.h */ diff --git a/intl/libintl.glibc b/intl/libintl.glibc new file mode 100644 index 0000000..7298852 --- /dev/null +++ b/intl/libintl.glibc @@ -0,0 +1,116 @@ +/* Message catalogs for internationalization. + Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc. + This file is derived from the file libgettext.h in the GNU gettext package. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _LIBINTL_H +#define _LIBINTL_H 1 + +#include + +/* We define an additional symbol to signal that we use the GNU + implementation of gettext. */ +#define __USE_GNU_GETTEXT 1 + +__BEGIN_DECLS + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +extern char *gettext (__const char *__msgid) __THROW; + +/* Look up MSGID in the DOMAINNAME message catalog for the current + LC_MESSAGES locale. */ +extern char *dgettext (__const char *__domainname, __const char *__msgid) + __THROW; +extern char *__dgettext (__const char *__domainname, __const char *__msgid) + __THROW __attribute_format_arg__ (2); + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +extern char *dcgettext (__const char *__domainname, + __const char *__msgid, int __category) __THROW; +extern char *__dcgettext (__const char *__domainname, + __const char *__msgid, int __category) + __THROW __attribute_format_arg__ (2); + + +/* Similar to `gettext' but select the plural form corresponding to the + number N. */ +extern char *ngettext (__const char *__msgid1, __const char *__msgid2, + unsigned long int __n) + __THROW __attribute_format_arg__ (1); + +/* Similar to `dgettext' but select the plural form corresponding to the + number N. */ +extern char *dngettext (__const char *__domainname, __const char *__msgid1, + __const char *__msgid2, unsigned long int __n) + __THROW __attribute_format_arg__ (2); + +/* Similar to `dcgettext' but select the plural form corresponding to the + number N. */ +extern char *dcngettext (__const char *__domainname, __const char *__msgid1, + __const char *__msgid2, unsigned long int __n, + int __category) + __THROW __attribute_format_arg__ (2); + + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +extern char *textdomain (__const char *__domainname) __THROW; + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +extern char *bindtextdomain (__const char *__domainname, + __const char *__dirname) __THROW; + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +extern char *bind_textdomain_codeset (__const char *__domainname, + __const char *__codeset) __THROW; + + +/* Optimized version of the function above. */ +#if defined __OPTIMIZE__ + +/* We need NULL for `gettext'. */ +# define __need_NULL +# include + +/* We need LC_MESSAGES for `dgettext'. */ +# include + +/* These must be macros. Inlined functions are useless because the + `__builtin_constant_p' predicate in dcgettext would always return + false. */ + +# define gettext(msgid) dgettext (NULL, msgid) + +# define dgettext(domainname, msgid) \ + dcgettext (domainname, msgid, LC_MESSAGES) + +# define ngettext(msgid1, msgid2, n) dngettext (NULL, msgid1, msgid2, n) + +# define dngettext(domainname, msgid1, msgid2, n) \ + dcngettext (domainname, msgid1, msgid2, n, LC_MESSAGES) + +#endif /* Optimizing. */ + +__END_DECLS + +#endif /* libintl.h */ diff --git a/intl/loadinfo.h b/intl/loadinfo.h new file mode 100644 index 0000000..5171a8f --- /dev/null +++ b/intl/loadinfo.h @@ -0,0 +1,108 @@ +/* Copyright (C) 1996-1999, 2000, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _LOADINFO_H +#define _LOADINFO_H 1 + +#ifndef PARAMS +# if __STDC__ +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#ifndef internal_function +# define internal_function +#endif + +/* Tell the compiler when a conditional or integer expression is + almost always true or almost always false. */ +#ifndef HAVE_BUILTIN_EXPECT +# define __builtin_expect(expr, val) (expr) +#endif + +/* Separator in PATH like lists of pathnames. */ +#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ + /* Win32, OS/2, DOS */ +# define PATH_SEPARATOR ';' +#else + /* Unix */ +# define PATH_SEPARATOR ':' +#endif + +/* Encoding of locale name parts. */ +#define CEN_REVISION 1 +#define CEN_SPONSOR 2 +#define CEN_SPECIAL 4 +#define XPG_NORM_CODESET 8 +#define XPG_CODESET 16 +#define TERRITORY 32 +#define CEN_AUDIENCE 64 +#define XPG_MODIFIER 128 + +#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE) +#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER) + + +struct loaded_l10nfile +{ + const char *filename; + int decided; + + const void *data; + + struct loaded_l10nfile *next; + struct loaded_l10nfile *successor[1]; +}; + + +/* Normalize codeset name. There is no standard for the codeset + names. Normalization allows the user to use any of the common + names. The return value is dynamically allocated and has to be + freed by the caller. */ +extern const char *_nl_normalize_codeset PARAMS ((const char *codeset, + size_t name_len)); + +extern struct loaded_l10nfile * +_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list, + const char *dirlist, size_t dirlist_len, int mask, + const char *language, const char *territory, + const char *codeset, + const char *normalized_codeset, + const char *modifier, const char *special, + const char *sponsor, const char *revision, + const char *filename, int do_allocate)); + + +extern const char *_nl_expand_alias PARAMS ((const char *name)); + +/* normalized_codeset is dynamically allocated and has to be freed by + the caller. */ +extern int _nl_explode_name PARAMS ((char *name, const char **language, + const char **modifier, + const char **territory, + const char **codeset, + const char **normalized_codeset, + const char **special, + const char **sponsor, + const char **revision)); + +extern char *_nl_find_language PARAMS ((const char *name)); + +#endif /* loadinfo.h */ diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c new file mode 100644 index 0000000..d589243 --- /dev/null +++ b/intl/loadmsgcat.c @@ -0,0 +1,566 @@ +/* Load needed message catalogs. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +#endif + +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#ifdef _LIBC +# include +# include +#endif + +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || (defined _LIBC && defined _POSIX_MAPPED_FILES) +# include +# undef HAVE_MMAP +# define HAVE_MMAP 1 +#else +# undef HAVE_MMAP +#endif + +#include "gettext.h" +#include "gettextP.h" + +#ifdef _LIBC +# include "../locale/localeinfo.h" +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ISO C functions. This is required by the standard + because some ISO C functions will require linking with this object + file and the name space must not be polluted. */ +# define open __open +# define close __close +# define read __read +# define mmap __mmap +# define munmap __munmap +#endif + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define PLURAL_PARSE __gettextparse +#else +# define PLURAL_PARSE gettextparse__ +#endif + +/* For those losing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +# define freea(p) /* nothing */ +#else +# define alloca(n) malloc (n) +# define freea(p) free (p) +#endif + +/* For systems that distinguish between text and binary I/O. + O_BINARY is usually declared in . */ +#if !defined O_BINARY && defined _O_BINARY + /* For MSC-compatible compilers. */ +# define O_BINARY _O_BINARY +# define O_TEXT _O_TEXT +#endif +#ifdef __BEOS__ + /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */ +# undef O_BINARY +# undef O_TEXT +#endif +/* On reasonable systems, binary I/O is the default. */ +#ifndef O_BINARY +# define O_BINARY 0 +#endif + +/* We need a sign, whether a new catalog was loaded, which can be associated + with all translations. This is important if the translations are + cached by one of GCC's features. */ +int _nl_msg_cat_cntr; + +#if (defined __GNUC__ && !defined __APPLE_CC__) \ + || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) + +/* These structs are the constant expression for the germanic plural + form determination. It represents the expression "n != 1". */ +static const struct expression plvar = +{ + .nargs = 0, + .operation = var, +}; +static const struct expression plone = +{ + .nargs = 0, + .operation = num, + .val = + { + .num = 1 + } +}; +static struct expression germanic_plural = +{ + .nargs = 2, + .operation = not_equal, + .val = + { + .args = + { + [0] = (struct expression *) &plvar, + [1] = (struct expression *) &plone + } + } +}; + +# define INIT_GERMANIC_PLURAL() + +#else + +/* For compilers without support for ISO C 99 struct/union initializers: + Initialization at run-time. */ + +static struct expression plvar; +static struct expression plone; +static struct expression germanic_plural; + +static void +init_germanic_plural () +{ + if (plone.val.num == 0) + { + plvar.nargs = 0; + plvar.operation = var; + + plone.nargs = 0; + plone.operation = num; + plone.val.num = 1; + + germanic_plural.nargs = 2; + germanic_plural.operation = not_equal; + germanic_plural.val.args[0] = &plvar; + germanic_plural.val.args[1] = &plone; + } +} + +# define INIT_GERMANIC_PLURAL() init_germanic_plural () + +#endif + + +/* Initialize the codeset dependent parts of an opened message catalog. + Return the header entry. */ +const char * +internal_function +_nl_init_domain_conv (domain_file, domain, domainbinding) + struct loaded_l10nfile *domain_file; + struct loaded_domain *domain; + struct binding *domainbinding; +{ + /* Find out about the character set the file is encoded with. + This can be found (in textual form) in the entry "". If this + entry does not exist or if this does not contain the `charset=' + information, we will assume the charset matches the one the + current locale and we don't have to perform any conversion. */ + char *nullentry; + size_t nullentrylen; + + /* Preinitialize fields, to avoid recursion during _nl_find_msg. */ + domain->codeset_cntr = + (domainbinding != NULL ? domainbinding->codeset_cntr : 0); +#ifdef _LIBC + domain->conv = (__gconv_t) -1; +#else +# if HAVE_ICONV + domain->conv = (iconv_t) -1; +# endif +#endif + domain->conv_tab = NULL; + + /* Get the header entry. */ + nullentry = _nl_find_msg (domain_file, domainbinding, "", &nullentrylen); + + if (nullentry != NULL) + { +#if defined _LIBC || HAVE_ICONV + const char *charsetstr; + + charsetstr = strstr (nullentry, "charset="); + if (charsetstr != NULL) + { + size_t len; + char *charset; + const char *outcharset; + + charsetstr += strlen ("charset="); + len = strcspn (charsetstr, " \t\n"); + + charset = (char *) alloca (len + 1); +# if defined _LIBC || HAVE_MEMPCPY + *((char *) mempcpy (charset, charsetstr, len)) = '\0'; +# else + memcpy (charset, charsetstr, len); + charset[len] = '\0'; +# endif + + /* The output charset should normally be determined by the + locale. But sometimes the locale is not used or not correctly + set up, so we provide a possibility for the user to override + this. Moreover, the value specified through + bind_textdomain_codeset overrides both. */ + if (domainbinding != NULL && domainbinding->codeset != NULL) + outcharset = domainbinding->codeset; + else + { + outcharset = getenv ("OUTPUT_CHARSET"); + if (outcharset == NULL || outcharset[0] == '\0') + { +# ifdef _LIBC + outcharset = (*_nl_current[LC_CTYPE])->values[_NL_ITEM_INDEX (CODESET)].string; +# else +# if HAVE_ICONV + extern const char *locale_charset (void); + outcharset = locale_charset (); +# endif +# endif + } + } + +# ifdef _LIBC + /* We always want to use transliteration. */ + outcharset = norm_add_slashes (outcharset, "TRANSLIT"); + charset = norm_add_slashes (charset, NULL); + if (__gconv_open (outcharset, charset, &domain->conv, + GCONV_AVOID_NOCONV) + != __GCONV_OK) + domain->conv = (__gconv_t) -1; +# else +# if HAVE_ICONV + /* When using GNU libiconv, we want to use transliteration. */ +# if _LIBICONV_VERSION >= 0x0105 + len = strlen (outcharset); + { + char *tmp = (char *) alloca (len + 10 + 1); + memcpy (tmp, outcharset, len); + memcpy (tmp + len, "//TRANSLIT", 10 + 1); + outcharset = tmp; + } +# endif + domain->conv = iconv_open (outcharset, charset); +# if _LIBICONV_VERSION >= 0x0105 + freea (outcharset); +# endif +# endif +# endif + + freea (charset); + } +#endif /* _LIBC || HAVE_ICONV */ + } + + return nullentry; +} + +/* Frees the codeset dependent parts of an opened message catalog. */ +void +internal_function +_nl_free_domain_conv (domain) + struct loaded_domain *domain; +{ + if (domain->conv_tab != NULL && domain->conv_tab != (char **) -1) + free (domain->conv_tab); + +#ifdef _LIBC + if (domain->conv != (__gconv_t) -1) + __gconv_close (domain->conv); +#else +# if HAVE_ICONV + if (domain->conv != (iconv_t) -1) + iconv_close (domain->conv); +# endif +#endif +} + +/* Load the message catalogs specified by FILENAME. If it is no valid + message catalog do nothing. */ +void +internal_function +_nl_load_domain (domain_file, domainbinding) + struct loaded_l10nfile *domain_file; + struct binding *domainbinding; +{ + int fd; + size_t size; +#ifdef _LIBC + struct stat64 st; +#else + struct stat st; +#endif + struct mo_file_header *data = (struct mo_file_header *) -1; + int use_mmap = 0; + struct loaded_domain *domain; + const char *nullentry; + + domain_file->decided = 1; + domain_file->data = NULL; + + /* Note that it would be useless to store domainbinding in domain_file + because domainbinding might be == NULL now but != NULL later (after + a call to bind_textdomain_codeset). */ + + /* If the record does not represent a valid locale the FILENAME + might be NULL. This can happen when according to the given + specification the locale file name is different for XPG and CEN + syntax. */ + if (domain_file->filename == NULL) + return; + + /* Try to open the addressed file. */ + fd = open (domain_file->filename, O_RDONLY | O_BINARY); + if (fd == -1) + return; + + /* We must know about the size of the file. */ + if ( +#ifdef _LIBC + __builtin_expect (fstat64 (fd, &st) != 0, 0) +#else + __builtin_expect (fstat (fd, &st) != 0, 0) +#endif + || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0) + || __builtin_expect (size < sizeof (struct mo_file_header), 0)) + { + /* Something went wrong. */ + close (fd); + return; + } + +#ifdef HAVE_MMAP + /* Now we are ready to load the file. If mmap() is available we try + this first. If not available or it failed we try to load it. */ + data = (struct mo_file_header *) mmap (NULL, size, PROT_READ, + MAP_PRIVATE, fd, 0); + + if (__builtin_expect (data != (struct mo_file_header *) -1, 1)) + { + /* mmap() call was successful. */ + close (fd); + use_mmap = 1; + } +#endif + + /* If the data is not yet available (i.e. mmap'ed) we try to load + it manually. */ + if (data == (struct mo_file_header *) -1) + { + size_t to_read; + char *read_ptr; + + data = (struct mo_file_header *) malloc (size); + if (data == NULL) + return; + + to_read = size; + read_ptr = (char *) data; + do + { + long int nb = (long int) read (fd, read_ptr, to_read); + if (nb <= 0) + { +#ifdef EINTR + if (nb == -1 && errno == EINTR) + continue; +#endif + close (fd); + return; + } + read_ptr += nb; + to_read -= nb; + } + while (to_read > 0); + + close (fd); + } + + /* Using the magic number we can test whether it really is a message + catalog file. */ + if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED, + 0)) + { + /* The magic number is wrong: not a message catalog file. */ +#ifdef HAVE_MMAP + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + return; + } + + domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); + if (domain == NULL) + return; + domain_file->data = domain; + + domain->data = (char *) data; + domain->use_mmap = use_mmap; + domain->mmap_size = size; + domain->must_swap = data->magic != _MAGIC; + + /* Fill in the information about the available tables. */ + switch (W (domain->must_swap, data->revision)) + { + case 0: + domain->nstrings = W (domain->must_swap, data->nstrings); + domain->orig_tab = (struct string_desc *) + ((char *) data + W (domain->must_swap, data->orig_tab_offset)); + domain->trans_tab = (struct string_desc *) + ((char *) data + W (domain->must_swap, data->trans_tab_offset)); + domain->hash_size = W (domain->must_swap, data->hash_tab_size); + domain->hash_tab = (nls_uint32 *) + ((char *) data + W (domain->must_swap, data->hash_tab_offset)); + break; + default: + /* This is an invalid revision. */ +#ifdef HAVE_MMAP + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + free (domain); + domain_file->data = NULL; + return; + } + + /* Now initialize the character set converter from the character set + the file is encoded with (found in the header entry) to the domain's + specified character set or the locale's character set. */ + nullentry = _nl_init_domain_conv (domain_file, domain, domainbinding); + + /* Also look for a plural specification. */ + if (nullentry != NULL) + { + const char *plural; + const char *nplurals; + + plural = strstr (nullentry, "plural="); + nplurals = strstr (nullentry, "nplurals="); + if (plural == NULL || nplurals == NULL) + goto no_plural; + else + { + /* First get the number. */ + char *endp; + unsigned long int n; + struct parse_args args; + + nplurals += 9; + while (*nplurals != '\0' && isspace (*nplurals)) + ++nplurals; +#if defined HAVE_STRTOUL || defined _LIBC + n = strtoul (nplurals, &endp, 10); +#else + for (endp = nplurals, n = 0; *endp >= '0' && *endp <= '9'; endp++) + n = n * 10 + (*endp - '0'); +#endif + domain->nplurals = n; + if (nplurals == endp) + goto no_plural; + + /* Due to the restrictions bison imposes onto the interface of the + scanner function we have to put the input string and the result + passed up from the parser into the same structure which address + is passed down to the parser. */ + plural += 7; + args.cp = plural; + if (PLURAL_PARSE (&args) != 0) + goto no_plural; + domain->plural = args.res; + } + } + else + { + /* By default we are using the Germanic form: singular form only + for `one', the plural form otherwise. Yes, this is also what + English is using since English is a Germanic language. */ + no_plural: + INIT_GERMANIC_PLURAL (); + domain->plural = &germanic_plural; + domain->nplurals = 2; + } +} + + +#ifdef _LIBC +void +internal_function +_nl_unload_domain (domain) + struct loaded_domain *domain; +{ + if (domain->plural != &germanic_plural) + __gettext_free_exp (domain->plural); + + _nl_free_domain_conv (domain); + +# ifdef _POSIX_MAPPED_FILES + if (domain->use_mmap) + munmap ((caddr_t) domain->data, domain->mmap_size); + else +# endif /* _POSIX_MAPPED_FILES */ + free ((void *) domain->data); + + free (domain); +} +#endif diff --git a/intl/localcharset.c b/intl/localcharset.c new file mode 100644 index 0000000..22e09e4 --- /dev/null +++ b/intl/localcharset.c @@ -0,0 +1,271 @@ +/* Determine a canonical name for the current locale's character encoding. + + Copyright (C) 2000-2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +/* Written by Bruno Haible . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if HAVE_STDDEF_H +# include +#endif + +#include +#if HAVE_STRING_H +# include +#else +# include +#endif +#if HAVE_STDLIB_H +# include +#endif + +#if defined _WIN32 || defined __WIN32__ +# undef WIN32 /* avoid warning on mingw32 */ +# define WIN32 +#endif + +#ifndef WIN32 +# if HAVE_LANGINFO_CODESET +# include +# else +# if HAVE_SETLOCALE +# include +# endif +# endif +#else /* WIN32 */ +# define WIN32_LEAN_AND_MEAN +# include +#endif + +#ifndef DIRECTORY_SEPARATOR +# define DIRECTORY_SEPARATOR '/' +#endif + +#ifndef ISSLASH +# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) +#endif + +/* The following static variable is declared 'volatile' to avoid a + possible multithread problem in the function get_charset_aliases. If we + are running in a threaded environment, and if two threads initialize + 'charset_aliases' simultaneously, both will produce the same value, + and everything will be ok if the two assignments to 'charset_aliases' + are atomic. But I don't know what will happen if the two assignments mix. */ +#if __STDC__ != 1 +# define volatile /* empty */ +#endif +/* Pointer to the contents of the charset.alias file, if it has already been + read, else NULL. Its format is: + ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */ +static char * volatile charset_aliases; + +/* Return a pointer to the contents of the charset.alias file. */ +static const char * +get_charset_aliases () +{ + char *cp; + + cp = charset_aliases; + if (cp == NULL) + { +#ifndef WIN32 + FILE *fp; + const char *dir = LIBDIR; + const char *base = "charset.alias"; + char *file_name; + + /* Concatenate dir and base into freshly allocated file_name. */ + { + size_t dir_len = strlen (dir); + size_t base_len = strlen (base); + int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1])); + file_name = (char *) malloc (dir_len + add_slash + base_len + 1); + if (file_name != NULL) + { + memcpy (file_name, dir, dir_len); + if (add_slash) + file_name[dir_len] = DIRECTORY_SEPARATOR; + memcpy (file_name + dir_len + add_slash, base, base_len + 1); + } + } + + if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL) + /* Out of memory or file not found, treat it as empty. */ + cp = ""; + else + { + /* Parse the file's contents. */ + int c; + char buf1[50+1]; + char buf2[50+1]; + char *res_ptr = NULL; + size_t res_size = 0; + size_t l1, l2; + + for (;;) + { + c = getc (fp); + if (c == EOF) + break; + if (c == '\n' || c == ' ' || c == '\t') + continue; + if (c == '#') + { + /* Skip comment, to end of line. */ + do + c = getc (fp); + while (!(c == EOF || c == '\n')); + if (c == EOF) + break; + continue; + } + ungetc (c, fp); + if (fscanf(fp, "%50s %50s", buf1, buf2) < 2) + break; + l1 = strlen (buf1); + l2 = strlen (buf2); + if (res_size == 0) + { + res_size = l1 + 1 + l2 + 1; + res_ptr = malloc (res_size + 1); + } + else + { + res_size += l1 + 1 + l2 + 1; + res_ptr = realloc (res_ptr, res_size + 1); + } + if (res_ptr == NULL) + { + /* Out of memory. */ + res_size = 0; + break; + } + strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1); + strcpy (res_ptr + res_size - (l2 + 1), buf2); + } + fclose (fp); + if (res_size == 0) + cp = ""; + else + { + *(res_ptr + res_size) = '\0'; + cp = res_ptr; + } + } + + if (file_name != NULL) + free (file_name); + +#else /* WIN32 */ + + /* To avoid the troubles of installing a separate file in the same + directory as the DLL and of retrieving the DLL's directory at + runtime, simply inline the aliases here. */ + + cp = "CP936" "\0" "GBK" "\0" + "CP1361" "\0" "JOHAB" "\0"; +#endif + + charset_aliases = cp; + } + + return cp; +} + +/* Determine the current locale's character encoding, and canonicalize it + into one of the canonical names listed in config.charset. + The result must not be freed; it is statically allocated. + If the canonical name cannot be determined, the result is a non-canonical + name. */ + +#ifdef STATIC +STATIC +#endif +const char * +locale_charset () +{ + const char *codeset; + const char *aliases; + +#ifndef WIN32 + +# if HAVE_LANGINFO_CODESET + + /* Most systems support nl_langinfo (CODESET) nowadays. */ + codeset = nl_langinfo (CODESET); + +# else + + /* On old systems which lack it, use setlocale or getenv. */ + const char *locale = NULL; + + /* But most old systems don't have a complete set of locales. Some + (like SunOS 4 or DJGPP) have only the C locale. Therefore we don't + use setlocale here; it would return "C" when it doesn't support the + locale name the user has set. */ +# if HAVE_SETLOCALE && 0 + locale = setlocale (LC_CTYPE, NULL); +# endif + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_ALL"); + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_CTYPE"); + if (locale == NULL || locale[0] == '\0') + locale = getenv ("LANG"); + } + } + + /* On some old systems, one used to set locale = "iso8859_1". On others, + you set it to "language_COUNTRY.charset". In any case, we resolve it + through the charset.alias file. */ + codeset = locale; + +# endif + +#else /* WIN32 */ + + static char buf[2 + 10 + 1]; + + /* Win32 has a function returning the locale's codepage as a number. */ + sprintf (buf, "CP%u", GetACP ()); + codeset = buf; + +#endif + + if (codeset == NULL) + /* The canonical name cannot be determined. */ + codeset = ""; + + /* Resolve alias. */ + for (aliases = get_charset_aliases (); + *aliases != '\0'; + aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1) + if (strcmp (codeset, aliases) == 0 + || (aliases[0] == '*' && aliases[1] == '\0')) + { + codeset = aliases + strlen (aliases) + 1; + break; + } + + return codeset; +} diff --git a/intl/locale.alias b/intl/locale.alias new file mode 100644 index 0000000..48940f7 --- /dev/null +++ b/intl/locale.alias @@ -0,0 +1,77 @@ +# Locale name alias data base. +# Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# The format of this file is the same as for the corresponding file of +# the X Window System, which normally can be found in +# /usr/lib/X11/locale/locale.alias +# A single line contains two fields: an alias and a substitution value. +# All entries are case independent. + +# Note: This file is far from being complete. If you have a value for +# your own site which you think might be useful for others too, share +# it with the rest of us. Send it using the `glibcbug' script to +# bugs@gnu.org. + +# Packages using this file: + +bokmal no_NO.ISO-8859-1 +bokmĺl no_NO.ISO-8859-1 +catalan ca_ES.ISO-8859-1 +croatian hr_HR.ISO-8859-2 +czech cs_CZ.ISO-8859-2 +danish da_DK.ISO-8859-1 +dansk da_DK.ISO-8859-1 +deutsch de_DE.ISO-8859-1 +dutch nl_NL.ISO-8859-1 +eesti et_EE.ISO-8859-1 +estonian et_EE.ISO-8859-1 +finnish fi_FI.ISO-8859-1 +français fr_FR.ISO-8859-1 +french fr_FR.ISO-8859-1 +galego gl_ES.ISO-8859-1 +galician gl_ES.ISO-8859-1 +german de_DE.ISO-8859-1 +greek el_GR.ISO-8859-7 +hebrew iw_IL.ISO-8859-8 +hrvatski hr_HR.ISO-8859-2 +hungarian hu_HU.ISO-8859-2 +icelandic is_IS.ISO-8859-1 +italian it_IT.ISO-8859-1 +japanese ja_JP.eucJP +japanese.euc ja_JP.eucJP +ja_JP ja_JP.eucJP +ja_JP.ujis ja_JP.eucJP +japanese.sjis ja_JP.SJIS +korean ko_KR.eucKR +korean.euc ko_KR.eucKR +ko_KR ko_KR.eucKR +lithuanian lt_LT.ISO-8859-13 +nb_NO no_NO.ISO-8859-1 +nb_NO.ISO-8859-1 no_NO.ISO-8859-1 +norwegian no_NO.ISO-8859-1 +nynorsk nn_NO.ISO-8859-1 +polish pl_PL.ISO-8859-2 +portuguese pt_PT.ISO-8859-1 +romanian ro_RO.ISO-8859-2 +russian ru_RU.ISO-8859-5 +slovak sk_SK.ISO-8859-2 +slovene sl_SI.ISO-8859-2 +slovenian sl_SI.ISO-8859-2 +spanish es_ES.ISO-8859-1 +swedish sv_SE.ISO-8859-1 +thai th_TH.TIS-620 +turkish tr_TR.ISO-8859-9 diff --git a/intl/localealias.c b/intl/localealias.c new file mode 100644 index 0000000..76f19a9 --- /dev/null +++ b/intl/localealias.c @@ -0,0 +1,403 @@ +/* Handle aliases for locale names. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +#endif + +#include + +#include +#if !HAVE_STRCHR && !defined _LIBC +# ifndef strchr +# define strchr index +# endif +#endif + +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define strcasecmp __strcasecmp + +# ifndef mempcpy +# define mempcpy __mempcpy +# endif +# define HAVE_MEMPCPY 1 + +/* We need locking here since we can be called from different places. */ +# include + +__libc_lock_define_initialized (static, lock); +#endif + +#ifndef internal_function +# define internal_function +#endif + +/* For those losing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +# define freea(p) /* nothing */ +#else +# define alloca(n) malloc (n) +# define freea(p) free (p) +#endif + +#if defined _LIBC_REENTRANT || defined HAVE_FGETS_UNLOCKED +# undef fgets +# define fgets(buf, len, s) fgets_unlocked (buf, len, s) +#endif +#if defined _LIBC_REENTRANT || defined HAVE_FEOF_UNLOCKED +# undef feof +# define feof(s) feof_unlocked (s) +#endif + + +struct alias_map +{ + const char *alias; + const char *value; +}; + + +static char *string_space; +static size_t string_space_act; +static size_t string_space_max; +static struct alias_map *map; +static size_t nmap; +static size_t maxmap; + + +/* Prototypes for local functions. */ +static size_t read_alias_file PARAMS ((const char *fname, int fname_len)) + internal_function; +static int extend_alias_table PARAMS ((void)); +static int alias_compare PARAMS ((const struct alias_map *map1, + const struct alias_map *map2)); + + +const char * +_nl_expand_alias (name) + const char *name; +{ + static const char *locale_alias_path = LOCALE_ALIAS_PATH; + struct alias_map *retval; + const char *result = NULL; + size_t added; + +#ifdef _LIBC + __libc_lock_lock (lock); +#endif + + do + { + struct alias_map item; + + item.alias = name; + + if (nmap > 0) + retval = (struct alias_map *) bsearch (&item, map, nmap, + sizeof (struct alias_map), + (int (*) PARAMS ((const void *, + const void *)) + ) alias_compare); + else + retval = NULL; + + /* We really found an alias. Return the value. */ + if (retval != NULL) + { + result = retval->value; + break; + } + + /* Perhaps we can find another alias file. */ + added = 0; + while (added == 0 && locale_alias_path[0] != '\0') + { + const char *start; + + while (locale_alias_path[0] == PATH_SEPARATOR) + ++locale_alias_path; + start = locale_alias_path; + + while (locale_alias_path[0] != '\0' + && locale_alias_path[0] != PATH_SEPARATOR) + ++locale_alias_path; + + if (start < locale_alias_path) + added = read_alias_file (start, locale_alias_path - start); + } + } + while (added != 0); + +#ifdef _LIBC + __libc_lock_unlock (lock); +#endif + + return result; +} + + +static size_t +internal_function +read_alias_file (fname, fname_len) + const char *fname; + int fname_len; +{ + FILE *fp; + char *full_fname; + size_t added; + static const char aliasfile[] = "/locale.alias"; + + full_fname = (char *) alloca (fname_len + sizeof aliasfile); +#ifdef HAVE_MEMPCPY + mempcpy (mempcpy (full_fname, fname, fname_len), + aliasfile, sizeof aliasfile); +#else + memcpy (full_fname, fname, fname_len); + memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); +#endif + + fp = fopen (full_fname, "r"); + freea (full_fname); + if (fp == NULL) + return 0; + + added = 0; + while (!feof (fp)) + { + /* It is a reasonable approach to use a fix buffer here because + a) we are only interested in the first two fields + b) these fields must be usable as file names and so must not + be that long + */ + char buf[BUFSIZ]; + char *alias; + char *value; + char *cp; + + if (fgets (buf, sizeof buf, fp) == NULL) + /* EOF reached. */ + break; + + /* Possibly not the whole line fits into the buffer. Ignore + the rest of the line. */ + if (strchr (buf, '\n') == NULL) + { + char altbuf[BUFSIZ]; + do + if (fgets (altbuf, sizeof altbuf, fp) == NULL) + /* Make sure the inner loop will be left. The outer loop + will exit at the `feof' test. */ + break; + while (strchr (altbuf, '\n') == NULL); + } + + cp = buf; + /* Ignore leading white space. */ + while (isspace (cp[0])) + ++cp; + + /* A leading '#' signals a comment line. */ + if (cp[0] != '\0' && cp[0] != '#') + { + alias = cp++; + while (cp[0] != '\0' && !isspace (cp[0])) + ++cp; + /* Terminate alias name. */ + if (cp[0] != '\0') + *cp++ = '\0'; + + /* Now look for the beginning of the value. */ + while (isspace (cp[0])) + ++cp; + + if (cp[0] != '\0') + { + size_t alias_len; + size_t value_len; + + value = cp++; + while (cp[0] != '\0' && !isspace (cp[0])) + ++cp; + /* Terminate value. */ + if (cp[0] == '\n') + { + /* This has to be done to make the following test + for the end of line possible. We are looking for + the terminating '\n' which do not overwrite here. */ + *cp++ = '\0'; + *cp = '\n'; + } + else if (cp[0] != '\0') + *cp++ = '\0'; + + if (nmap >= maxmap) + if (__builtin_expect (extend_alias_table (), 0)) + return added; + + alias_len = strlen (alias) + 1; + value_len = strlen (value) + 1; + + if (string_space_act + alias_len + value_len > string_space_max) + { + /* Increase size of memory pool. */ + size_t new_size = (string_space_max + + (alias_len + value_len > 1024 + ? alias_len + value_len : 1024)); + char *new_pool = (char *) realloc (string_space, new_size); + if (new_pool == NULL) + return added; + + if (__builtin_expect (string_space != new_pool, 0)) + { + size_t i; + + for (i = 0; i < nmap; i++) + { + map[i].alias += new_pool - string_space; + map[i].value += new_pool - string_space; + } + } + + string_space = new_pool; + string_space_max = new_size; + } + + map[nmap].alias = memcpy (&string_space[string_space_act], + alias, alias_len); + string_space_act += alias_len; + + map[nmap].value = memcpy (&string_space[string_space_act], + value, value_len); + string_space_act += value_len; + + ++nmap; + ++added; + } + } + } + + /* Should we test for ferror()? I think we have to silently ignore + errors. --drepper */ + fclose (fp); + + if (added > 0) + qsort (map, nmap, sizeof (struct alias_map), + (int (*) PARAMS ((const void *, const void *))) alias_compare); + + return added; +} + + +static int +extend_alias_table () +{ + size_t new_size; + struct alias_map *new_map; + + new_size = maxmap == 0 ? 100 : 2 * maxmap; + new_map = (struct alias_map *) realloc (map, (new_size + * sizeof (struct alias_map))); + if (new_map == NULL) + /* Simply don't extend: we don't have any more core. */ + return -1; + + map = new_map; + maxmap = new_size; + return 0; +} + + +#ifdef _LIBC +static void __attribute__ ((unused)) +free_mem (void) +{ + if (string_space != NULL) + free (string_space); + if (map != NULL) + free (map); +} +text_set_element (__libc_subfreeres, free_mem); +#endif + + +static int +alias_compare (map1, map2) + const struct alias_map *map1; + const struct alias_map *map2; +{ +#if defined _LIBC || defined HAVE_STRCASECMP + return strcasecmp (map1->alias, map2->alias); +#else + const unsigned char *p1 = (const unsigned char *) map1->alias; + const unsigned char *p2 = (const unsigned char *) map2->alias; + unsigned char c1, c2; + + if (p1 == p2) + return 0; + + do + { + /* I know this seems to be odd but the tolower() function in + some systems libc cannot handle nonalpha characters. */ + c1 = isupper (*p1) ? tolower (*p1) : *p1; + c2 = isupper (*p2) ? tolower (*p2) : *p2; + if (c1 == '\0') + break; + ++p1; + ++p2; + } + while (c1 == c2); + + return c1 - c2; +#endif +} diff --git a/intl/ngettext.c b/intl/ngettext.c new file mode 100644 index 0000000..8b1fa02 --- /dev/null +++ b/intl/ngettext.c @@ -0,0 +1,67 @@ +/* Implementation of ngettext(3) function. + Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define __need_NULL +# include +#else +# include /* Just for NULL. */ +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +#include + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define NGETTEXT __ngettext +# define DCNGETTEXT __dcngettext +#else +# define NGETTEXT ngettext__ +# define DCNGETTEXT dcngettext__ +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +char * +NGETTEXT (msgid1, msgid2, n) + const char *msgid1; + const char *msgid2; + unsigned long int n; +{ + return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__ngettext, ngettext); +#endif diff --git a/intl/plural.c b/intl/plural.c new file mode 100644 index 0000000..8191335 --- /dev/null +++ b/intl/plural.c @@ -0,0 +1,1325 @@ + +/* A Bison parser, made from plural.y + by GNU Bison version 1.28 */ + +#define YYBISON 1 /* Identify Bison output. */ + +#define yyparse __gettextparse +#define yylex __gettextlex +#define yyerror __gettexterror +#define yylval __gettextlval +#define yychar __gettextchar +#define yydebug __gettextdebug +#define yynerrs __gettextnerrs +#define EQUOP2 257 +#define CMPOP2 258 +#define ADDOP2 259 +#define MULOP2 260 +#define NUMBER 261 + +#line 1 "plural.y" + +/* Expression parsing for plural form selection. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* The bison generated parser uses alloca. AIX 3 forces us to put this + declaration at the beginning of the file. The declaration in bison's + skeleton file comes too late. This must come before + because may include arbitrary system headers. */ +#if defined _AIX && !defined __GNUC__ + #pragma alloca +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include "gettextP.h" + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define FREE_EXPRESSION __gettext_free_exp +#else +# define FREE_EXPRESSION gettext_free_exp__ +# define __gettextparse gettextparse__ +#endif + +#define YYLEX_PARAM &((struct parse_args *) arg)->cp +#define YYPARSE_PARAM arg + +#line 52 "plural.y" +typedef union { + unsigned long int num; + enum operator op; + struct expression *exp; +} YYSTYPE; +#line 58 "plural.y" + +/* Prototypes for local functions. */ +static struct expression *new_exp PARAMS ((int nargs, enum operator op, + struct expression * const *args)); +static inline struct expression *new_exp_0 PARAMS ((enum operator op)); +static inline struct expression *new_exp_1 PARAMS ((enum operator op, + struct expression *right)); +static struct expression *new_exp_2 PARAMS ((enum operator op, + struct expression *left, + struct expression *right)); +static inline struct expression *new_exp_3 PARAMS ((enum operator op, + struct expression *bexp, + struct expression *tbranch, + struct expression *fbranch)); +static int yylex PARAMS ((YYSTYPE *lval, const char **pexp)); +static void yyerror PARAMS ((const char *str)); + +/* Allocation of expressions. */ + +static struct expression * +new_exp (nargs, op, args) + int nargs; + enum operator op; + struct expression * const *args; +{ + int i; + struct expression *newp; + + /* If any of the argument could not be malloc'ed, just return NULL. */ + for (i = nargs - 1; i >= 0; i--) + if (args[i] == NULL) + goto fail; + + /* Allocate a new expression. */ + newp = (struct expression *) malloc (sizeof (*newp)); + if (newp != NULL) + { + newp->nargs = nargs; + newp->operation = op; + for (i = nargs - 1; i >= 0; i--) + newp->val.args[i] = args[i]; + return newp; + } + + fail: + for (i = nargs - 1; i >= 0; i--) + FREE_EXPRESSION (args[i]); + + return NULL; +} + +static inline struct expression * +new_exp_0 (op) + enum operator op; +{ + return new_exp (0, op, NULL); +} + +static inline struct expression * +new_exp_1 (op, right) + enum operator op; + struct expression *right; +{ + struct expression *args[1]; + + args[0] = right; + return new_exp (1, op, args); +} + +static struct expression * +new_exp_2 (op, left, right) + enum operator op; + struct expression *left; + struct expression *right; +{ + struct expression *args[2]; + + args[0] = left; + args[1] = right; + return new_exp (2, op, args); +} + +static inline struct expression * +new_exp_3 (op, bexp, tbranch, fbranch) + enum operator op; + struct expression *bexp; + struct expression *tbranch; + struct expression *fbranch; +{ + struct expression *args[3]; + + args[0] = bexp; + args[1] = tbranch; + args[2] = fbranch; + return new_exp (3, op, args); +} + +#include + +#ifndef __cplusplus +#ifndef __STDC__ +#define const +#endif +#endif + + + +#define YYFINAL 27 +#define YYFLAG -32768 +#define YYNTBASE 16 + +#define YYTRANSLATE(x) ((unsigned)(x) <= 261 ? yytranslate[x] : 18) + +static const char yytranslate[] = { 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 10, 2, 2, 2, 2, 5, 2, 14, + 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 12, 2, 2, + 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 13, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 6, 7, 8, 9, + 11 +}; + +#if YYDEBUG != 0 +static const short yyprhs[] = { 0, + 0, 2, 8, 12, 16, 20, 24, 28, 32, 35, + 37, 39 +}; + +static const short yyrhs[] = { 17, + 0, 17, 3, 17, 12, 17, 0, 17, 4, 17, + 0, 17, 5, 17, 0, 17, 6, 17, 0, 17, + 7, 17, 0, 17, 8, 17, 0, 17, 9, 17, + 0, 10, 17, 0, 13, 0, 11, 0, 14, 17, + 15, 0 +}; + +#endif + +#if YYDEBUG != 0 +static const short yyrline[] = { 0, + 177, 185, 189, 193, 197, 201, 205, 209, 213, 217, + 221, 226 +}; +#endif + + +#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) + +static const char * const yytname[] = { "$","error","$undefined.","'?'","'|'", +"'&'","EQUOP2","CMPOP2","ADDOP2","MULOP2","'!'","NUMBER","':'","'n'","'('","')'", +"start","exp", NULL +}; +#endif + +static const short yyr1[] = { 0, + 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17 +}; + +static const short yyr2[] = { 0, + 1, 5, 3, 3, 3, 3, 3, 3, 2, 1, + 1, 3 +}; + +static const short yydefact[] = { 0, + 0, 11, 10, 0, 1, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 0, 3, 4, 5, 6, + 7, 8, 0, 2, 0, 0, 0 +}; + +static const short yydefgoto[] = { 25, + 5 +}; + +static const short yypact[] = { -9, + -9,-32768,-32768, -9, 34,-32768, 11, -9, -9, -9, + -9, -9, -9, -9,-32768, 24, 39, 43, 16, 26, + -3,-32768, -9, 34, 21, 53,-32768 +}; + +static const short yypgoto[] = {-32768, + -1 +}; + + +#define YYLAST 53 + + +static const short yytable[] = { 6, + 1, 2, 7, 3, 4, 14, 16, 17, 18, 19, + 20, 21, 22, 8, 9, 10, 11, 12, 13, 14, + 26, 24, 12, 13, 14, 15, 8, 9, 10, 11, + 12, 13, 14, 13, 14, 23, 8, 9, 10, 11, + 12, 13, 14, 10, 11, 12, 13, 14, 11, 12, + 13, 14, 27 +}; + +static const short yycheck[] = { 1, + 10, 11, 4, 13, 14, 9, 8, 9, 10, 11, + 12, 13, 14, 3, 4, 5, 6, 7, 8, 9, + 0, 23, 7, 8, 9, 15, 3, 4, 5, 6, + 7, 8, 9, 8, 9, 12, 3, 4, 5, 6, + 7, 8, 9, 5, 6, 7, 8, 9, 6, 7, + 8, 9, 0 +}; +#define YYPURE 1 + +/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ +#line 3 "/home/haible/gnu/arch/linuxlibc6/share/bison.simple" +/* This file comes from bison-1.28. */ + +/* Skeleton output parser for bison, + Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ + +/* This is the parser code that is written into each bison parser + when the %semantic_parser declaration is not specified in the grammar. + It was written by Richard Stallman by simplifying the hairy parser + used when %semantic_parser is specified. */ + +#ifndef YYSTACK_USE_ALLOCA +#ifdef alloca +#define YYSTACK_USE_ALLOCA +#else /* alloca not defined */ +#ifdef __GNUC__ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca +#else /* not GNU C. */ +#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) +#define YYSTACK_USE_ALLOCA +#include +#else /* not sparc */ +/* We think this test detects Watcom and Microsoft C. */ +/* This used to test MSDOS, but that is a bad idea + since that symbol is in the user namespace. */ +#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) +#if 0 /* No need for malloc.h, which pollutes the namespace; + instead, just don't use alloca. */ +#include +#endif +#else /* not MSDOS, or __TURBOC__ */ +#if defined(_AIX) +/* I don't know what this was needed for, but it pollutes the namespace. + So I turned it off. rms, 2 May 1997. */ +/* #include */ + #pragma alloca +#define YYSTACK_USE_ALLOCA +#else /* not MSDOS, or __TURBOC__, or _AIX */ +#if 0 +#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, + and on HPUX 10. Eventually we can turn this on. */ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca +#endif /* __hpux */ +#endif +#endif /* not _AIX */ +#endif /* not MSDOS, or __TURBOC__ */ +#endif /* not sparc */ +#endif /* not GNU C */ +#endif /* alloca not defined */ +#endif /* YYSTACK_USE_ALLOCA not defined */ + +#ifdef YYSTACK_USE_ALLOCA +#define YYSTACK_ALLOC alloca +#else +#define YYSTACK_ALLOC malloc +#endif + +/* Note: there must be only one dollar sign in this file. + It is replaced by the list of actions, each action + as one case of the switch. */ + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY -2 +#define YYEOF 0 +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrlab1 +/* Like YYERROR except do call yyerror. + This remains here temporarily to ease the + transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ +#define YYFAIL goto yyerrlab +#define YYRECOVERING() (!!yyerrstatus) +#define YYBACKUP(token, value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { yychar = (token), yylval = (value); \ + yychar1 = YYTRANSLATE (yychar); \ + YYPOPSTACK; \ + goto yybackup; \ + } \ + else \ + { yyerror ("syntax error: cannot back up"); YYERROR; } \ +while (0) + +#define YYTERROR 1 +#define YYERRCODE 256 + +#ifndef YYPURE +#define YYLEX yylex() +#endif + +#ifdef YYPURE +#ifdef YYLSP_NEEDED +#ifdef YYLEX_PARAM +#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) +#else +#define YYLEX yylex(&yylval, &yylloc) +#endif +#else /* not YYLSP_NEEDED */ +#ifdef YYLEX_PARAM +#define YYLEX yylex(&yylval, YYLEX_PARAM) +#else +#define YYLEX yylex(&yylval) +#endif +#endif /* not YYLSP_NEEDED */ +#endif + +/* If nonreentrant, generate the variables here */ + +#ifndef YYPURE + +int yychar; /* the lookahead symbol */ +YYSTYPE yylval; /* the semantic value of the */ + /* lookahead symbol */ + +#ifdef YYLSP_NEEDED +YYLTYPE yylloc; /* location data for the lookahead */ + /* symbol */ +#endif + +int yynerrs; /* number of parse errors so far */ +#endif /* not YYPURE */ + +#if YYDEBUG != 0 +int yydebug; /* nonzero means print parse trace */ +/* Since this is uninitialized, it does not stop multiple parsers + from coexisting. */ +#endif + +/* YYINITDEPTH indicates the initial size of the parser's stacks */ + +#ifndef YYINITDEPTH +#define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH is the maximum size the stacks can grow to + (effective only if the built-in stack extension method is used). */ + +#if YYMAXDEPTH == 0 +#undef YYMAXDEPTH +#endif + +#ifndef YYMAXDEPTH +#define YYMAXDEPTH 10000 +#endif + +/* Define __yy_memcpy. Note that the size argument + should be passed with type unsigned int, because that is what the non-GCC + definitions require. With GCC, __builtin_memcpy takes an arg + of type size_t, but it can handle unsigned int. */ + +#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ +#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) +#else /* not GNU C or C++ */ +#ifndef __cplusplus + +/* This is the most reliable way to avoid incompatibilities + in available built-in functions on various systems. */ +static void +__yy_memcpy (to, from, count) + char *to; + char *from; + unsigned int count; +{ + register char *f = from; + register char *t = to; + register int i = count; + + while (i-- > 0) + *t++ = *f++; +} + +#else /* __cplusplus */ + +/* This is the most reliable way to avoid incompatibilities + in available built-in functions on various systems. */ +static void +__yy_memcpy (char *to, char *from, unsigned int count) +{ + register char *t = to; + register char *f = from; + register int i = count; + + while (i-- > 0) + *t++ = *f++; +} + +#endif +#endif + +#line 217 "/home/haible/gnu/arch/linuxlibc6/share/bison.simple" + +/* The user can define YYPARSE_PARAM as the name of an argument to be passed + into yyparse. The argument should have type void *. + It should actually point to an object. + Grammar actions can access the variable by casting it + to the proper pointer type. */ + +#ifdef YYPARSE_PARAM +#ifdef __cplusplus +#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM +#define YYPARSE_PARAM_DECL +#else /* not __cplusplus */ +#define YYPARSE_PARAM_ARG YYPARSE_PARAM +#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; +#endif /* not __cplusplus */ +#else /* not YYPARSE_PARAM */ +#define YYPARSE_PARAM_ARG +#define YYPARSE_PARAM_DECL +#endif /* not YYPARSE_PARAM */ + +/* Prevent warning if -Wstrict-prototypes. */ +#ifdef __GNUC__ +#ifdef YYPARSE_PARAM +int yyparse (void *); +#else +int yyparse (void); +#endif +#endif + +int +yyparse(YYPARSE_PARAM_ARG) + YYPARSE_PARAM_DECL +{ + register int yystate; + register int yyn; + register short *yyssp; + register YYSTYPE *yyvsp; + int yyerrstatus; /* number of tokens to shift before error messages enabled */ + int yychar1 = 0; /* lookahead token as an internal (translated) token number */ + + short yyssa[YYINITDEPTH]; /* the state stack */ + YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ + + short *yyss = yyssa; /* refer to the stacks thru separate pointers */ + YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ + +#ifdef YYLSP_NEEDED + YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ + YYLTYPE *yyls = yylsa; + YYLTYPE *yylsp; + +#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) +#else +#define YYPOPSTACK (yyvsp--, yyssp--) +#endif + + int yystacksize = YYINITDEPTH; + int yyfree_stacks = 0; + +#ifdef YYPURE + int yychar; + YYSTYPE yylval; + int yynerrs; +#ifdef YYLSP_NEEDED + YYLTYPE yylloc; +#endif +#endif + + YYSTYPE yyval; /* the variable used to return */ + /* semantic values from the action */ + /* routines */ + + int yylen; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Starting parse\n"); +#endif + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss - 1; + yyvsp = yyvs; +#ifdef YYLSP_NEEDED + yylsp = yyls; +#endif + +/* Push a new state, which is found in yystate . */ +/* In all cases, when you get here, the value and location stacks + have just been pushed. so pushing a state here evens the stacks. */ +yynewstate: + + *++yyssp = yystate; + + if (yyssp >= yyss + yystacksize - 1) + { + /* Give user a chance to reallocate the stack */ + /* Use copies of these so that the &'s don't force the real ones into memory. */ + YYSTYPE *yyvs1 = yyvs; + short *yyss1 = yyss; +#ifdef YYLSP_NEEDED + YYLTYPE *yyls1 = yyls; +#endif + + /* Get the current used size of the three stacks, in elements. */ + int size = yyssp - yyss + 1; + +#ifdef yyoverflow + /* Each stack pointer address is followed by the size of + the data in use in that stack, in bytes. */ +#ifdef YYLSP_NEEDED + /* This used to be a conditional around just the two extra args, + but that might be undefined if yyoverflow is a macro. */ + yyoverflow("parser stack overflow", + &yyss1, size * sizeof (*yyssp), + &yyvs1, size * sizeof (*yyvsp), + &yyls1, size * sizeof (*yylsp), + &yystacksize); +#else + yyoverflow("parser stack overflow", + &yyss1, size * sizeof (*yyssp), + &yyvs1, size * sizeof (*yyvsp), + &yystacksize); +#endif + + yyss = yyss1; yyvs = yyvs1; +#ifdef YYLSP_NEEDED + yyls = yyls1; +#endif +#else /* no yyoverflow */ + /* Extend the stack our own way. */ + if (yystacksize >= YYMAXDEPTH) + { + yyerror("parser stack overflow"); + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 2; + } + yystacksize *= 2; + if (yystacksize > YYMAXDEPTH) + yystacksize = YYMAXDEPTH; +#ifndef YYSTACK_USE_ALLOCA + yyfree_stacks = 1; +#endif + yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); + __yy_memcpy ((char *)yyss, (char *)yyss1, + size * (unsigned int) sizeof (*yyssp)); + yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); + __yy_memcpy ((char *)yyvs, (char *)yyvs1, + size * (unsigned int) sizeof (*yyvsp)); +#ifdef YYLSP_NEEDED + yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); + __yy_memcpy ((char *)yyls, (char *)yyls1, + size * (unsigned int) sizeof (*yylsp)); +#endif +#endif /* no yyoverflow */ + + yyssp = yyss + size - 1; + yyvsp = yyvs + size - 1; +#ifdef YYLSP_NEEDED + yylsp = yyls + size - 1; +#endif + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Stack size increased to %d\n", yystacksize); +#endif + + if (yyssp >= yyss + yystacksize - 1) + YYABORT; + } + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Entering state %d\n", yystate); +#endif + + goto yybackup; + yybackup: + +/* Do appropriate processing given the current state. */ +/* Read a lookahead token if we need one and don't already have one. */ +/* yyresume: */ + + /* First try to decide what to do without reference to lookahead token. */ + + yyn = yypact[yystate]; + if (yyn == YYFLAG) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* yychar is either YYEMPTY or YYEOF + or a valid token in external form. */ + + if (yychar == YYEMPTY) + { +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Reading a token: "); +#endif + yychar = YYLEX; + } + + /* Convert token to internal form (in yychar1) for indexing tables with */ + + if (yychar <= 0) /* This means end of input. */ + { + yychar1 = 0; + yychar = YYEOF; /* Don't call YYLEX any more */ + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Now at end of input.\n"); +#endif + } + else + { + yychar1 = YYTRANSLATE(yychar); + +#if YYDEBUG != 0 + if (yydebug) + { + fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); + /* Give the individual parser a way to print the precise meaning + of a token, for further debugging info. */ +#ifdef YYPRINT + YYPRINT (stderr, yychar, yylval); +#endif + fprintf (stderr, ")\n"); + } +#endif + } + + yyn += yychar1; + if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) + goto yydefault; + + yyn = yytable[yyn]; + + /* yyn is what to do for this token type in this state. + Negative => reduce, -yyn is rule number. + Positive => shift, yyn is new state. + New state is final state => don't bother to shift, + just return success. + 0, or most negative number => error. */ + + if (yyn < 0) + { + if (yyn == YYFLAG) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + else if (yyn == 0) + goto yyerrlab; + + if (yyn == YYFINAL) + YYACCEPT; + + /* Shift the lookahead token. */ + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); +#endif + + /* Discard the token being shifted unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + *++yyvsp = yylval; +#ifdef YYLSP_NEEDED + *++yylsp = yylloc; +#endif + + /* count tokens shifted since error; after three, turn off error status. */ + if (yyerrstatus) yyerrstatus--; + + yystate = yyn; + goto yynewstate; + +/* Do the default action for the current state. */ +yydefault: + + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + +/* Do a reduction. yyn is the number of a rule to reduce with. */ +yyreduce: + yylen = yyr2[yyn]; + if (yylen > 0) + yyval = yyvsp[1-yylen]; /* implement default value of the action */ + +#if YYDEBUG != 0 + if (yydebug) + { + int i; + + fprintf (stderr, "Reducing via rule %d (line %d), ", + yyn, yyrline[yyn]); + + /* Print the symbols being reduced, and their result. */ + for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) + fprintf (stderr, "%s ", yytname[yyrhs[i]]); + fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); + } +#endif + + + switch (yyn) { + +case 1: +#line 178 "plural.y" +{ + if (yyvsp[0].exp == NULL) + YYABORT; + ((struct parse_args *) arg)->res = yyvsp[0].exp; + ; + break;} +case 2: +#line 186 "plural.y" +{ + yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 3: +#line 190 "plural.y" +{ + yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 4: +#line 194 "plural.y" +{ + yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 5: +#line 198 "plural.y" +{ + yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 6: +#line 202 "plural.y" +{ + yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 7: +#line 206 "plural.y" +{ + yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 8: +#line 210 "plural.y" +{ + yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 9: +#line 214 "plural.y" +{ + yyval.exp = new_exp_1 (lnot, yyvsp[0].exp); + ; + break;} +case 10: +#line 218 "plural.y" +{ + yyval.exp = new_exp_0 (var); + ; + break;} +case 11: +#line 222 "plural.y" +{ + if ((yyval.exp = new_exp_0 (num)) != NULL) + yyval.exp->val.num = yyvsp[0].num; + ; + break;} +case 12: +#line 227 "plural.y" +{ + yyval.exp = yyvsp[-1].exp; + ; + break;} +} + /* the action file gets copied in in place of this dollarsign */ +#line 543 "/home/haible/gnu/arch/linuxlibc6/share/bison.simple" + + yyvsp -= yylen; + yyssp -= yylen; +#ifdef YYLSP_NEEDED + yylsp -= yylen; +#endif + +#if YYDEBUG != 0 + if (yydebug) + { + short *ssp1 = yyss - 1; + fprintf (stderr, "state stack now"); + while (ssp1 != yyssp) + fprintf (stderr, " %d", *++ssp1); + fprintf (stderr, "\n"); + } +#endif + + *++yyvsp = yyval; + +#ifdef YYLSP_NEEDED + yylsp++; + if (yylen == 0) + { + yylsp->first_line = yylloc.first_line; + yylsp->first_column = yylloc.first_column; + yylsp->last_line = (yylsp-1)->last_line; + yylsp->last_column = (yylsp-1)->last_column; + yylsp->text = 0; + } + else + { + yylsp->last_line = (yylsp+yylen-1)->last_line; + yylsp->last_column = (yylsp+yylen-1)->last_column; + } +#endif + + /* Now "shift" the result of the reduction. + Determine what state that goes to, + based on the state we popped back to + and the rule number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTBASE] + *yyssp; + if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTBASE]; + + goto yynewstate; + +yyerrlab: /* here on detecting error */ + + if (! yyerrstatus) + /* If not already recovering from an error, report this error. */ + { + ++yynerrs; + +#ifdef YYERROR_VERBOSE + yyn = yypact[yystate]; + + if (yyn > YYFLAG && yyn < YYLAST) + { + int size = 0; + char *msg; + int x, count; + + count = 0; + /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ + for (x = (yyn < 0 ? -yyn : 0); + x < (sizeof(yytname) / sizeof(char *)); x++) + if (yycheck[x + yyn] == x) + size += strlen(yytname[x]) + 15, count++; + msg = (char *) malloc(size + 15); + if (msg != 0) + { + strcpy(msg, "parse error"); + + if (count < 5) + { + count = 0; + for (x = (yyn < 0 ? -yyn : 0); + x < (sizeof(yytname) / sizeof(char *)); x++) + if (yycheck[x + yyn] == x) + { + strcat(msg, count == 0 ? ", expecting `" : " or `"); + strcat(msg, yytname[x]); + strcat(msg, "'"); + count++; + } + } + yyerror(msg); + free(msg); + } + else + yyerror ("parse error; also virtual memory exceeded"); + } + else +#endif /* YYERROR_VERBOSE */ + yyerror("parse error"); + } + + goto yyerrlab1; +yyerrlab1: /* here on error raised explicitly by an action */ + + if (yyerrstatus == 3) + { + /* if just tried and failed to reuse lookahead token after an error, discard it. */ + + /* return failure if at end of input */ + if (yychar == YYEOF) + YYABORT; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); +#endif + + yychar = YYEMPTY; + } + + /* Else will try to reuse lookahead token + after shifting the error token. */ + + yyerrstatus = 3; /* Each real token shifted decrements this */ + + goto yyerrhandle; + +yyerrdefault: /* current state does not do anything special for the error token. */ + +#if 0 + /* This is wrong; only states that explicitly want error tokens + should shift them. */ + yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ + if (yyn) goto yydefault; +#endif + +yyerrpop: /* pop the current state because it cannot handle the error token */ + + if (yyssp == yyss) YYABORT; + yyvsp--; + yystate = *--yyssp; +#ifdef YYLSP_NEEDED + yylsp--; +#endif + +#if YYDEBUG != 0 + if (yydebug) + { + short *ssp1 = yyss - 1; + fprintf (stderr, "Error: state stack now"); + while (ssp1 != yyssp) + fprintf (stderr, " %d", *++ssp1); + fprintf (stderr, "\n"); + } +#endif + +yyerrhandle: + + yyn = yypact[yystate]; + if (yyn == YYFLAG) + goto yyerrdefault; + + yyn += YYTERROR; + if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) + goto yyerrdefault; + + yyn = yytable[yyn]; + if (yyn < 0) + { + if (yyn == YYFLAG) + goto yyerrpop; + yyn = -yyn; + goto yyreduce; + } + else if (yyn == 0) + goto yyerrpop; + + if (yyn == YYFINAL) + YYACCEPT; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Shifting error token, "); +#endif + + *++yyvsp = yylval; +#ifdef YYLSP_NEEDED + *++yylsp = yylloc; +#endif + + yystate = yyn; + goto yynewstate; + + yyacceptlab: + /* YYACCEPT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 0; + + yyabortlab: + /* YYABORT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 1; +} +#line 232 "plural.y" + + +void +internal_function +FREE_EXPRESSION (exp) + struct expression *exp; +{ + if (exp == NULL) + return; + + /* Handle the recursive case. */ + switch (exp->nargs) + { + case 3: + FREE_EXPRESSION (exp->val.args[2]); + /* FALLTHROUGH */ + case 2: + FREE_EXPRESSION (exp->val.args[1]); + /* FALLTHROUGH */ + case 1: + FREE_EXPRESSION (exp->val.args[0]); + /* FALLTHROUGH */ + default: + break; + } + + free (exp); +} + + +static int +yylex (lval, pexp) + YYSTYPE *lval; + const char **pexp; +{ + const char *exp = *pexp; + int result; + + while (1) + { + if (exp[0] == '\0') + { + *pexp = exp; + return YYEOF; + } + + if (exp[0] != ' ' && exp[0] != '\t') + break; + + ++exp; + } + + result = *exp++; + switch (result) + { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + { + unsigned long int n = result - '0'; + while (exp[0] >= '0' && exp[0] <= '9') + { + n *= 10; + n += exp[0] - '0'; + ++exp; + } + lval->num = n; + result = NUMBER; + } + break; + + case '=': + if (exp[0] == '=') + { + ++exp; + lval->op = equal; + result = EQUOP2; + } + else + result = YYERRCODE; + break; + + case '!': + if (exp[0] == '=') + { + ++exp; + lval->op = not_equal; + result = EQUOP2; + } + break; + + case '&': + case '|': + if (exp[0] == result) + ++exp; + else + result = YYERRCODE; + break; + + case '<': + if (exp[0] == '=') + { + ++exp; + lval->op = less_or_equal; + } + else + lval->op = less_than; + result = CMPOP2; + break; + + case '>': + if (exp[0] == '=') + { + ++exp; + lval->op = greater_or_equal; + } + else + lval->op = greater_than; + result = CMPOP2; + break; + + case '*': + lval->op = mult; + result = MULOP2; + break; + + case '/': + lval->op = divide; + result = MULOP2; + break; + + case '%': + lval->op = module; + result = MULOP2; + break; + + case '+': + lval->op = plus; + result = ADDOP2; + break; + + case '-': + lval->op = minus; + result = ADDOP2; + break; + + case 'n': + case '?': + case ':': + case '(': + case ')': + /* Nothing, just return the character. */ + break; + + case ';': + case '\n': + case '\0': + /* Be safe and let the user call this function again. */ + --exp; + result = YYEOF; + break; + + default: + result = YYERRCODE; +#if YYDEBUG != 0 + --exp; +#endif + break; + } + + *pexp = exp; + + return result; +} + + +static void +yyerror (str) + const char *str; +{ + /* Do nothing. We don't print error messages here. */ +} diff --git a/intl/plural.y b/intl/plural.y new file mode 100644 index 0000000..42ffa0e --- /dev/null +++ b/intl/plural.y @@ -0,0 +1,412 @@ +%{ +/* Expression parsing for plural form selection. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* The bison generated parser uses alloca. AIX 3 forces us to put this + declaration at the beginning of the file. The declaration in bison's + skeleton file comes too late. This must come before + because may include arbitrary system headers. */ +#if defined _AIX && !defined __GNUC__ + #pragma alloca +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include "gettextP.h" + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define FREE_EXPRESSION __gettext_free_exp +#else +# define FREE_EXPRESSION gettext_free_exp__ +# define __gettextparse gettextparse__ +#endif + +#define YYLEX_PARAM &((struct parse_args *) arg)->cp +#define YYPARSE_PARAM arg +%} +%pure_parser +%expect 10 + +%union { + unsigned long int num; + enum operator op; + struct expression *exp; +} + +%{ +/* Prototypes for local functions. */ +static struct expression *new_exp PARAMS ((int nargs, enum operator op, + struct expression * const *args)); +static inline struct expression *new_exp_0 PARAMS ((enum operator op)); +static inline struct expression *new_exp_1 PARAMS ((enum operator op, + struct expression *right)); +static struct expression *new_exp_2 PARAMS ((enum operator op, + struct expression *left, + struct expression *right)); +static inline struct expression *new_exp_3 PARAMS ((enum operator op, + struct expression *bexp, + struct expression *tbranch, + struct expression *fbranch)); +static int yylex PARAMS ((YYSTYPE *lval, const char **pexp)); +static void yyerror PARAMS ((const char *str)); + +/* Allocation of expressions. */ + +static struct expression * +new_exp (nargs, op, args) + int nargs; + enum operator op; + struct expression * const *args; +{ + int i; + struct expression *newp; + + /* If any of the argument could not be malloc'ed, just return NULL. */ + for (i = nargs - 1; i >= 0; i--) + if (args[i] == NULL) + goto fail; + + /* Allocate a new expression. */ + newp = (struct expression *) malloc (sizeof (*newp)); + if (newp != NULL) + { + newp->nargs = nargs; + newp->operation = op; + for (i = nargs - 1; i >= 0; i--) + newp->val.args[i] = args[i]; + return newp; + } + + fail: + for (i = nargs - 1; i >= 0; i--) + FREE_EXPRESSION (args[i]); + + return NULL; +} + +static inline struct expression * +new_exp_0 (op) + enum operator op; +{ + return new_exp (0, op, NULL); +} + +static inline struct expression * +new_exp_1 (op, right) + enum operator op; + struct expression *right; +{ + struct expression *args[1]; + + args[0] = right; + return new_exp (1, op, args); +} + +static struct expression * +new_exp_2 (op, left, right) + enum operator op; + struct expression *left; + struct expression *right; +{ + struct expression *args[2]; + + args[0] = left; + args[1] = right; + return new_exp (2, op, args); +} + +static inline struct expression * +new_exp_3 (op, bexp, tbranch, fbranch) + enum operator op; + struct expression *bexp; + struct expression *tbranch; + struct expression *fbranch; +{ + struct expression *args[3]; + + args[0] = bexp; + args[1] = tbranch; + args[2] = fbranch; + return new_exp (3, op, args); +} + +%} + +/* This declares that all operators have the same associativity and the + precedence order as in C. See [Harbison, Steele: C, A Reference Manual]. + There is no unary minus and no bitwise operators. + Operators with the same syntactic behaviour have been merged into a single + token, to save space in the array generated by bison. */ +%right '?' /* ? */ +%left '|' /* || */ +%left '&' /* && */ +%left EQUOP2 /* == != */ +%left CMPOP2 /* < > <= >= */ +%left ADDOP2 /* + - */ +%left MULOP2 /* * / % */ +%right '!' /* ! */ + +%token EQUOP2 CMPOP2 ADDOP2 MULOP2 +%token NUMBER +%type exp + +%% + +start: exp + { + if ($1 == NULL) + YYABORT; + ((struct parse_args *) arg)->res = $1; + } + ; + +exp: exp '?' exp ':' exp + { + $$ = new_exp_3 (qmop, $1, $3, $5); + } + | exp '|' exp + { + $$ = new_exp_2 (lor, $1, $3); + } + | exp '&' exp + { + $$ = new_exp_2 (land, $1, $3); + } + | exp EQUOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp CMPOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp ADDOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp MULOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | '!' exp + { + $$ = new_exp_1 (lnot, $2); + } + | 'n' + { + $$ = new_exp_0 (var); + } + | NUMBER + { + if (($$ = new_exp_0 (num)) != NULL) + $$->val.num = $1; + } + | '(' exp ')' + { + $$ = $2; + } + ; + +%% + +void +internal_function +FREE_EXPRESSION (exp) + struct expression *exp; +{ + if (exp == NULL) + return; + + /* Handle the recursive case. */ + switch (exp->nargs) + { + case 3: + FREE_EXPRESSION (exp->val.args[2]); + /* FALLTHROUGH */ + case 2: + FREE_EXPRESSION (exp->val.args[1]); + /* FALLTHROUGH */ + case 1: + FREE_EXPRESSION (exp->val.args[0]); + /* FALLTHROUGH */ + default: + break; + } + + free (exp); +} + + +static int +yylex (lval, pexp) + YYSTYPE *lval; + const char **pexp; +{ + const char *exp = *pexp; + int result; + + while (1) + { + if (exp[0] == '\0') + { + *pexp = exp; + return YYEOF; + } + + if (exp[0] != ' ' && exp[0] != '\t') + break; + + ++exp; + } + + result = *exp++; + switch (result) + { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + { + unsigned long int n = result - '0'; + while (exp[0] >= '0' && exp[0] <= '9') + { + n *= 10; + n += exp[0] - '0'; + ++exp; + } + lval->num = n; + result = NUMBER; + } + break; + + case '=': + if (exp[0] == '=') + { + ++exp; + lval->op = equal; + result = EQUOP2; + } + else + result = YYERRCODE; + break; + + case '!': + if (exp[0] == '=') + { + ++exp; + lval->op = not_equal; + result = EQUOP2; + } + break; + + case '&': + case '|': + if (exp[0] == result) + ++exp; + else + result = YYERRCODE; + break; + + case '<': + if (exp[0] == '=') + { + ++exp; + lval->op = less_or_equal; + } + else + lval->op = less_than; + result = CMPOP2; + break; + + case '>': + if (exp[0] == '=') + { + ++exp; + lval->op = greater_or_equal; + } + else + lval->op = greater_than; + result = CMPOP2; + break; + + case '*': + lval->op = mult; + result = MULOP2; + break; + + case '/': + lval->op = divide; + result = MULOP2; + break; + + case '%': + lval->op = module; + result = MULOP2; + break; + + case '+': + lval->op = plus; + result = ADDOP2; + break; + + case '-': + lval->op = minus; + result = ADDOP2; + break; + + case 'n': + case '?': + case ':': + case '(': + case ')': + /* Nothing, just return the character. */ + break; + + case ';': + case '\n': + case '\0': + /* Be safe and let the user call this function again. */ + --exp; + result = YYEOF; + break; + + default: + result = YYERRCODE; +#if YYDEBUG != 0 + --exp; +#endif + break; + } + + *pexp = exp; + + return result; +} + + +static void +yyerror (str) + const char *str; +{ + /* Do nothing. We don't print error messages here. */ +} diff --git a/intl/po2tbl.sed b/intl/po2tbl.sed new file mode 100644 index 0000000..e69de29 diff --git a/intl/ref-add.sin b/intl/ref-add.sin new file mode 100644 index 0000000..167374e --- /dev/null +++ b/intl/ref-add.sin @@ -0,0 +1,31 @@ +# Add this package to a list of references stored in a text file. +# +# Copyright (C) 2000 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. +# +# Written by Bruno Haible . +# +/^# Packages using this file: / { + s/# Packages using this file:// + ta + :a + s/ @PACKAGE@ / @PACKAGE@ / + tb + s/ $/ @PACKAGE@ / + :b + s/^/# Packages using this file:/ +} diff --git a/intl/ref-del.sin b/intl/ref-del.sin new file mode 100644 index 0000000..613cf37 --- /dev/null +++ b/intl/ref-del.sin @@ -0,0 +1,26 @@ +# Remove this package from a list of references stored in a text file. +# +# Copyright (C) 2000 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. +# +# Written by Bruno Haible . +# +/^# Packages using this file: / { + s/# Packages using this file:// + s/ @PACKAGE@ / / + s/^/# Packages using this file:/ +} diff --git a/intl/textdomain.c b/intl/textdomain.c new file mode 100644 index 0000000..05c2fd7 --- /dev/null +++ b/intl/textdomain.c @@ -0,0 +1,141 @@ +/* Implementation of the textdomain(3) function. + Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif +#include "gettextP.h" + +#ifdef _LIBC +/* We have to handle multi-threaded applications. */ +# include +#else +/* Provide dummy implementation if this is outside glibc. */ +# define __libc_rwlock_define(CLASS, NAME) +# define __libc_rwlock_wrlock(NAME) +# define __libc_rwlock_unlock(NAME) +#endif + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_default_domain _nl_default_default_domain__ +# define _nl_current_default_domain _nl_current_default_domain__ +#endif + +/* @@ end of prolog @@ */ + +/* Name of the default text domain. */ +extern const char _nl_default_default_domain[]; + +/* Default text domain in which entries for gettext(3) are to be found. */ +extern const char *_nl_current_default_domain; + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define TEXTDOMAIN __textdomain +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define TEXTDOMAIN textdomain__ +#endif + +/* Lock variable to protect the global data in the gettext implementation. */ +__libc_rwlock_define (extern, _nl_state_lock) + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +char * +TEXTDOMAIN (domainname) + const char *domainname; +{ + char *new_domain; + char *old_domain; + + /* A NULL pointer requests the current setting. */ + if (domainname == NULL) + return (char *) _nl_current_default_domain; + + __libc_rwlock_wrlock (_nl_state_lock); + + old_domain = (char *) _nl_current_default_domain; + + /* If domain name is the null string set to default domain "messages". */ + if (domainname[0] == '\0' + || strcmp (domainname, _nl_default_default_domain) == 0) + { + _nl_current_default_domain = _nl_default_default_domain; + new_domain = (char *) _nl_current_default_domain; + } + else if (strcmp (domainname, old_domain) == 0) + /* This can happen and people will use it to signal that some + environment variable changed. */ + new_domain = old_domain; + else + { + /* If the following malloc fails `_nl_current_default_domain' + will be NULL. This value will be returned and so signals we + are out of core. */ +#if defined _LIBC || defined HAVE_STRDUP + new_domain = strdup (domainname); +#else + size_t len = strlen (domainname) + 1; + new_domain = (char *) malloc (len); + if (new_domain != NULL) + memcpy (new_domain, domainname, len); +#endif + + if (new_domain != NULL) + _nl_current_default_domain = new_domain; + } + + /* We use this possibility to signal a change of the loaded catalogs + since this is most likely the case and there is no other easy we + to do it. Do it only when the call was successful. */ + if (new_domain != NULL) + { + ++_nl_msg_cat_cntr; + + if (old_domain != new_domain && old_domain != _nl_default_default_domain) + free (old_domain); + } + + __libc_rwlock_unlock (_nl_state_lock); + + return new_domain; +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__textdomain, textdomain); +#endif diff --git a/libprozilla/ABOUT-NLS b/libprozilla/ABOUT-NLS new file mode 100644 index 0000000..28d38c7 --- /dev/null +++ b/libprozilla/ABOUT-NLS @@ -0,0 +1,226 @@ +Notes on the Free Translation Project +************************************* + + Free software is going international! The Free Translation Project +is a way to get maintainers of free software, translators, and users all +together, so that will gradually become able to speak many languages. +A few packages already provide translations for their messages. + + If you found this `ABOUT-NLS' file inside a distribution, you may +assume that the distributed package does use GNU `gettext' internally, +itself available at your nearest GNU archive site. But you do *not* +need to install GNU `gettext' prior to configuring, installing or using +this package with messages translated. + + Installers will find here some useful hints. These notes also +explain how users should proceed for getting the programs to use the +available translations. They tell how people wanting to contribute and +work at translations should contact the appropriate team. + + When reporting bugs in the `intl/' directory or bugs which may be +related to internationalization, you should tell about the version of +`gettext' which is used. The information can be found in the +`intl/VERSION' file, in internationalized packages. + +One advise in advance +===================== + + If you want to exploit the full power of internationalization, you +should configure it using + + ./configure --with-included-gettext + +to force usage of internationalizing routines provided within this +package, despite the existence of internationalizing capabilities in the +operating system where this package is being installed. So far, only +the `gettext' implementation in the GNU C library version 2 provides as +many features (such as locale alias or message inheritance) as the +implementation here. It is also not possible to offer this additional +functionality on top of a `catgets' implementation. Future versions of +GNU `gettext' will very likely convey even more functionality. So it +might be a good idea to change to GNU `gettext' as soon as possible. + + So you need not provide this option if you are using GNU libc 2 or +you have installed a recent copy of the GNU gettext package with the +included `libintl'. + +INSTALL Matters +=============== + + Some packages are "localizable" when properly installed; the +programs they contain can be made to speak your own native language. +Most such packages use GNU `gettext'. Other packages have their own +ways to internationalization, predating GNU `gettext'. + + By default, this package will be installed to allow translation of +messages. It will automatically detect whether the system provides +usable `catgets' (if using this is selected by the installer) or +`gettext' functions. If neither is available, the GNU `gettext' own +library will be used. This library is wholly contained within this +package, usually in the `intl/' subdirectory, so prior installation of +the GNU `gettext' package is *not* required. Installers may use +special options at configuration time for changing the default +behaviour. The commands: + + ./configure --with-included-gettext + ./configure --with-catgets + ./configure --disable-nls + +will respectively bypass any pre-existing `catgets' or `gettext' to use +the internationalizing routines provided within this package, enable +the use of the `catgets' functions (if found on the locale system), or +else, *totally* disable translation of messages. + + When you already have GNU `gettext' installed on your system and run +configure without an option for your new package, `configure' will +probably detect the previously built and installed `libintl.a' file and +will decide to use this. This might be not what is desirable. You +should use the more recent version of the GNU `gettext' library. I.e. +if the file `intl/VERSION' shows that the library which comes with this +package is more recent, you should use + + ./configure --with-included-gettext + +to prevent auto-detection. + + By default the configuration process will not test for the `catgets' +function and therefore they will not be used. The reasons are already +given above: the emulation on top of `catgets' cannot provide all the +extensions provided by the GNU `gettext' library. If you nevertheless +want to use the `catgets' functions use + + ./configure --with-catgets + +to enable the test for `catgets' (this causes no harm if `catgets' is +not available on your system). If you really select this option we +would like to hear about the reasons because we cannot think of any +good one ourself. + + Internationalized packages have usually many `po/LL.po' files, where +LL gives an ISO 639 two-letter code identifying the language. Unless +translations have been forbidden at `configure' time by using the +`--disable-nls' switch, all available translations are installed +together with the package. However, the environment variable `LINGUAS' +may be set, prior to configuration, to limit the installed set. +`LINGUAS' should then contain a space separated list of two-letter +codes, stating which languages are allowed. + +Using This Package +================== + + As a user, if your language has been installed for this package, you +only have to set the `LANG' environment variable to the appropriate +ISO 639 `LL' two-letter code prior to using the programs in the +package. For example, let's suppose that you speak German. At the +shell prompt, merely execute `setenv LANG de' (in `csh'), +`export LANG; LANG=de' (in `sh') or `export LANG=de' (in `bash'). This +can be done from your `.login' or `.profile' file, once and for all. + + An operating system might already offer message localization for +many of its programs, while other programs have been installed locally +with the full capabilities of GNU `gettext'. Just using `gettext' +extended syntax for `LANG' would break proper localization of already +available operating system programs. In this case, users should set +both `LANGUAGE' and `LANG' variables in their environment, as programs +using GNU `gettext' give preference to `LANGUAGE'. For example, some +Swedish users would rather read translations in German than English for +when Swedish is not available. This is easily accomplished by setting +`LANGUAGE' to `sv:de' while leaving `LANG' to `sv'. + +Translating Teams +================= + + For the Free Translation Project to be a success, we need interested +people who like their own language and write it well, and who are also +able to synergize with other translators speaking the same language. +Each translation team has its own mailing list, courtesy of Linux +International. You may reach your translation team at the address +`LL@li.org', replacing LL by the two-letter ISO 639 code for your +language. Language codes are *not* the same as the country codes given +in ISO 3166. The following translation teams exist, as of December +1997: + + Chinese `zh', Czech `cs', Danish `da', Dutch `nl', English `en', + Esperanto `eo', Finnish `fi', French `fr', German `de', Hungarian + `hu', Irish `ga', Italian `it', Indonesian `id', Japanese `ja', + Korean `ko', Latin `la', Norwegian `no', Persian `fa', Polish + `pl', Portuguese `pt', Russian `ru', Slovenian `sl', Spanish `es', + Swedish `sv', and Turkish `tr'. + +For example, you may reach the Chinese translation team by writing to +`zh@li.org'. + + If you'd like to volunteer to *work* at translating messages, you +should become a member of the translating team for your own language. +The subscribing address is *not* the same as the list itself, it has +`-request' appended. For example, speakers of Swedish can send a +message to `sv-request@li.org', having this message body: + + subscribe + + Keep in mind that team members are expected to participate +*actively* in translations, or at solving translational difficulties, +rather than merely lurking around. If your team does not exist yet and +you want to start one, or if you are unsure about what to do or how to +get started, please write to `translation@iro.umontreal.ca' to reach the +coordinator for all translator teams. + + The English team is special. It works at improving and uniformizing +the terminology in use. Proven linguistic skill are praised more than +programming skill, here. + +Available Packages +================== + + Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of December +1997. The matrix shows, in regard of each package, for which languages +PO files have been submitted to translation coordination. + + Ready PO files cs da de en es fi fr it ja ko nl no pl pt ru sl sv + .----------------------------------------------------. + bash | [] [] [] | 3 + bison | [] [] [] | 3 + clisp | [] [] [] [] | 4 + cpio | [] [] [] [] [] [] | 6 + diffutils | [] [] [] [] [] | 5 + enscript | [] [] [] [] [] [] | 6 + fileutils | [] [] [] [] [] [] [] [] [] [] | 10 + findutils | [] [] [] [] [] [] [] [] [] | 9 + flex | [] [] [] [] | 4 + gcal | [] [] [] [] [] | 5 + gettext | [] [] [] [] [] [] [] [] [] [] [] | 12 + grep | [] [] [] [] [] [] [] [] [] [] | 10 + hello | [] [] [] [] [] [] [] [] [] [] [] | 11 + id-utils | [] [] [] | 3 + indent | [] [] [] [] [] | 5 + libc | [] [] [] [] [] [] [] | 7 + m4 | [] [] [] [] [] [] | 6 + make | [] [] [] [] [] [] | 6 + music | [] [] | 2 + ptx | [] [] [] [] [] [] [] [] | 8 + recode | [] [] [] [] [] [] [] [] [] | 9 + sh-utils | [] [] [] [] [] [] [] [] | 8 + sharutils | [] [] [] [] [] [] | 6 + tar | [] [] [] [] [] [] [] [] [] [] [] | 11 + texinfo | [] [] [] | 3 + textutils | [] [] [] [] [] [] [] [] [] | 9 + wdiff | [] [] [] [] [] [] [] [] | 8 + `----------------------------------------------------' + 17 languages cs da de en es fi fr it ja ko nl no pl pt ru sl sv + 27 packages 6 4 25 1 18 1 26 2 1 12 20 9 19 7 4 7 17 179 + + Some counters in the preceding matrix are higher than the number of +visible blocks let us expect. This is because a few extra PO files are +used for implementing regional variants of languages, or language +dialects. + + For a PO file in the matrix above to be effective, the package to +which it applies should also have been internationalized and +distributed as such by its maintainer. There might be an observable +lag between the mere existence a PO file and its wide availability in a +distribution. + + If December 1997 seems to be old, you may fetch a more recent copy +of this `ABOUT-NLS' file on most GNU archive sites. + diff --git a/libprozilla/AUTHORS b/libprozilla/AUTHORS new file mode 100644 index 0000000..2228736 --- /dev/null +++ b/libprozilla/AUTHORS @@ -0,0 +1,21 @@ +------------------------------------------------------------------------------- +Authors +------------------------------------------------------------------------------- + +Main author: +------------ + +Kalum Somaratana + + +Contributions: +-------------- + +Uwe Hermann +Michael Duelli +Gustavo Noronha Silva +Ralph Slooten +Ruben Boer +Flower +Emanuele Tatti + diff --git a/libprozilla/COPYING b/libprozilla/COPYING new file mode 100644 index 0000000..d60c31a --- /dev/null +++ b/libprozilla/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/libprozilla/CREDITS b/libprozilla/CREDITS new file mode 100644 index 0000000..e69de29 diff --git a/libprozilla/CVS/Entries b/libprozilla/CVS/Entries new file mode 100644 index 0000000..1738459 --- /dev/null +++ b/libprozilla/CVS/Entries @@ -0,0 +1,31 @@ +D/docs//// +D/intl//// +D/man//// +D/po//// +D/src//// +/ABOUT-NLS/1.1/Fri Sep 7 09:32:56 2001// +/COPYING/1.1.1.1/Fri Sep 7 09:32:56 2001// +/INSTALL/1.1.1.1/Fri Sep 7 09:32:56 2001// +/Makefile.am/1.5/Fri Sep 7 09:32:56 2001// +/NEWS/1.2/Fri Sep 7 09:32:56 2001// +/README/1.6/Fri Sep 7 09:32:56 2001// +/TODO/1.15/Fri Sep 7 09:32:56 2001// +/acconfig.h/1.2/Fri Sep 7 09:32:56 2001// +/acinclude.m4/1.5/Fri Sep 7 09:32:56 2001// +/config.guess/1.1/Fri Sep 7 09:32:56 2001// +/config.sub/1.1/Fri Sep 7 09:32:56 2001// +/install-sh/1.1.1.1/Fri Sep 7 09:32:56 2001// +/ltconfig/1.1/Fri Sep 7 09:32:56 2001// +/ltmain.sh/1.1/Fri Sep 7 09:32:56 2001// +/missing/1.1.1.1/Fri Sep 7 09:32:56 2001// +/mkinstalldirs/1.2/Fri Sep 7 09:32:56 2001// +/AUTHORS/1.8/Thu Sep 20 07:28:37 2001// +/CREDITS/1.1/Sat Sep 29 05:24:56 2001// +/Makefile.in/1.8/Fri Oct 26 12:13:07 2001// +/aclocal.m4/1.10/Fri Oct 26 12:13:06 2001// +/stamp-h.in/1.1.1.1/Fri Oct 26 12:13:17 2001// +/ChangeLog/1.69/Sun Oct 21 04:35:48 2001// +/config.h.in/1.20/Sun Oct 21 04:30:17 2001// +/configure/1.23/Fri Oct 26 12:13:07 2001// +/configure.in/1.17/Fri Oct 26 12:12:35 2001// +/libtool/1.1/Sat Oct 27 23:17:46 2001// diff --git a/libprozilla/CVS/Repository b/libprozilla/CVS/Repository new file mode 100644 index 0000000..e233930 --- /dev/null +++ b/libprozilla/CVS/Repository @@ -0,0 +1 @@ +libprozilla diff --git a/libprozilla/CVS/Root b/libprozilla/CVS/Root new file mode 100644 index 0000000..0e741fc --- /dev/null +++ b/libprozilla/CVS/Root @@ -0,0 +1 @@ +:pserver:kalum@cvs.delrom.ro:/home/cvsroot diff --git a/libprozilla/ChangeLog b/libprozilla/ChangeLog new file mode 100644 index 0000000..56640fe --- /dev/null +++ b/libprozilla/ChangeLog @@ -0,0 +1,964 @@ +------------------------------------------------------------------------------- +ChangeLog +------------------------------------------------------------------------------- + +2003-02-16 Kalum / Grendel + + * src/download.c: Now the download is to a single file, the old + download to portions was done away with, now it downloads the + segments to a single file thus there is no joining. + +2002-02-02 Kalum / Grendel + + * src/ftpsearch.c: Added support for filesearching.com's type of + search engine. + Eric Lassauge contributed a patch + which added french language support and also fixed my spelling + mistakes as well. + +2001-10-21 Kalum / Grendel + + * Include sys/stat.h + +2001-10-10 Kalum / Grendel + + * src/http.c (ftp_get_url_info_from_http_proxy): Changed to use + GET instead of HEAD to get HTTP info. + +2001-10-10 Kalum / Grendel + * Now the URL parser doesnt touch hex chars. + +2001-10-04 Kalum / Grendel + + * src/ping.c (proz_cancel_mass_ping): Added, cancels a mass ping + request. + +2001-10-03 Kalum / Grendel + + * src/ftpsearch.c: + void proz_cancel_mirror_list_request(ftps_request_t *) + This will cancel a request for getting mirrors. + +2001-09-30 Kalum / Grendel + + * src/download.c (proz_download_join_downloads): Now creates the + joining thread itself. + + * src/prozilla.h: + + uerr_t proz_download_get_join_status(download_t *download); + float proz_download_get_file_build_percentage(download_t * download); + void proz_download_cancel_joining_thread(download_t * download) + + Were added to the library. + * joining_thread added to download_t struct definition; + +2001-09-30 Kalum / Grendel + + * src/connection.c (proz_get_url_info_loop): This now creates the thread that gets info by itself, there is no need to create it by calling pthread as earlier was necessary. + +2001-09-29 Kalum / Grendel + * Improved the consisetncy of the API based on suggestions by + Christophe Fergeau. + + * src/prozilla.h: In the download_t struct, cchanged the + connections pointer type to **, and called it pconnections. + + * src/connection.c (proz_connection_init): Prototype changed to + proz_connection_init(urlinfo *url,pthread_mutex_t * mutex); + + * src/prozilla.h: proz_connection_set_url(connection_t * connection, urlinfo *url) added. + +2001-09-29 Kalum / Grendel + * I have added a function which checks to see whether all the + connections have encountered the same user specified error. + + * Updated libprozillas runtime handling so that it can handle + ftpsearch returned servers that dont support FTP REST. + + +2001-09-28 Kalum / Grendel + + * src/download.c (proz_download_init): boolean + proz_download_all_dls_status, proz_download_all_dls_err we added + and download.c updated accordingly. + +2001-09-28 Kalum / Grendel + + * src/download.h: Added download_query_conns_status_count which + returns the number of connections with the status spcified, and + updated download.c to use it. + +2001-09-27 Kalum / Grendel + + * src/connect.c (connect_to_server): Now uses its own timeout struct + +2001-9-23 Kalum / Grendel + * FTPSearch and pinging and multiple server downloads work, with + error handling too. + + * Bug fix related to not adding the original server if it is not + in the list. + +2001-09-20 Kalum / Grendel + + * src/url.c (proz_copy_url): Added. + + +2001-09-17 Kalum / Grendel + + * src/prozilla.h: mirror_path_t added + + * src/download.c (proz_download_handle_threads): Now handles + FTPCWDFAIL in the main thread. + +2001-09-2 Kalum / Grendel + * Kreazy's itallian translation was added, ping.c, ping.h, + ftpsearch.c and ftpsearch.h were added in preparation to adding + ftpsearch support to the library. + +2001-08-32 Kalum / Grendel + * Gustavo's libtolising patch was added to libprozilla, now shared + libraries can be created. + +2001-08-25 Kalum / Grendel + + * src/ftp.c (proz_ftp_get_url_info): Now the password is printed + as a set of "xxxx"'s when logging in. + +2001-08-21 Kalum / Grendel + + * configure.in: Changed enble compiler warnings from min to no, as + the intl dir was not compiling properly due to the --pedantic + option. + +2001-08-12 Kalum / Grendel + + * src/prozilla.h: int proz_download_delete_target added. + +2001-08-11 Kalum / Grendel + + * src/url.c: Completely updated the source from url.c in wget 1.7, + so now we have improved url parsing. + +2001-08-10 Kalum / Grendel + + * src/prozilla.h: int proz_download_target_exist(download_t * + download) added whcih checks to see whether the target file + exists. + +2001-08-08 Kalum / Grendel + + * src/debug.c void proz_debug_delete_log() added, and now the + logfile is stored as $HOEDIR/.prozilla/debug.log + +2001-08-06 Kalum / Grendel + + * src/download.h: void download_calc_throttle_factor(download_t + *download) + + * src/prozilla.h: dl_status + proz_connection_get_status(connection_t * connection) was added. + +2001-08-05 Kalum / Grendel + + * src/prozilla.h: max_bps_per_dl added to libprozinfo. + + * src/download.c (cleanup_joining_thread): When the files are + joined this will delete the target output file if the thread is + cancelled + +2001-07-31 Kalum / Grendel + + * src/http-retr.c (proz_http_get_file): Fixed a bug which occured + when resuming where prozilla mistakenly identified a server as + returning a wrong contlen. Added another hs strcut called + hs_after_get to do this. + +2001-07-29 Kalum / Grendel + + * src/main.c (proz_init): the dl_dir logfile_dir use local copies + of the dirs + + +2001-07-29 Kalum / Grendel + + * src/logfile.c: the logfile is checked in log_dir now + +2001-07-27 Kalum / Grendel + + * DOcumentation updated. + +2001-07-20 Kalum / Grendel + + * src/download.h: download_any_dls_local_fatal added. + +2001-07-18 Kalum / Grendel + + * src/prozilla.h: output_dir added to the runtime struct this + shows the directory to build the outputfile. + + +2001-07-11 Kalum / Grendel + + * src/main.c: proz_set_connection_retry_delay(struct timeval + *delay) aded. + +2001-07-11 Kalum / Grendel + + * src/download.c (proz_download_init): added a acess_mutex for the + download_t struct + +2001-07-06 + + * src/http.c: support was added for using the no-cache directive + for HTTP proxies. + + * src/prozilla.h: http_no_cache, added. + +2001-07-05 + + * src/download.c (proz_download_free_download): Added, + conditionally frees the data of the download struct + +2001-07-05 + + * src/connection.c (connection_free_connection): Added, + conditionally frees the data in the connection struct. + +2001-07-03 + + * src/download.c (proz_download_get_est_time_left): The tiem left + was not correctly displayed when resuming a download, fixed + this. + +2001-07-02 + + * src/http.c, src/http-retr.c: Support for HTTP proxy servers was + improved, it now works with servers like squid, wwwoffle. + +2001-07-01 + + * src/prozilla.h: added access_mutex to connection_t struct which + is a mutex used to lock acesss to data in the struct that is + accesed/written by other threads + +2001-06-27 + + * src/ftp-retr.c (proz_ftp_get_file): Handles FTPCONREFUSED. + +2001-06-24 + + * src/http.c (cleanup_httpsocks): moved it to http.c from http-retr.c + + * src/ftp.c (cleanup_ftpsocks): moved it to ftp.c from ftp-retr.c + + * src/misc.c (proz_strerror): This function will return a string + representation of prozillas error codes. + +2001-06-22 + + * Updated the GNU gettext sources in the intl diretory to version + gettext-0.10.38. + +2001-06-21 + + * src/url.c (url_merge): Merges a url with another link (which can + be relative or absolute) and returns the resulting URL, this is mainly + used for redirections + +2001-06-21 + + * src/download.c (proz_download_get_average_speed): Rewrote the + function, improving the accuracy. + +2001-06-20 + + * src/ftp-retr.h: added cleanup_ftpsocks which is popped so that + when the thread terminates no unclosed sockets will remain. + + * src/http-retr.h: added cleanup_httpsocks which is popped so that + when the thread terminates no unclosed sockets will remain. + + * src/misc.c (close_sock): Will free a socket and zero the value, + updated all references to close to close_socket + + * src/debug.h (proz_debug): added debug_init which deletes a prior + debug.log file if present. + +2001-06-19 + + * src/ftp.c (proz_ftp_get_url_info): Fixed bug when getting info + about a file + +2001-06-18 + + * src/logfile.c: Changed several functions to proz_log_xxxx and + moved the logfile structure to prozilla.h. + + * (proz_log_read_logfile): Added a boolean type which indicates + whether to load the info about the connections allocation or + not. + +2001-06-16 + + * src/ftpparse.c (size_returner): If the string returned from the + FTP LIST command is 0 or 2 assume that the file is not present + on the server. + +2001-06-16 + + * src/prozilla.h: added long proz_download_get_est_time_left + returns the estimlted download time in secs. + +2001-06-11 + + * src/http-retr.c (proz_http_get_file): Fixed a bug where the data + conenction was not closed when CANTRESUME was detected. + +2001-06-11 + + * src/http.c (ftp_get_url_info_from_http_proxy): Enables getting + FTP file related info through HTTP proxies. + + * src/http-retr.c (ftp_get_file_from_http_proxy): Enables getting + FTP files through HTTP proxies. + +2001-06-07 + + * Added KoV's patch for gettext internatinalisation support + + * src/main.c: Added proz_use_http_proxy proz_use_ftp_proxy + + * src/ftp.c (ftp_login): Fixed a bug related to logging in to ftp + proxies. + +2001-06-02 + + * src/connection.c (proz_get_url_info_loop): Made this thread + immediately cancellable. + +2001-05-30 + * libprozilla has now generic http and ftp download functions, and + has resume support too. Several functions related to + downloading, and handling the nultithreaed downloads were added + to download.c + +2001-05-14 + + * src/connection.c (proz_get_url_info_loop): added + + * src/prozilla.h: added conn_retry_delay to libprozillartinfo + which specifies the retry interval for co9nnenctions added + max_attempts, which is the number of times a connection will be + retried. + +2001-05-10 + * Ran gnu indent with the options "-kr -i2 -bli0 -bl + -nfca" to get the course upto the coding standards. + +2001-05-08 + + * src/ftp.c (proz_ftp_get_url_info): Forgot to close the ctrl_sock + in certain error conditions, FIXED. + + * src/download.c (proz_download_join_downloads): This func will + join the downloaded portions. + +2001-05-06 + + * src/download.c (proz_download_delete_download): This function + will delete the downloaded file portions together with the + downloads logfile. + + * src/prozilla.h (download_t): added boolean type resume_support; + added a extra argument to proz_download_start_downloads, which + specifies whether to load resume info and start the dl. + +Tue May 8 21:15:49 CEST 2001 Uwe Hermann + + * TODO: Removed all 'DONE' entries. Just for testing if CVS + automatically sends mails to prozilla-cvs@delrom.ro upon every + CVS commit... + +2001-05-04 + + * src/http-retr.c (http_loop_handle_error): added. + + * src/ftp-retr.c (ftp_loop_handle_error): added + + * src/prozilla.h: Moved all the proz_xxxx functions to prozilla.h, + and the connection_t and download_t structs and necessary enums + as well. + Now the person who users the library should only have to include + prozilla.h + + * src/download.c (proz_download_get_total_bytes_got): added it. + +2001-05-03 + + * src/prozilla.h (enum): added DLERR, DLOK, DLINPROGRESS as return + types for proz_download_handle_threads + + * src/connection.c (proz_connection_get_total_bytes_got): + Returns the total number of bytes that have been saved to the file + + * src/download.c (proz_download_get_connection): Added. + + * src/connection.c (proz_connection_get_status_string): This will + return a textual representation of the status of a conenction. + + * src/download.h (download_t): Added main_file_size, resume_mode + + * src/download.c (proz_download_init): Changed the type of + connection->status_change_mutex to recursive + + * (proz_download_all_dls_complete): Returns TRUE if all the + connections have been completed + +2001-05-01 + + * src/prozilla.h (enum): rearranged the uerr_t enum for clarity. + +2001-04-30 + + * src/download.c (proz_download_handle_threads):created it to handle the threads. + + * src/connection.c (connection_retr_fsize_known): fixed a bug in which the wrong size wass passed to krecv. + +2001-04-29 + + * src/prozilla.h (libprozinfo): added default_timeout. + +2001-04-27 + + * src/ftp.c (proz_ftp_get_url_info): added additional show_message + function calls. + +2001-04-25 + + * src/url.h: changed parseurl, to proz_parse_url, since it would + be used external routines and updated all sources accordingly + + * Added C++ style #ifdef __cplusplus to all headers + + +2001-04-24 + + * src/connection.h (connection_t): + + * src/prozilla.h (libprozinfo): added dl_dir and log_dir. + + * src/download.h (download_t): added dl_dir [PATH_MAX] which is the base dir to which the file segments will be downloaded to, and log_dir which is the dir to which the log files are saved, currently it is the same as dl_dir but we can change it later. + + * src/download.c (proz_setup_connections_no_ftpsearch): + + * src/misc.c (show_message): added a wrapper for routine to callback a message displaying routine. + + * src/connection.c (connection_retr_fsize_known): + This will open connection->localfile and read from + connection->data_sock (which should be already setup) till the + requested number of bytes are read. + Now since we explicitly know how much bytes to get we can do so, + and is the server closes the connection prematurely we know that + it has hapenned (because it hasn't supplied the required number + of bytes) and return a READERR. + + * src/http-retr.h, src/http-retr.c, src/ftp-retr.h, src/ftp-retr.c: + Initial Import to CVS with support for file transfer. + +2001-04-21 + + * src/prozilla.h (enum): added FILEGETOK, + + * src/connection.c (connection_retr_fsize_not_known): + This will open connection->localfile and read from + connection->data_sock (which should be already setup) till a EOF + is reached or the server closes the connection, in which case there is no way to know + whether we got the complete file. + +Sun Apr 22 17:02:50 CEST 2001 Uwe Hermann + + + * TODO, src/connect.c, src/connection.c, src/connection.h, + src/download.c, src/download.h, src/ftp.c, src/http.c, src/misc.c, + src/prozilla.h, src/test.c: Cosmetic changes and coding-style fixes. + + * docs/HACKING: TABs are allowed in Makefile.am's. + Advise contributors to send + several smaller patches rather than one big patch... + + * src/connect.c, src/connection.c, src/http.c, src/netrc.c, src/url.c, + src/url.h: Use kfree() instead of free() everywhere. + + * src/http.c: Brought up to current coding-standards. Removed casts + of the result of kmalloc() and krealloc(). + + * src/http.h: Added prototypes for all functions in src/http.c. + +2001-04-20 + + * src/download.c: added proz_init_download, and + proz_setup_connections, the prototypes may have to be changed later, I + couldnt figure out this part, I'll start over it once I have the + http/ftp download part of a connection ready. + +2001-04-20 + + * src/test.c (main): Updated the test program a bit to test out + the http proxy code + + * src/http.c (proz_http_get_url_info): Now gets a http urls + attributes, proxy support too added + + * src/http.c: Added support routines to http.c + + * src/connection.h (connection_t): added type http_stat_t for http + + * src/prozilla.h: added struct http_stat_t, and DEFAULT_USER_AGENT + + * src/connection.h (connection_t): added user_agent and + new_location for http + + * src/connection.h (connection_t): added a pointer to a + status_change_mutex, the mutex will be in the download_struct. + +Fri Apr 20 14:32:35 CEST 2001 Uwe Hermann + + * TODO, src/connection.h, src/download.h, src/ftp.c, src/ftp.h, + src/http.c, src/http.h, src/main.c, src/test.c: + Cosmetic changes and coding-style fixes and fixed typos. + + * docs/HACKING: Added an example code segment. + + * src/http.h: Fixed typo which prevented http.o from compiling. + + * src/url.c, src/url.h: Use boolean instead of int where appropriate. + + * src/url.h: Remove prototypes for non-existing functions. Convert + all prototypes to ANSI prototypes, i.e. list the variable names + in the prototype... + +2001-04-20 + + * src/ftp.c (ftp_setup_data_sock_1): moved the code for setting up + a data socket from ftp_get_url_info to here, as we will need + these functions when receiving a file. + + * src/main.c (proz_set_xxx_proxy): wrote it.. + + * src/main.c (proz_shutdown): kfrees libprozrtinfo.xxx_proxy + +2001-04-20 + + * src/http.c, src/http.h: added to repository. + +2001-04-19 + + * src/ftp.h (struct): removed ftp_stat_t + +Thu Apr 19 19:49:30 CEST 2001 Uwe Hermann + + * docs/HACKING: Cosmetic changes. + + * src/test.c: Added a few missing '\n's. If you give an URL on the + commandline use that, otherwise use the hardcoded URL in test.c. + +Thu Apr 19 18:20:47 CEST 2001 Uwe Hermann + + * TODO, src/connect.c, src/connect.h, src/connection.c, + src/connection.h, src/download.h, src/ftp.c, src/ftp.h, src/main.c, + src/misc.c, src/misc.h, src/test.c: + Cosmetic changes and coding style fixes. + + * config.h.in, configure: Autogenerated. + + * docs/HACKING: Several Updates. Added information about indentation + width, brace style, names, TODO, FIXME and NOTE, ChangeLog entries, + comments, automatically generated files and common.h + + * src/prozilla.h: Added the proz_set_http_proxy() and + proz_set_ftp_proxy() again, because I removed them mistakenly. + +2001-04-19 + + * src/connect.h, src/connect.c: Added accept_connection(), should + this file be in ftp.c instead? + + * src/connection.h (connection_t): pasv_addr[6] has mistakenly + been of type timeval, corrected it to unsigned char. + + * src/ftp.h: Added ftp_size(). + + * src/connection.h, src/connection.c: Added proz_init_conection(), + and proz_cleanup_connection(). + + * src/misc.h, src/misc.c: Added kfree() which frees memory if + neccessary. + + * src/test.c: Tests the file size getting code. + +Thu Apr 19 15:32:26 CEST 2001 Uwe Hermann + + * README: Added installation information. + + * TODO: Added item 'Use libtool'. + + * src/connection.h, src/ftp.c, src/ftp.h, src/misc.c, src/misc.h, + src/prozilla.h: Use boolean instead of int where appropriate. + + * src/debug.c: (proz_debug): Automatically add a '\n' to every + debug-message, so you dont need to write proz_debug("foo\n") anymore. + + * src/ftp.c: Log every message sent and received with proz_debug(). + + * src/prozilla.h: Set MAX_MSG_SIZE to 2048. + +Thu Apr 19 06:39:55 CEST 2001 Uwe Hermann + + * AUTHORS: Added Michael Duelli . + + * docs/HACKING: Removed ftpparse.[ch] from the + 'Code from other projects' list. Added URL to glibc download. + + * src/ftp.c, src/ftp.h: Cosmetic changes. + + * src/ftpparse.c: Brought up to current coding style standards etc... + Include common.h. Added some 'const's where appropriate. + Return boolean instead of int in some functions. + (main): Simplified code a bit. Use EXIT_SUCCESS. + + * src/ftpparse.h: Changed prototypes to also show variable names. + Added '#ifndef FTPPARSE_H' etc. to prevent multiple inclusions. + +2001-04-19 + + * src/ftpparse.h src/ftpparse.c: Removed the offending DJB created + files and added Michaels versions which were written from + scratch. + +Wed Apr 18 22:36:49 CEST 2001 Uwe Hermann + + * Makefile.am: Added docs to SUBDIRS. + + * Makefile.in, config.h.in, configure: Autogenerated. + + * README: Moved CVS info into docs/HACKING. + + * configure.in: Added docs/Makefile to AC_OUTPUT(). + + * docs/HACKING, docs/Makefile.am, docs/Makefile.in: Added files. + + * src/connection.c, src/connection.h, src/ftp.c, src/ftp.h, src/test.c: + Renamed connection_info to connection_t. + + * src/main.c: Renamed some variables. Added a few comments. + + * src/prozilla.h: Removed unused prototypes proz_set_http_proxy() + and proz_set_ftp_proxy(). + +Wed Apr 18 19:58:54 CEST 2001 Uwe Hermann + + * src/connect.c, src/connection.h, src/ftp.h, src/misc.h: + Cosmetic changes. + + * src/debug.c, src/debug.h: Made debug_mutex static. Renamed some + variables. + + * src/ftp.c, src/ftp.h: Changed several 'char *' to 'const char *'. + (get_ftp_return): Renamed to ftp_get_return(). + (ftp_send_msg): Renamed some variables. Added missing va_end(). + (ftp_login): Replaced those ugly if-else-chains with switch + constructs, which are more readable IMHO. + (use_ftp_proxy): Renamed to ftp_use_proxy(). + (proz_ftp_get_url_info): Renamed to ftp_get_url_info(). + + * src/prozilla.h: Removed unused prototypes for proz_use_http_proxy() + and proz_use_ftp_proxy(). + +2001-04-18 + + * src/ftp.c (ftp_login): added sevral "\r\n"'s where I had + forgotten to put them :( + +2001-04-18 + + * src/ftp.c (ftp_login): Added proxy support :) + +2001-04-17 + + * src/ftp.c (ftp_send_msg): changed the prototype to uerr_t + ftp_send_msg(connection_info *connection, const char *cmdspec, + ...) + + * src/prozilla.h: Added data type longstring 1024 bytes + + * src/connection.h (connection_info): changed the type of + xxx_proxy to a pointer, proxy_info * + +Tue Apr 17 13:38:35 CEST 2001 Uwe Hermann + + * config.h.in, configure, src/Makefile.in: Autogenerated. + + * configure.in: Check for lots more #include files. + + * src/Makefile.am: Added several missing files to + libprozilla_a_SOURCES. + + * src/connect.c, src/connect.h, src/connection.c, src/connection.h, + src/debug.c, src/debug.h, src/download.c, src/download.h, src/ftp.c, + src/ftp.h, src/main.c, src/misc.c, src/misc.h, src/netrc.c, + src/netrc.h, src/prozilla.h, src/test.c, src/url.c, src/url.h: + Put all system #includes in src/common.h and just include "common.h". + + * src/ftp.c: Coding style fixes. + + * src/prozilla.h: Moved the #defines TRUE and FALSE to src/common.h. + + * src/common.h: Added file. Contains all necessary system #includes, + typedefs a 'boolean' type, conditionally #defines vsnprintf() and + snprintf() to __vsnprintf() and __snprintf() if necessary and + also #defines YES and NO. + +2001-04-17 + + * src/ftp.c (use_ftp_proxy): added this func which is self + explanatory ;) + + * src/prozilla.h: Added several enums to proxy_type to describe + various proxies. + +2001-04-16 + + * src/test.c: added config.h to test.c + +Mon Apr 16 21:28:31 CEST 2001 Uwe Hermann + + * acinclude.m4: Remove CVS Id tags. + + * aclocal.m4, config.h.in, configure: Regenerated automatically. + + * configure.in: Check for strchr() and strrchr(). + + * src/connect.c, src/connect.h: Include . The second + argument of connect_to_server() is 'const char *' now. + + * src/connect.c, src/connect.h, src/connection.c, src/connection.h, + src/debug.c, src/ftp.c, src/ftp.h, src/main.c, src/misc.c, + src/misc.h, src/netrc.c, src/netrc.h, src/prozilla.h, src/test.c, + src/url.c, src/url.h: Coding style and indentation changes. + + * src/download.c: Include . + + * src/download.h: Prevent multiple inclusions... + + * src/ftp.c, src/ftp.h: Removed the 'len' argument of ftp_send_msg(), + because it's always strlen(connection->szBuffer). + +Mon Apr 16 15:32:43 CEST 2001 Uwe Hermann + + * TODO: Added 'Bandwidth throttling'. + + * aclocal.m4, config.h.in, configure: Automatically generated. + + * configure.in: Check for pwd.h, strtol(), strncasecmp(), snprintf(), + vsnprintf(), __snprintf() and __vsnprintf(). Remove checks for + strstr() and gettimeofday() because we don't use them anywhere. + + * src/ftp.c, src/main.c, src/misc.c, src/misc.h, src/netrc.c, + src/url.c, src/url.h: Renamed nstrdup() to kstrdup() to be + consistent with kmalloc() and krealloc()... + + * src/main.c, src/prozilla.h: Remove useless includes. + (proz_shutdown): Now returns void. (proz_die): Exit with + EXIT_FAILURE not with EXIT_SUCCESS. + +Mon Apr 16 09:14:52 CEST 2001 Uwe Hermann + + * aclocal.m4, config.h.in, configure, src/Makefile.in: + Automatically generated. + + * configure.in: Added configure option --enable-compiler-warnings. + Possible arguments are no/min/yes. Default is min. + + * src/Makefile.am: Commented out variable settings, they don't seem + to be necessary. I'm not sure, though... + + * src/connect.c, src/misc.c: Added/fixed a few comments. + + * src/ftp.c, src/main.c: Use nstrdup() instead of strdup(). + + * src/main.c: (set_defaults): Removed because it was empty. + + * src/test.c: Added several includes, so it now compiles with + --enable-compiler-warnings=yes. + +Mon Apr 16 08:07:10 CEST 2001 Uwe Hermann + + * src/connect.c, src/connect.h, src/connection.c, src/connection.h, + src/debug.c, src/download.c, src/download.h, src/ftp.c, src/ftp.h, + src/ftpparse.h, src/main.c, src/misc.c, src/misc.h, src/netrc.c, + src/netrc.h, src/prozilla.h, src/url.c, src/url.h: + Cosmetic changes, mostly of the CVS 'Id' tag and its location. + + * src/debug.h, src/test.c: Replaced the CVS 'Revision' tag with + the 'Id' tag. + + * src/main.c: (proz_init): Use kmalloc() instead of malloc(). + (proz_die): Fix possible buffer overflow by using vsnprintf() instead + of vsprintf(). + +2001-04-15 + + * src/prozilla.h: added home_dir and netrc_list to libprozinfo struct + + * src/connection.h: added is_dir, is_file etc, to connetion.h to + provide information about the url. + + * Removed the $log entries, now the only cvs info is the Id + tag + +Sat Apr 14 20:34:41 CEST 2001 Uwe Hermann + + * TODO, src/netrc.h, src/url.h: Cosmetic changes. + + * acconfig.h, configure.in: Check for socklent_t by calling + TYPE_SOCKLEN_T. + + * acinclude.m4: Added TYPE_SOCKLEN_T. + + * aclocal.m4, config.h.in, configure: Automatically generated. + + * src/debug.c: (proz_debug): Fix a possible buffer overflow by using + vsnprintf() instead of vsprintf(). + + * src/netrc.c: Include . Don't use error_at_line(). + Remove all code enclosed by '#ifdef STANDALONE' and '#endif', + because we don't use this code standalone... + + * src/netrc.c, src/url.c: Properly check whether to include + or or . + +Sat Apr 14 17:34:23 CEST 2001 Uwe Hermann + + * Makefile.am, Makefile.in: Removed unnecessary DIST_SUBDIRS. + + * Makefile.in, aclocal.m4, config.h.in, configure, mkinstalldirs, + src/Makefile.in: Regenerated automatically. + + * configure.in: Added standard GPL-header. Require at least + autoconf 2.13. Removed AM_SANITY_CHECK. Added lots of checks, e.g. + for -lnsl or -lsocket (which is needed on some systems e.g. Solaris). + Check for headers (memory.h string.h time.h fcntl.h assert.h). + Removed AC_FUNC_SETVBUF_REVERSED. Cosmetic changes. + + * src/Makefile.am: Cosmetic changes. + + * src/connect.c, src/connect.h, src/connection.c, src/connection.h, + src/ftp.c, src/main.c, src/misc.c, src/misc.h, src/prozilla.h: + Removed unnecessary includes, added missing includes. Properly check + whether to include or or . + Check whether to include or or both. + + * src/ftp.c, src/ftp.h: (get_ftp_return): Make it a static function. + (ftp_send_msg): Second argument is 'unsigned int' instead of 'int' + now. (ftp_get_reply): Make it a static function. + Added missing prototype for proz_ftp_get_url_info(). + + * acinclude.m4, acconfig.h: Added files. + + * man/Makefile: Removed file. + +2001-04-14 + + * src/ftp.c (proz_ftp_get_url_info): Creating a function to fetch info about ftp url's + * Cleaned up the cvs logs in files + +2001-04-13 + + * Added src/download.c and src/download.h + + * src/connection.h: added use_http_proxy and use_ftp_proxy to the connection structure. + +Fri Apr 13 18:08:52 CEST 2001 Uwe Hermann + + * README: Removed info about the prozilla mailinglist because it + has been removed. All the subscribers are in the prozilla-users + mailinglist now. + + * src/connect.c, src/connect.h, src/connection.c, src/connection.h, + src/ftp.c, src/ftp.h, src/main.c, src/misc.c, src/misc.h, + src/prozilla.h, src/test.c: Cosmetic changes. + + * src/connect.c: Call socket() with the third argument being + IPPROTO_TCP instead of 0. Do not cast result of krealloc(). + (accept_connection): Removed, because it is not used anywhere. + + * src/debug.c, src/debug.h: Renamed debug_prz() to proz_debug(). + + * src/ftp.c: Make BUFFER_SIZE a #define (not a const int). + Do not cast the result of alloca(). Remove all those sizeof(char) + multiplications, because sizeof(char) is '1' per definition. + +Fri Apr 13 16:08:07 CEST 2001 Uwe Hermann + + * ChangeLog, src/connect.c, src/connect.h, src/connection.c, + src/connection.h, src/debug.c, src/debug.h, src/download.c, + src/download.h, src/ftp.c, src/ftp.h, src/main.c, src/misc.c, + src/misc.h, src/prozilla.h, src/test.c: + Cosmetic changes. Use the same GPL-header in all files. + + * src/connect.c, src/ftp.c, src/misc.c, src/netrc.c, src/url.c: + Removed unnecessary casts of the result of kmalloc(). + + * src/main.c: Removed unnecessary includes of and + . + +2001-04-13 + + * src/prozilla.h: The library functions will be in the form of proz_xxx + (struct): added the structure proxy_info + + * src/prozilla.h: moved the definition of struct _urlinfo from url.h to prozilla.h + +Thu Apr 12 15:55:04 CEST 2001 Uwe Hermann + + * AUTHORS, NEWS, README: Wrote initial documentation. + + * TODO: Added file. + + * src/connect.c, src/connect.h, src/connection.c, src/connection.h, + src/debug.c, src/debug.h, src/ftp.c, src/ftp.h, src/main.c, + src/misc.h, src/prozilla.h, src/url.c, src/url.h: Cosmetic changes. + + * src/connection.h: Removed two C++ style comments. + + * src/main.c: Added two missing 'void's in function declarations. + Call exit() with EXIT_SUCCESS as parameter, not with 0. + + * src/test.c: Added the standard GPL-header. Use EXIT_SUCCESS. + +Thu Apr 12 14:46:32 CEST 2001 Uwe Hermann + + * src/misc.c, src/misc.h: Removed unnecessary includes and + . (kmalloc): If size is zero, return NULL. The + error-message now prints the number of bytes you tried to allocate. + (is_number): The argument is 'const' now. Empty strings count as + non-number. + +2001-03-26 + * src/ftp.h: struct ftp_connection_info was added. + +2001-03-18 + + * configure.in: Calls the autoconf macro AC_caolan_FUNC_WHICH_GETHOSTBYNAME_R. + + * src/connect.c: Added a gethostname_r wrapper called k_gethostname, and added autoconf support for 5 or 6 args for it. + +2001-03-14 + + * src/connect.c (connect_to_server): changed the data type for the timeout argument to struct timeval + +2001-03-13 + + * src/misc.c (get_prefixed_file): uncommented it, we need to do something about the runtime structure, like havng libprozillas own runtime structure. diff --git a/libprozilla/INSTALL b/libprozilla/INSTALL new file mode 100644 index 0000000..b42a17a --- /dev/null +++ b/libprozilla/INSTALL @@ -0,0 +1,182 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. diff --git a/libprozilla/Makefile.am b/libprozilla/Makefile.am new file mode 100644 index 0000000..2e4b03c --- /dev/null +++ b/libprozilla/Makefile.am @@ -0,0 +1,7 @@ +#------------------------------------------------------------------------------ +# Process this file with automake to produce Makefile.in. +#------------------------------------------------------------------------------ + +SUBDIRS = intl po docs src +DIST_SUBDIRS = $(SUBDIRS) +DIST_OTHER = COPYING diff --git a/libprozilla/Makefile.in b/libprozilla/Makefile.in new file mode 100644 index 0000000..97f7f0d --- /dev/null +++ b/libprozilla/Makefile.in @@ -0,0 +1,555 @@ +# Makefile.in generated by automake 1.7 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +#------------------------------------------------------------------------------ +# Process this file with automake to produce Makefile.in. +#------------------------------------------------------------------------------ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POFILES = @POFILES@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +THREAD_LIBS = @THREAD_LIBS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +SUBDIRS = intl po docs src +DIST_SUBDIRS = $(SUBDIRS) +DIST_OTHER = COPYING +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = intl/Makefile +DIST_SOURCES = + +RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ + ps-recursive install-info-recursive uninstall-info-recursive \ + all-recursive install-data-recursive install-exec-recursive \ + installdirs-recursive install-recursive uninstall-recursive \ + check-recursive installcheck-recursive +DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \ + Makefile.am Makefile.in NEWS TODO acconfig.h acinclude.m4 \ + aclocal.m4 config.guess config.h.in config.sub configure \ + configure.in depcomp install-sh ltmain.sh missing mkinstalldirs +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: + +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) + +$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +$(ACLOCAL_M4): configure.in acinclude.m4 + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h + +$(srcdir)/config.h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) $(top_srcdir)/acconfig.h + cd $(top_srcdir) && $(AUTOHEADER) + touch $(srcdir)/config.h.in + +distclean-hdr: + -rm -f config.h stamp-h1 +intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = . +distdir = $(PACKAGE)-$(VERSION) + +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } + +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkinstalldirs) $(distdir)/intl $(distdir)/po + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist dist-all: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + $(am__remove_distdir) + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && $(mkinstalldirs) $$dc_destdir \ + && cd $(distdir)/=build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + --with-included-gettext \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ + && rm -f $(distdir).tar.gz \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @echo "$(distdir).tar.gz is ready for distribution" | \ + sed 'h;s/./=/g;p;x;p;x' +distuninstallcheck: + cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: + +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) +distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf autom4te.cache +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive dist dist-all dist-gzip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-recursive distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am dvi-recursive info info-am \ + info-recursive install install-am install-data install-data-am \ + install-data-recursive install-exec install-exec-am \ + install-exec-recursive install-info install-info-am \ + install-info-recursive install-man install-recursive \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am installdirs-recursive maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive mostlyclean \ + mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ + pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ + tags-recursive uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-recursive + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libprozilla/NEWS b/libprozilla/NEWS new file mode 100644 index 0000000..a2bdc53 --- /dev/null +++ b/libprozilla/NEWS @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +News +------------------------------------------------------------------------------- + diff --git a/libprozilla/README b/libprozilla/README new file mode 100644 index 0000000..9fd616f --- /dev/null +++ b/libprozilla/README @@ -0,0 +1,62 @@ +------------------------------------------------------------------------------- +libprozilla README +------------------------------------------------------------------------------- + +Description +----------- + +libprozilla is a library which provides functions to download a file in +portions using multiple connections, thus speeding up the download process. +It supports the HTTP and FTP protocols as well as the file resume feature. + + +License +------- + +libprozilla - a download accelerator library +Copyright (C) 2001 Kalum Somaratna + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +See COPYING for details. + + +Installation +------------ + + * ./configure + * make + * make install + + +Mailinglists +------------ + +There are several mailinglists you can subscribe to. +All mailinglists are archived. The archives can be viewed online. + +prozilla-users: +* Discussions, user requests, suggestions and help. + + * Subscribe at: http://www.genesys.ro/mailman/listinfo/prozilla + * Archive: http://www.genesys.ro/pipermail/prozilla/ + + + +Homepage +-------- + +prozilla.genesys.ro + diff --git a/libprozilla/TODO b/libprozilla/TODO new file mode 100644 index 0000000..94710f1 --- /dev/null +++ b/libprozilla/TODO @@ -0,0 +1,29 @@ +------------------------------------------------------------------------------- +Todo +------------------------------------------------------------------------------- + + * Write or generate API documentation. + + * Honor the environment variables http_proxy and ftp_proxy. + NOTE: Should this be part of libprozilla or the interface? + + * Port to other platforms than GNU/Linux, e.g. SunOS/Solaris, FreeBSD etc... + + * Add cookies support. + + * DONE: Make the threads download to a single file, will need a state monitor + which saves the state of each thread to resume properly. + + * DONE: Bandwidth throttling? + + * DONE: Use libtool. + + * DONE: I need to stat the file's size, so we have to check and include + sys/stat.h in common.h + + * DONE: refreer support ftp + + * The FTP through HTTP proxying needs a bit of chechin on how it would + handle login rejection attempts when the ftp server disallows it + + * DONE: write a function for getting the version of libprozilla diff --git a/libprozilla/acconfig.h b/libprozilla/acconfig.h new file mode 100644 index 0000000..2365a8d --- /dev/null +++ b/libprozilla/acconfig.h @@ -0,0 +1,25 @@ +/* For use by autoheader. */ + +#ifndef CONFIG_H +#define CONFIG_H /* To stop multiple inclusions. */ + + +/* Enable GNU extensions. */ +#undef _GNU_SOURCE + +/* How many arguments does gethostbyname_r() take? */ +#undef HAVE_FUNC_GETHOSTBYNAME_R_6 +#undef HAVE_FUNC_GETHOSTBYNAME_R_5 +#undef HAVE_FUNC_GETHOSTBYNAME_R_3 + +/* Define to 'int' if not already defined by the system. */ +#undef socklen_t + + +@TOP@ +/* autoheader generated things inserted here. */ +@BOTTOM@ + + +#endif /* CONFIG_H */ + diff --git a/libprozilla/acinclude.m4 b/libprozilla/acinclude.m4 new file mode 100644 index 0000000..3619d49 --- /dev/null +++ b/libprozilla/acinclude.m4 @@ -0,0 +1,666 @@ +dnl @synopsis AC_caolan_FUNC_WHICH_GETHOSTBYNAME_R +dnl +dnl Provides a test to determine the correct +dnl way to call gethostbyname_r: +dnl +dnl - defines HAVE_FUNC_GETHOSTBYNAME_R_6 if it needs 6 arguments (e.g linux) +dnl - defines HAVE_FUNC_GETHOSTBYNAME_R_5 if it needs 5 arguments (e.g. solaris) +dnl - defines HAVE_FUNC_GETHOSTBYNAME_R_3 if it needs 3 arguments (e.g. osf/1) +dnl +dnl If used in conjunction in gethostname.c the api demonstrated +dnl in test.c can be used regardless of which gethostbyname_r +dnl exists. These example files found at +dnl . +dnl +dnl Based on David Arnold's autoconf suggestion in the threads faq. +dnl +dnl @author Caolan McNamara +dnl +AC_DEFUN(AC_caolan_FUNC_WHICH_GETHOSTBYNAME_R, +[AC_CACHE_CHECK(for which type of gethostbyname_r, ac_cv_func_which_gethostname_r, [ +AC_CHECK_FUNC(gethostbyname_r, [ + AC_TRY_COMPILE([ +# include + ], [ + + char *name; + struct hostent *he; + struct hostent_data data; + (void) gethostbyname_r(name, he, &data); + + ],ac_cv_func_which_gethostname_r=three, + [ +dnl ac_cv_func_which_gethostname_r=no + AC_TRY_COMPILE([ +# include + ], [ + char *name; + struct hostent *he, *res; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop) + ],ac_cv_func_which_gethostname_r=six, + + [ +dnl ac_cv_func_which_gethostname_r=no + AC_TRY_COMPILE([ +# include + ], [ + char *name; + struct hostent *he; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop) + ],ac_cv_func_which_gethostname_r=five,ac_cv_func_which_gethostname_r=no) + + ] + + ) + ] + )] + ,ac_cv_func_which_gethostname_r=no)]) + +if test $ac_cv_func_which_gethostname_r = six; then + AC_DEFINE(HAVE_FUNC_GETHOSTBYNAME_R_6) +elif test $ac_cv_func_which_gethostname_r = five; then + AC_DEFINE(HAVE_FUNC_GETHOSTBYNAME_R_5) +elif test $ac_cv_func_which_gethostname_r = three; then + AC_DEFINE(HAVE_FUNC_GETHOSTBYNAME_R_3) + +fi + +]) + +dnl @synopsis TYPE_SOCKLEN_T +dnl +dnl Check whether sys/socket.h defines type socklen_t. Please note +dnl that some systems require sys/types.h to be included before +dnl sys/socket.h can be compiled. +dnl +dnl @author Lars Brinkhoff +dnl +AC_DEFUN([TYPE_SOCKLEN_T], +[AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t, +[ + AC_TRY_COMPILE( + [#include + #include ], + [socklen_t len = 42; return 0;], + ac_cv_type_socklen_t=yes, + ac_cv_type_socklen_t=no) +]) + if test $ac_cv_type_socklen_t != yes; then + AC_DEFINE(socklen_t, int) + fi +]) + +#serial AM1 + +dnl From Bruno Haible. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, + [AC_TRY_LINK([#include ], + [char* cs = nl_langinfo(CODESET);], + am_cv_langinfo_codeset=yes, + am_cv_langinfo_codeset=no) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET, 1, + [Define if you have and nl_langinfo(CODESET).]) + fi +]) +# Macro to add for using GNU gettext. +# Ulrich Drepper , 1995. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. + +# serial 10 + +dnl Usage: AM_WITH_NLS([TOOLSYMBOL], [NEEDSYMBOL], [LIBDIR]). +dnl If TOOLSYMBOL is specified and is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). Otherwise, a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. +dnl LIBDIR is used to find the intl libraries. If empty, +dnl the value `$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_WITH_NLS], + [AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + INTLLIBS= + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + AC_DEFINE(ENABLE_NLS, 1, + [Define to 1 if translation of program messages to the user's native language + is requested.]) + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH(included-gettext, + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + CATOBJEXT=NONE + + dnl Add a version number to the cache macros. + define(gt_cv_func_gnugettext_libc, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libc]) + define(gt_cv_func_gnugettext_libintl, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libintl]) + + AC_CHECK_HEADER(libintl.h, + [AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, + [AC_TRY_LINK([#include +extern int _nl_msg_cat_cntr;], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr], + gt_cv_func_gnugettext_libc=yes, + gt_cv_func_gnugettext_libc=no)]) + + if test "$gt_cv_func_gnugettext_libc" != "yes"; then + AC_CACHE_CHECK([for GNU gettext in libintl], + gt_cv_func_gnugettext_libintl, + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -lintl $LIBICONV" + AC_TRY_LINK([#include +extern int _nl_msg_cat_cntr;], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr], + gt_cv_func_gnugettext_libintl=yes, + gt_cv_func_gnugettext_libintl=no) + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if test "$gt_cv_func_gnugettext_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ + && test "$PACKAGE" != gettext; }; then + AC_DEFINE(HAVE_GETTEXT, 1, + [Define if the GNU gettext() function is already present or preinstalled.]) + + if test "$gt_cv_func_gnugettext_libintl" = "yes"; then + dnl If iconv() is in a separate libiconv library, then anyone + dnl linking with libintl{.a,.so} also needs to link with + dnl libiconv. + INTLLIBS="-lintl $LIBICONV" + fi + + gt_save_LIBS="$LIBS" + LIBS="$LIBS $INTLLIBS" + AC_CHECK_FUNCS(dcgettext) + LIBS="$gt_save_LIBS" + + dnl Search for GNU msgfmt in the PATH. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + dnl Search for GNU xgettext in the PATH. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) + + CATOBJEXT=.gmo + fi + ]) + + if test "$CATOBJEXT" = "NONE"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + INTLOBJS="\$(GETTOBJS)" + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) + AC_SUBST(MSGFMT) + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + CATOBJEXT=.gmo + INTLLIBS="ifelse([$3],[],\$(top_builddir)/intl,[$3])/libintl.ifelse([$1], use-libtool, [l], [])a $LIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU msgfmt. + if test "$GMSGFMT" != ":"; then + dnl If it is no GNU msgfmt we define it as : so that the + dnl Makefiles still can work. + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then + : ; + else + AC_MSG_RESULT( + [found msgfmt program is not GNU msgfmt; ignore it]) + GMSGFMT=":" + fi + fi + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then + : ; + else + AC_MSG_RESULT( + [found xgettext program is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + AC_OUTPUT_COMMANDS( + [for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + fi + ;; + esac + done]) + + + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl intl/plural.c is generated from intl/plural.y. It requires bison, + dnl because plural.y uses bison specific features. It requires at least + dnl bison-1.26 because earlier versions generate a plural.c that doesn't + dnl compile. + dnl bison is only needed for the maintainer (who touches plural.y). But in + dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put + dnl the rule in general Makefile. Now, some people carelessly touch the + dnl files or have a broken "make" program, hence the plural.c rule will + dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not + dnl present or too old. + AC_CHECK_PROGS([INTLBISON], [bison]) + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + dnl Found it, now check the version. + AC_MSG_CHECKING([version of bison]) +changequote(<<,>>)dnl + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison .* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) +changequote([,])dnl + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + AC_MSG_RESULT([$ac_prog_version]) + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + + dnl These rules are solely for the distribution goal. While doing this + dnl we only have to keep exactly one list of the available catalogs + dnl in configure.in. + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + + dnl Make all variables we use known to autoconf. + AC_SUBST(BUILD_INCLUDED_LIBINTL) + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATALOGS) + AC_SUBST(CATOBJEXT) + AC_SUBST(GMOFILES) + AC_SUBST(INTLLIBS) + AC_SUBST(INTLOBJS) + AC_SUBST(POFILES) + AC_SUBST(POSUB) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST(DATADIRNAME) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST(INSTOBJEXT) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST(GENCAT) + ]) + +dnl Usage: Just like AM_WITH_NLS, which see. +AC_DEFUN([AM_GNU_GETTEXT], + [AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_ISC_POSIX])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([jm_GLIBC21])dnl + + AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getcwd getegid geteuid \ +getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \ +strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) + + AM_ICONV + AM_LANGINFO_CODESET + AM_LC_MESSAGES + AM_WITH_NLS([$1],[$2],[$3]) + + if test "x$CATOBJEXT" != "x"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + AC_MSG_CHECKING(for catalogs to be installed) + NEW_LINGUAS= + for presentlang in $ALL_LINGUAS; do + useit=no + for desiredlang in ${LINGUAS-$ALL_LINGUAS}; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + NEW_LINGUAS="$NEW_LINGUAS $presentlang" + fi + done + LINGUAS=$NEW_LINGUAS + AC_MSG_RESULT($LINGUAS) + fi + + dnl Construct list of names of catalog files to be constructed. + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly + dnl find the mkinstalldirs script in another subdir but $(top_srcdir). + dnl Try to locate is. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=ifelse([$1], use-libtool, [l], []) + AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) + ]) +#serial 2 + +# Test for the GNU C Library, version 2.1 or newer. +# From Bruno Haible. + +AC_DEFUN([jm_GLIBC21], + [ + AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, + ac_cv_gnu_library_2_1, + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + ], + ac_cv_gnu_library_2_1=yes, + ac_cv_gnu_library_2_1=no) + ] + ) + AC_SUBST(GLIBC21) + GLIBC21="$ac_cv_gnu_library_2_1" + ] +) +#serial AM2 + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + + AC_ARG_WITH([libiconv-prefix], +[ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [ + for dir in `echo "$withval" | tr : ' '`; do + if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi + if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi + done + ]) + + AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS -liconv" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi + LIBICONV= + if test "$am_cv_lib_iconv" = yes; then + LIBICONV="-liconv" + fi + AC_SUBST(LIBICONV) +]) +#serial 1 +# This test replaces the one in autoconf. +# Currently this macro should have the same name as the autoconf macro +# because gettext's gettext.m4 (distributed in the automake package) +# still uses it. Otherwise, the use in gettext.m4 makes autoheader +# give these diagnostics: +# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX +# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX + +undefine([AC_ISC_POSIX]) + +AC_DEFUN([AC_ISC_POSIX], + [ + dnl This test replaces the obsolescent AC_ISC_POSIX kludge. + AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) + ] +) +# Check whether LC_MESSAGES is available in . +# Ulrich Drepper , 1995. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. + +# serial 2 + +AC_DEFUN([AM_LC_MESSAGES], + [if test $ac_cv_header_locale_h = yes; then + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) + if test $am_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, + [Define if your file defines LC_MESSAGES.]) + fi + fi]) +# Search path for a program which passes the given test. +# Ulrich Drepper , 1996. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. + +# serial 2 + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + /*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in ifelse([$5], , $PATH, [$5]); do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) diff --git a/libprozilla/aclocal.m4 b/libprozilla/aclocal.m4 new file mode 100644 index 0000000..643f8fb --- /dev/null +++ b/libprozilla/aclocal.m4 @@ -0,0 +1,5207 @@ +# generated automatically by aclocal 1.7 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +dnl @synopsis AC_caolan_FUNC_WHICH_GETHOSTBYNAME_R +dnl +dnl Provides a test to determine the correct +dnl way to call gethostbyname_r: +dnl +dnl - defines HAVE_FUNC_GETHOSTBYNAME_R_6 if it needs 6 arguments (e.g linux) +dnl - defines HAVE_FUNC_GETHOSTBYNAME_R_5 if it needs 5 arguments (e.g. solaris) +dnl - defines HAVE_FUNC_GETHOSTBYNAME_R_3 if it needs 3 arguments (e.g. osf/1) +dnl +dnl If used in conjunction in gethostname.c the api demonstrated +dnl in test.c can be used regardless of which gethostbyname_r +dnl exists. These example files found at +dnl . +dnl +dnl Based on David Arnold's autoconf suggestion in the threads faq. +dnl +dnl @author Caolan McNamara +dnl +AC_DEFUN(AC_caolan_FUNC_WHICH_GETHOSTBYNAME_R, +[AC_CACHE_CHECK(for which type of gethostbyname_r, ac_cv_func_which_gethostname_r, [ +AC_CHECK_FUNC(gethostbyname_r, [ + AC_TRY_COMPILE([ +# include + ], [ + + char *name; + struct hostent *he; + struct hostent_data data; + (void) gethostbyname_r(name, he, &data); + + ],ac_cv_func_which_gethostname_r=three, + [ +dnl ac_cv_func_which_gethostname_r=no + AC_TRY_COMPILE([ +# include + ], [ + char *name; + struct hostent *he, *res; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop) + ],ac_cv_func_which_gethostname_r=six, + + [ +dnl ac_cv_func_which_gethostname_r=no + AC_TRY_COMPILE([ +# include + ], [ + char *name; + struct hostent *he; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop) + ],ac_cv_func_which_gethostname_r=five,ac_cv_func_which_gethostname_r=no) + + ] + + ) + ] + )] + ,ac_cv_func_which_gethostname_r=no)]) + +if test $ac_cv_func_which_gethostname_r = six; then + AC_DEFINE(HAVE_FUNC_GETHOSTBYNAME_R_6) +elif test $ac_cv_func_which_gethostname_r = five; then + AC_DEFINE(HAVE_FUNC_GETHOSTBYNAME_R_5) +elif test $ac_cv_func_which_gethostname_r = three; then + AC_DEFINE(HAVE_FUNC_GETHOSTBYNAME_R_3) + +fi + +]) + +dnl @synopsis TYPE_SOCKLEN_T +dnl +dnl Check whether sys/socket.h defines type socklen_t. Please note +dnl that some systems require sys/types.h to be included before +dnl sys/socket.h can be compiled. +dnl +dnl @author Lars Brinkhoff +dnl +AC_DEFUN([TYPE_SOCKLEN_T], +[AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t, +[ + AC_TRY_COMPILE( + [#include + #include ], + [socklen_t len = 42; return 0;], + ac_cv_type_socklen_t=yes, + ac_cv_type_socklen_t=no) +]) + if test $ac_cv_type_socklen_t != yes; then + AC_DEFINE(socklen_t, int) + fi +]) + +#serial AM1 + +dnl From Bruno Haible. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, + [AC_TRY_LINK([#include ], + [char* cs = nl_langinfo(CODESET);], + am_cv_langinfo_codeset=yes, + am_cv_langinfo_codeset=no) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET, 1, + [Define if you have and nl_langinfo(CODESET).]) + fi +]) +# Macro to add for using GNU gettext. +# Ulrich Drepper , 1995. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. + +# serial 10 + +dnl Usage: AM_WITH_NLS([TOOLSYMBOL], [NEEDSYMBOL], [LIBDIR]). +dnl If TOOLSYMBOL is specified and is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). Otherwise, a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. +dnl LIBDIR is used to find the intl libraries. If empty, +dnl the value `$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_WITH_NLS], + [AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + INTLLIBS= + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + AC_DEFINE(ENABLE_NLS, 1, + [Define to 1 if translation of program messages to the user's native language + is requested.]) + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH(included-gettext, + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + CATOBJEXT=NONE + + dnl Add a version number to the cache macros. + define(gt_cv_func_gnugettext_libc, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libc]) + define(gt_cv_func_gnugettext_libintl, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libintl]) + + AC_CHECK_HEADER(libintl.h, + [AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, + [AC_TRY_LINK([#include +extern int _nl_msg_cat_cntr;], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr], + gt_cv_func_gnugettext_libc=yes, + gt_cv_func_gnugettext_libc=no)]) + + if test "$gt_cv_func_gnugettext_libc" != "yes"; then + AC_CACHE_CHECK([for GNU gettext in libintl], + gt_cv_func_gnugettext_libintl, + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -lintl $LIBICONV" + AC_TRY_LINK([#include +extern int _nl_msg_cat_cntr;], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr], + gt_cv_func_gnugettext_libintl=yes, + gt_cv_func_gnugettext_libintl=no) + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if test "$gt_cv_func_gnugettext_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ + && test "$PACKAGE" != gettext; }; then + AC_DEFINE(HAVE_GETTEXT, 1, + [Define if the GNU gettext() function is already present or preinstalled.]) + + if test "$gt_cv_func_gnugettext_libintl" = "yes"; then + dnl If iconv() is in a separate libiconv library, then anyone + dnl linking with libintl{.a,.so} also needs to link with + dnl libiconv. + INTLLIBS="-lintl $LIBICONV" + fi + + gt_save_LIBS="$LIBS" + LIBS="$LIBS $INTLLIBS" + AC_CHECK_FUNCS(dcgettext) + LIBS="$gt_save_LIBS" + + dnl Search for GNU msgfmt in the PATH. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + dnl Search for GNU xgettext in the PATH. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) + + CATOBJEXT=.gmo + fi + ]) + + if test "$CATOBJEXT" = "NONE"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + INTLOBJS="\$(GETTOBJS)" + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) + AC_SUBST(MSGFMT) + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + CATOBJEXT=.gmo + INTLLIBS="ifelse([$3],[],\$(top_builddir)/intl,[$3])/libintl.ifelse([$1], use-libtool, [l], [])a $LIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU msgfmt. + if test "$GMSGFMT" != ":"; then + dnl If it is no GNU msgfmt we define it as : so that the + dnl Makefiles still can work. + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then + : ; + else + AC_MSG_RESULT( + [found msgfmt program is not GNU msgfmt; ignore it]) + GMSGFMT=":" + fi + fi + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then + : ; + else + AC_MSG_RESULT( + [found xgettext program is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + AC_OUTPUT_COMMANDS( + [for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + fi + ;; + esac + done]) + + + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl intl/plural.c is generated from intl/plural.y. It requires bison, + dnl because plural.y uses bison specific features. It requires at least + dnl bison-1.26 because earlier versions generate a plural.c that doesn't + dnl compile. + dnl bison is only needed for the maintainer (who touches plural.y). But in + dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put + dnl the rule in general Makefile. Now, some people carelessly touch the + dnl files or have a broken "make" program, hence the plural.c rule will + dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not + dnl present or too old. + AC_CHECK_PROGS([INTLBISON], [bison]) + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + dnl Found it, now check the version. + AC_MSG_CHECKING([version of bison]) +changequote(<<,>>)dnl + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison .* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) +changequote([,])dnl + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + AC_MSG_RESULT([$ac_prog_version]) + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + + dnl These rules are solely for the distribution goal. While doing this + dnl we only have to keep exactly one list of the available catalogs + dnl in configure.in. + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + + dnl Make all variables we use known to autoconf. + AC_SUBST(BUILD_INCLUDED_LIBINTL) + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATALOGS) + AC_SUBST(CATOBJEXT) + AC_SUBST(GMOFILES) + AC_SUBST(INTLLIBS) + AC_SUBST(INTLOBJS) + AC_SUBST(POFILES) + AC_SUBST(POSUB) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST(DATADIRNAME) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST(INSTOBJEXT) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST(GENCAT) + ]) + +dnl Usage: Just like AM_WITH_NLS, which see. +AC_DEFUN([AM_GNU_GETTEXT], + [AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_ISC_POSIX])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([jm_GLIBC21])dnl + + AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getcwd getegid geteuid \ +getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \ +strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) + + AM_ICONV + AM_LANGINFO_CODESET + AM_LC_MESSAGES + AM_WITH_NLS([$1],[$2],[$3]) + + if test "x$CATOBJEXT" != "x"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + AC_MSG_CHECKING(for catalogs to be installed) + NEW_LINGUAS= + for presentlang in $ALL_LINGUAS; do + useit=no + for desiredlang in ${LINGUAS-$ALL_LINGUAS}; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + NEW_LINGUAS="$NEW_LINGUAS $presentlang" + fi + done + LINGUAS=$NEW_LINGUAS + AC_MSG_RESULT($LINGUAS) + fi + + dnl Construct list of names of catalog files to be constructed. + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly + dnl find the mkinstalldirs script in another subdir but $(top_srcdir). + dnl Try to locate is. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=ifelse([$1], use-libtool, [l], []) + AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) + ]) +#serial 2 + +# Test for the GNU C Library, version 2.1 or newer. +# From Bruno Haible. + +AC_DEFUN([jm_GLIBC21], + [ + AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, + ac_cv_gnu_library_2_1, + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + ], + ac_cv_gnu_library_2_1=yes, + ac_cv_gnu_library_2_1=no) + ] + ) + AC_SUBST(GLIBC21) + GLIBC21="$ac_cv_gnu_library_2_1" + ] +) +#serial AM2 + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + + AC_ARG_WITH([libiconv-prefix], +[ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [ + for dir in `echo "$withval" | tr : ' '`; do + if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi + if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi + done + ]) + + AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS -liconv" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi + LIBICONV= + if test "$am_cv_lib_iconv" = yes; then + LIBICONV="-liconv" + fi + AC_SUBST(LIBICONV) +]) +#serial 1 +# This test replaces the one in autoconf. +# Currently this macro should have the same name as the autoconf macro +# because gettext's gettext.m4 (distributed in the automake package) +# still uses it. Otherwise, the use in gettext.m4 makes autoheader +# give these diagnostics: +# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX +# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX + +undefine([AC_ISC_POSIX]) + +AC_DEFUN([AC_ISC_POSIX], + [ + dnl This test replaces the obsolescent AC_ISC_POSIX kludge. + AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) + ] +) +# Check whether LC_MESSAGES is available in . +# Ulrich Drepper , 1995. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. + +# serial 2 + +AC_DEFUN([AM_LC_MESSAGES], + [if test $ac_cv_header_locale_h = yes; then + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) + if test $am_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, + [Define if your file defines LC_MESSAGES.]) + fi + fi]) +# Search path for a program which passes the given test. +# Ulrich Drepper , 1996. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. + +# serial 2 + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + /*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in ifelse([$5], , $PATH, [$5]); do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# This macro actually does too much some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 8 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +AC_PREREQ([2.54]) + +# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow +# the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], [AC_PACKAGE_TARNAME])dnl + AC_SUBST([VERSION], [AC_PACKAGE_VERSION])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_MISSING_PROG(AMTAR, tar) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl + +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[_am_stamp_count=`expr ${_am_stamp_count-0} + 1` +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.7])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# +# Check to make sure that the build environment is sane. +# + +# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# -*- Autoconf -*- + + +# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# AM_AUX_DIR_EXPAND + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +# Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50]) + +AC_DEFUN([AM_AUX_DIR_EXPAND], [ +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# AM_PROG_INSTALL_STRIP + +# Copyright 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# serial 4 -*- Autoconf -*- + +# Copyright 1999, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + echo '#include "conftest.h"' > conftest.c + echo 'int i;' > conftest.h + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=conftest.c object=conftest.o \ + depfile=conftest.Po tmpdepfile=conftest.TPo \ + $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && + grep conftest.h conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[rm -f .deps 2>/dev/null +mkdir .deps 2>/dev/null +if test -d .deps; then + DEPDIR=.deps +else + # MS-DOS does not allow filenames that begin with a dot. + DEPDIR=_deps +fi +rmdir .deps 2>/dev/null +AC_SUBST([DEPDIR]) +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking Speeds up one-time builds + --enable-dependency-tracking Do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +#serial 2 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # We invoke sed twice because it is the simplest approach to + # changing $(DEPDIR) to its actual value in the expansion. + for file in `sed -n -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +doit: + @echo done +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST(am__include) +AC_SUBST(am__quote) +AC_MSG_RESULT($_am_result) +rm -f confinc confmf +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 5 + +AC_PREREQ(2.52) + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]) +fi])]) + +# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- + +# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_PREREQ([2.52]) + +# serial 6 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + + +# Copyright 1996, 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# @defmac AC_PROG_CC_STDC +# @maindex PROG_CC_STDC +# @ovindex CC +# If the C compiler in not in ANSI C mode by default, try to add an option +# to output variable @code{CC} to make it so. This macro tries various +# options that select ANSI C on some system or another. It considers the +# compiler to be in ANSI C mode if it handles function prototypes correctly. +# +# If you use this macro, you should check after calling it whether the C +# compiler has been set to accept ANSI C; if not, the shell variable +# @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source +# code in ANSI C, you can make an un-ANSIfied copy of it by using the +# program @code{ansi2knr}, which comes with Ghostscript. +# @end defmac + +AC_DEFUN([AM_PROG_CC_STDC], +[AC_REQUIRE([AC_PROG_CC]) +AC_BEFORE([$0], [AC_C_INLINE]) +AC_BEFORE([$0], [AC_C_CONST]) +dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require +dnl a magic option to avoid problems with ANSI preprocessor commands +dnl like #elif. +dnl FIXME: can't do this because then AC_AIX won't work due to a +dnl circular dependency. +dnl AC_BEFORE([$0], [AC_PROG_CPP]) +AC_MSG_CHECKING([for ${CC-cc} option to accept ANSI C]) +AC_CACHE_VAL(am_cv_prog_cc_stdc, +[am_cv_prog_cc_stdc=no +ac_save_CC="$CC" +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + AC_TRY_COMPILE( +[#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +], [ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; +], +[am_cv_prog_cc_stdc="$ac_arg"; break]) +done +CC="$ac_save_CC" +]) +if test -z "$am_cv_prog_cc_stdc"; then + AC_MSG_RESULT([none needed]) +else + AC_MSG_RESULT([$am_cv_prog_cc_stdc]) +fi +case "x$am_cv_prog_cc_stdc" in + x|xno) ;; + *) CC="$CC $am_cv_prog_cc_stdc" ;; +esac +]) + +AU_DEFUN([fp_PROG_CC_STDC], [AM_PROG_CC_STDC]) + +# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- + +# serial 46 AC_PROG_LIBTOOL + +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +]) + +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.13)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl +AC_REQUIRE([LT_AC_PROG_SED])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +_LT_AC_PROG_ECHO_BACKSLASH +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE(libtool-lock, + [ --disable-libtool-lock avoid locking (might break parallel builds)]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_SAVE + AC_LANG_C + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_RESTORE]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + + # recent cygwin and mingw systems supply a stub DllMain which the user + # can override, but on older systems we have to supply one + AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain, + [AC_TRY_LINK([], + [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*); + DllMain (0, 0, 0);], + [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])]) + + case $host/$CC in + *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*) + # old mingw systems require "-dll" to link a DLL, while more recent ones + # require "-mdll" + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -mdll" + AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch, + [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])]) + CFLAGS="$SAVE_CFLAGS" ;; + *-*-cygwin* | *-*-pw32*) + # cygwin systems need to pass --dll to the linker, and not link + # crt.o which will require a WinMain@16 definition. + lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;; + esac + ;; + ]) +esac + +_LT_AC_LTCONFIG_HACK + +]) + +# AC_LIBTOOL_HEADER_ASSERT +# ------------------------ +AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT], +[AC_CACHE_CHECK([whether $CC supports assert without backlinking], + [lt_cv_func_assert_works], + [case $host in + *-*-solaris*) + if test "$GCC" = yes && test "$with_gnu_ld" != yes; then + case `$CC --version 2>/dev/null` in + [[12]].*) lt_cv_func_assert_works=no ;; + *) lt_cv_func_assert_works=yes ;; + esac + fi + ;; + esac]) + +if test "x$lt_cv_func_assert_works" = xyes; then + AC_CHECK_HEADERS(assert.h) +fi +])# AC_LIBTOOL_HEADER_ASSERT + +# _LT_AC_CHECK_DLFCN +# -------------------- +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h) +])# _LT_AC_CHECK_DLFCN + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris* | sysv5*) + symcode='[[BDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $host_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[[ABCDGISTW]]' +fi + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. +lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[[]] = +{ +EOF + sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$no_builtin_flag" + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AC_FD_CC + fi + else + echo "cannot find nm_test_var in $nlist" >&AC_FD_CC + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC + fi + else + echo "$progname: failed program was:" >&AC_FD_CC + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +if test -z "$lt_cv_sys_global_symbol_pipe"; then + global_symbol_to_cdecl= + global_symbol_to_c_name_address= +else + global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" + global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" +fi +if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; +then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + +# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR +# --------------------------------- +AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR], +[# Find the correct PATH separator. Usually this is `:', but +# DJGPP uses `;' like DOS. +if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) lt_cv_sys_path_separator=';' ;; + *) lt_cv_sys_path_separator=':' ;; + esac + PATH_SEPARATOR=$lt_cv_sys_path_separator +fi +])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +AC_DIVERT_POP +])# _LT_AC_PROG_ECHO_BACKSLASH + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ------------------------------------------------------------------ +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[if test "$cross_compiling" = yes; then : + [$4] +else + AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_unknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + +# AC_LIBTOOL_DLOPEN_SELF +# ------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + cygwin* | mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + +AC_DEFUN([_LT_AC_LTCONFIG_HACK], +[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='s/\([[\\"\\`$\\\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([[\\"\\`\\\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" +need_locks="$enable_libtool_lock" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +if test x"$host" != x"$build"; then + ac_tool_prefix=${host_alias}- +else + ac_tool_prefix= +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case $host_os in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="[$]2" + +AC_MSG_CHECKING([for objdir]) +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +AC_MSG_RESULT($objdir) + + +AC_ARG_WITH(pic, +[ --with-pic try to use only PIC/non-PIC objects [default=use both]], +pic_mode="$withval", pic_mode=default) +test -z "$pic_mode" && pic_mode=default + +# We assume here that the value for lt_cv_prog_cc_pic will not be cached +# in isolation, and that seeing it set (from the cache) indicates that +# the associated values are set (in the cache) correctly too. +AC_MSG_CHECKING([for $compiler option to produce PIC]) +AC_CACHE_VAL(lt_cv_prog_cc_pic, +[ lt_cv_prog_cc_pic= + lt_cv_prog_cc_shlib= + lt_cv_prog_cc_wl= + lt_cv_prog_cc_static= + lt_cv_prog_cc_no_builtin= + lt_cv_prog_cc_can_build_shared=$can_build_shared + + if test "$GCC" = yes; then + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-static' + + case $host_os in + aix*) + # Below there is a dirty hack to force normal static linking with -ldl + # The problem is because libdl dynamically linked with both libc and + # libC (AIX C++ library), which obviously doesn't included in libraries + # list by gcc. This cause undefined symbols with -static flags. + # This hack allows C programs to be linked with "-static -ldl", but + # not sure about C++ programs. + lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_cv_prog_cc_pic='-fno-common' + ;; + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_cv_prog_cc_pic=-Kconform_pic + fi + ;; + *) + lt_cv_prog_cc_pic='-fPIC' + ;; + esac + else + # PORTME Check for PIC flags for the system compiler. + case $host_os in + aix3* | aix4* | aix5*) + lt_cv_prog_cc_wl='-Wl,' + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_cv_prog_cc_static='-Bstatic' + else + lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + hpux9* | hpux10* | hpux11*) + # Is there a better lt_cv_prog_cc_static that works with the bundled CC? + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" + lt_cv_prog_cc_pic='+Z' + ;; + + irix5* | irix6* | nonstopux*) + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + + newsos6) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + ;; + + osf3* | osf4* | osf5*) + # All OSF/1 code is PIC. + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + ;; + + sco3.2v5*) + lt_cv_prog_cc_pic='-Kpic' + lt_cv_prog_cc_static='-dn' + lt_cv_prog_cc_shlib='-belf' + ;; + + solaris*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + sunos4*) + lt_cv_prog_cc_pic='-PIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Qoption ld ' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + uts4*) + lt_cv_prog_cc_pic='-pic' + lt_cv_prog_cc_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_cv_prog_cc_pic='-Kconform_pic' + lt_cv_prog_cc_static='-Bstatic' + fi + ;; + + *) + lt_cv_prog_cc_can_build_shared=no + ;; + esac + fi +]) +if test -z "$lt_cv_prog_cc_pic"; then + AC_MSG_RESULT([none]) +else + AC_MSG_RESULT([$lt_cv_prog_cc_pic]) + + # Check to make sure the pic_flag actually works. + AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works]) + AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" + AC_TRY_COMPILE([], [], [dnl + case $host_os in + hpux9* | hpux10* | hpux11*) + # On HP-UX, both CC and GCC only warn that PIC is supported... then + # they create non-PIC objects. So, if there were any warnings, we + # assume that PIC is not supported. + if test -s conftest.err; then + lt_cv_prog_cc_pic_works=no + else + lt_cv_prog_cc_pic_works=yes + fi + ;; + *) + lt_cv_prog_cc_pic_works=yes + ;; + esac + ], [dnl + lt_cv_prog_cc_pic_works=no + ]) + CFLAGS="$save_CFLAGS" + ]) + + if test "X$lt_cv_prog_cc_pic_works" = Xno; then + lt_cv_prog_cc_pic= + lt_cv_prog_cc_can_build_shared=no + else + lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" + fi + + AC_MSG_RESULT([$lt_cv_prog_cc_pic_works]) +fi + +# Check for any special shared library compilation flags. +if test -n "$lt_cv_prog_cc_shlib"; then + AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries]) + if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then : + else + AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure]) + lt_cv_prog_cc_can_build_shared=no + fi +fi + +AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works]) +AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl + lt_cv_prog_cc_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" + AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes]) + LDFLAGS="$save_LDFLAGS" +]) + +# Belt *and* braces to stop my trousers falling down: +test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +AC_MSG_RESULT([$lt_cv_prog_cc_static_works]) + +pic_flag="$lt_cv_prog_cc_pic" +special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +wl="$lt_cv_prog_cc_wl" +link_static_flag="$lt_cv_prog_cc_static" +no_builtin_flag="$lt_cv_prog_cc_no_builtin" +can_build_shared="$lt_cv_prog_cc_can_build_shared" + + +# Check to see if options -o and -c are simultaneously supported by compiler +AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext]) +AC_CACHE_VAL([lt_cv_compiler_c_o], [ +$rm -r conftest 2>/dev/null +mkdir conftest +cd conftest +echo "int some_variable = 0;" > conftest.$ac_ext +mkdir out +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +# that will create temporary files in the current directory regardless of +# the output directory. Thus, making CWD read-only will cause this test +# to fail, enabling locking or at least warning the user not to do parallel +# builds. +chmod -w . +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +compiler_c_o=no +if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s out/conftest.err; then + lt_cv_compiler_c_o=no + else + lt_cv_compiler_c_o=yes + fi +else + # Append any errors to the config.log. + cat out/conftest.err 1>&AC_FD_CC + lt_cv_compiler_c_o=no +fi +CFLAGS="$save_CFLAGS" +chmod u+w . +$rm conftest* out/* +rmdir out +cd .. +rmdir conftest +$rm -r conftest 2>/dev/null +]) +compiler_c_o=$lt_cv_compiler_c_o +AC_MSG_RESULT([$compiler_c_o]) + +if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + AC_MSG_CHECKING([if $compiler supports -c -o file.lo]) + AC_CACHE_VAL([lt_cv_compiler_o_lo], [ + lt_cv_compiler_o_lo=no + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + save_objext="$ac_objext" + ac_objext=lo + AC_TRY_COMPILE([], [int some_variable = 0;], [dnl + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + lt_cv_compiler_o_lo=no + else + lt_cv_compiler_o_lo=yes + fi + ]) + ac_objext="$save_objext" + CFLAGS="$save_CFLAGS" + ]) + compiler_o_lo=$lt_cv_compiler_o_lo + AC_MSG_RESULT([$compiler_o_lo]) +else + compiler_o_lo=no +fi + +# Check to see if we can do hard links to lock some files if needed +hard_links="nottested" +if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi + +if test "$GCC" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions]) + echo "int some_variable = 0;" > conftest.$ac_ext + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" + compiler_rtti_exceptions=no + AC_TRY_COMPILE([], [int some_variable = 0;], [dnl + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + compiler_rtti_exceptions=no + else + compiler_rtti_exceptions=yes + fi + ]) + CFLAGS="$save_CFLAGS" + AC_MSG_RESULT([$compiler_rtti_exceptions]) + + if test "$compiler_rtti_exceptions" = "yes"; then + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' + else + no_builtin_flag=' -fno-builtin' + fi +fi + +# See if the linker supports building shared libraries. +AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries]) + +allow_undefined_flag= +no_undefined_flag= +need_lib_prefix=unknown +need_version=unknown +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +archive_cmds= +archive_expsym_cmds= +old_archive_from_new_cmds= +old_archive_from_expsyms_cmds= +export_dynamic_flag_spec= +whole_archive_flag_spec= +thread_safe_flag_spec= +hardcode_into_libs=no +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= +link_all_deplibs=unknown +always_export_symbols=no +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +# include_expsyms should be a list of space-separated symbols to be *always* +# included in the symbol list +include_expsyms= +# exclude_expsyms can be an egrep regular expression of symbols to exclude +# it will be wrapped by ` (' and `)$', so one must not match beginning or +# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +# as well as any symbol that contains `d'. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +# platforms (ab)use it in PIC code, but their linkers get confused if +# the symbol is explicitly referenced. Since portable code cannot +# rely on this symbol name, it's probably fine to never include it in +# preloaded symbol tables. +extract_expsyms_cmds= + +case $host_os in +cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; +openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX, the GNU linker is very broken + # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=yes + + extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ + sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ + test -f $output_objdir/impgen.exe || (cd $output_objdir && \ + if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ + else $CC -o impgen impgen.c ; fi)~ + $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' + + old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' + + # cygwin and mingw dlls have different entry points and sets of symbols + # to exclude. + # FIXME: what about values for MSVC? + dll_entry=__cygwin_dll_entry@12 + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ + case $host_os in + mingw*) + # mingw values + dll_entry=_DllMainCRTStartup@12 + dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ + ;; + esac + + # mingw and cygwin differ, and it's simplest to just exclude the union + # of the two symbol sets. + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 + + # recent cygwin and mingw systems supply a stub DllMain which the user + # can override, but on older systems we have to supply one (in ltdll.c) + if test "x$lt_cv_need_dllmain" = "xyes"; then + ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " + ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ + test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' + else + ltdll_obj= + ltdll_cmds= + fi + + # Extract the symbol export list from an `--export-all' def file, + # then regenerate the def file from the symbol export list, so that + # the compiled dll only exports the symbol export list. + # Be careful not to strip the DATA tag left be newer dlltools. + export_symbols_cmds="$ltdll_cmds"' + $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ + sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' + + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is. + # If DATA tags from a recent dlltool are present, honour them! + archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname-def; + else + echo EXPORTS > $output_objdir/$soname-def; + _lt_hint=1; + cat $export_symbols | while read symbol; do + set dummy \$symbol; + case \[$]# in + 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; + 4) echo " \[$]2 \[$]3 \[$]4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;; + *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;; + esac; + _lt_hint=`expr 1 + \$_lt_hint`; + done; + fi~ + '"$ltdll_cmds"' + $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ + $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ + $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + case $host_os in + cygwin* | mingw* | pw32*) + # dlltool doesn't understand --whole-archive et. al. + whole_archive_flag_spec= + ;; + *) + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + ;; + esac + fi +else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + hardcode_direct=yes + archive_cmds='' + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + + shared_flag='-shared' + else + # not using gcc + if test "$host_cpu" = ia64; then + shared_flag='${wl}-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall can do strange things, so it is better to + # generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='${wl}-berok' + # This is a bit strange, but is similar to how AIX traditionally builds + # it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[[012]]) + allow_undefined_flag='-undefined suppress' + ;; + *) # Darwin 1.3 on + allow_undefined_flag='-flat_namespace -undefined suppress' + ;; + esac + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. Also zsh mangles + # `"' quotes if we put them in here... so don't! + archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)' + # We need to add '_' to the symbols in $export_symbols first + #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' + hardcode_direct=yes + hardcode_shlibpath_var=no + whole_archive_flag_spec='-all_load $convenience' + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9* | hpux10* | hpux11*) + case $host_os in + hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; + esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case "$host_os" in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + #Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + export_dynamic_flag_spec='${wl}-Bexport' + ;; + + solaris*) + # gcc --version < 3.0 without binutils cannot create self contained + # shared libraries reliably, requiring libgcc.a to resolve some of + # the object symbols generated in some cases. Libraries that use + # assert need libgcc.a to resolve __eprintf, for example. Linking + # a copy of libgcc.a into every shared library to guarantee resolving + # such symbols causes other problems: According to Tim Van Holder + # , C++ libraries end up with a separate + # (to the application) exception stack for one thing. + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + case `$CC --version 2>/dev/null` in + [[12]].*) + cat <&2 + +*** Warning: Releases of GCC earlier than version 3.0 cannot reliably +*** create self contained shared libraries on Solaris systems, without +*** introducing a dependency on libgcc.a. Therefore, libtool is disabling +*** -no-undefined support, which will at least allow you to build shared +*** libraries. However, you may find that when you link such libraries +*** into an application without using GCC, you have to manually add +*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to +*** upgrade to a newer version of GCC. Another option is to rebuild your +*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. + +EOF + no_undefined_flag= + ;; + esac + fi + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5uw7* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac +fi +AC_MSG_RESULT([$ld_shlibs]) +test "$ld_shlibs" = no && can_build_shared=no + +# Check hardcoding attributes. +AC_MSG_CHECKING([how to hardcode library paths into programs]) +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$hardcode_shlibpath_var" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +AC_MSG_RESULT([$hardcode_action]) + +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi + +reload_cmds='$LD$reload_flag -o $output$reload_objs' +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +# PORTME Fill in your ld.so characteristics +AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can + # not hardcode correct soname into executable. Probably we can + # add versioning support to collect2, so additional links can + # be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}.so$major' + fi + shlibpath_var=LIBPATH + fi + hardcode_into_libs=yes + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi4*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + export_dynamic_flag_spec=-rdynamic + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + need_version=no + need_lib_prefix=no + case $GCC,$host_os in + yes,cygwin*) + library_names_spec='$libname.dll.a' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' + postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog .libs/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + ;; + yes,mingw*) + library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"` + ;; + yes,pw32*) + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' + ;; + *) + library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' + soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + *) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) version_type=irix ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' + soname_spec='${libname}${release}.so$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case "$host_os" in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_version=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + hardcode_into_libs=yes + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='$libname.so.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +# Report the final consequences. +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +AC_LIBTOOL_DLOPEN_SELF + +if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + AC_CACHE_VAL([lt_cv_archive_cmds_need_lc], + [$rm conftest* + echo 'static int dummy;' > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile); then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_cv_prog_cc_wl + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi]) + AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) + ;; + esac +fi +need_lc=${lt_cv_archive_cmds_need_lc-yes} + +# The second clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + : +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + test -f Makefile && make "$ltmain" +fi + +if test -f "$ltmain"; then + trap "$rm \"${ofile}T\"; exit 1" 1 2 15 + $rm -f "${ofile}T" + + echo creating $ofile + + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS SED \ + AR AR_FLAGS CC LD LN_S NM SHELL \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ + thread_safe_flag_spec whole_archive_flag_spec libname_spec \ + library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ + postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ + old_striplib striplib file_magic_cmd export_symbols_cmds \ + deplibs_check_method allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ + global_symbol_to_c_name_address \ + hardcode_libdir_flag_spec hardcode_libdir_separator \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case $var in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + cat <<__EOF__ > "${ofile}T" +#! $SHELL + +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996-2000 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="${SED} -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$need_lc + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# The default C compiler. +CC=$lt_CC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_pic_flag +pic_mode=$pic_mode + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_compiler_c_o + +# Can we write directly to a .lo ? +compiler_o_lo=$lt_compiler_o_lo + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_link_static_flag + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + case $host_os in + aix3*) + cat <<\EOF >> "${ofile}T" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + case $host_os in + cygwin* | mingw* | pw32* | os2*) + cat <<'EOF' >> "${ofile}T" + # This is a source program that is used to create dlls on Windows + # Don't remove nor modify the starting and closing comments +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ + # This is a source program that is used to create import libraries + # on Windows for dlls which lack them. Don't remove nor modify the + # starting and closing comments +# /* impgen.c starts here */ +# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +# +# This file is part of GNU libtool. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# */ +# +# #include /* for printf() */ +# #include /* for open(), lseek(), read() */ +# #include /* for O_RDONLY, O_BINARY */ +# #include /* for strdup() */ +# +# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +# #ifndef O_BINARY +# #define O_BINARY 0 +# #endif +# +# static unsigned int +# pe_get16 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[2]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 2); +# return b[0] + (b[1]<<8); +# } +# +# static unsigned int +# pe_get32 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[4]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 4); +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# static unsigned int +# pe_as32 (ptr) +# void *ptr; +# { +# unsigned char *b = ptr; +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# int +# main (argc, argv) +# int argc; +# char *argv[]; +# { +# int dll; +# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +# unsigned long export_rva, export_size, nsections, secptr, expptr; +# unsigned long name_rvas, nexp; +# unsigned char *expdata, *erva; +# char *filename, *dll_name; +# +# filename = argv[1]; +# +# dll = open(filename, O_RDONLY|O_BINARY); +# if (dll < 1) +# return 1; +# +# dll_name = filename; +# +# for (i=0; filename[i]; i++) +# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +# dll_name = filename + i +1; +# +# pe_header_offset = pe_get32 (dll, 0x3c); +# opthdr_ofs = pe_header_offset + 4 + 20; +# num_entries = pe_get32 (dll, opthdr_ofs + 92); +# +# if (num_entries < 1) /* no exports */ +# return 1; +# +# export_rva = pe_get32 (dll, opthdr_ofs + 96); +# export_size = pe_get32 (dll, opthdr_ofs + 100); +# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +# secptr = (pe_header_offset + 4 + 20 + +# pe_get16 (dll, pe_header_offset + 4 + 16)); +# +# expptr = 0; +# for (i = 0; i < nsections; i++) +# { +# char sname[8]; +# unsigned long secptr1 = secptr + 40 * i; +# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +# lseek(dll, secptr1, SEEK_SET); +# read(dll, sname, 8); +# if (vaddr <= export_rva && vaddr+vsize > export_rva) +# { +# expptr = fptr + (export_rva - vaddr); +# if (export_rva + export_size > vaddr + vsize) +# export_size = vsize - (export_rva - vaddr); +# break; +# } +# } +# +# expdata = (unsigned char*)malloc(export_size); +# lseek (dll, expptr, SEEK_SET); +# read (dll, expdata, export_size); +# erva = expdata - export_rva; +# +# nexp = pe_as32 (expdata+24); +# name_rvas = pe_as32 (expdata+32); +# +# printf ("EXPORTS\n"); +# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) + + mv -f "${ofile}T" "$ofile" || \ + (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") + chmod +x "$ofile" +fi + +])# _LT_AC_LTCONFIG_HACK + +# AC_LIBTOOL_DLOPEN - enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) + +# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) + +# AC_ENABLE_SHARED - implement the --enable-shared flag +# Usage: AC_ENABLE_SHARED[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(shared, +changequote(<<, >>)dnl +<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case $enableval in +yes) enable_shared=yes ;; +no) enable_shared=no ;; +*) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl +]) + +# AC_DISABLE_SHARED - set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no)]) + +# AC_ENABLE_STATIC - implement the --enable-static flag +# Usage: AC_ENABLE_STATIC[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(static, +changequote(<<, >>)dnl +<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case $enableval in +yes) enable_static=yes ;; +no) enable_static=no ;; +*) + enable_static=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_static=AC_ENABLE_STATIC_DEFAULT)dnl +]) + +# AC_DISABLE_STATIC - set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no)]) + + +# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag +# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(fast-install, +changequote(<<, >>)dnl +<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case $enableval in +yes) enable_fast_install=yes ;; +no) enable_fast_install=no ;; +*) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl +]) + +# AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no)]) + +# AC_LIBTOOL_PICMODE - implement the --with-pic flag +# Usage: AC_LIBTOOL_PICMODE[(MODE)] +# Where MODE is either `yes' or `no'. If omitted, it defaults to +# `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default)]) + + +# AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in + /*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; + ?:/*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +]) + + +# AC_PATH_MAGIC - find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl +AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH) + else + MAGIC_CMD=: + fi +fi +]) + + +# AC_PROG_LD - find the path to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH(gnu-ld, +[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], +test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | [[A-Za-z]]:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$lt_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_PROG_LD_GNU +]) + +# AC_PROG_LD_GNU - +AC_DEFUN([AC_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + lt_cv_prog_gnu_ld=yes +else + lt_cv_prog_gnu_ld=no +fi]) +with_gnu_ld=$lt_cv_prog_gnu_ld +]) + +# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker +# -- PORTME Some linkers may need a different reload flag. +AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], +[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag, +[lt_cv_ld_reload_flag='-r']) +reload_flag=$lt_cv_ld_reload_flag +test -n "$reload_flag" && reload_flag=" $reload_flag" +]) + +# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], +[AC_CACHE_CHECK([how to recognise dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given egrep regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi4*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin* | mingw* | pw32*) + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' + lt_cv_file_magic_cmd='/usr/bin/file -L' + case "$host_os" in + rhapsody* | darwin1.[[012]]) + lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` + ;; + *) # Darwin 1.3 on + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' + ;; + esac + ;; + +freebsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20*|hpux11*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + irix5* | nonstopux*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" + ;; + esac + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux-gnu*) + case $host_cpu in + alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64*) + lt_cv_deplibs_check_method=pass_all ;; + *) + # glibc up to 2.1.1 does not perform some relocations on ARM + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; + esac + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +openbsd*) + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' + else + lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + fi + ;; + +osf3* | osf4* | osf5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' + lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +sysv5uw[[78]]* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +]) + + +# AC_PROG_NM - find the path to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl +AC_MSG_CHECKING([for BSD-compatible nm]) +AC_CACHE_VAL(lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/${ac_tool_prefix}nm + if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then + lt_cv_path_NM="$tmp_nm -B" + break + elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + lt_cv_path_NM="$tmp_nm -p" + break + else + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +AC_MSG_RESULT([$NM]) +]) + +# AC_CHECK_LIBM - check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32*) + # These system don't have libm + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, main, LIBM="-lm") + ;; +esac +]) + +# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl convenience library and LTDLINCL to the include flags for +# the libltdl header and adds --enable-ltdl-convenience to the +# configure arguments. Note that LIBLTDL and LTDLINCL are not +# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not +# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed +# with '${top_builddir}/' and LTDLINCL will be prefixed with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +]) + +# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl installable library and LTDLINCL to the include flags for +# the libltdl header and adds --enable-ltdl-install to the configure +# arguments. Note that LIBLTDL and LTDLINCL are not AC_SUBSTed, nor is +# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed +# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will +# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed +# with '${top_srcdir}/' (note the single quotes!). If your package is +# not flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, main, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +]) + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_executable_p="test -f" +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext" + fi + done + done +done + + # Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/sed$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + _max=0 + _count=0 + # Add /usr/xpg4/bin/sed as it is typically found on Solaris + # along with /bin/sed that truncates output. + for _sed in $_sed_list /usr/xpg4/bin/sed; do + test ! -f ${_sed} && break + cat /dev/null > "$tmp/sed.in" + _count=0 + echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in" + # Check for GNU sed and select it if it is found. + if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then + lt_cv_path_SED=${_sed} + break + fi + while true; do + cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp" + mv "$tmp/sed.tmp" "$tmp/sed.in" + cp "$tmp/sed.in" "$tmp/sed.nl" + echo >>"$tmp/sed.nl" + ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break + cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break + # 40000 chars as input seems more than enough + test $_count -gt 10 && break + _count=`expr $_count + 1` + if test $_count -gt $_max; then + _max=$_count + lt_cv_path_SED=$_sed + fi + done + done + rm -rf "$tmp" +]) +if test "X$SED" != "X"; then + lt_cv_path_SED=$SED +else + SED=$lt_cv_path_SED +fi +AC_MSG_RESULT([$SED]) +]) + diff --git a/libprozilla/config.guess b/libprozilla/config.guess new file mode 100755 index 0000000..5145e35 --- /dev/null +++ b/libprozilla/config.guess @@ -0,0 +1,1363 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002 Free Software Foundation, Inc. + +timestamp='2002-10-21' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# This shell variable is my proudest work .. or something. --bje + +set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ; +(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old) + || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ; +dummy=$tmpdir/dummy ; +files="$dummy.c $dummy.o $dummy.rel $dummy" ; +trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + rm -f $files ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; +unset files' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + eval $set_cc_for_build + cat <$dummy.s + .data +\$Lformat: + .byte 37,100,45,37,120,10,0 # "%d-%x\n" + + .text + .globl main + .align 4 + .ent main +main: + .frame \$30,16,\$26,0 + ldgp \$29,0(\$27) + .prologue 1 + .long 0x47e03d80 # implver \$0 + lda \$2,-1 + .long 0x47e20c21 # amask \$2,\$1 + lda \$16,\$Lformat + mov \$0,\$17 + not \$1,\$18 + jsr \$26,printf + ldgp \$29,0(\$26) + mov 0,\$16 + jsr \$26,exit + .end main +EOF + $CC_FOR_BUILD -o $dummy $dummy.s 2>/dev/null + if test "$?" = 0 ; then + case `$dummy` in + 0-0) + UNAME_MACHINE="alpha" + ;; + 1-0) + UNAME_MACHINE="alphaev5" + ;; + 1-1) + UNAME_MACHINE="alphaev56" + ;; + 1-101) + UNAME_MACHINE="alphapca56" + ;; + 2-303) + UNAME_MACHINE="alphaev6" + ;; + 2-307) + UNAME_MACHINE="alphaev67" + ;; + 2-1307) + UNAME_MACHINE="alphaev68" + ;; + 3-1307) + UNAME_MACHINE="alphaev7" + ;; + esac + fi + rm -f $dummy.s $dummy && rmdir $tmpdir + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 + rm -f $dummy.c $dummy && rmdir $tmpdir + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 + rm -f $dummy.c $dummy && rmdir $tmpdir + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi + rm -f $dummy.c $dummy && rmdir $tmpdir + fi ;; + esac + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 + rm -f $dummy.c $dummy && rmdir $tmpdir + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3D:*:*:*) + echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + rm -f $dummy.c && rmdir $tmpdir + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:3*) + echo i386-pc-interix3 + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i386-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + rm -f $dummy.c && rmdir $tmpdir + test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + rm -f $dummy.c && rmdir $tmpdir + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + echo `uname -p`-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 +rm -f $dummy.c $dummy && rmdir $tmpdir + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/libprozilla/config.h.in b/libprozilla/config.h.in new file mode 100644 index 0000000..5dccc9f --- /dev/null +++ b/libprozilla/config.h.in @@ -0,0 +1,327 @@ +/* config.h.in. Generated from configure.in by autoheader. */ +/* For use by autoheader. */ + +#ifndef CONFIG_H +#define CONFIG_H /* To stop multiple inclusions. */ + + +/* Enable GNU extensions. */ +#undef _GNU_SOURCE + +/* How many arguments does gethostbyname_r() take? */ +#undef HAVE_FUNC_GETHOSTBYNAME_R_6 +#undef HAVE_FUNC_GETHOSTBYNAME_R_5 +#undef HAVE_FUNC_GETHOSTBYNAME_R_3 + +/* Define to 'int' if not already defined by the system. */ +#undef socklen_t + + +/* autoheader generated things inserted here. */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END + +/* Define to 1 if using `alloca.c'. */ +#undef C_ALLOCA + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* Define to 1 if you have `alloca', as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_ARGZ_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_ARPA_INET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_ASSERT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_CTYPE_H + +/* Define to 1 if you have the `dcgettext' function. */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ +#undef HAVE_DOPRNT + +/* Define to 1 if you have the header file. */ +#undef HAVE_ERRNO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `feof_unlocked' function. */ +#undef HAVE_FEOF_UNLOCKED + +/* Define to 1 if you have the `fgets_unlocked' function. */ +#undef HAVE_FGETS_UNLOCKED + +/* Define to 1 if you have the `getcwd' function. */ +#undef HAVE_GETCWD + +/* Define to 1 if you have the `getegid' function. */ +#undef HAVE_GETEGID + +/* Define to 1 if you have the `geteuid' function. */ +#undef HAVE_GETEUID + +/* Define to 1 if you have the `getgid' function. */ +#undef HAVE_GETGID + +/* Define to 1 if you have the `getpagesize' function. */ +#undef HAVE_GETPAGESIZE + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define to 1 if you have the `getuid' function. */ +#undef HAVE_GETUID + +/* Define if you have the iconv() function. */ +#undef HAVE_ICONV + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET + +/* Define if your file defines LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES + +/* Define to 1 if you have the `nsl' library (-lnsl). */ +#undef HAVE_LIBNSL + +/* Define to 1 if you have the `socket' library (-lsocket). */ +#undef HAVE_LIBSOCKET + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MALLOC_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `mempcpy' function. */ +#undef HAVE_MEMPCPY + +/* Define to 1 if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define to 1 if you have the `munmap' function. */ +#undef HAVE_MUNMAP + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETDB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_IN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NL_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_PTHREAD_H + +/* Define to 1 if you have the `putenv' function. */ +#undef HAVE_PUTENV + +/* Define to 1 if you have the header file. */ +#undef HAVE_PWD_H + +/* Define to 1 if you have the `select' function. */ +#undef HAVE_SELECT + +/* Define to 1 if you have the `setenv' function. */ +#undef HAVE_SETENV + +/* Define to 1 if you have the `setlocale' function. */ +#undef HAVE_SETLOCALE + +/* Define to 1 if you have the `snprintf' function. */ +#undef HAVE_SNPRINTF + +/* Define to 1 if you have the `socket' function. */ +#undef HAVE_SOCKET + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDDEF_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDIO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `stpcpy' function. */ +#undef HAVE_STPCPY + +/* Define to 1 if you have the `strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define to 1 if you have the `strchr' function. */ +#undef HAVE_STRCHR + +/* Define to 1 if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define to 1 if you have the `strerror' function. */ +#undef HAVE_STRERROR + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strncasecmp' function. */ +#undef HAVE_STRNCASECMP + +/* Define to 1 if you have the `strrchr' function. */ +#undef HAVE_STRRCHR + +/* Define to 1 if you have the `strtol' function. */ +#undef HAVE_STRTOL + +/* Define to 1 if you have the `strtoul' function. */ +#undef HAVE_STRTOUL + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SOCKET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_TIME_H + +/* Define to 1 if you have the `tsearch' function. */ +#undef HAVE_TSEARCH + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `vprintf' function. */ +#undef HAVE_VPRINTF + +/* Define to 1 if you have the `vsnprintf' function. */ +#undef HAVE_VSNPRINTF + +/* Define to 1 if you have the `__argz_count' function. */ +#undef HAVE___ARGZ_COUNT + +/* Define to 1 if you have the `__argz_next' function. */ +#undef HAVE___ARGZ_NEXT + +/* Define to 1 if you have the `__argz_stringify' function. */ +#undef HAVE___ARGZ_STRINGIFY + +/* Define to 1 if you have the `__snprintf' function. */ +#undef HAVE___SNPRINTF + +/* Define to 1 if you have the `__vsnprintf' function. */ +#undef HAVE___VSNPRINTF + +/* Define as const if the declaration of iconv() needs const. */ +#undef ICONV_CONST + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define to 1 if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME + +/* Version number of package */ +#undef VERSION + +/* Define to 1 if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif + +/* Define to 1 if on MINIX. */ +#undef _MINIX + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +#undef _POSIX_1_SOURCE + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +#undef _POSIX_SOURCE + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define as `__inline' if that's what the C compiler calls it, or to nothing + if it is not supported. */ +#undef inline + +/* Define to `long' if does not define. */ +#undef off_t + +/* Define to `unsigned' if does not define. */ +#undef size_t + + +#endif /* CONFIG_H */ + diff --git a/libprozilla/config.sub b/libprozilla/config.sub new file mode 100755 index 0000000..1dea9b7 --- /dev/null +++ b/libprozilla/config.sub @@ -0,0 +1,1470 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002 Free Software Foundation, Inc. + +timestamp='2002-09-05' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | freebsd*-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* \ + | m32r-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39 | mipstx39el \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2) + basic_machine=i686-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3d) + basic_machine=alpha-cray + os=-unicos + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic4x | c4x*) + basic_machine=tic4x-unknown + os=-coff + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + windows32) + basic_machine=i386-pc + os=-windows32-msvcrt + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* | -powermax*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto*) + os=-nto-qnx + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/libprozilla/configure b/libprozilla/configure new file mode 100755 index 0000000..8d052ac --- /dev/null +++ b/libprozilla/configure @@ -0,0 +1,13925 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.56. +# +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Find the correct PATH separator. Usually this is `:', but +# DJGPP uses `;' like DOS. +if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) lt_cv_sys_path_separator=';' ;; + *) lt_cv_sys_path_separator=':' ;; + esac + PATH_SEPARATOR=$lt_cv_sys_path_separator +fi + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="src/connect.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP LN_S ECHO RANLIB ac_ct_RANLIB LIBTOOL ALLOCA GLIBC21 LIBICONV USE_NLS MSGFMT GMSGFMT XGETTEXT INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATALOGS CATOBJEXT GMOFILES INTLLIBS INTLOBJS POFILES POSUB DATADIRNAME INSTOBJEXT GENCAT MKINSTALLDIRS INTL_LIBTOOL_SUFFIX_PREFIX THREAD_LIBS LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking Speeds up one-time builds + --enable-dependency-tracking Do not reject slow dependency extractors + --enable-static=PKGS build static libraries default=yes + --enable-shared=PKGS build shared libraries default=no + --enable-fast-install=PKGS optimize for fast installation default=yes + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-nls do not use Native Language Support + --enable-compiler-warnings=no/min/yes Issue warnings? (default=no) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld default=no + --with-pic try to use only PIC/non-PIC objects default=use both + --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib + --with-included-gettext use the GNU gettext library included here + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.56. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core core.* *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + +am__api_version="1.7" +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + # test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=libprozilla + VERSION=1.0.x-cvs + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. + + + + + ac_config_headers="$ac_config_headers config.h" + + +cat >>confdefs.h <<\_ACEOF +#define _GNU_SOURCE 1 +_ACEOF + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output" >&5 +echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +rm -f .deps 2>/dev/null +mkdir .deps 2>/dev/null +if test -d .deps; then + DEPDIR=.deps +else + # MS-DOS does not allow filenames that begin with a dot. + DEPDIR=_deps +fi +rmdir .deps 2>/dev/null + + + ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +doit: + @echo done +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + echo '#include "conftest.h"' > conftest.c + echo 'int i;' > conftest.h + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=conftest.c object=conftest.o \ + depfile=conftest.Po tmpdepfile=conftest.TPo \ + $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && + grep conftest.h conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + + +echo "$as_me:$LINENO: checking for AIX" >&5 +echo $ECHO_N "checking for AIX... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef _AIX + yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +cat >>confdefs.h <<\_ACEOF +#define _ALL_SOURCE 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +rm -f conftest* + + + + echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5 +echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6 +if test "${ac_cv_lib_cposix_strerror+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcposix $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strerror (); +int +main () +{ +strerror (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_cposix_strerror=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_cposix_strerror=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5 +echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6 +if test $ac_cv_lib_cposix_strerror = yes; then + LIBS="$LIBS -lcposix" +fi + + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking minix/config.h usability" >&5 +echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking minix/config.h presence" >&5 +echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_minix_config_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 + +fi +if test $ac_cv_header_minix_config_h = yes; then + MINIX=yes +else + MINIX= +fi + + +if test "$MINIX" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define _POSIX_SOURCE 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define _POSIX_1_SOURCE 2 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define _MINIX 1 +_ACEOF + +fi + + + + + +echo "$as_me:$LINENO: checking for ${CC-cc} option to accept ANSI C" >&5 +echo $ECHO_N "checking for ${CC-cc} option to accept ANSI C... $ECHO_C" >&6 +if test "${am_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + am_cv_prog_cc_stdc=no +ac_save_CC="$CC" +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; + +int +main () +{ + +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_prog_cc_stdc="$ac_arg"; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +CC="$ac_save_CC" + +fi + +if test -z "$am_cv_prog_cc_stdc"; then + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 +else + echo "$as_me:$LINENO: result: $am_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$am_cv_prog_cc_stdc" >&6 +fi +case "x$am_cv_prog_cc_stdc" in + x|xno) ;; + *) CC="$CC $am_cv_prog_cc_stdc" ;; +esac + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +# Check whether --enable-static or --disable-static was given. +if test "${enable_static+set}" = set; then + enableval="$enable_static" + p=${PACKAGE-default} +case $enableval in +yes) enable_static=yes ;; +no) enable_static=no ;; +*) + enable_static=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_static=yes +fi; +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + p=${PACKAGE-default} +case $enableval in +yes) enable_shared=yes ;; +no) enable_shared=no ;; +*) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_shared=no +fi; +# Check whether --enable-fast-install or --disable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval="$enable_fast_install" + p=${PACKAGE-default} +case $enableval in +yes) enable_fast_install=yes ;; +no) enable_fast_install=no ;; +*) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_fast_install=yes +fi; +# Find the correct PATH separator. Usually this is `:', but +# DJGPP uses `;' like DOS. +if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) lt_cv_sys_path_separator=';' ;; + *) lt_cv_sys_path_separator=':' ;; + esac + PATH_SEPARATOR=$lt_cv_sys_path_separator +fi + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$lt_cv_path_LD" +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + lt_cv_prog_gnu_ld=yes +else + lt_cv_prog_gnu_ld=no +fi +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + +echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +reload_flag=$lt_cv_ld_reload_flag +test -n "$reload_flag" && reload_flag=" $reload_flag" + +echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/${ac_tool_prefix}nm + if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then + lt_cv_path_NM="$tmp_nm -B" + break + elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + lt_cv_path_NM="$tmp_nm -p" + break + else + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi + +NM="$lt_cv_path_NM" +echo "$as_me:$LINENO: result: $NM" >&5 +echo "${ECHO_T}$NM" >&6 + +echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 +if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_executable_p="test -f" +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext" + fi + done + done +done + + # Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/sed$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + _max=0 + _count=0 + # Add /usr/xpg4/bin/sed as it is typically found on Solaris + # along with /bin/sed that truncates output. + for _sed in $_sed_list /usr/xpg4/bin/sed; do + test ! -f ${_sed} && break + cat /dev/null > "$tmp/sed.in" + _count=0 + echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in" + # Check for GNU sed and select it if it is found. + if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then + lt_cv_path_SED=${_sed} + break + fi + while true; do + cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp" + mv "$tmp/sed.tmp" "$tmp/sed.in" + cp "$tmp/sed.in" "$tmp/sed.nl" + echo >>"$tmp/sed.nl" + ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break + cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break + # 40000 chars as input seems more than enough + test $_count -gt 10 && break + _count=`expr $_count + 1` + if test $_count -gt $_max; then + _max=$_count + lt_cv_path_SED=$_sed + fi + done + done + rm -rf "$tmp" + +fi + +if test "X$SED" != "X"; then + lt_cv_path_SED=$SED +else + SED=$lt_cv_path_SED +fi +echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6 + +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 +echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given egrep regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi4*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin* | mingw* | pw32*) + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' + lt_cv_file_magic_cmd='/usr/bin/file -L' + case "$host_os" in + rhapsody* | darwin1.[012]) + lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` + ;; + *) # Darwin 1.3 on + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' + ;; + esac + ;; + +freebsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20*|hpux11*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + irix5* | nonstopux*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" + ;; + esac + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux-gnu*) + case $host_cpu in + alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64*) + lt_cv_deplibs_check_method=pass_all ;; + *) + # glibc up to 2.1.1 does not perform some relocations on ARM + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; + esac + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +openbsd*) + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' + else + lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + fi + ;; + +osf3* | osf4* | osf5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' + lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +sysv5uw[78]* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; +esac + +fi +echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method + + + + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo "$as_me:$LINENO: checking command to parse $NM output" >&5 +echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6 +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris* | sysv5*) + symcode='[BDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $host_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[ABCDGISTW]' +fi + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. +lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + rm -f conftest* + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{ +EOF + sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +if test -z "$lt_cv_sys_global_symbol_pipe"; then + global_symbol_to_cdecl= + global_symbol_to_c_name_address= +else + global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" + global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" +fi +if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; +then + echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6 +else + echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6 +fi + + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in + /*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; + ?:/*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="/usr/bin:$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in + /*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; + ?:/*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="/usr/bin:$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 4990 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_cc_needs_belf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +lt_cv_cc_needs_belf=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + + +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" +need_locks="$enable_libtool_lock" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +if test x"$host" != x"$build"; then + ac_tool_prefix=${host_alias}- +else + ac_tool_prefix= +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case $host_os in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="$2" + +echo "$as_me:$LINENO: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +echo "$as_me:$LINENO: result: $objdir" >&5 +echo "${ECHO_T}$objdir" >&6 + + + +# Check whether --with-pic or --without-pic was given. +if test "${with_pic+set}" = set; then + withval="$with_pic" + pic_mode="$withval" +else + pic_mode=default +fi; +test -z "$pic_mode" && pic_mode=default + +# We assume here that the value for lt_cv_prog_cc_pic will not be cached +# in isolation, and that seeing it set (from the cache) indicates that +# the associated values are set (in the cache) correctly too. +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 +if test "${lt_cv_prog_cc_pic+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_cc_pic= + lt_cv_prog_cc_shlib= + lt_cv_prog_cc_wl= + lt_cv_prog_cc_static= + lt_cv_prog_cc_no_builtin= + lt_cv_prog_cc_can_build_shared=$can_build_shared + + if test "$GCC" = yes; then + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-static' + + case $host_os in + aix*) + # Below there is a dirty hack to force normal static linking with -ldl + # The problem is because libdl dynamically linked with both libc and + # libC (AIX C++ library), which obviously doesn't included in libraries + # list by gcc. This cause undefined symbols with -static flags. + # This hack allows C programs to be linked with "-static -ldl", but + # not sure about C++ programs. + lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_cv_prog_cc_pic='-fno-common' + ;; + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_cv_prog_cc_pic=-Kconform_pic + fi + ;; + *) + lt_cv_prog_cc_pic='-fPIC' + ;; + esac + else + # PORTME Check for PIC flags for the system compiler. + case $host_os in + aix3* | aix4* | aix5*) + lt_cv_prog_cc_wl='-Wl,' + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_cv_prog_cc_static='-Bstatic' + else + lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + hpux9* | hpux10* | hpux11*) + # Is there a better lt_cv_prog_cc_static that works with the bundled CC? + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" + lt_cv_prog_cc_pic='+Z' + ;; + + irix5* | irix6* | nonstopux*) + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + + newsos6) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + ;; + + osf3* | osf4* | osf5*) + # All OSF/1 code is PIC. + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + ;; + + sco3.2v5*) + lt_cv_prog_cc_pic='-Kpic' + lt_cv_prog_cc_static='-dn' + lt_cv_prog_cc_shlib='-belf' + ;; + + solaris*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + sunos4*) + lt_cv_prog_cc_pic='-PIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Qoption ld ' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + uts4*) + lt_cv_prog_cc_pic='-pic' + lt_cv_prog_cc_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_cv_prog_cc_pic='-Kconform_pic' + lt_cv_prog_cc_static='-Bstatic' + fi + ;; + + *) + lt_cv_prog_cc_can_build_shared=no + ;; + esac + fi + +fi + +if test -z "$lt_cv_prog_cc_pic"; then + echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6 +else + echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5 +echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 + + # Check to make sure the pic_flag actually works. + echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 + if test "${lt_cv_prog_cc_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + case $host_os in + hpux9* | hpux10* | hpux11*) + # On HP-UX, both CC and GCC only warn that PIC is supported... then + # they create non-PIC objects. So, if there were any warnings, we + # assume that PIC is not supported. + if test -s conftest.err; then + lt_cv_prog_cc_pic_works=no + else + lt_cv_prog_cc_pic_works=yes + fi + ;; + *) + lt_cv_prog_cc_pic_works=yes + ;; + esac + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + lt_cv_prog_cc_pic_works=no + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + +fi + + + if test "X$lt_cv_prog_cc_pic_works" = Xno; then + lt_cv_prog_cc_pic= + lt_cv_prog_cc_can_build_shared=no + else + lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" + fi + + echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5 +echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 +fi + +# Check for any special shared library compilation flags. +if test -n "$lt_cv_prog_cc_shlib"; then + { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 +echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} + if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : + else + { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} + lt_cv_prog_cc_can_build_shared=no + fi +fi + +echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 +if test "${lt_cv_prog_cc_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_cc_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_prog_cc_static_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi + + +# Belt *and* braces to stop my trousers falling down: +test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5 +echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 + +pic_flag="$lt_cv_prog_cc_pic" +special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +wl="$lt_cv_prog_cc_wl" +link_static_flag="$lt_cv_prog_cc_static" +no_builtin_flag="$lt_cv_prog_cc_no_builtin" +can_build_shared="$lt_cv_prog_cc_can_build_shared" + + +# Check to see if options -o and -c are simultaneously supported by compiler +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +$rm -r conftest 2>/dev/null +mkdir conftest +cd conftest +echo "int some_variable = 0;" > conftest.$ac_ext +mkdir out +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +# that will create temporary files in the current directory regardless of +# the output directory. Thus, making CWD read-only will cause this test +# to fail, enabling locking or at least warning the user not to do parallel +# builds. +chmod -w . +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +compiler_c_o=no +if { (eval echo configure:5519: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s out/conftest.err; then + lt_cv_compiler_c_o=no + else + lt_cv_compiler_c_o=yes + fi +else + # Append any errors to the config.log. + cat out/conftest.err 1>&5 + lt_cv_compiler_c_o=no +fi +CFLAGS="$save_CFLAGS" +chmod u+w . +$rm conftest* out/* +rmdir out +cd .. +rmdir conftest +$rm -r conftest 2>/dev/null + +fi + +compiler_c_o=$lt_cv_compiler_c_o +echo "$as_me:$LINENO: result: $compiler_c_o" >&5 +echo "${ECHO_T}$compiler_c_o" >&6 + +if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 + if test "${lt_cv_compiler_o_lo+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + lt_cv_compiler_o_lo=no + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + save_objext="$ac_objext" + ac_objext=lo + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +int some_variable = 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + lt_cv_compiler_o_lo=no + else + lt_cv_compiler_o_lo=yes + fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + ac_objext="$save_objext" + CFLAGS="$save_CFLAGS" + +fi + + compiler_o_lo=$lt_cv_compiler_o_lo + echo "$as_me:$LINENO: result: $compiler_o_lo" >&5 +echo "${ECHO_T}$compiler_o_lo" >&6 +else + compiler_o_lo=no +fi + +# Check to see if we can do hard links to lock some files if needed +hard_links="nottested" +if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +if test "$GCC" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 + echo "int some_variable = 0;" > conftest.$ac_ext + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" + compiler_rtti_exceptions=no + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +int some_variable = 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + compiler_rtti_exceptions=no + else + compiler_rtti_exceptions=yes + fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$compiler_rtti_exceptions" >&6 + + if test "$compiler_rtti_exceptions" = "yes"; then + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' + else + no_builtin_flag=' -fno-builtin' + fi +fi + +# See if the linker supports building shared libraries. +echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 + +allow_undefined_flag= +no_undefined_flag= +need_lib_prefix=unknown +need_version=unknown +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +archive_cmds= +archive_expsym_cmds= +old_archive_from_new_cmds= +old_archive_from_expsyms_cmds= +export_dynamic_flag_spec= +whole_archive_flag_spec= +thread_safe_flag_spec= +hardcode_into_libs=no +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= +link_all_deplibs=unknown +always_export_symbols=no +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +# include_expsyms should be a list of space-separated symbols to be *always* +# included in the symbol list +include_expsyms= +# exclude_expsyms can be an egrep regular expression of symbols to exclude +# it will be wrapped by ` (' and `)$', so one must not match beginning or +# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +# as well as any symbol that contains `d'. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +# platforms (ab)use it in PIC code, but their linkers get confused if +# the symbol is explicitly referenced. Since portable code cannot +# rely on this symbol name, it's probably fine to never include it in +# preloaded symbol tables. +extract_expsyms_cmds= + +case $host_os in +cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; +openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX, the GNU linker is very broken + # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=yes + + extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ + sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ + test -f $output_objdir/impgen.exe || (cd $output_objdir && \ + if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ + else $CC -o impgen impgen.c ; fi)~ + $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' + + old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' + + # cygwin and mingw dlls have different entry points and sets of symbols + # to exclude. + # FIXME: what about values for MSVC? + dll_entry=__cygwin_dll_entry@12 + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ + case $host_os in + mingw*) + # mingw values + dll_entry=_DllMainCRTStartup@12 + dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ + ;; + esac + + # mingw and cygwin differ, and it's simplest to just exclude the union + # of the two symbol sets. + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 + + # recent cygwin and mingw systems supply a stub DllMain which the user + # can override, but on older systems we have to supply one (in ltdll.c) + if test "x$lt_cv_need_dllmain" = "xyes"; then + ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " + ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ + test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' + else + ltdll_obj= + ltdll_cmds= + fi + + # Extract the symbol export list from an `--export-all' def file, + # then regenerate the def file from the symbol export list, so that + # the compiled dll only exports the symbol export list. + # Be careful not to strip the DATA tag left be newer dlltools. + export_symbols_cmds="$ltdll_cmds"' + $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ + sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' + + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is. + # If DATA tags from a recent dlltool are present, honour them! + archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname-def; + else + echo EXPORTS > $output_objdir/$soname-def; + _lt_hint=1; + cat $export_symbols | while read symbol; do + set dummy \$symbol; + case \$# in + 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; + 4) echo " \$2 \$3 \$4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;; + *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; + esac; + _lt_hint=`expr 1 + \$_lt_hint`; + done; + fi~ + '"$ltdll_cmds"' + $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ + $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ + $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + case $host_os in + cygwin* | mingw* | pw32*) + # dlltool doesn't understand --whole-archive et. al. + whole_archive_flag_spec= + ;; + *) + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + ;; + esac + fi +else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + hardcode_direct=yes + archive_cmds='' + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + + shared_flag='-shared' + else + # not using gcc + if test "$host_cpu" = ia64; then + shared_flag='${wl}-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall can do strange things, so it is better to + # generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='${wl}-berok' + # This is a bit strange, but is similar to how AIX traditionally builds + # it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag='-undefined suppress' + ;; + *) # Darwin 1.3 on + allow_undefined_flag='-flat_namespace -undefined suppress' + ;; + esac + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. Also zsh mangles + # `"' quotes if we put them in here... so don't! + archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)' + # We need to add '_' to the symbols in $export_symbols first + #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' + hardcode_direct=yes + hardcode_shlibpath_var=no + whole_archive_flag_spec='-all_load $convenience' + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9* | hpux10* | hpux11*) + case $host_os in + hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; + esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + #Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + export_dynamic_flag_spec='${wl}-Bexport' + ;; + + solaris*) + # gcc --version < 3.0 without binutils cannot create self contained + # shared libraries reliably, requiring libgcc.a to resolve some of + # the object symbols generated in some cases. Libraries that use + # assert need libgcc.a to resolve __eprintf, for example. Linking + # a copy of libgcc.a into every shared library to guarantee resolving + # such symbols causes other problems: According to Tim Van Holder + # , C++ libraries end up with a separate + # (to the application) exception stack for one thing. + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + case `$CC --version 2>/dev/null` in + [12].*) + cat <&2 + +*** Warning: Releases of GCC earlier than version 3.0 cannot reliably +*** create self contained shared libraries on Solaris systems, without +*** introducing a dependency on libgcc.a. Therefore, libtool is disabling +*** -no-undefined support, which will at least allow you to build shared +*** libraries. However, you may find that when you link such libraries +*** into an application without using GCC, you have to manually add +*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to +*** upgrade to a newer version of GCC. Another option is to rebuild your +*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. + +EOF + no_undefined_flag= + ;; + esac + fi + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5uw7* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac +fi +echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6 +test "$ld_shlibs" = no && can_build_shared=no + +# Check hardcoding attributes. +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$hardcode_shlibpath_var" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6 + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +reload_cmds='$LD$reload_flag -o $output$reload_objs' +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +# PORTME Fill in your ld.so characteristics +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can + # not hardcode correct soname into executable. Probably we can + # add versioning support to collect2, so additional links can + # be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}.so$major' + fi + shlibpath_var=LIBPATH + fi + hardcode_into_libs=yes + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi4*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + export_dynamic_flag_spec=-rdynamic + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + need_version=no + need_lib_prefix=no + case $GCC,$host_os in + yes,cygwin*) + library_names_spec='$libname.dll.a' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' + postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog .libs/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + ;; + yes,mingw*) + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"` + ;; + yes,pw32*) + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll' + ;; + *) + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' + soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + *) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) version_type=irix ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' + soname_spec='${libname}${release}.so$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case "$host_os" in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_version=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + hardcode_into_libs=yes + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='$libname.so.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +# Report the final consequences. +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + cygwin* | mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + if test "${lt_cv_archive_cmds_need_lc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + $rm conftest* + echo 'static int dummy;' > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_cv_prog_cc_wl + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi +fi + + echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5 +echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 + ;; + esac +fi +need_lc=${lt_cv_archive_cmds_need_lc-yes} + +# The second clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + : +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + test -f Makefile && make "$ltmain" +fi + +if test -f "$ltmain"; then + trap "$rm \"${ofile}T\"; exit 1" 1 2 15 + $rm -f "${ofile}T" + + echo creating $ofile + + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS SED \ + AR AR_FLAGS CC LD LN_S NM SHELL \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ + thread_safe_flag_spec whole_archive_flag_spec libname_spec \ + library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ + postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ + old_striplib striplib file_magic_cmd export_symbols_cmds \ + deplibs_check_method allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ + global_symbol_to_c_name_address \ + hardcode_libdir_flag_spec hardcode_libdir_separator \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case $var in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + cat <<__EOF__ > "${ofile}T" +#! $SHELL + +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996-2000 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="${SED} -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$need_lc + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# The default C compiler. +CC=$lt_CC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_pic_flag +pic_mode=$pic_mode + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_compiler_c_o + +# Can we write directly to a .lo ? +compiler_o_lo=$lt_compiler_o_lo + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_link_static_flag + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + case $host_os in + aix3*) + cat <<\EOF >> "${ofile}T" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + case $host_os in + cygwin* | mingw* | pw32* | os2*) + cat <<'EOF' >> "${ofile}T" + # This is a source program that is used to create dlls on Windows + # Don't remove nor modify the starting and closing comments +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ + # This is a source program that is used to create import libraries + # on Windows for dlls which lack them. Don't remove nor modify the + # starting and closing comments +# /* impgen.c starts here */ +# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +# +# This file is part of GNU libtool. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# */ +# +# #include /* for printf() */ +# #include /* for open(), lseek(), read() */ +# #include /* for O_RDONLY, O_BINARY */ +# #include /* for strdup() */ +# +# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +# #ifndef O_BINARY +# #define O_BINARY 0 +# #endif +# +# static unsigned int +# pe_get16 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[2]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 2); +# return b[0] + (b[1]<<8); +# } +# +# static unsigned int +# pe_get32 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[4]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 4); +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# static unsigned int +# pe_as32 (ptr) +# void *ptr; +# { +# unsigned char *b = ptr; +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# int +# main (argc, argv) +# int argc; +# char *argv[]; +# { +# int dll; +# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +# unsigned long export_rva, export_size, nsections, secptr, expptr; +# unsigned long name_rvas, nexp; +# unsigned char *expdata, *erva; +# char *filename, *dll_name; +# +# filename = argv[1]; +# +# dll = open(filename, O_RDONLY|O_BINARY); +# if (dll < 1) +# return 1; +# +# dll_name = filename; +# +# for (i=0; filename[i]; i++) +# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +# dll_name = filename + i +1; +# +# pe_header_offset = pe_get32 (dll, 0x3c); +# opthdr_ofs = pe_header_offset + 4 + 20; +# num_entries = pe_get32 (dll, opthdr_ofs + 92); +# +# if (num_entries < 1) /* no exports */ +# return 1; +# +# export_rva = pe_get32 (dll, opthdr_ofs + 96); +# export_size = pe_get32 (dll, opthdr_ofs + 100); +# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +# secptr = (pe_header_offset + 4 + 20 + +# pe_get16 (dll, pe_header_offset + 4 + 16)); +# +# expptr = 0; +# for (i = 0; i < nsections; i++) +# { +# char sname[8]; +# unsigned long secptr1 = secptr + 40 * i; +# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +# lseek(dll, secptr1, SEEK_SET); +# read(dll, sname, 8); +# if (vaddr <= export_rva && vaddr+vsize > export_rva) +# { +# expptr = fptr + (export_rva - vaddr); +# if (export_rva + export_size > vaddr + vsize) +# export_size = vsize - (export_rva - vaddr); +# break; +# } +# } +# +# expdata = (unsigned char*)malloc(export_size); +# lseek (dll, expptr, SEEK_SET); +# read (dll, expdata, export_size); +# erva = expdata - export_rva; +# +# nexp = pe_as32 (expdata+24); +# name_rvas = pe_as32 (expdata+32); +# +# printf ("EXPORTS\n"); +# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) + + mv -f "${ofile}T" "$ofile" || \ + (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") + chmod +x "$ofile" +fi + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + + +ALL_LINGUAS="pt_BR ro nl it fr" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset x; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *ccp; + char **p; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_const=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +#define const +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6 +if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_inline=$ac_kw; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 +case $ac_cv_c_inline in + inline | yes) ;; + no) +cat >>confdefs.h <<\_ACEOF +#define inline +_ACEOF + ;; + *) cat >>confdefs.h <<_ACEOF +#define inline $ac_cv_c_inline +_ACEOF + ;; +esac + +echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6 +if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((off_t *) 0) + return 0; +if (sizeof (off_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_off_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_off_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6 +if test $ac_cv_type_off_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define off_t long +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_size_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned +_ACEOF + +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_working_alloca_h=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 +if test $ac_cv_working_alloca_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA_H 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +int +main () +{ +char *p = (char *) alloca (1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_alloca_works=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 + +if test $ac_cv_func_alloca_works = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA 1 +_ACEOF + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +#define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#if defined(CRAY) && ! defined(CRAY2) +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_stack_direction=0 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +int +find_stack_direction () +{ + static char *addr = 0; + auto char dummy; + if (addr == 0) + { + addr = &dummy; + return find_stack_direction (); + } + else + return (&dummy > addr) ? 1 : -1; +} + +int +main () +{ + exit (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_stack_direction=-1 +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + + + +for ac_header in stdlib.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in getpagesize +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +echo "$as_me:$LINENO: checking for working mmap" >&5 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_mmap_fixed_mapped=no +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +/* malloc might have been renamed as rpl_malloc. */ +#undef malloc + +/* Thanks to Mike Haertel and Jim Avera for this test. + Here is a matrix of mmap possibilities: + mmap private not fixed + mmap private fixed at somewhere currently unmapped + mmap private fixed at somewhere already mapped + mmap shared not fixed + mmap shared fixed at somewhere currently unmapped + mmap shared fixed at somewhere already mapped + For private mappings, we should verify that changes cannot be read() + back from the file, nor mmap's back from the file at a different + address. (There have been systems where private was not correctly + implemented like the infamous i386 svr4.0, and systems where the + VM page cache was not coherent with the file system buffer cache + like early versions of FreeBSD and possibly contemporary NetBSD.) + For shared mappings, we should conversely verify that changes get + propagated back to all the places they're supposed to be. + + Grep wants private fixed already mapped. + The main things grep needs to know about mmap are: + * does it exist and is it safe to write into the mmap'd area + * how to use it (BSD variants) */ + +#include +#include + +#if !STDC_HEADERS && !HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#if !HAVE_GETPAGESIZE +/* Assume that all systems that can run configure have sys/param.h. */ +# if !HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# if HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + +int +main () +{ + char *data, *data2, *data3; + int i, pagesize; + int fd; + + pagesize = getpagesize (); + + /* First, make a file with some known garbage in it. */ + data = (char *) malloc (pagesize); + if (!data) + exit (1); + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + exit (1); + if (write (fd, data, pagesize) != pagesize) + exit (1); + close (fd); + + /* Next, try to mmap the file at a fixed address which already has + something else allocated at it. If we can, also make sure that + we see the same garbage. */ + fd = open ("conftest.mmap", O_RDWR); + if (fd < 0) + exit (1); + data2 = (char *) malloc (2 * pagesize); + if (!data2) + exit (1); + data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + exit (1); + + /* Finally, make sure that changes to the mapped area do not + percolate back to the file as seen by read(). (This is a bug on + some variants of i386 svr4.0.) */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = (char *) malloc (pagesize); + if (!data3) + exit (1); + if (read (fd, data3, pagesize) != pagesize) + exit (1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + exit (1); + close (fd); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_mmap_fixed_mapped=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_func_mmap_fixed_mapped=no +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 +echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 +if test $ac_cv_func_mmap_fixed_mapped = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_MMAP 1 +_ACEOF + +fi +rm -f conftest.mmap + + + echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5 +echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6 +if test "${ac_cv_gnu_library_2_1+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Lucky GNU user" >/dev/null 2>&1; then + ac_cv_gnu_library_2_1=yes +else + ac_cv_gnu_library_2_1=no +fi +rm -f conftest* + + + +fi +echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5 +echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6 + + GLIBC21="$ac_cv_gnu_library_2_1" + + + + + + + + + + + + + +for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + + + + + + + + + + + + + + + +for ac_func in feof_unlocked fgets_unlocked getcwd getegid geteuid \ +getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \ +strdup strtoul tsearch __argz_count __argz_stringify __argz_next +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + +# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. +if test "${with_libiconv_prefix+set}" = set; then + withval="$with_libiconv_prefix" + + for dir in `echo "$withval" | tr : ' '`; do + if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi + if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi + done + +fi; + + echo "$as_me:$LINENO: checking for iconv" >&5 +echo $ECHO_N "checking for iconv... $ECHO_C" >&6 +if test "${am_cv_func_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS -liconv" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LIBS="$am_save_LIBS" + fi + +fi +echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 +echo "${ECHO_T}$am_cv_func_iconv" >&6 + if test "$am_cv_func_iconv" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ICONV 1 +_ACEOF + + echo "$as_me:$LINENO: checking for iconv declaration" >&5 +echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6 + if test "${am_cv_proto_iconv+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_proto_iconv_arg1="" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_proto_iconv_arg1="const" +fi +rm -f conftest.$ac_objext conftest.$ac_ext + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" +fi + + am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + echo "$as_me:$LINENO: result: ${ac_t:- + }$am_cv_proto_iconv" >&5 +echo "${ECHO_T}${ac_t:- + }$am_cv_proto_iconv" >&6 + +cat >>confdefs.h <<_ACEOF +#define ICONV_CONST $am_cv_proto_iconv_arg1 +_ACEOF + + fi + LIBICONV= + if test "$am_cv_lib_iconv" = yes; then + LIBICONV="-liconv" + fi + + + + echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5 +echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6 +if test "${am_cv_langinfo_codeset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +char* cs = nl_langinfo(CODESET); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_langinfo_codeset=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_langinfo_codeset=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 + if test $am_cv_langinfo_codeset = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LANGINFO_CODESET 1 +_ACEOF + + fi + + if test $ac_cv_header_locale_h = yes; then + echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5 +echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6 +if test "${am_cv_val_LC_MESSAGES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +return LC_MESSAGES + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + am_cv_val_LC_MESSAGES=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +am_cv_val_LC_MESSAGES=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5 +echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6 + if test $am_cv_val_LC_MESSAGES = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LC_MESSAGES 1 +_ACEOF + + fi + fi + echo "$as_me:$LINENO: checking whether NLS is requested" >&5 +echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 + # Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + USE_NLS=$enableval +else + USE_NLS=yes +fi; + echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6 + + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + INTLLIBS= + + if test "$USE_NLS" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define ENABLE_NLS 1 +_ACEOF + + echo "$as_me:$LINENO: checking whether included gettext is requested" >&5 +echo $ECHO_N "checking whether included gettext is requested... $ECHO_C" >&6 + +# Check whether --with-included-gettext or --without-included-gettext was given. +if test "${with_included_gettext+set}" = set; then + withval="$with_included_gettext" + nls_cv_force_use_gnu_gettext=$withval +else + nls_cv_force_use_gnu_gettext=no +fi; + echo "$as_me:$LINENO: result: $nls_cv_force_use_gnu_gettext" >&5 +echo "${ECHO_T}$nls_cv_force_use_gnu_gettext" >&6 + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + CATOBJEXT=NONE + + + + + if test "${ac_cv_header_libintl_h+set}" = set; then + echo "$as_me:$LINENO: checking for libintl.h" >&5 +echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6 +if test "${ac_cv_header_libintl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +echo "${ECHO_T}$ac_cv_header_libintl_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking libintl.h usability" >&5 +echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking libintl.h presence" >&5 +echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: libintl.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: libintl.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: libintl.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for libintl.h" >&5 +echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6 +if test "${ac_cv_header_libintl_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_libintl_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +echo "${ECHO_T}$ac_cv_header_libintl_h" >&6 + +fi +if test $ac_cv_header_libintl_h = yes; then + echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 +echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 +if test "${gt_cv_func_gnugettext1_libc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + _nl_msg_cat_cntr + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_gnugettext1_libc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_gnugettext1_libc=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 +echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 + + if test "$gt_cv_func_gnugettext1_libc" != "yes"; then + echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 +echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 +if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -lintl $LIBICONV" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +int +main () +{ +bindtextdomain ("", ""); +return (int) gettext ("") + _nl_msg_cat_cntr + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_gnugettext1_libintl=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +gt_cv_func_gnugettext1_libintl=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LIBS="$gt_save_LIBS" +fi +echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5 +echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6 + fi + + if test "$gt_cv_func_gnugettext1_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ + && test "$PACKAGE" != gettext; }; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETTEXT 1 +_ACEOF + + + if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then + INTLLIBS="-lintl $LIBICONV" + fi + + gt_save_LIBS="$LIBS" + LIBS="$LIBS $INTLLIBS" + +for ac_func in dcgettext +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + LIBS="$gt_save_LIBS" + + # Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGFMT" in + /*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1; then + ac_cv_path_MSGFMT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT + +if test -n "$GMSGFMT"; then + echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +echo "${ECHO_T}$GMSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + # Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$XGETTEXT" in + /*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1; then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +echo "${ECHO_T}$XGETTEXT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + CATOBJEXT=.gmo + fi + +fi + + + + if test "$CATOBJEXT" = "NONE"; then + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + INTLOBJS="\$(GETTOBJS)" + # Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGFMT" in + /*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1; then + ac_cv_path_MSGFMT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + echo "$as_me:$LINENO: result: $MSGFMT" >&5 +echo "${ECHO_T}$MSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_GMSGFMT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT + +if test -n "$GMSGFMT"; then + echo "$as_me:$LINENO: result: $GMSGFMT" >&5 +echo "${ECHO_T}$GMSGFMT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + # Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_XGETTEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$XGETTEXT" in + /*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1; then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + echo "$as_me:$LINENO: result: $XGETTEXT" >&5 +echo "${ECHO_T}$XGETTEXT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + CATOBJEXT=.gmo + INTLLIBS="\$(top_builddir)/intl/libintl.a $LIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + if test "$GMSGFMT" != ":"; then + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then + : ; + else + echo "$as_me:$LINENO: result: found msgfmt program is not GNU msgfmt; ignore it" >&5 +echo "${ECHO_T}found msgfmt program is not GNU msgfmt; ignore it" >&6 + GMSGFMT=":" + fi + fi + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then + : ; + else + echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 +echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 + XGETTEXT=":" + fi + fi + + POSUB=po + fi + ac_config_commands="$ac_config_commands default-1" + + + + if test "$PACKAGE" = gettext; then + BUILD_INCLUDED_LIBINTL=yes + fi + + for ac_prog in bison +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_INTLBISON+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$INTLBISON"; then + ac_cv_prog_INTLBISON="$INTLBISON" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_INTLBISON="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +INTLBISON=$ac_cv_prog_INTLBISON +if test -n "$INTLBISON"; then + echo "$as_me:$LINENO: result: $INTLBISON" >&5 +echo "${ECHO_T}$INTLBISON" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$INTLBISON" && break +done + + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + echo "$as_me:$LINENO: checking version of bison" >&5 +echo $ECHO_N "checking version of bison... $ECHO_C" >&6 + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison .* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + echo "$as_me:$LINENO: result: $ac_prog_version" >&5 +echo "${ECHO_T}$ac_prog_version" >&6 + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + + + + + + + + + + + + nls_cv_header_intl= + nls_cv_header_libgt= + + DATADIRNAME=share + + + INSTOBJEXT=.mo + + + GENCAT=gencat + + + + if test "x$CATOBJEXT" != "x"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + echo "$as_me:$LINENO: checking for catalogs to be installed" >&5 +echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6 + NEW_LINGUAS= + for presentlang in $ALL_LINGUAS; do + useit=no + for desiredlang in ${LINGUAS-$ALL_LINGUAS}; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + NEW_LINGUAS="$NEW_LINGUAS $presentlang" + fi + done + LINGUAS=$NEW_LINGUAS + echo "$as_me:$LINENO: result: $LINGUAS" >&5 +echo "${ECHO_T}$LINGUAS" >&6 + fi + + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + + + INTL_LIBTOOL_SUFFIX_PREFIX= + + + + +case $host in + *-*-freebsd*) + THREAD_LIBS="-pthread" + ;; + *-*-openbsd*) + THREAD_LIBS="-pthread" + ;; + *) + echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5 +echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6 +if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char pthread_create (); +int +main () +{ +pthread_create (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_pthread_pthread_create=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_pthread_pthread_create=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5 +echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6 +if test $ac_cv_lib_pthread_pthread_create = yes; then + THREAD_LIBS="-lpthread" +else + { { echo "$as_me:$LINENO: error: ** The pthread library is not installed.**" >&5 +echo "$as_me: error: ** The pthread library is not installed.**" >&2;} + { (exit 1); exit 1; }; } +fi + + ;; +esac + + +# Whenever both -lsocket and -lnsl are needed, it seems to be always the +# case that gethostbyname requires -lnsl. So, check -lnsl first, for it +# to be in LIBS before the setsockopt checks are performed. *However*, +# on SINIX-N 5.43, this is false, and gethostent seems to be a better +# candidate. So, let's use it below instead of gethostbyname, and see. + +# [ This is ripped from GNU tar. ] + +echo "$as_me:$LINENO: checking for gethostent" >&5 +echo $ECHO_N "checking for gethostent... $ECHO_C" >&6 +if test "${ac_cv_func_gethostent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char gethostent (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostent (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_gethostent) || defined (__stub___gethostent) +choke me +#else +char (*f) () = gethostent; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_gethostent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_gethostent=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_gethostent" >&5 +echo "${ECHO_T}$ac_cv_func_gethostent" >&6 + +if test $ac_cv_func_gethostent = no; then + +echo "$as_me:$LINENO: checking for gethostent in -lnsl" >&5 +echo $ECHO_N "checking for gethostent in -lnsl... $ECHO_C" >&6 +if test "${ac_cv_lib_nsl_gethostent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostent (); +int +main () +{ +gethostent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_nsl_gethostent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_nsl_gethostent=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostent" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_gethostent" >&6 +if test $ac_cv_lib_nsl_gethostent = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBNSL 1 +_ACEOF + + LIBS="-lnsl $LIBS" + +fi + +fi +echo "$as_me:$LINENO: checking for setsockopt" >&5 +echo $ECHO_N "checking for setsockopt... $ECHO_C" >&6 +if test "${ac_cv_func_setsockopt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char setsockopt (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char setsockopt (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_setsockopt) || defined (__stub___setsockopt) +choke me +#else +char (*f) () = setsockopt; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_setsockopt=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_setsockopt=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_setsockopt" >&5 +echo "${ECHO_T}$ac_cv_func_setsockopt" >&6 + +if test $ac_cv_func_setsockopt = no; then + +echo "$as_me:$LINENO: checking for setsockopt in -lsocket" >&5 +echo $ECHO_N "checking for setsockopt in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_setsockopt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char setsockopt (); +int +main () +{ +setsockopt (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_socket_setsockopt=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_socket_setsockopt=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_socket_setsockopt" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_setsockopt" >&6 +if test $ac_cv_lib_socket_setsockopt = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSOCKET 1 +_ACEOF + + LIBS="-lsocket $LIBS" + +fi + +fi + + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 +if test "${ac_cv_header_time+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include + +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_time=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_time=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$ac_cv_header_time" >&6 +if test $ac_cv_header_time = yes; then + +cat >>confdefs.h <<\_ACEOF +#define TIME_WITH_SYS_TIME 1 +_ACEOF + +fi + + + + + + + +for ac_header in stdio.h stdlib.h unistd.h ctype.h errno.h sys/types.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + +for ac_header in sys/stat.h sys/socket.h netinet/in.h arpa/inet.h netdb.h pthread.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + +for ac_header in memory.h string.h strings.h time.h sys/time.h pwd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + +for ac_header in fcntl.h assert.h limits.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-autoconf@gnu.org. ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + +echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset x; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *ccp; + char **p; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_const=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +#define const +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_size_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for socklen_t" >&5 +echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6 +if test "${ac_cv_type_socklen_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + #include +int +main () +{ +socklen_t len = 42; return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_socklen_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_socklen_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5 +echo "${ECHO_T}$ac_cv_type_socklen_t" >&6 + if test $ac_cv_type_socklen_t != yes; then + cat >>confdefs.h <<\_ACEOF +#define socklen_t int +_ACEOF + + fi + + + + + +for ac_func in vprintf +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +echo "$as_me:$LINENO: checking for _doprnt" >&5 +echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6 +if test "${ac_cv_func__doprnt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char _doprnt (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char _doprnt (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub__doprnt) || defined (__stub____doprnt) +choke me +#else +char (*f) () = _doprnt; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func__doprnt=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func__doprnt=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 +echo "${ECHO_T}$ac_cv_func__doprnt" >&6 +if test $ac_cv_func__doprnt = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DOPRNT 1 +_ACEOF + +fi + +fi +done + + + + + + + + +for ac_func in select socket strdup strerror strtol strncasecmp +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + + + +for ac_func in snprintf vsnprintf __snprintf __vsnprintf strchr strrchr +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +echo "$as_me:$LINENO: checking for which type of gethostbyname_r" >&5 +echo $ECHO_N "checking for which type of gethostbyname_r... $ECHO_C" >&6 +if test "${ac_cv_func_which_gethostname_r+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +echo "$as_me:$LINENO: checking for gethostbyname_r" >&5 +echo $ECHO_N "checking for gethostbyname_r... $ECHO_C" >&6 +if test "${ac_cv_func_gethostbyname_r+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char gethostbyname_r (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname_r (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_gethostbyname_r) || defined (__stub___gethostbyname_r) +choke me +#else +char (*f) () = gethostbyname_r; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_gethostbyname_r=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_gethostbyname_r=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname_r" >&5 +echo "${ECHO_T}$ac_cv_func_gethostbyname_r" >&6 +if test $ac_cv_func_gethostbyname_r = yes; then + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +# include + +int +main () +{ + + + char *name; + struct hostent *he; + struct hostent_data data; + (void) gethostbyname_r(name, he, &data); + + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_which_gethostname_r=three +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +# include + +int +main () +{ + + char *name; + struct hostent *he, *res; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop) + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_which_gethostname_r=six +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +# include + +int +main () +{ + + char *name; + struct hostent *he; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop) + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_which_gethostname_r=five +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_which_gethostname_r=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext + + + + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + +else + ac_cv_func_which_gethostname_r=no +fi + +fi +echo "$as_me:$LINENO: result: $ac_cv_func_which_gethostname_r" >&5 +echo "${ECHO_T}$ac_cv_func_which_gethostname_r" >&6 + +if test $ac_cv_func_which_gethostname_r = six; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_FUNC_GETHOSTBYNAME_R_6 1 +_ACEOF + +elif test $ac_cv_func_which_gethostname_r = five; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_FUNC_GETHOSTBYNAME_R_5 1 +_ACEOF + +elif test $ac_cv_func_which_gethostname_r = three; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_FUNC_GETHOSTBYNAME_R_3 1 +_ACEOF + + +fi + + + + + +# Check whether --enable-compiler-warnings or --disable-compiler-warnings was given. +if test "${enable_compiler_warnings+set}" = set; then + enableval="$enable_compiler_warnings" + +else + enable_compiler_warnings=no +fi; + + +CFLAGS="-Wall -ggdb -D_REENTRANT" + +if test "x$GCC" != "xyes"; then + enable_compiler_warnings = "no"; +fi + +if test "x$enable_compiler_warnings" != "xno"; then + if test "x$enable_compiler_warnings" = "xmin"; then + CFLAGS="$CFLAGS -g -ansi -pedantic" + fi + if test "x$enable_compiler_warnings" = "xyes"; then + CFLAGS="$CFLAGS \ +-g -ansi -pedantic -W -Wtraditional -Wshadow -Wpointer-arith \ +-Wcast-qual -Wcast-align -Wwrite-strings -Wconversion \ +-Waggregate-return -Wstrict-prototypes -Wmissing-prototypes \ +-Wmissing-declarations -Wnested-externs -Winline" + fi +fi + + + ac_config_files="$ac_config_files Makefile docs/Makefile src/Makefile intl/Makefile po/Makefile.in" +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.56. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.56, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "docs/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "intl/Makefile" ) CONFIG_FILES="$CONFIG_FILES intl/Makefile" ;; + "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@AMTAR@,$AMTAR,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@LN_S@,$LN_S,;t t +s,@ECHO@,$ECHO,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@LIBTOOL@,$LIBTOOL,;t t +s,@ALLOCA@,$ALLOCA,;t t +s,@GLIBC21@,$GLIBC21,;t t +s,@LIBICONV@,$LIBICONV,;t t +s,@USE_NLS@,$USE_NLS,;t t +s,@MSGFMT@,$MSGFMT,;t t +s,@GMSGFMT@,$GMSGFMT,;t t +s,@XGETTEXT@,$XGETTEXT,;t t +s,@INTLBISON@,$INTLBISON,;t t +s,@BUILD_INCLUDED_LIBINTL@,$BUILD_INCLUDED_LIBINTL,;t t +s,@USE_INCLUDED_LIBINTL@,$USE_INCLUDED_LIBINTL,;t t +s,@CATALOGS@,$CATALOGS,;t t +s,@CATOBJEXT@,$CATOBJEXT,;t t +s,@GMOFILES@,$GMOFILES,;t t +s,@INTLLIBS@,$INTLLIBS,;t t +s,@INTLOBJS@,$INTLOBJS,;t t +s,@POFILES@,$POFILES,;t t +s,@POSUB@,$POSUB,;t t +s,@DATADIRNAME@,$DATADIRNAME,;t t +s,@INSTOBJEXT@,$INSTOBJEXT,;t t +s,@GENCAT@,$GENCAT,;t t +s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t +s,@INTL_LIBTOOL_SUFFIX_PREFIX@,$INTL_LIBTOOL_SUFFIX_PREFIX,;t t +s,@THREAD_LIBS@,$THREAD_LIBS,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +_am_stamp_count=`expr ${_am_stamp_count-0} + 1` +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # We invoke sed twice because it is the simplest approach to + # changing $(DEPDIR) to its actual value in the expansion. + for file in `sed -n -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + default-1 ) for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + fi + ;; + esac + done ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + + diff --git a/libprozilla/configure.in b/libprozilla/configure.in new file mode 100644 index 0000000..d9bd47d --- /dev/null +++ b/libprozilla/configure.in @@ -0,0 +1,152 @@ +dnl *************************************************************************** +dnl libprozilla - a download accelerator library +dnl Copyright (C) 2001 Kalum Somaratna +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +dnl *************************************************************************** + +AC_PREREQ(2.13) + +AC_INIT(src/connect.c) + +AM_INIT_AUTOMAKE(libprozilla, 1.0.x-cvs) + +AM_CONFIG_HEADER(config.h) + +AC_DEFINE(_GNU_SOURCE) + +AC_LANG_C + +AC_CANONICAL_HOST +dnl --------------------------------------------------------------------------- +dnl Checks for programs. +dnl --------------------------------------------------------------------------- + +AC_PROG_CC + +AC_AIX +AC_ISC_POSIX +AC_MINIX + +AM_PROG_CC_STDC +AC_PROG_INSTALL +AM_ENABLE_STATIC +AM_DISABLE_SHARED +AC_PROG_LIBTOOL +dnl ------------- +dnl gettext stuff +dnl ------------- +ALL_LINGUAS="pt_BR ro nl it fr" + +AM_GNU_GETTEXT + +dnl --------------------------------------------------------------------------- +dnl Checks for libraries. +dnl --------------------------------------------------------------------------- + +case $host in + *-*-freebsd*) + THREAD_LIBS="-pthread" + ;; + *-*-openbsd*) + THREAD_LIBS="-pthread" + ;; + *) + AC_CHECK_LIB(pthread, pthread_create, + THREAD_LIBS="-lpthread", + AC_MSG_ERROR([** The pthread library is not installed.**])) + ;; +esac +AC_SUBST(THREAD_LIBS) + +# Whenever both -lsocket and -lnsl are needed, it seems to be always the +# case that gethostbyname requires -lnsl. So, check -lnsl first, for it +# to be in LIBS before the setsockopt checks are performed. *However*, +# on SINIX-N 5.43, this is false, and gethostent seems to be a better +# candidate. So, let's use it below instead of gethostbyname, and see. + +# [ This is ripped from GNU tar. ] + +AC_CHECK_FUNC(gethostent) +if test $ac_cv_func_gethostent = no; then + AC_CHECK_LIB(nsl, gethostent) +fi +AC_CHECK_FUNC(setsockopt) +if test $ac_cv_func_setsockopt = no; then + AC_CHECK_LIB(socket, setsockopt) +fi + + +dnl --------------------------------------------------------------------------- +dnl Checks for header files. +dnl --------------------------------------------------------------------------- + +AC_HEADER_STDC +AC_HEADER_TIME +AC_CHECK_HEADERS(stdio.h stdlib.h unistd.h ctype.h errno.h sys/types.h) +AC_CHECK_HEADERS(sys/stat.h sys/socket.h netinet/in.h arpa/inet.h netdb.h pthread.h) +AC_CHECK_HEADERS(memory.h string.h strings.h time.h sys/time.h pwd.h) +AC_CHECK_HEADERS(fcntl.h assert.h limits.h) + + +dnl --------------------------------------------------------------------------- +dnl Checks for typedefs, structures, and compiler characteristics. +dnl --------------------------------------------------------------------------- + +AC_C_CONST +AC_TYPE_SIZE_T +TYPE_SOCKLEN_T + + +dnl --------------------------------------------------------------------------- +dnl Checks for library functions. +dnl --------------------------------------------------------------------------- + +AC_FUNC_VPRINTF +AC_CHECK_FUNCS(select socket strdup strerror strtol strncasecmp) +AC_CHECK_FUNCS(snprintf vsnprintf __snprintf __vsnprintf strchr strrchr) + +AC_caolan_FUNC_WHICH_GETHOSTBYNAME_R + + +dnl --------------------------------------------------------------------------- +dnl Handle user-specified --enable-FEATURE options. +dnl --------------------------------------------------------------------------- + +AC_ARG_ENABLE(compiler-warnings, [ --enable-compiler-warnings=[no/min/yes] Issue warnings? (default=no)], , enable_compiler_warnings=no, enable_compiler_warnings=no) + + +CFLAGS="-Wall -ggdb -D_REENTRANT" + +if test "x$GCC" != "xyes"; then + enable_compiler_warnings = "no"; +fi + +if test "x$enable_compiler_warnings" != "xno"; then + if test "x$enable_compiler_warnings" = "xmin"; then + CFLAGS="$CFLAGS -g -ansi -pedantic" + fi + if test "x$enable_compiler_warnings" = "xyes"; then + CFLAGS="$CFLAGS \ +-g -ansi -pedantic -W -Wtraditional -Wshadow -Wpointer-arith \ +-Wcast-qual -Wcast-align -Wwrite-strings -Wconversion \ +-Waggregate-return -Wstrict-prototypes -Wmissing-prototypes \ +-Wmissing-declarations -Wnested-externs -Winline" + fi +fi + + +AC_OUTPUT(Makefile docs/Makefile src/Makefile intl/Makefile po/Makefile.in) + diff --git a/libprozilla/depcomp b/libprozilla/depcomp new file mode 100755 index 0000000..807b991 --- /dev/null +++ b/libprozilla/depcomp @@ -0,0 +1,423 @@ +#! /bin/sh + +# depcomp - compile a program generating dependencies as side-effects +# Copyright 1999, 2000 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi +# `libtool' can also be set to `yes' or `no'. + +if test -z "$depfile"; then + base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` + dir=`echo "$object" | sed 's,/.*$,/,'` + if test "$dir" = "$object"; then + dir= + fi + # FIXME: should be _deps on DOS. + depfile="$dir.deps/$base" +fi + +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. This file always lives in the current directory. + # Also, the AIX compiler puts `$object:' at the start of each line; + # $object doesn't have directory information. + stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + outname="$stripped.o" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + tmpdepfile1="$dir.libs/$base.lo.d" + tmpdepfile2="$dir.libs/$base.d" + "$@" -Wc,-MD + else + tmpdepfile1="$dir$base.o.d" + tmpdepfile2="$dir$base.d" + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + if test -f "$tmpdepfile1"; then + tmpdepfile="$tmpdepfile1" + else + tmpdepfile="$tmpdepfile2" + fi + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a space and a tab in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. We will use -o /dev/null later, + # however we can't do the remplacement now because + # `-o $object' might simply not be used + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + "$@" -o /dev/null $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + -*) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 diff --git a/libprozilla/docs/CVS/Entries b/libprozilla/docs/CVS/Entries new file mode 100644 index 0000000..cb1ac3b --- /dev/null +++ b/libprozilla/docs/CVS/Entries @@ -0,0 +1,4 @@ +/HACKING/1.6/Fri Sep 7 09:32:56 2001// +/Makefile.am/1.1/Fri Sep 7 09:32:56 2001// +/Makefile.in/1.5/Fri Oct 26 12:13:19 2001// +D diff --git a/libprozilla/docs/CVS/Repository b/libprozilla/docs/CVS/Repository new file mode 100644 index 0000000..b5975c2 --- /dev/null +++ b/libprozilla/docs/CVS/Repository @@ -0,0 +1 @@ +libprozilla/docs diff --git a/libprozilla/docs/CVS/Root b/libprozilla/docs/CVS/Root new file mode 100644 index 0000000..0e741fc --- /dev/null +++ b/libprozilla/docs/CVS/Root @@ -0,0 +1 @@ +:pserver:kalum@cvs.delrom.ro:/home/cvsroot diff --git a/libprozilla/docs/HACKING b/libprozilla/docs/HACKING new file mode 100644 index 0000000..cafba34 --- /dev/null +++ b/libprozilla/docs/HACKING @@ -0,0 +1,198 @@ +------------------------------------------------------------------------------- +Information for developers and contributors +------------------------------------------------------------------------------- + +This documentation shall give some hints to developers and contributors. +Please send comments and suggestions to the prozilla mailinglist. + + +Coding guidelines +----------------- + + * Use an indentation width of 2 spaces. + Braces are put on a separate line, not on the same line as the + if/while/for etc. statements. The braces themselves are not indented, only + the code within the braces. + + Example: + + if (foo == TRUE) + { + while (bar != NULL) + { + do_something("Test.", 19); + do_something_else(); + } + } + else + { + printf("Foo is not TRUE.\n"); + exit(EXIT_SUCCESS); + } + + * Put a space after each comma. + + * Do *not* put spaces between the function-name and the opening brace: + Wrong: foo ("Test", 19); + Correct: foo("Test", 19); + + * Do not put a space when referring to a pointer. + Wrong: void foo(const char * message); + Correct: void foo(const char *message); + + * Do not use any TABs in the code. The only files where you should use TABs + is the ChangeLog and the Makefile.am's. + + * Write only 80 characters per line where possible. + +Have a look at the already existing code for examples. + + +Names +----- + +Always use good, unabbreviated, correctly-spelled meaningful names. + +All functions, variables, enums, #defines etc. which are intended to be used +by the programs which link against libprozilla, are prefixed with proz_ +or PROZ_. + +Examples: + proz_init(); + #define PROZ_MAX_CONNECTIONS 19 + etc. + + +TODO, FIXME and NOTE +-------------------- + +Use the keywords 'TODO', 'FIXME' and 'NOTE' in the source-code comments +to remind yourself or other developers of things which still need to be +done or fixed. + +You can then do a simple 'grep TODO *.[ch]' to find all those comments... + + +ChangeLog entries +----------------- + +Everytime you make a change to any of the files, you must write a ChangeLog +entry with your name, email adress and the date. Please try to write +verbosive comments and also give reasons why you wrote/changed something +if that reason is not obvious... + +You can use 'cvs -z3 diff -Nu * | vim -' to view the differences between your +code and the latest CVS-code. Use this as a help to write the ChangeLog entry. + +Changes to the file 'ChangeLog' can be omitted, because this file is changed +*everytime* anyway... + +If you commit a patch from another developer or a contributor, add his name +and email-adress to the file AUTHORS. Also write a small message in the +ChangeLog which says e.g. 'Applied patch from Joe Foo .'. + +Do the same if someone reports and/or fixes a bug: Add him to AUTHORS and add +a ChangeLog entry, e.g. 'Fixed a bug reported by Joe Foo .'. + + +Comments +-------- + + * Do not comment obvious code (i++ /* Increment i. */ etc...). + + * Only use C-style comments (/* Foo. */) and not C++-style comments (// Foo.). + + * All comments should start with a capital letter and end with a dot. + + +Tools used +---------- + +We use the following tools for this project: + + * autoconf 2.13 or better + ftp://ftp.gnu.org/gnu/autoconf/ + + * automake 1.4 or better + ftp://ftp.gnu.org/gnu/automake/ + + +Code from other projects +------------------------ + + * getopt.c, getopt.h: + Purpose: Commandline options parsing code. + Author: ??? + License: GPL. + From: ftp://ftp.gnu.org/gnu/glibc/ + Comments: Unmodified version from glibc. + + * netrc.c, netrc.h: + Purpose: Parse the .netrc file to get hosts, accounts, and passwords. + Author: Gordon Matzigkeit + License: GPL + From: ??? + Comments: Modified for libprozilla. + + * url.c, url.h: + Purpose: URL handling code. + Author: ??? + License: GPL. + From: ??? + Comments: Modified for libprozilla. + + +Automatically generated files +----------------------------- + +The following files are automatically generated by either aclocal, autoheader +autoconf or automake. Do not edit them directly. + +Makefile.in +aclocal.m4 +config.h.in +configure +install-sh +missing +mkinstalldirs +stamp-h.in +docs/Makefile.in +src/Makefile.in + + +common.h +-------- + +All libprozilla files include the common.h file. This file #includes all +headers we need, #defines some things like TRUE and FALSE, typedefs +a 'boolean' type etc... + + +Patches +------- + +Send your patches (diff -u) to the prozilla mailinglist. + +If you changed several things in the code or fixed more than one problem, +please send a separate patch for each of the fixes. If everything is in one +single patch file, the patch is a lot harder to understand, check and apply. + + +Mailinglists +------------ + +Read the README. + + +CVS +--- + +You can access the libprozilla CVS repository anonymously (read-only access) +by issueing the following commands: + +cvs -d :pserver:anonymous@cvs.delrom.ro:/home/cvsroot login + +Press enter when prompted for the password. + +cvs -d :pserver:anonymous@cvs.delrom.ro:/home/cvsroot co libprozilla + diff --git a/libprozilla/docs/Makefile.am b/libprozilla/docs/Makefile.am new file mode 100644 index 0000000..52895c2 --- /dev/null +++ b/libprozilla/docs/Makefile.am @@ -0,0 +1,6 @@ +#------------------------------------------------------------------------------ +# Process this file with automake to produce Makefile.in. +#------------------------------------------------------------------------------ + +EXTRA_DIST = HACKING + diff --git a/libprozilla/docs/Makefile.in b/libprozilla/docs/Makefile.in new file mode 100644 index 0000000..f56f48a --- /dev/null +++ b/libprozilla/docs/Makefile.in @@ -0,0 +1,294 @@ +# Makefile.in generated by automake 1.7 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +#------------------------------------------------------------------------------ +# Process this file with automake to produce Makefile.in. +#------------------------------------------------------------------------------ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POFILES = @POFILES@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +THREAD_LIBS = @THREAD_LIBS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +EXTRA_DIST = HACKING +subdir = docs +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DIST_COMMON = Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile + +installdirs: + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libprozilla/install-sh b/libprozilla/install-sh new file mode 100755 index 0000000..e9de238 --- /dev/null +++ b/libprozilla/install-sh @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + chmodcmd="" + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/libprozilla/intl/CVS/Entries b/libprozilla/intl/CVS/Entries new file mode 100644 index 0000000..f179e5e --- /dev/null +++ b/libprozilla/intl/CVS/Entries @@ -0,0 +1,34 @@ +/ChangeLog/1.2/Fri Sep 7 09:32:56 2001// +/Makefile.in/1.2/Fri Sep 7 09:32:56 2001// +/VERSION/1.2/Fri Sep 7 09:32:56 2001// +/bindtextdom.c/1.2/Fri Sep 7 09:32:56 2001// +/config.charset/1.1/Fri Sep 7 09:32:56 2001// +/dcgettext.c/1.2/Fri Sep 7 09:32:56 2001// +/dcigettext.c/1.1/Fri Sep 7 09:32:56 2001// +/dcngettext.c/1.1/Fri Sep 7 09:32:56 2001// +/dgettext.c/1.2/Fri Sep 7 09:32:56 2001// +/dngettext.c/1.1/Fri Sep 7 09:32:56 2001// +/explodename.c/1.2/Fri Sep 7 09:32:56 2001// +/finddomain.c/1.2/Fri Sep 7 09:32:56 2001// +/gettext.c/1.2/Fri Sep 7 09:32:56 2001// +/gettext.h/1.2/Fri Sep 7 09:32:56 2001// +/gettextP.h/1.2/Fri Sep 7 09:32:56 2001// +/hash-string.h/1.2/Fri Sep 7 09:32:56 2001// +/intl-compat.c/1.2/Fri Sep 7 09:32:56 2001// +/l10nflist.c/1.2/Fri Sep 7 09:32:56 2001// +/libgettext.h/1.2/Fri Sep 7 09:32:56 2001// +/libgnuintl.h/1.1/Fri Sep 7 09:32:56 2001// +/libintl.glibc/1.1/Fri Sep 7 09:32:56 2001// +/loadinfo.h/1.2/Fri Sep 7 09:32:56 2001// +/loadmsgcat.c/1.2/Fri Sep 7 09:32:56 2001// +/localcharset.c/1.1/Fri Sep 7 09:32:56 2001// +/locale.alias/1.1/Fri Sep 7 09:32:56 2001// +/localealias.c/1.2/Fri Sep 7 09:32:56 2001// +/ngettext.c/1.1/Fri Sep 7 09:32:56 2001// +/plural.c/1.1/Fri Sep 7 09:32:56 2001// +/plural.y/1.1/Fri Sep 7 09:32:56 2001// +/po2tbl.sed/1.1/Fri Sep 7 09:32:56 2001// +/ref-add.sin/1.1/Fri Sep 7 09:32:56 2001// +/ref-del.sin/1.1/Fri Sep 7 09:32:56 2001// +/textdomain.c/1.2/Fri Sep 7 09:32:56 2001// +D diff --git a/libprozilla/intl/CVS/Repository b/libprozilla/intl/CVS/Repository new file mode 100644 index 0000000..bbfe66c --- /dev/null +++ b/libprozilla/intl/CVS/Repository @@ -0,0 +1 @@ +libprozilla/intl diff --git a/libprozilla/intl/CVS/Root b/libprozilla/intl/CVS/Root new file mode 100644 index 0000000..0e741fc --- /dev/null +++ b/libprozilla/intl/CVS/Root @@ -0,0 +1 @@ +:pserver:kalum@cvs.delrom.ro:/home/cvsroot diff --git a/libprozilla/intl/ChangeLog b/libprozilla/intl/ChangeLog new file mode 100644 index 0000000..de85bb4 --- /dev/null +++ b/libprozilla/intl/ChangeLog @@ -0,0 +1,1746 @@ +2001-05-23 Bruno Haible + + * gettext-0.10.38 released. + +2001-05-22 Bruno Haible + + * Makefile.in (install-data): Install plural.c as well. + (uninstall): Uninstall plural.c as well. + +2001-05-18 Bruno Haible + + * Makefile.in (dist): Don't assume $(srcdir) = ".". Distribute + file in either current directory or $(srcdir), whichever exists. + +2001-05-11 Bruno Haible + + * Makefile.in (install-exec): Don't install charset.alias on glibc 2.1 + systems. + +2001-04-30 Bruno Haible + + * dcigettext.c (getuid, getgid, geteuid, getegid): Provide default + definitions. Needed for mingw32. + +2001-04-19 Bruno Haible + + * gettext-0.10.37 released. + +2001-04-19 Bruno Haible + + * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): Bump to 1:1:0. + +2001-04-19 Bruno Haible + + * loadmsgcat.c (_nl_init_domain_conv): Don't append //TRANSLIT when + the libiconv version is smaller than 1.5. + +2001-04-09 Bruno Haible + + * loadmsgcat.c: Don't use GNU C extensions if __APPLE_CC__ is defined. + Apple's MacOS X compiler has not all the features that the regular + GCC with the same version number has. + +2001-04-07 Bruno Haible + + * gettextP.h (struct loaded_domain): Add codeset_cntr field. + (struct binding): Add codeset_cntr field. + (_nl_load_domain): Add domainbinding argument. + (_nl_init_domain_conv, _nl_free_domain_conv): New declarations. + (_nl_find_msg): New declaration, moved here from loadinfo.h. + * loadinfo.h (struct loaded_l10nfile): Remove domainbinding field. + (_nl_make_l10nflist): Remove domainbinding argument. + (_nl_find_msg): Move declaration to gettextP.h. + * bindtextdom.c (set_binding_values): Initialize ->codeset_cntr to 0. + Increment it when ->codeset is changed. + * dcigettext.c (DCIGETTEXT): Pass binding to _nl_find_msg. + (_nl_find_msg): Add domainbinding argument. Reinitialize the converter + if domainbinding->codeset_cntr has been incremented. + * finddomain.c (_nl_find_domain): Don't pass domainbinding to + _nl_make_l10nflist(). Pass it to _nl_load_domain() instead. + * l10nflist.c (_nl_make_l10nflist): Remove domainbinding argument. + * loadmsgcat.c (_nl_init_domain_conv): New function, extracted from + _nl_load_domain. Append //TRANSLIT also when using libiconv. + (_nl_free_domain_conv): New function, extracted from _nl_unload_domain. + (_nl_load_domain): Add domainbinding argument. Call + _nl_init_domain_conv. + (_nl_unload_domain): Call _nl_free_domain_conv. + +2001-04-09 Bruno Haible + + * dcigettext.c (HAVE_LOCALE_NULL): Don't define if __GNU_LIBRARY__ < 2 + (Linux libc5). + +2001-04-04 Bruno Haible + + * dcigettext.c (HAVE_LOCALE_NULL): Define also if __GNU_LIBRARY__. + +2001-04-04 Bruno Haible + + * Makefile.in (libdir, includedir, datadir): Use the autoconf + determined value, in order to respect the configure arguments. + (gettextsrcdir): Use $(datadir), not @datadir@. + +2001-03-29 Bruno Haible + + * gettext-0.10.36 released. + +2001-03-25 Bruno Haible + + * Makefile.in (install-data): Set execution bits on installed + config.charset. + +2001-03-23 Bruno Haible + + * Makefile.in (YACC): Use @INTLBISON@ instead of bison. + +2001-03-21 Bruno Haible + + * dcigettext.c (_nl_state_lock): Mark as #ifdef _LIBC. AIX 3 xlc + chokes on empty macro arguments. + * plural.y: Add #pragma for alloca on AIX 3. + +2001-03-20 Bruno Haible + + * Makefile.in (DISTFILES.generated): New variable. + (DISTFILES.gettext): Remove plural.c. + (dist): Use DISTFILES.generated. + (YACC): Use "bison -y" instead of @YACC@. + Needed for "make dist" to work in normal packages. + +2001-03-20 Bruno Haible + + * Makefile.in (dist): Don't depend on $(DISTFILES). Instead, generate + the files to be distributed through a recursive 'make' call. + +2001-03-17 Bruno Haible + + * gettextP.h (struct expression): Add operators lnot, less_than, + greater_than, less_or_equal, greater_or_equal. Replace args2/args3 + union by a 'nargs' counter and an 'args[]' array. + * plural.y: Don't include stdarg.h. + (new_exp): New function. + (new_exp_0, new_exp_2, new_exp_3): Rewritten to call new_exp. + (new_exp_1): New function. + ('?' ':'): Make right-associative. + (EQUOP2): New token, replaces '=' and '!'. + (CMPOP2): New token. + (ADDOP2): New token, replaces '+' and '-'. + (MULOP2): New token, replaces '*', '/' and '%'. + ('!'): New token. + (exp): Add rules for CMPOP2 and '!'. Don't call YYABORT. + (start): Call YYABORT here. + (FREE_EXPRESSION): Update. + (yylex): Don't skip "\\n". Recognize comparison and '!' operators. + Update for new token symbols. + * loadmsgcat.c (plvar, plone, germanic_plural, init_germanic_plural): + Update. + * dcigettext.c (_nl_find_msg): Optimize for space. + (plural_eval): Recognize comparison and '!' operators. Optimize for + space. + + * dcigettext.c (transcmp): New declaration. + +2001-03-10 Bruno Haible + + * Makefile.in (libintl.la): Pass -liconv and flag -no-undefined. + Needed on platforms like BeOS. + + * Makefile.in (all-no-yes): Depend on libgnuintl.$la, not libintl.$la. + (libgnuintl.a, libgnuintl.la): New targets. Needed for linking + ../tests/tstgettext on systems which have gettext() in libintl.so. + + * localcharset.c (locale_charset): Allow wildcard syntax. Resolve + alias also if codeset is empty. + * config.charset (BeOS): Use wildcard syntax. + + * loadmsgcat.c (_nl_load_domain): locale_charset() doesn't return NULL + any more. + +2001-03-09 Bruno Haible + + * config.charset: Update from libiconv-1.6. + * localcharset.c: Likewise. + +2001-02-25 Ulrich Drepper + + * locale.alias: Don't use nb_NO but define aliases for it. + +2001-01-26 Ulrich Drepper + + * loadmsgcat.c: Include for _LIBC. + +2001-03-09 Bruno Haible + + * dcigettext.c (transmem_block_t): Change to unsigned char, to avoid + compiler warning. + (_nl_find_msg): Add casts to avoid compiler warnings. + +2001-03-09 Bruno Haible + + * Makefile.in (DISTFILES.common): Remove ChangeLog. + (DISTFILES.obsolete): New variable. + (install-data): Install ChangeLog.inst as ChangeLog. Remove the files + listed in DISTFILES.obsolete. + (uninstall): Simplify. + (distclean): Remove ChangeLog.inst. + (dist): Mention ChangeLog explicitly. + +2001-03-04 Bruno Haible + + * dcigettext.c (ISSLASH, HAS_DEVICE, IS_ABSOLUTE_PATH, + IS_PATH_WITH_DIR): New macros. + (DCIGETTEXT): Use IS_ABSOLUTE_PATH and IS_PATH_WITH_DIR. Increment + path_max proportionally. + * loadinfo.h (PATH_SEPARATOR): New macro. + * l10nflist.c (_nl_make_l10nflist): Use PATH_SEPARATOR instead of ':'. + * localealias.c (_nl_expand_alias): Likewise. + * libgnuintl.h (gettext) [DJGPP]: Define as a macro as well. + +2001-03-06 Bruno Haible + + * libgnuintl.h (LC_MESSAGES): Don't define on Solaris. + +2001-02-24 Bruno Haible + + * dcigettext.c: Update comment about HAVE_LOCALE_NULL. + +2001-02-05 Bruno Haible + + * libgnuintl.h (LC_MESSAGES): Provide a default value. + +2001-01-30 Bruno Haible + + * config.charset: Update for FreeBSD 4.2. + +2001-01-21 Bruno Haible + + Use libtool. + * Makefile.in (l): Use INTL_LIBTOOL_SUFFIX_PREFIX instead of l. + (all-no): When USE_INCLUDED_LIBINTL is 'no' but BUILD_INCLUDED_LIBINTL + is 'yes', still build libintl.$la because the testsuite needs it. + (libintl.la): Add $(CPPFLAGS) $(CFLAGS) $(XCFLAGS). Linking via $(CC) + must use all $(CFLAGS). + (install-exec): Use libtool to install libintl.$la. + (uninstall): Use libtool to uninstall libintl.$la. + (mostlyclean): Remove *.la and the .libs subdir. + * intl-compat.c: Reorder. Add comment. + +2001-01-20 Bruno Haible + + * loadmsgcat.c (O_BINARY): Define on platforms that don't have it. + (_nl_load_domain): Open the catalog file in binary mode. + +2001-01-24 Bruno Haible + + * gettextP.h (SWAP): Remove declaration, to work around a compilation + failure on alphaev5-cray-unicosmk2.0.5.X. + +2001-01-15 Bruno Haible + + * dcigettext.c (_nl_find_msg): Cast the second iconv() arg, to avoid + a warning. + +2001-01-07 Bruno Haible + + * gettextP.h (__gettextdebug): Remove declaration. + (gettext_free_exp__, gettextparse__): New non-libc declarations. + * plural.y [!_LIBC]: Define gettextparse__, gettext_free_exp__, not + __gettextparse, __gettext_free_exp. + * loadmsgcat.c [!_LIBC]: Use gettextparse__, not __gettextparse. + +2001-01-07 Bruno Haible + + * libgnuintl.h: Renamed from intlh.inst.in. + Remove comment about __builtin_constant_p. + (gettext): Use NULL. + * libgettext.h: Completely rewritten. Now a conditional wrapper around + . Keep the handling of ENABLE_NLS and gettext_noop, remove + everything else. + * gettextP.h: Include gettext.h, for nls_uint32. + (gettext__, dgettext__, dcgettext__, textdomain__, bindtextdomain__, + bind_textdomain_codeset__): New declarations, from old libgettext.h. + * gettext.h: Don't include . + * Makefile.in (HEADERS): Add libgnuintl.h. + (DISTFILES.gettext): Remove intlh.inst.in. + (all-yes): Depend on libintl.h instead of intlh.inst. + (libintl.h): New target. Create as a copy of libgnuintl.h. + (intlh.inst): Remove target. + (install-exec): Update. + ($(OBJECTS): Depend on libgnuintl.h, not libgettext.h. + (mostlyclean): Remove libintl.h instead of intlh.inst. + (dist-libc): Remove target. + * bindtextdom.c: Include libgnuintl.h instead of libgettext.h. Don't + include gettext.h. + * dcgettext.c: Likewise. + * dcigettext.c: Likewise. + * dcngettext.c: Likewise. + * dngettext.c: Likewise. + * finddomain.c: Likewise. + * ngettext.c: Likewise. + * textdomain.c: Likewise. + * dgettext.c: Include libgnuintl.h instead of libgettext.h. Include + gettextP.h. + * gettext.c: Likewise. + * intl-compat.c: Likewise. + * localealias.c: Don't include gettext.h. + * plural.y: Likewise. + +2001-01-07 Bruno Haible + + Assume , , , exist. + * intlh.inst.in: Likewise. + * libgettext.h: Likewise. + * gettextP.h: Likewise. + * bindtextdom.c: Likewise. + * dcigettext.c: Likewise. + * dgettext.c: Likewise. + * dngettext.c: Likewise. + * explodename.c: Likewise. + * finddomain.c: Likewise. + * gettext.c: Likewise. + * l10nflist.c: Likewise. + * loadmsgcat.c: Likewise. + * localealias.c: Likewise. + * ngettext.c: Likewise. + * textdomain.c: Likewise. + +2001-01-06 Bruno Haible + + Remove catgets fallback code. + - It does not handle message clash prevention through domains and + dgettext(). + - It does not handle message catalog inheritance and the LANGUAGE + environment variable. + - It does not handle locale aliases. + - It does not handle automatic charset conversion. + - It does not handle plural form handling and ngettext(). + - It uses a slow string to integer conversion. + - It is sensitive against installation problems. + * cat-compat.c: Remove file. + * po2msg.sin, po2tbl.sin: Remove files. + * Makefile.in (datadir): Assume DATADIRNAME = share. + (SOURCES): Remove cat-compat.c. + (DISTFILES.common): Remove po2msg.sin, po2tbl.sin. + (distclean): No need to remove po2msg.sed, po2tbl.sed. + (../po/cat-id-tbl.$lo): Remove rule. + * libgettext.h (_msg_ent): Remove. + (_msg_tbl, _msg_tbl_length): Remove declarations. + (gettext, dgettext, ngettext, dngettext): Don't depend on + !HAVE_CATGETS. + +2001-01-04 Ulrich Drepper + + * plural.y (yylex): Minimal improvement in number scanner. + +2001-01-02 Ulrich Drepper + + * dcigettext.c (guess_category_value): Rewrite so that LANGUAGE value + is ignored if the selected locale is the C locale. + +2000-11-20 Ulrich Drepper + + * dcigettext.c (transcmp): Make s1 and s2 const. + * loadmsgcat.c (_nl_load_domain): Rearrange domain initialization to + avoid warning. + +2000-11-09 Ulrich Drepper + + * locale.alias: Add thai. + Patch by Chanop Silpa-Anan . + +2001-01-05 Bruno Haible + + * Makefile.in (INCLUDES): Remove reference to $(top_srcdir)/lib. + (.SUFFIXES): Put .c before .y, so that Solaris "make" uses the .c.o + rule, not the builtin .y.o rule. + (.y.c): Use $< instead of $^. $^ is not supported by SUSV2 "make" + specification. Remove $*.h explicitly: we don't need plural.h. + * gettextP.h: Include . + (__gettext_free_exp, __gettextparse): Convert prototype to K&R C + syntax. + * bindtextdom.c (offsetof): Provide fallback for platforms that lack + it, like SunOS4. + (set_binding_values): Convert prototype to K&R C syntax. + * cat-compat.c: Include stdlib.h, string.h whenever possible. + * dcigettext.c: Ignore the value of C_ALLOCA, because libintl.a + must not depend on external .o files. + (offsetof): Provide fallback for platforms that lack it, like SunOS4. + (transcmp): Convert to K&R C syntax. + * explodename.c Include stdlib.h whenever possible. + (_nl_find_language): Convert to K&R C syntax. + * finddomain.c: Include stdlib.h whenever possible. + * l10nflist.c Include stdlib.h whenever possible. + (_nl_normalize_codeset): Use tolower, not _tolower. + * loadmsgcat.c: Include stdlib.h whenever possible. + Include headers needed for alloca(). + (freea): New macro. + (_nl_load_domain): Add fallback code for platforms lacking strtoul, + like SunOS4. Add fallback code for platforms lacking alloca. + * localealias.c: Include stdlib.h whenever possible. + (ADD_BLOCK, FREE_BLOCK): Remove macros. + (freea): New macro. + (read_alias_file): Simplify fallback code for platforms lacking alloca. + * plural.y (new_exp_0, new_exp_2, new_exp_3): New functions. + (new_exp): Remove function. + (__gettext_free_exp, yylex, yyerror): Convert to K&R C syntax. + * textdomain.c: Include stdlib.h whenever possible. + * gettext.c: Likewise. + * ngettext.c: Likewise. + * localcharset.c (volatile): Define to empty if not using ANSI C. + +2001-01-01 Bruno Haible + + * Makefile.in (mostlyclean): Remove intlh.inst, charset.alias, + ref-add.sed, ref-del.sed. + (distclean): In the gettext package, remove VERSION. + +2001-01-01 Bruno Haible + + Finish implementation of plural form handling. + * dcigettext.c (known_translation_t): Rename 'domain' field to + 'domainname'. Remove 'plindex' field. Add 'domain' and + 'translation_length' fields. + (transcmp): Don't compare 'plindex' fields. + (plural_lookup): New function. + (DCIGETTEXT): Change cache handing in the plural case. Don't call + plural_eval before the translation and its catalog file have been + found. Remove plindex from cache key. Add 'translation_length' and + 'domain' to cache result. + (_nl_find_msg): Remove index argument, return length of translation + to the caller instead. Weaken comparison of string lengths, to account + for plural entries. Call iconv() on the entire result string, not + only on the portion needed so far. + * loadinfo.h (_nl_find_msg): Remove index argument, add lengthp + argument. + * loadmsgcat.c (_nl_load_domain): Adapt to _nl_find_msg change. + + * intl-compat.c (dcngettext, dngettext, ngettext): New functions. + * libgettext.h (ngettext__, dngettext__, dcngettext__): New + declarations. + (ngettext, dngettext): Add missing macro argument. + + * intlh.inst.in (ngettext, dngettext): Add missing macro argument. + +2000-12-31 Bruno Haible + + * gettextP.h (ZERO): New macro. + (struct binding): Always use ZERO. + * bindtextdom.c (set_binding_values): Use offsetof, not sizeof. + Include whenever possible. + * dcigettext.c (ZERO): Remove macro. + (struct transmem_list): Use ZERO. + (DCIGETTEXT): Use offsetof, not sizeof. + Include whenever possible. + + * config.charset: Update from libiconv-1.5.1. + * localcharset.c: Likewise. + +2000-12-30 Bruno Haible + + * locale.alias: New file, moved here from ../misc/locale.alias. Add + "Packages using this file" line. + * Makefile.in (DISTFILES.common): Add locale.alias. + (install-exec, uninstall): Install/deinstall locale.alias. + +2000-10-30 Ulrich Drepper + + * dcigettext.c (guess_category_value): For libc always use the + setlocale() method. + +2000-10-20 Ulrich Drepper + + * libintl.glibc (ngettext macro): Add missing parameter. + (dngettext macro): Likewise. + +2000-10-14 Ulrich Drepper + + * localealias.c (read_alias_file): Update string pointers in map[] + if realloc() changed the values. + Patch by Jakub Jelinek . + +2000-08-31 Ulrich Drepper + + * loadmsgcat.c: Use *stat64 instead of *stat internally. + + * dcigettext.c (free_mem): Correct freeing of _nl_domain_bindings + list. + +2000-08-27 Ulrich Drepper + + * dcigettext.c (DCIGETTEXT): Remove _nl_find_language in code to + determine invalid locale name. + +2000-08-20 Ulrich Drepper + + * dcigettext.c: Unify use of function aliases to make more compact + PLT. + + * loadmsgcat.c (_nl_unload_domain): Also free conv_tab element. + Pretty printing. + * plural.y (new_exp): Take number of optional parameters in second + parameter. Test for correct number of parameters and free correctly + in case of failure. Adjust all callers. + (yylex): Fix handling of '\0'. Allow ';' as terminator character. + +2000-07-14 Bruno Haible + + * dcigettext.c (dcigettext): Call plural_eval on all platforms, not + only those having tsearch. + +2000-06-30 Ulrich Drepper + + * dcigettext.c (_nl_find_msg): Correct reallocation of buffers in + case the translation is too large. Remember allocated memory blocks + in a list. + (free_mem): Free memory for translations. + +2000-06-16 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): Call norm_add_slashes with new + parameter to always enable transliteration. + +1998-10-20 Paul Eggert + + * po2tbl.sin: Escape trigraphs. + +2000-10-12 Bruno Haible + + * finddomain.c: Remove unneeded includes. + +2000-10-12 Bruno Haible + + * localealias.c (memcpy): Return first argument, just like the real + memcpy function does. + * bindtextdom.c (memcpy): Likewise. + * finddomain.c (memcpy): Likewise. + * l10nflist.c (memcpy): Likewise. + * textdomain.c (memcpy): Likewise. + From Paul Eggert . + +2000-09-29 Bruno Haible + + * libintl.glibc: Update from current glibc version. + +2000-09-18 Bruno Haible + + * dcigettext.c: Outside libc, use local variable names that don't + clash with those in libc. + * bindtextdom.c: Likewise. + * textdomain.c: Likewise. + +2000-07-31 Bruno Haible + + * plural.y: Include config.h. Needed to define 'inline' away for C + compilers that don't support it. + (yylex): Don't use gcc specific case range syntax. + * loadmsgcat.y (INIT_GERMANIC_PLURAL): New macro, for old compilers. + +2000-07-28 Bruno Haible + + Simplification: In all cases where $(gnulocaledir) is used, it is + identical to $(localedir). + * Makefile.in (DEFS): Remove setting for GNULOCALEDIR. + * dcigettext.c (_nl_default_dirname): Initialize with LOCALEDIR. + +2000-07-28 Bruno Haible + + * xopen-msg.sed: Renamed to ... + * po2msg.sin: ... here. + * linux-msg.sed: Remove file. + * Makefile.in (DISTFILES.common): Update. + +2000-07-28 Bruno Haible + + * po2tbl.sed.in: Renamed to ... + * po2tbl.sin: ... here. + * Makefile.in (DISTFILES.common): Update. + +2000-07-28 Bruno Haible + + * Makefile.in (uninstall): Synchronize with the install target. + Really remove charset.alias when its reference count drops to 0. + +2000-07-28 Bruno Haible + + * Makefile.in (mkinstalldirs): New macro. Needed when configured with + --srcdir=; then ac_aux_dir will be a relative + pathname rooted at the top builddir, and @MKINSTALLDIRS@ likewise. + (install-exec, install-data): Use it. + +2000-07-26 Bruno Haible + + * Makefile.in (install-exec, install-data): Use $(SHELL) for calling + $(MKINSTALLDIRS), don't rely on its execution permissions. + + * Makefile.in (LTV_CURRENT, LTV_REVISION, LTV_AGE): New variables. + (libintl.la): Use them. + + * Makefile.in (install-exec, install-data, uninstall): Provide DESTDIR + support, as recommended by GNU standards. Fix misapplied 2000-06-16 + patch. + +2000-06-16 Bruno Haible + + * Makefile.in (COMSRCS): Add localcharset.c. + (OBJECTS): Add localcharset.$lo. + (DISTFILES.common): Add config.charset, ref-{add,del}.sin. + (DEFS): Add -DLIBDIR. + (all-yes): Add charset.alias, ref-{add,del}.sed. + (.SUFFIXES): Add .sin and .sed. + (.sin.sed, charset.alias): New rules. + (install-exec, uninstall): Install/deinstall charset.alias. + * localcharset.c: New file, from fileutils-4.0u. + * config.charset: New file, from fileutils-4.0u. + * red-add.sin, ref-del.sin: New files, from fileutils-4.0u. + + * intlh.inst.in (bind_textdomain_codeset): New declaration. + * libgettext.h (bind_textdomain_codeset, bind_textdomain_codeset__): + New declarations. + (bind_textdomain_codeset) [!ENABLE_NLS]: New macro. + * cat-compat.c (bind_textdomain_codeset): New function. + * intl-compat.c (bind_textdomain_codeset): New function. + + * libgettext.h (ngettext, dngettext, dcngettext): New + declarations. + (dcgettext): Remove macro definition. + (textdomain, bindtextdomain) [!ENABLE_NLS]: Parenthesize argument. + * intlh.inst.in (ngettext, dngettext, dcngettext): New + declarations. + (dcgettext): Remove macro definition. + + * *.h, *.c, *.y: Change copyright notice from LGPL to GPL. + +2000-05-21 Ulrich Drepper + + * dcigettext.c: Fix typo in comment. + +2000-05-08 Andreas Jaeger + + * bindtextdom.c (set_binding_values): Add prototype. + +2000-05-05 Bruno Haible + + * dcigettext.c (alignof): New macro. + (_nl_find_msg): Use it instead of __alignof__. Pass correct output + buffer length to __gconv/iconv. If malloc (freemem_size) fails, set + freemem_size to 0. + +2000-05-05 Bruno Haible + + * dcigettext.c (dcigettext): Fix interpretation of tsearch + return value. + +2000-05-06 Ulrich Drepper + + * dcigettext.c (DCIGETTEXT): Always define local variable `index'. + (mempcpy): Correct typo in parameter list. + + * hash-string.h: Don't include . + + * *.c, *.h, *.y: Update from glibc version. + +1998-04-29 Paul Eggert + + * Makefile.in (aliaspath): Don't put `.' at the end. + +1998-06-01 Ulrich Drepper + + * localealias.c (read_alias_file): Undo last change. + * l10nflist.c (_nl_normalize_codeset): Likewise. + * loadinfo.h: Likewise. + +1998-05-23 Ulrich Drepper + + * dcgettext.c: Don't use any alloca hack when C_ALLOCA is defined. + +1998-05-01 08:47 Ulrich Drepper + + * gettext-0.10.35 released. + +1998-04-29 Ulrich Drepper + + * intl/localealias.c (read_alias_file): Use unsigned char for + local variables. Remove unused variable tp. + * intl/l10nflist.c (_nl_normalize_codeset): Use unsigned char * + for type of codeset. For loosing Solaris systems. + * intl/loadinfo.h: Adapt prototype of _nl_normalize_codeset. + * intl/bindtextdom.c (BINDTEXTDOMAIN): Don't define local variable + len if not needed. + Patches by Jim Meyering. + +1998-04-28 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): Don't assign the element use_mmap if + mmap is not supported. + + * hash-string.h: Don't include . + +1998-04-27 Ulrich Drepper + + * textdomain.c: Use strdup is available. + + * localealias.c: Define HAVE_MEMPCPY so that we can use this + function. Define and use semapahores to protect modfication of + global objects when compiling for glibc. Add code to allow + freeing alias table. + + * l10nflist.c: Don't assume stpcpy not being a macro. + + * gettextP.h: Define internal_function macri if not already done. + Use glibc byte-swap macros instead of defining SWAP when compiled + for glibc. + (struct loaded_domain): Add elements to allow unloading. + + * Makefile.in (distclean): Don't remove libintl.h here. + + * bindtextdomain.c: Carry over changes from glibc. Use strdup if + available. + + * dcgettext.c: Don't assume stpcpy not being a macro. Mark internal + functions. Add memory freeing code for glibc. + + * dgettext.c: Update copyright. + + * explodename.c: Include stdlib.h and string.h only if they exist. + Use strings.h eventually. + + * finddomain.c: Mark internal functions. Use strdup if available. + Add memory freeing code for glibc. + +1997-10-10 20:00 Ulrich Drepper + + * libgettext.h: Fix dummy textdomain and bindtextdomain macros. + They should return reasonable values. + Reported by Tom Tromey . + +1997-09-16 03:33 Ulrich Drepper + + * libgettext.h: Define PARAMS also to `args' if __cplusplus is defined. + * intlh.inst.in: Likewise. + Reported by Jean-Marc Lasgouttes . + + * libintl.glibc: Update from current glibc version. + +1997-09-06 02:10 Ulrich Drepper + + * intlh.inst.in: Reformat copyright. + +1997-08-19 15:22 Ulrich Drepper + + * dcgettext.c (DCGETTEXT): Remove wrong comment. + +1997-08-16 00:13 Ulrich Drepper + + * Makefile.in (install-data): Don't change directory to install. + +1997-08-01 14:30 Ulrich Drepper + + * cat-compat.c: Fix copyright. + + * localealias.c: Don't define strchr unless !HAVE_STRCHR. + + * loadmsgcat.c: Update copyright. Fix typos. + + * l10nflist.c: Don't define strchr unless !HAVE_STRCHR. + (_nl_make_l10nflist): Handle sponsor and revision correctly. + + * gettext.c: Update copyright. + * gettext.h: Likewise. + * hash-string.h: Likewise. + + * finddomain.c: Remoave dead code. Define strchr only if + !HAVE_STRCHR. + + * explodename.c: Include . + + * explodename.c: Reformat copyright text. + (_nl_explode_name): Fix typo. + + * dcgettext.c: Define and use __set_errno. + (guess_category_value): Don't use setlocale if HAVE_LC_MESSAGES is + not defined. + + * bindtextdom.c: Pretty printing. + +1997-05-01 02:25 Ulrich Drepper + + * dcgettext.c (guess_category_value): Don't depend on + HAVE_LC_MESSAGES. We don't need the macro here. + Patch by Bruno Haible . + + * cat-compat.c (textdomain): DoN't refer to HAVE_SETLOCALE_NULL + macro. Instead use HAVE_LOCALE_NULL and define it when using + glibc, as in dcgettext.c. + Patch by Bruno Haible . + + * Makefile.in (CPPFLAGS): New variable. Reported by Franc,ois + Pinard. + +Mon Mar 10 06:51:17 1997 Ulrich Drepper + + * Makefile.in: Implement handling of libtool. + + * gettextP.h: Change data structures for use of generic lowlevel + i18n file handling. + +Wed Dec 4 20:21:18 1996 Ulrich Drepper + + * textdomain.c: Put parentheses around arguments of memcpy macro + definition. + * localealias.c: Likewise. + * l10nflist.c: Likewise. + * finddomain.c: Likewise. + * bindtextdom.c: Likewise. + Reported by Thomas Esken. + +Mon Nov 25 22:57:51 1996 Ulrich Drepper + + * textdomain.c: Move definition of `memcpy` macro to right + position. + +Fri Nov 22 04:01:58 1996 Ulrich Drepper + + * finddomain.c [!HAVE_STRING_H && !_LIBC]: Define memcpy using + bcopy if not already defined. Reported by Thomas Esken. + * bindtextdom.c: Likewise. + * l10nflist.c: Likewise. + * localealias.c: Likewise. + * textdomain.c: Likewise. + +Tue Oct 29 11:10:27 1996 Ulrich Drepper + + * Makefile.in (libdir): Change to use exec_prefix instead of + prefix. Reported by Knut-HĺvardAksnes . + +Sat Aug 31 03:07:09 1996 Ulrich Drepper + + * l10nflist.c (_nl_normalize_codeset): We convert to lower case, + so don't prepend uppercase `ISO' for only numeric arg. + +Fri Jul 19 00:15:46 1996 Ulrich Drepper + + * l10nflist.c: Move inclusion of argz.h, ctype.h, stdlib.h after + definition of _GNU_SOURCE. Patch by Roland McGrath. + + * Makefile.in (uninstall): Fix another bug with `for' loop and + empty arguments. Patch by Jim Meyering. Correct name os + uninstalled files: no intl- prefix anymore. + + * Makefile.in (install-data): Again work around shells which + cannot handle mpty for list. Reported by Jim Meyering. + +Sat Jul 13 18:11:35 1996 Ulrich Drepper + + * Makefile.in (install): Split goal. Now depend on install-exec + and install-data. + (install-exec, install-data): New goals. Created from former + install goal. + Reported by Karl Berry. + +Sat Jun 22 04:58:14 1996 Ulrich Drepper + + * Makefile.in (MKINSTALLDIRS): New variable. Path to + mkinstalldirs script. + (install): use MKINSTALLDIRS variable or if the script is not present + try to find it in the $top_scrdir). + +Wed Jun 19 02:56:56 1996 Ulrich Drepper + + * l10nflist.c: Linux libc *partly* includes the argz_* functions. + Grr. Work around by renaming the static version and use macros + for renaming. + +Tue Jun 18 20:11:17 1996 Ulrich Drepper + + * l10nflist.c: Correct presence test macros of __argz_* functions. + + * l10nflist.c: Include based on test of it instead when + __argz_* functions are available. + Reported by Andreas Schwab. + +Thu Jun 13 15:17:44 1996 Ulrich Drepper + + * explodename.c, l10nflist.c: Define NULL for dumb systems. + +Tue Jun 11 17:05:13 1996 Ulrich Drepper + + * intlh.inst.in, libgettext.h (dcgettext): Rename local variable + result to __result to prevent name clash. + + * l10nflist.c, localealias.c, dcgettext.c: Define _GNU_SOURCE to + get prototype for stpcpy and strcasecmp. + + * intlh.inst.in, libgettext.h: Move declaration of + `_nl_msg_cat_cntr' outside __extension__ block to prevent warning + from gcc's -Wnested-extern option. + +Fri Jun 7 01:58:00 1996 Ulrich Drepper + + * Makefile.in (install): Remove comment. + +Thu Jun 6 17:28:17 1996 Ulrich Drepper + + * Makefile.in (install): Work around for another Buglix stupidity. + Always use an `else' close for `if's. Reported by Nelson Beebe. + + * Makefile.in (intlh.inst): Correct typo in phony rule. + Reported by Nelson Beebe. + +Thu Jun 6 01:49:52 1996 Ulrich Drepper + + * dcgettext.c (read_alias_file): Rename variable alloca_list to + block_list as the macro calls assume. + Patch by Eric Backus. + + * localealias.c [!HAVE_ALLOCA]: Define alloca as macro using + malloc. + (read_alias_file): Rename varriabe alloca_list to block_list as the + macro calls assume. + Patch by Eric Backus. + + * l10nflist.c: Correct conditional for inclusion. + Reported by Roland McGrath. + + * Makefile.in (all): Depend on all-@USE_INCLUDED_LIBINTL@, not + all-@USE_NLS@. + + * Makefile.in (install): intlh.inst comes from local dir, not + $(srcdir). + + * Makefile.in (intlh.inst): Special handling of this goal. If + used in gettext, this is really a rul to construct this file. If + used in any other package it is defined as a .PHONY rule with + empty body. + + * finddomain.c: Extract locale file information handling into + l10nfile.c. Rename local stpcpy__ function to stpcpy. + + * dcgettext.c (stpcpy): Add local definition. + + * l10nflist.c: Solve some portability problems. Patches partly by + Thomas Esken. Add local definition of stpcpy. + +Tue Jun 4 02:47:49 1996 Ulrich Drepper + + * intlh.inst.in: Don't depend including on + HAVE_LOCALE_H. Instead configure must rewrite this fiile + depending on the result of the configure run. + + * Makefile.in (install): libintl.inst is now called intlh.inst. + Add rules for updating intlh.inst from intlh.inst.in. + + * libintl.inst: Renamed to intlh.inst.in. + + * localealias.c, dcgettext.c [__GNUC__]: Define HAVE_ALLOCA to 1 + because gcc has __buitlin_alloca. + Reported by Roland McGrath. + +Mon Jun 3 00:32:16 1996 Ulrich Drepper + + * Makefile.in (installcheck): New goal to fulfill needs of + automake's distcheck. + + * Makefile.in (install): Reorder commands so that VERSION is + found. + + * Makefile.in (gettextsrcdir): Now use subdirectory intl/ in + @datadir@/gettext. + (COMSRCS): Add l10nfile.c. + (OBJECTS): Add l10nfile.o. + (DISTFILES): Rename to DISTFILE.normal. Remove $(DISTFILES.common). + (DISTFILE.gettext): Remove $(DISTFILES.common). + (all-gettext): Remove goal. + (install): If $(PACKAGE) = gettext install, otherwose do nothing. No + package but gettext itself should install libintl.h + headers. + (dist): Extend goal to work for gettext, too. + (dist-gettext): Remove goal. + + * dcgettext.c [!HAVE_ALLOCA]: Define macro alloca by using malloc. + +Sun Jun 2 17:33:06 1996 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): Parameter is now comes from + find_l10nfile. + +Sat Jun 1 02:23:03 1996 Ulrich Drepper + + * l10nflist.c (__argz_next): Add definition. + + * dcgettext.c [!HAVE_ALLOCA]: Add code for handling missing alloca + code. Use new l10nfile handling. + + * localealias.c [!HAVE_ALLOCA]: Add code for handling missing + alloca code. + + * l10nflist.c: Initial revision. + +Tue Apr 2 18:51:18 1996 Ulrich Drepper + + * Makefile.in (all-gettext): New goal. Same as all-yes. + +Thu Mar 28 23:01:22 1996 Karl Eichwalder + + * Makefile.in (gettextsrcdir): Define using @datadir@. + +Tue Mar 26 12:39:14 1996 Ulrich Drepper + + * finddomain.c: Include . Reported by Roland McGrath. + +Sat Mar 23 02:00:35 1996 Ulrich Drepper + + * finddomain.c (stpcpy): Rename to stpcpy__ to prevent clashing + with external declaration. + +Sat Mar 2 00:47:09 1996 Ulrich Drepper + + * Makefile.in (all-no): Rename from all_no. + +Sat Feb 17 00:25:59 1996 Ulrich Drepper + + * gettextP.h [loaded_domain]: Array `successor' must now contain up + to 63 elements (because of codeset name normalization). + + * finddomain.c: Implement codeset name normalization. + +Thu Feb 15 04:39:09 1996 Ulrich Drepper + + * Makefile.in (all): Define to `all-@USE_NLS@'. + (all-yes, all_no): New goals. `all-no' is noop, `all-yes' + is former all. + +Mon Jan 15 21:46:01 1996 Howard Gayle + + * localealias.c (alias_compare): Increment string pointers in loop + of strcasecmp replacement. + +Fri Dec 29 21:16:34 1995 Ulrich Drepper + + * Makefile.in (install-src): Who commented this goal out ? :-) + +Fri Dec 29 15:08:16 1995 Ulrich Drepper + + * dcgettext.c (DCGETTEXT): Save `errno'. Failing system calls + should not effect it because a missing catalog is no error. + Reported by Harald Knig . + +Tue Dec 19 22:09:13 1995 Ulrich Drepper + + * Makefile.in (Makefile): Explicitly use $(SHELL) for running + shell scripts. + +Fri Dec 15 17:34:59 1995 Andreas Schwab + + * Makefile.in (install-src): Only install library and header when + we use the own implementation. Don't do it when using the + system's gettext or catgets functions. + + * dcgettext.c (find_msg): Must not swap domain->hash_size here. + +Sat Dec 9 16:24:37 1995 Ulrich Drepper + + * localealias.c, libintl.inst, libgettext.h, hash-string.h, + gettextP.h, finddomain.c, dcgettext.c, cat-compat.c: + Use PARAMS instead of __P. Suggested by Roland McGrath. + +Tue Dec 5 11:39:14 1995 Larry Schwimmer + + * libgettext.h: Use `#if !defined (_LIBINTL_H)' instead of `#if + !_LIBINTL_H' because Solaris defines _LIBINTL_H as empty. + +Mon Dec 4 15:42:07 1995 Ulrich Drepper + + * Makefile.in (install-src): + Install libintl.inst instead of libintl.h.install. + +Sat Dec 2 22:51:38 1995 Marcus Daniels + + * cat-compat.c (textdomain): + Reverse order in which files are tried you load. First + try local file, when this failed absolute path. + +Wed Nov 29 02:03:53 1995 Nelson H. F. Beebe + + * cat-compat.c (bindtextdomain): Add missing { }. + +Sun Nov 26 18:21:41 1995 Ulrich Drepper + + * libintl.inst: Add missing __P definition. Reported by Nelson Beebe. + + * Makefile.in: + Add dummy `all' and `dvi' goals. Reported by Tom Tromey. + +Sat Nov 25 16:12:01 1995 Franc,ois Pinard + + * hash-string.h: Capitalize arguments of macros. + +Sat Nov 25 12:01:36 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): Prevent files names longer than 13 + characters. libintl.h.glibc->libintl.glibc, + libintl.h.install->libintl.inst. Reported by Joshua R. Poulson. + +Sat Nov 25 11:31:12 1995 Eric Backus + + * dcgettext.c: Fix bug in preprocessor conditionals. + +Sat Nov 25 02:35:27 1995 Nelson H. F. Beebe + + * libgettext.h: Solaris cc does not understand + #if !SYMBOL1 && !SYMBOL2. Sad but true. + +Thu Nov 23 16:22:14 1995 Ulrich Drepper + + * hash-string.h (hash_string): + Fix for machine with >32 bit `unsigned long's. + + * dcgettext.c (DCGETTEXT): + Fix horrible bug in loop for alternative translation. + +Thu Nov 23 01:45:29 1995 Ulrich Drepper + + * po2tbl.sed.in, linux-msg.sed, xopen-msg.sed: + Some further simplifications in message number generation. + +Mon Nov 20 21:08:43 1995 Ulrich Drepper + + * libintl.h.glibc: Use __const instead of const in prototypes. + + * Makefile.in (install-src): + Install libintl.h.install instead of libintl.h. This + is a stripped-down version. Suggested by Peter Miller. + + * libintl.h.install, libintl.h.glibc: Initial revision. + + * localealias.c (_nl_expand_alias, read_alias_file): + Protect prototypes in type casts by __P. + +Tue Nov 14 16:43:58 1995 Ulrich Drepper + + * hash-string.h: Correct prototype for hash_string. + +Sun Nov 12 12:42:30 1995 Ulrich Drepper + + * hash-string.h (hash_string): Add prototype. + + * gettextP.h: Fix copyright. + (SWAP): Add prototype. + +Wed Nov 8 22:56:33 1995 Ulrich Drepper + + * localealias.c (read_alias_file): Forgot sizeof. + Avoid calling *printf function. This introduces a big overhead. + Patch by Roland McGrath. + +Tue Nov 7 14:21:08 1995 Ulrich Drepper + + * finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy. + + * finddomain.c (stpcpy): + Define substitution function local. The macro was to flaky. + + * cat-compat.c: Fix typo. + + * xopen-msg.sed, linux-msg.sed: + While bringing message number to right place only accept digits. + + * linux-msg.sed, xopen-msg.sed: Now that the counter does not have + leading 0s we don't need to remove them. Reported by Marcus + Daniels. + + * Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in + dependency. Reported by Marcus Daniels. + + * cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement. + Generally cleanup using #if instead of #ifndef. + + * Makefile.in: Correct typos in comment. By Franc,ois Pinard. + +Mon Nov 6 00:27:02 1995 Ulrich Drepper + + * Makefile.in (install-src): Don't install libintl.h and libintl.a + if we use an available gettext implementation. + +Sun Nov 5 22:02:08 1995 Ulrich Drepper + + * libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS. Reported + by Franc,ois Pinard. + + * libgettext.h: Use #if instead of #ifdef/#ifndef. + + * finddomain.c: + Comments describing what has to be done should start with FIXME. + +Sun Nov 5 19:38:01 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): Split. Use DISTFILES with normal meaning. + DISTFILES.common names the files common to both dist goals. + DISTFILES.gettext are the files only distributed in GNU gettext. + +Sun Nov 5 17:32:54 1995 Ulrich Drepper + + * dcgettext.c (DCGETTEXT): Correct searching in derived locales. + This was necessary since a change in _nl_find_msg several weeks + ago. I really don't know this is still not fixed. + +Sun Nov 5 12:43:12 1995 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL. This + might mark a special condition. + + * finddomain.c (make_entry_rec): Don't make illegal entry as decided. + + * Makefile.in (dist): Suppress error message when ln failed. + Get files from $(srcdir) explicitly. + + * libgettext.h (gettext_const): Rename to gettext_noop. + +Fri Nov 3 07:36:50 1995 Ulrich Drepper + + * finddomain.c (make_entry_rec): + Protect against wrong locale names by testing mask. + + * libgettext.h (gettext_const): Add macro definition. + Capitalize macro arguments. + +Thu Nov 2 23:15:51 1995 Ulrich Drepper + + * finddomain.c (_nl_find_domain): + Test for pointer != NULL before accessing value. + Reported by Tom Tromey. + + * gettext.c (NULL): + Define as (void*)0 instad of 0. Reported by Franc,ois Pinard. + +Mon Oct 30 21:28:52 1995 Ulrich Drepper + + * po2tbl.sed.in: Serious typo bug fixed by Jim Meyering. + +Sat Oct 28 23:20:47 1995 Ulrich Drepper + + * libgettext.h: Disable dcgettext optimization for Solaris 2.3. + + * localealias.c (alias_compare): + Peter Miller reported that tolower in some systems is + even dumber than I thought. Protect call by `isupper'. + +Fri Oct 27 22:22:51 1995 Ulrich Drepper + + * Makefile.in (libdir, includedir): New variables. + (install-src): Install libintl.a and libintl.h in correct dirs. + +Fri Oct 27 22:07:29 1995 Ulrich Drepper + + * Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c. + + * po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques. + + * localealias.c: + Fix typo and superflous test. Reported by Christian von Roques. + +Fri Oct 6 11:52:05 1995 Ulrich Drepper + + * finddomain.c (_nl_find_domain): + Correct some remainder from the pre-CEN syntax. Now + we don't have a constant number of successors anymore. + +Wed Sep 27 21:41:13 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): Add libintl.h.glibc. + + * Makefile.in (dist-libc): Add goal for packing sources for glibc. + (COMSRCS, COMHDRS): Splitted to separate sources shared with glibc. + + * loadmsgcat.c: Forget to continue #if line. + + * localealias.c: + [_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name + space clean. + + * dcgettext.c, finddomain.c: Better comment to last change. + + * loadmsgcat.c: + [_LIBC]: Rename fstat, open, close, read, mmap, and munmap to + __fstat, __open, __close, __read, __mmap, and __munmap resp + to keep ANSI C name space clean. + + * finddomain.c: + [_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean. + + * dcgettext.c: + [_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to + keep ANSI C name space clean. + + * libgettext.h: + Include sys/types.h for those old SysV systems out there. + Reported by Francesco Potorti`. + + * loadmsgcat.c (use_mmap): Define if compiled for glibc. + + * bindtextdom.c: Include all those standard headers + unconditionally if _LIBC is defined. + + * finddomain.c: Fix 2 times defiend -> defined. + + * textdomain.c: Include libintl.h instead of libgettext.h when + compiling for glibc. Include all those standard headers + unconditionally if _LIBC is defined. + + * localealias.c, loadmsgcat.c: Prepare to be compiled in glibc. + + * gettext.c: + Include libintl.h instead of libgettext.h when compiling for glibc. + Get NULL from stddef.h if we compile for glibc. + + * finddomain.c: Include libintl.h instead of libgettext.h when + compiling for glibc. Include all those standard headers + unconditionally if _LIBC is defined. + + * dcgettext.c: Include all those standard headers unconditionally + if _LIBC is defined. + + * dgettext.c: If compiled in glibc include libintl.h instead of + libgettext.h. + (locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc. + + * dcgettext.c: If compiled in glibc include libintl.h instead of + libgettext.h. + (getcwd): Don't rely on HAVE_GETCWD when compiling for glibc. + + * bindtextdom.c: + If compiled in glibc include libintl.h instead of libgettext.h. + +Mon Sep 25 22:23:06 1995 Ulrich Drepper + + * localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0. + Reported by Marcus Daniels. + + * cat-compat.c (bindtextdomain): + String used in putenv must not be recycled. + Reported by Marcus Daniels. + + * libgettext.h (__USE_GNU_GETTEXT): + Additional symbol to signal that we use GNU gettext + library. + + * cat-compat.c (bindtextdomain): + Fix bug with the strange stpcpy replacement. + Reported by Nelson Beebe. + +Sat Sep 23 08:23:51 1995 Ulrich Drepper + + * cat-compat.c: Include for stpcpy prototype. + + * localealias.c (read_alias_file): + While expand strdup code temporary variable `cp' hided + higher level variable with same name. Rename to `tp'. + + * textdomain.c (textdomain): + Avoid warning by using temporary variable in strdup code. + + * finddomain.c (_nl_find_domain): Remove unused variable `application'. + +Thu Sep 21 15:51:44 1995 Ulrich Drepper + + * localealias.c (alias_compare): + Use strcasecmp() only if available. Else use + implementation in place. + + * intl-compat.c: + Wrapper functions now call *__ functions instead of __*. + + * libgettext.h: Declare prototypes for *__ functions instead for __*. + + * cat-compat.c, loadmsgcat.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + + * bindtextdom.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + Rename to bindtextdomain__ if not used in GNU C Library. + + * dgettext.c: + Rename function to dgettext__ if not used in GNU C Library. + + * gettext.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + Functions now called gettext__ if not used in GNU C Library. + + * dcgettext.c, localealias.c, textdomain.c, finddomain.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + +Sun Sep 17 23:14:49 1995 Ulrich Drepper + + * finddomain.c: Correct some bugs in handling of CEN standard + locale definitions. + +Thu Sep 7 01:49:28 1995 Ulrich Drepper + + * finddomain.c: Implement CEN syntax. + + * gettextP.h (loaded_domain): Extend number of successors to 31. + +Sat Aug 19 19:25:29 1995 Ulrich Drepper + + * Makefile.in (aliaspath): Remove path to X11 locale dir. + + * Makefile.in: Make install-src depend on install. This helps + gettext to install the sources and other packages can use the + install goal. + +Sat Aug 19 15:19:33 1995 Ulrich Drepper + + * Makefile.in (uninstall): Remove stuff installed by install-src. + +Tue Aug 15 13:13:53 1995 Ulrich Drepper + + * VERSION.in: Initial revision. + + * Makefile.in (DISTFILES): + Add VERSION file. This is not necessary for gettext, but + for other packages using this library. + +Tue Aug 15 06:16:44 1995 Ulrich Drepper + + * gettextP.h (_nl_find_domain): + New prototype after changing search strategy. + + * finddomain.c (_nl_find_domain): + We now try only to find a specified catalog. Fall back to other + catalogs listed in the locale list is now done in __dcgettext. + + * dcgettext.c (__dcgettext): + Now we provide message fall back even to different languages. + I.e. if a message is not available in one language all the other + in the locale list a tried. Formerly fall back was only possible + within one language. Implemented by moving one loop from + _nl_find_domain to here. + +Mon Aug 14 23:45:50 1995 Ulrich Drepper + + * Makefile.in (gettextsrcdir): + Directory where source of GNU gettext library are made + available. + (INSTALL, INSTALL_DATA): Programs used for installing sources. + (gettext-src): New. Rule to install GNU gettext sources for use in + gettextize shell script. + +Sun Aug 13 14:40:48 1995 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): + Use mmap for loading only when munmap function is + also available. + + * Makefile.in (install): Depend on `all' goal. + +Wed Aug 9 11:04:33 1995 Ulrich Drepper + + * localealias.c (read_alias_file): + Do not overwrite '\n' when terminating alias value string. + + * localealias.c (read_alias_file): + Handle long lines. Ignore the rest not fitting in + the buffer after the initial `fgets' call. + +Wed Aug 9 00:54:29 1995 Ulrich Drepper + + * gettextP.h (_nl_load_domain): + Add prototype, replacing prototype for _nl_load_msg_cat. + + * finddomain.c (_nl_find_domain): + Remove unneeded variable filename and filename_len. + (expand_alias): Remove prototype because functions does not + exist anymore. + + * localealias.c (read_alias_file): + Change type of fname_len parameter to int. + (xmalloc): Add prototype. + + * loadmsgcat.c: Better prototypes for xmalloc. + +Tue Aug 8 22:30:39 1995 Ulrich Drepper + + * finddomain.c (_nl_find_domain): + Allow alias name to be constructed from the four components. + + * Makefile.in (aliaspath): New variable. Set to preliminary value. + (SOURCES): Add localealias.c. + (OBJECTS): Add localealias.o. + + * gettextP.h: Add prototype for _nl_expand_alias. + + * finddomain.c: Aliasing handled in intl/localealias.c. + + * localealias.c: Aliasing for locale names. + + * bindtextdom.c: Better prototypes for xmalloc and xstrdup. + +Mon Aug 7 23:47:42 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): gettext.perl is now found in misc/. + + * cat-compat.c (bindtextdomain): + Correct implementation. dirname parameter was not used. + Reported by Marcus Daniels. + + * gettextP.h (loaded_domain): + New fields `successor' and `decided' for oo, lazy + message handling implementation. + + * dcgettext.c: + Adopt for oo, lazy message handliing. + Now we can inherit translations from less specific locales. + (find_msg): New function. + + * loadmsgcat.c, finddomain.c: + Complete rewrite. Implement oo, lazy message handling :-). + We now have an additional environment variable `LANGUAGE' with + a higher priority than LC_ALL for the LC_MESSAGE locale. + Here we can set a colon separated list of specifications each + of the form `language[_territory[.codeset]][@modifier]'. + +Sat Aug 5 09:55:42 1995 Ulrich Drepper + + * finddomain.c (unistd.h): + Include to get _PC_PATH_MAX defined on system having it. + +Fri Aug 4 22:42:00 1995 Ulrich Drepper + + * finddomain.c (stpcpy): Include prototype. + + * Makefile.in (dist): Remove `copying instead' message. + +Wed Aug 2 18:52:03 1995 Ulrich Drepper + + * Makefile.in (ID, TAGS): Do not use $^. + +Tue Aug 1 20:07:11 1995 Ulrich Drepper + + * Makefile.in (TAGS, ID): Use $^ as command argument. + (TAGS): Give etags -o option t write to current directory, + not $(srcdir). + (ID): Use $(srcdir) instead os $(top_srcdir)/src. + (distclean): Remove ID. + +Sun Jul 30 11:51:46 1995 Ulrich Drepper + + * Makefile.in (gnulocaledir): + New variable, always using share/ for data directory. + (DEFS): Add GNULOCALEDIR, used in finddomain.c. + + * finddomain.c (_nl_default_dirname): + Set to GNULOCALEDIR, because it always has to point + to the directory where GNU gettext Library writes it to. + + * intl-compat.c (textdomain, bindtextdomain): + Undefine macros before function definition. + +Sat Jul 22 01:10:02 1995 Ulrich Drepper + + * libgettext.h (_LIBINTL_H): + Protect definition in case where this file is included as + libgettext.h on Solaris machines. Add comment about this. + +Wed Jul 19 02:36:42 1995 Ulrich Drepper + + * intl-compat.c (textdomain): Correct typo. + +Wed Jul 19 01:51:35 1995 Ulrich Drepper + + * dcgettext.c (dcgettext): Function now called __dcgettext. + + * dgettext.c (dgettext): Now called __dgettext and calls + __dcgettext. + + * gettext.c (gettext): + Function now called __gettext and calls __dgettext. + + * textdomain.c (textdomain): Function now called __textdomain. + + * bindtextdom.c (bindtextdomain): Function now called + __bindtextdomain. + + * intl-compat.c: Initial revision. + + * Makefile.in (SOURCES): Add intl-compat.c. + (OBJECTS): We always compile the GNU gettext library functions. + OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o, + and intl-compat.o. + (GETTOBJS): Contains now only intl-compat.o. + + * libgettext.h: + Re-include protection matches dualistic character of libgettext.h. + For all functions in GNU gettext library define __ counter part. + + * finddomain.c (strchr): Define as index if not found in C library. + (_nl_find_domain): For relative paths paste / in between. + +Tue Jul 18 16:37:45 1995 Ulrich Drepper + + * loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h. + + * xopen-msg.sed: Fix bug with `msgstr ""' lines. + A little bit better comments. + +Tue Jul 18 01:18:27 1995 Ulrich Drepper + + * Makefile.in: + po-mode.el, makelinks, combine-sh are now found in ../misc. + + * po-mode.el, makelinks, combine-sh, elisp-comp: + Moved to ../misc/. + + * libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__. + +Sun Jul 16 22:33:02 1995 Ulrich Drepper + + * Makefile.in (INSTALL, INSTALL_DATA): New variables. + (install-data, uninstall): Install/uninstall .elc file. + + * po-mode.el (Installation comment): + Add .pox as possible extension of .po files. + +Sun Jul 16 13:23:27 1995 Ulrich Drepper + + * elisp-comp: Complete new version by Franc,ois: This does not + fail when not compiling in the source directory. + +Sun Jul 16 00:12:17 1995 Ulrich Drepper + + * Makefile.in (../po/cat-id-tbl.o): + Use $(MAKE) instead of make for recursive make. + + * Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh. + (install-exec): Add missing dummy goal. + (install-data, uninstall): @ in multi-line shell command at + beginning, not in front of echo. Reported by Eric Backus. + +Sat Jul 15 00:21:28 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): + Rename libgettext.perl to gettext.perl to fit in 14 chars + file systems. + + * gettext.perl: + Rename to gettext.perl to fit in 14 chars file systems. + +Thu Jul 13 23:17:20 1995 Ulrich Drepper + + * cat-compat.c: If !STDC_HEADERS try to include malloc.h. + +Thu Jul 13 20:55:02 1995 Ulrich Drepper + + * po2tbl.sed.in: Pretty printing. + + * linux-msg.sed, xopen-msg.sed: + Correct bugs with handling substitute flags in branches. + + * hash-string.h (hash_string): + Old K&R compilers don't under stand `unsigned char'. + + * gettext.h (nls_uint32): + Some old K&R compilers (eg HP) don't understand `unsigned int'. + + * cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes. + +Thu Jul 13 01:34:33 1995 Ulrich Drepper + + * Makefile.in (ELCFILES): New variable. + (DISTFILES): Add elisp-comp. + Add implicit rule for .el -> .elc compilation. + (install-data): install $ELCFILES + (clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp. + + * elisp-comp: Initial revision + +Wed Jul 12 16:14:52 1995 Ulrich Drepper + + * Makefile.in: + cat-id-tbl.c is now found in po/. This enables us to use an identical + intl/ directory in all packages. + + * dcgettext.c (dcgettext): hashing does not work for table size <= 2. + + * textdomain.c: fix typo (#if def -> #if defined) + +Tue Jul 11 18:44:43 1995 Ulrich Drepper + + * Makefile.in (stamp-cat-id): use top_srcdir to address source files + (DISTFILES,distclean): move tupdate.perl to src/ + + * po-to-tbl.sed.in: + add additional jump to clear change flag to recognize multiline strings + +Tue Jul 11 01:32:50 1995 Ulrich Drepper + + * textdomain.c: Protect inclusion of stdlib.h and string.h. + + * loadmsgcat.c: Protect inclusion of stdlib.h. + + * libgettext.h: Protect inclusion of locale.h. + Allow use in C++ programs. + Define NULL is not happened already. + + * Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of + po-to-tbl.sed. + (distclean): remove po-to-tbl.sed and tupdate.perl. + + * tupdate.perl.in: Substitute Perl path even in exec line. + Don't include entries without translation from old .po file. + +Tue Jul 4 00:41:51 1995 Ulrich Drepper + + * tupdate.perl.in: use "Updated: " in msgid "". + + * cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR). + Define getenv if !__STDC__. + + * bindtextdom.c: Protect stdlib.h and string.h inclusion. + Define free if !__STDC__. + + * finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. + Define free if !__STDC__. + + * cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. + +Mon Jul 3 23:56:30 1995 Ulrich Drepper + + * Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR. + Remove unneeded $(srcdir) from Makefile.in dependency. + + * makelinks: Add copyright and short description. + + * po-mode.el: Last version for 0.7. + + * tupdate.perl.in: Fix die message. + + * dcgettext.c: Protect include of string.h. + + * gettext.c: Protect include of stdlib.h and further tries to get NULL. + + * finddomain.c: Some corrections in includes. + + * Makefile.in (INCLUDES): Prune list correct path to Makefile.in. + + * po-to-tbl.sed: Adopt for new .po file format. + + * linux-msg.sed, xopen-msg.sed: Adopt for new .po file format. + +Sun Jul 2 23:55:03 1995 Ulrich Drepper + + * tupdate.perl.in: Complete rewrite for new .po file format. + +Sun Jul 2 02:06:50 1995 Ulrich Drepper + + * First official release. This directory contains all the code + needed to internationalize own packages. It provides functions + which allow to use the X/Open catgets function with an interface + like the Uniforum gettext function. For system which does not + have neither of those a complete implementation is provided. diff --git a/libprozilla/intl/Makefile.in b/libprozilla/intl/Makefile.in new file mode 100644 index 0000000..889ba23 --- /dev/null +++ b/libprozilla/intl/Makefile.in @@ -0,0 +1,312 @@ +# Makefile for directory with message catalog handling in GNU NLS Utilities. +# Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = .. +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +transform = @program_transform_name@ +libdir = @libdir@ +includedir = @includedir@ +datadir = @datadir@ +localedir = $(datadir)/locale +gettextsrcdir = $(datadir)/gettext/intl +aliaspath = $(localedir) +subdir = intl + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` + +l = @INTL_LIBTOOL_SUFFIX_PREFIX@ + +AR = ar +CC = @CC@ +LIBTOOL = @LIBTOOL@ +RANLIB = @RANLIB@ +YACC = @INTLBISON@ -y -d +YFLAGS = --name-prefix=__gettext + +DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \ +-DLIBDIR=\"$(libdir)\" @DEFS@ +CPPFLAGS = @CPPFLAGS@ +CFLAGS = @CFLAGS@ +LDFLAGS = @LDFLAGS@ + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +HEADERS = $(COMHDRS) libgnuintl.h libgettext.h loadinfo.h +COMHDRS = gettext.h gettextP.h hash-string.h +SOURCES = $(COMSRCS) intl-compat.c +COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \ +finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \ +explodename.c dcigettext.c dcngettext.c dngettext.c ngettext.c plural.y \ +localcharset.c +OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \ +finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \ +explodename.$lo dcigettext.$lo dcngettext.$lo dngettext.$lo ngettext.$lo \ +plural.$lo localcharset.$lo +GETTOBJS = intl-compat.$lo +DISTFILES.common = Makefile.in \ +config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES) +DISTFILES.generated = plural.c +DISTFILES.normal = VERSION +DISTFILES.gettext = libintl.glibc +DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c + +# Libtool's library version information for libintl. +# Before making a gettext release, the gettext maintainer must change this +# according to the libtool documentation, section "Library interface versions". +# Maintainers of other packages that include the intl directory must *not* +# change these values. +LTV_CURRENT=1 +LTV_REVISION=1 +LTV_AGE=0 + +.SUFFIXES: +.SUFFIXES: .c .y .o .lo .sin .sed +.c.o: + $(COMPILE) $< +.c.lo: + $(LIBTOOL) --mode=compile $(COMPILE) $< + +.y.c: + $(YACC) $(YFLAGS) --output $@ $< + rm -f $*.h + +.sin.sed: + sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > t-$@ + mv t-$@ $@ + +INCLUDES = -I.. -I. -I$(top_srcdir)/intl + +all: all-@USE_INCLUDED_LIBINTL@ +all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed +all-no: all-no-@BUILD_INCLUDED_LIBINTL@ +all-no-yes: libgnuintl.$la +all-no-no: + +libintl.a libgnuintl.a: $(OBJECTS) + rm -f $@ + $(AR) cru $@ $(OBJECTS) + $(RANLIB) $@ + +libintl.la libgnuintl.la: $(OBJECTS) + $(LIBTOOL) --mode=link \ + $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \ + $(OBJECTS) @LIBICONV@ \ + -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \ + -rpath $(libdir) \ + -no-undefined + +libintl.h: libgnuintl.h + cp $(srcdir)/libgnuintl.h libintl.h + +charset.alias: config.charset + $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ + mv t-$@ $@ + +check: all + +# This installation goal is only used in GNU gettext. Packages which +# only use the library should use install instead. + +# We must not install the libintl.h/libintl.a files if we are on a +# system which has the GNU gettext() function in its C library or in a +# separate library. +# If you want to use the one which comes with this version of the +# package, you have to use `configure --with-included-gettext'. +install: install-exec install-data +install-exec: all + if test "$(PACKAGE)" = "gettext" \ + && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ + $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \ + $(LIBTOOL) --mode=install \ + $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + $(mkinstalldirs) $(DESTDIR)$(libdir); \ + temp=$(DESTDIR)$(libdir)/t-charset.alias; \ + dest=$(DESTDIR)$(libdir)/charset.alias; \ + if test -f $(DESTDIR)$(libdir)/charset.alias; then \ + orig=$(DESTDIR)$(libdir)/charset.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + else \ + if test @GLIBC21@ = no; then \ + orig=charset.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + fi; \ + fi; \ + $(mkinstalldirs) $(DESTDIR)$(localedir); \ + test -f $(DESTDIR)$(localedir)/locale.alias \ + && orig=$(DESTDIR)$(localedir)/locale.alias \ + || orig=$(srcdir)/locale.alias; \ + temp=$(DESTDIR)$(localedir)/t-locale.alias; \ + dest=$(DESTDIR)$(localedir)/locale.alias; \ + sed -f ref-add.sed $$orig > $$temp; \ + $(INSTALL_DATA) $$temp $$dest; \ + rm -f $$temp; \ + else \ + : ; \ + fi +install-data: all + if test "$(PACKAGE)" = "gettext"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \ + $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \ + dists="$(DISTFILES.common)"; \ + for file in $$dists; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \ + dists="$(DISTFILES.generated)"; \ + for file in $$dists; do \ + if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ + $(INSTALL_DATA) $$dir/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + dists="$(DISTFILES.obsolete)"; \ + for file in $$dists; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + if test "$(PACKAGE)" = "gettext" \ + && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ + rm -f $(DESTDIR)$(includedir)/libintl.h; \ + $(LIBTOOL) --mode=uninstall \ + rm -f $(DESTDIR)$(libdir)/libintl.$la; \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + if test -f $(DESTDIR)$(libdir)/charset.alias; then \ + temp=$(DESTDIR)$(libdir)/t-charset.alias; \ + dest=$(DESTDIR)$(libdir)/charset.alias; \ + sed -f ref-del.sed $$dest > $$temp; \ + if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ + rm -f $$dest; \ + else \ + $(INSTALL_DATA) $$temp $$dest; \ + fi; \ + rm -f $$temp; \ + fi; \ + if test -f $(DESTDIR)$(localedir)/locale.alias; then \ + temp=$(DESTDIR)$(localedir)/t-locale.alias; \ + dest=$(DESTDIR)$(localedir)/locale.alias; \ + sed -f ref-del.sed $$dest > $$temp; \ + if grep '^# Packages using this file: $$' $$temp > /dev/null; then \ + rm -f $$dest; \ + else \ + $(INSTALL_DATA) $$temp $$dest; \ + fi; \ + rm -f $$temp; \ + fi; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext"; then \ + for file in VERSION ChangeLog $(DISTFILES.common) $(DISTFILES.generated); do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +info dvi: + +$(OBJECTS): ../config.h libgnuintl.h +bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h +dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h + +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) + +id: ID + +ID: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) + + +mostlyclean: + rm -f *.a *.la *.o *.lo core core.* + rm -f libintl.h charset.alias ref-add.sed ref-del.sed + rm -f -r .libs _libs + +clean: mostlyclean + +distclean: clean + rm -f Makefile ID TAGS + if test "$(PACKAGE)" = gettext; then \ + rm -f ChangeLog.inst $(DISTFILES.normal); \ + else \ + : ; \ + fi + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + + +# GNU gettext needs not contain the file `VERSION' but contains some +# other files which should not be distributed in other packages. +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: Makefile + if test "$(PACKAGE)" = gettext; then \ + additional="$(DISTFILES.gettext)"; \ + else \ + additional="$(DISTFILES.normal)"; \ + fi; \ + $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \ + for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \ + if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ + ln $$dir/$$file $(distdir) 2> /dev/null \ + || cp -p $$dir/$$file $(distdir); \ + done + +Makefile: Makefile.in ../config.status + cd .. \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libprozilla/intl/VERSION b/libprozilla/intl/VERSION new file mode 100644 index 0000000..268da64 --- /dev/null +++ b/libprozilla/intl/VERSION @@ -0,0 +1 @@ +GNU gettext library from gettext-0.10.38 diff --git a/libprozilla/intl/bindtextdom.c b/libprozilla/intl/bindtextdom.c new file mode 100644 index 0000000..7e5a74a --- /dev/null +++ b/libprozilla/intl/bindtextdom.c @@ -0,0 +1,368 @@ +/* Implementation of the bindtextdomain(3) function + Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif +#include "gettextP.h" + +#ifdef _LIBC +/* We have to handle multi-threaded applications. */ +# include +#else +/* Provide dummy implementation if this is outside glibc. */ +# define __libc_rwlock_define(CLASS, NAME) +# define __libc_rwlock_wrlock(NAME) +# define __libc_rwlock_unlock(NAME) +#endif + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_dirname _nl_default_dirname__ +# define _nl_domain_bindings _nl_domain_bindings__ +#endif + +/* Some compilers, like SunOS4 cc, don't have offsetof in . */ +#ifndef offsetof +# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) +#endif + +/* @@ end of prolog @@ */ + +/* Contains the default location of the message catalogs. */ +extern const char _nl_default_dirname[]; + +/* List with bindings of specific domains. */ +extern struct binding *_nl_domain_bindings; + +/* Lock variable to protect the global data in the gettext implementation. */ +__libc_rwlock_define (extern, _nl_state_lock) + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define BINDTEXTDOMAIN __bindtextdomain +# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define BINDTEXTDOMAIN bindtextdomain__ +# define BIND_TEXTDOMAIN_CODESET bind_textdomain_codeset__ +#endif + +/* Prototypes for local functions. */ +static void set_binding_values PARAMS ((const char *domainname, + const char **dirnamep, + const char **codesetp)); + +/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP + to be used for the DOMAINNAME message catalog. + If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not + modified, only the current value is returned. + If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither + modified nor returned. */ +static void +set_binding_values (domainname, dirnamep, codesetp) + const char *domainname; + const char **dirnamep; + const char **codesetp; +{ + struct binding *binding; + int modified; + + /* Some sanity checks. */ + if (domainname == NULL || domainname[0] == '\0') + { + if (dirnamep) + *dirnamep = NULL; + if (codesetp) + *codesetp = NULL; + return; + } + + __libc_rwlock_wrlock (_nl_state_lock); + + modified = 0; + + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (binding != NULL) + { + if (dirnamep) + { + const char *dirname = *dirnamep; + + if (dirname == NULL) + /* The current binding has be to returned. */ + *dirnamep = binding->dirname; + else + { + /* The domain is already bound. If the new value and the old + one are equal we simply do nothing. Otherwise replace the + old binding. */ + char *result = binding->dirname; + if (strcmp (dirname, result) != 0) + { + if (strcmp (dirname, _nl_default_dirname) == 0) + result = (char *) _nl_default_dirname; + else + { +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (dirname); +#else + size_t len = strlen (dirname) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result != NULL, 1)) + memcpy (result, dirname, len); +#endif + } + + if (__builtin_expect (result != NULL, 1)) + { + if (binding->dirname != _nl_default_dirname) + free (binding->dirname); + + binding->dirname = result; + modified = 1; + } + } + *dirnamep = result; + } + } + + if (codesetp) + { + const char *codeset = *codesetp; + + if (codeset == NULL) + /* The current binding has be to returned. */ + *codesetp = binding->codeset; + else + { + /* The domain is already bound. If the new value and the old + one are equal we simply do nothing. Otherwise replace the + old binding. */ + char *result = binding->codeset; + if (result == NULL || strcmp (codeset, result) != 0) + { +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (codeset); +#else + size_t len = strlen (codeset) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result != NULL, 1)) + memcpy (result, codeset, len); +#endif + + if (__builtin_expect (result != NULL, 1)) + { + if (binding->codeset != NULL) + free (binding->codeset); + + binding->codeset = result; + binding->codeset_cntr++; + modified = 1; + } + } + *codesetp = result; + } + } + } + else if ((dirnamep == NULL || *dirnamep == NULL) + && (codesetp == NULL || *codesetp == NULL)) + { + /* Simply return the default values. */ + if (dirnamep) + *dirnamep = _nl_default_dirname; + if (codesetp) + *codesetp = NULL; + } + else + { + /* We have to create a new binding. */ + size_t len = strlen (domainname) + 1; + struct binding *new_binding = + (struct binding *) malloc (offsetof (struct binding, domainname) + len); + + if (__builtin_expect (new_binding == NULL, 0)) + goto failed; + + memcpy (new_binding->domainname, domainname, len); + + if (dirnamep) + { + const char *dirname = *dirnamep; + + if (dirname == NULL) + /* The default value. */ + dirname = _nl_default_dirname; + else + { + if (strcmp (dirname, _nl_default_dirname) == 0) + dirname = _nl_default_dirname; + else + { + char *result; +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (dirname); + if (__builtin_expect (result == NULL, 0)) + goto failed_dirname; +#else + size_t len = strlen (dirname) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result == NULL, 0)) + goto failed_dirname; + memcpy (result, dirname, len); +#endif + dirname = result; + } + } + *dirnamep = dirname; + new_binding->dirname = (char *) dirname; + } + else + /* The default value. */ + new_binding->dirname = (char *) _nl_default_dirname; + + new_binding->codeset_cntr = 0; + + if (codesetp) + { + const char *codeset = *codesetp; + + if (codeset != NULL) + { + char *result; + +#if defined _LIBC || defined HAVE_STRDUP + result = strdup (codeset); + if (__builtin_expect (result == NULL, 0)) + goto failed_codeset; +#else + size_t len = strlen (codeset) + 1; + result = (char *) malloc (len); + if (__builtin_expect (result == NULL, 0)) + goto failed_codeset; + memcpy (result, codeset, len); +#endif + codeset = result; + new_binding->codeset_cntr++; + } + *codesetp = codeset; + new_binding->codeset = (char *) codeset; + } + else + new_binding->codeset = NULL; + + /* Now enqueue it. */ + if (_nl_domain_bindings == NULL + || strcmp (domainname, _nl_domain_bindings->domainname) < 0) + { + new_binding->next = _nl_domain_bindings; + _nl_domain_bindings = new_binding; + } + else + { + binding = _nl_domain_bindings; + while (binding->next != NULL + && strcmp (domainname, binding->next->domainname) > 0) + binding = binding->next; + + new_binding->next = binding->next; + binding->next = new_binding; + } + + modified = 1; + + /* Here we deal with memory allocation failures. */ + if (0) + { + failed_codeset: + if (new_binding->dirname != _nl_default_dirname) + free (new_binding->dirname); + failed_dirname: + free (new_binding); + failed: + if (dirnamep) + *dirnamep = NULL; + if (codesetp) + *codesetp = NULL; + } + } + + /* If we modified any binding, we flush the caches. */ + if (modified) + ++_nl_msg_cat_cntr; + + __libc_rwlock_unlock (_nl_state_lock); +} + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +char * +BINDTEXTDOMAIN (domainname, dirname) + const char *domainname; + const char *dirname; +{ + set_binding_values (domainname, &dirname, NULL); + return (char *) dirname; +} + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +char * +BIND_TEXTDOMAIN_CODESET (domainname, codeset) + const char *domainname; + const char *codeset; +{ + set_binding_values (domainname, NULL, &codeset); + return (char *) codeset; +} + +#ifdef _LIBC +/* Aliases for function names in GNU C Library. */ +weak_alias (__bindtextdomain, bindtextdomain); +weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset); +#endif diff --git a/libprozilla/intl/config.charset b/libprozilla/intl/config.charset new file mode 100755 index 0000000..d6f3695 --- /dev/null +++ b/libprozilla/intl/config.charset @@ -0,0 +1,438 @@ +#! /bin/sh +# Output a system dependent table of character encoding aliases. +# +# Copyright (C) 2000-2001 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. +# +# The table consists of lines of the form +# ALIAS CANONICAL +# +# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)". +# ALIAS is compared in a case sensitive way. +# +# CANONICAL is the GNU canonical name for this character encoding. +# It must be an encoding supported by libiconv. Support by GNU libc is +# also desirable. CANONICAL is case insensitive. Usually an upper case +# MIME charset name is preferred. +# The current list of GNU canonical charset names is as follows. +# +# name used by which systems a MIME name? +# ASCII, ANSI_X3.4-1968 glibc solaris freebsd +# ISO-8859-1 glibc aix hpux irix osf solaris freebsd yes +# ISO-8859-2 glibc aix hpux irix osf solaris freebsd yes +# ISO-8859-3 glibc yes +# ISO-8859-4 osf solaris freebsd yes +# ISO-8859-5 glibc aix hpux irix osf solaris freebsd yes +# ISO-8859-6 glibc aix hpux solaris yes +# ISO-8859-7 glibc aix hpux irix osf solaris yes +# ISO-8859-8 glibc aix hpux osf solaris yes +# ISO-8859-9 glibc aix hpux irix osf solaris yes +# ISO-8859-13 glibc +# ISO-8859-15 glibc aix osf solaris freebsd +# KOI8-R glibc solaris freebsd yes +# KOI8-U glibc freebsd yes +# CP437 dos +# CP775 dos +# CP850 aix osf dos +# CP852 dos +# CP855 dos +# CP856 aix +# CP857 dos +# CP861 dos +# CP862 dos +# CP864 dos +# CP865 dos +# CP866 freebsd dos +# CP869 dos +# CP874 win32 dos +# CP922 aix +# CP932 aix win32 dos +# CP943 aix +# CP949 osf win32 dos +# CP950 win32 dos +# CP1046 aix +# CP1124 aix +# CP1129 aix +# CP1250 win32 +# CP1251 glibc win32 +# CP1252 aix win32 +# CP1253 win32 +# CP1254 win32 +# CP1255 win32 +# CP1256 win32 +# CP1257 win32 +# GB2312 glibc aix hpux irix solaris freebsd yes +# EUC-JP glibc aix hpux irix osf solaris freebsd yes +# EUC-KR glibc aix hpux irix osf solaris freebsd yes +# EUC-TW glibc aix hpux irix osf solaris +# BIG5 glibc aix hpux osf solaris freebsd yes +# BIG5HKSCS glibc +# GBK aix osf win32 dos +# GB18030 glibc +# SJIS hpux osf solaris freebsd +# JOHAB glibc win32 +# TIS-620 glibc aix hpux osf solaris +# VISCII glibc yes +# HP-ROMAN8 hpux +# HP-ARABIC8 hpux +# HP-GREEK8 hpux +# HP-HEBREW8 hpux +# HP-TURKISH8 hpux +# HP-KANA8 hpux +# DEC-KANJI osf +# DEC-HANYU osf +# UTF-8 glibc aix hpux osf solaris yes +# +# Note: Names which are not marked as being a MIME name should not be used in +# Internet protocols for information interchange (mail, news, etc.). +# +# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications +# must understand both names and treat them as equivalent. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM + +host="$1" +os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'` +echo "# This file contains a table of character encoding aliases," +echo "# suitable for operating system '${os}'." +echo "# It was automatically generated from config.charset." +# List of references, updated during installation: +echo "# Packages using this file: " +case "$os" in + linux* | *-gnu*) + # With glibc-2.1 or newer, we don't need any canonicalization, + # because glibc has iconv and both glibc and libiconv support all + # GNU canonical names directly. Therefore, the Makefile does not + # need to install the alias file at all. + # The following applies only to glibc-2.0.x and older libcs. + echo "ISO_646.IRV:1983 ASCII" + ;; + aix*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-6 ISO-8859-6" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "IBM-850 CP850" + echo "IBM-856 CP856" + echo "IBM-921 ISO-8859-13" + echo "IBM-922 CP922" + echo "IBM-932 CP932" + echo "IBM-943 CP943" + echo "IBM-1046 CP1046" + echo "IBM-1124 CP1124" + echo "IBM-1129 CP1129" + echo "IBM-1252 CP1252" + echo "IBM-eucCN GB2312" + echo "IBM-eucJP EUC-JP" + echo "IBM-eucKR EUC-KR" + echo "IBM-eucTW EUC-TW" + echo "big5 BIG5" + echo "GBK GBK" + echo "TIS-620 TIS-620" + echo "UTF-8 UTF-8" + ;; + hpux*) + echo "iso88591 ISO-8859-1" + echo "iso88592 ISO-8859-2" + echo "iso88595 ISO-8859-5" + echo "iso88596 ISO-8859-6" + echo "iso88597 ISO-8859-7" + echo "iso88598 ISO-8859-8" + echo "iso88599 ISO-8859-9" + echo "iso885915 ISO-8859-15" + echo "roman8 HP-ROMAN8" + echo "arabic8 HP-ARABIC8" + echo "greek8 HP-GREEK8" + echo "hebrew8 HP-HEBREW8" + echo "turkish8 HP-TURKISH8" + echo "kana8 HP-KANA8" + echo "tis620 TIS-620" + echo "big5 BIG5" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "hp15CN GB2312" + #echo "ccdc ?" # what is this? + echo "SJIS SJIS" + echo "utf8 UTF-8" + ;; + irix*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-9 ISO-8859-9" + echo "eucCN GB2312" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + ;; + osf*) + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "cp850 CP850" + echo "big5 BIG5" + echo "dechanyu DEC-HANYU" + echo "dechanzi GB2312" + echo "deckanji DEC-KANJI" + echo "deckorean EUC-KR" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "GBK GBK" + echo "KSC5601 CP949" + echo "sdeckanji EUC-JP" + echo "SJIS SJIS" + echo "TACTIS TIS-620" + echo "UTF-8 UTF-8" + ;; + solaris*) + echo "646 ASCII" + echo "ISO8859-1 ISO-8859-1" + echo "ISO8859-2 ISO-8859-2" + echo "ISO8859-4 ISO-8859-4" + echo "ISO8859-5 ISO-8859-5" + echo "ISO8859-6 ISO-8859-6" + echo "ISO8859-7 ISO-8859-7" + echo "ISO8859-8 ISO-8859-8" + echo "ISO8859-9 ISO-8859-9" + echo "ISO8859-15 ISO-8859-15" + echo "koi8-r KOI8-R" + echo "BIG5 BIG5" + echo "gb2312 GB2312" + echo "cns11643 EUC-TW" + echo "5601 EUC-KR" + echo "eucJP EUC-JP" + echo "PCK SJIS" + echo "TIS620.2533 TIS-620" + #echo "sun_eu_greek ?" # what is this? + echo "UTF-8 UTF-8" + ;; + freebsd*) + # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + echo "C ASCII" + echo "US-ASCII ASCII" + for l in la_LN lt_LN; do + echo "$l.ASCII ASCII" + done + for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \ + fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \ + lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do + echo "$l.ISO_8859-1 ISO-8859-1" + echo "$l.DIS_8859-15 ISO-8859-15" + done + for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do + echo "$l.ISO_8859-2 ISO-8859-2" + done + for l in la_LN lt_LT; do + echo "$l.ISO_8859-4 ISO-8859-4" + done + for l in ru_RU ru_SU; do + echo "$l.KOI8-R KOI8-R" + echo "$l.ISO_8859-5 ISO-8859-5" + echo "$l.CP866 CP866" + done + echo "uk_UA.KOI8-U KOI8-U" + echo "zh_TW.BIG5 BIG5" + echo "zh_TW.Big5 BIG5" + echo "zh_CN.EUC GB2312" + echo "ja_JP.EUC EUC-JP" + echo "ja_JP.SJIS SJIS" + echo "ja_JP.Shift_JIS SJIS" + echo "ko_KR.EUC EUC-KR" + ;; + beos*) + # BeOS has a single locale, and it has UTF-8 encoding. + echo "* UTF-8" + ;; + msdosdjgpp*) + # DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + echo "#" + echo "# The encodings given here may not all be correct." + echo "# If you find that the encoding given for your language and" + echo "# country is not the one your DOS machine actually uses, just" + echo "# correct it in this file, and send a mail to" + echo "# Juan Manuel Guerrero " + echo "# and Bruno Haible ." + echo "#" + echo "C ASCII" + # ISO-8859-1 languages + echo "ca CP850" + echo "ca_ES CP850" + echo "da CP865" # not CP850 ?? + echo "da_DK CP865" # not CP850 ?? + echo "de CP850" + echo "de_AT CP850" + echo "de_CH CP850" + echo "de_DE CP850" + echo "en CP850" + echo "en_AU CP850" # not CP437 ?? + echo "en_CA CP850" + echo "en_GB CP850" + echo "en_NZ CP437" + echo "en_US CP437" + echo "en_ZA CP850" # not CP437 ?? + echo "es CP850" + echo "es_AR CP850" + echo "es_BO CP850" + echo "es_CL CP850" + echo "es_CO CP850" + echo "es_CR CP850" + echo "es_CU CP850" + echo "es_DO CP850" + echo "es_EC CP850" + echo "es_ES CP850" + echo "es_GT CP850" + echo "es_HN CP850" + echo "es_MX CP850" + echo "es_NI CP850" + echo "es_PA CP850" + echo "es_PY CP850" + echo "es_PE CP850" + echo "es_SV CP850" + echo "es_UY CP850" + echo "es_VE CP850" + echo "et CP850" + echo "et_EE CP850" + echo "eu CP850" + echo "eu_ES CP850" + echo "fi CP850" + echo "fi_FI CP850" + echo "fr CP850" + echo "fr_BE CP850" + echo "fr_CA CP850" + echo "fr_CH CP850" + echo "fr_FR CP850" + echo "ga CP850" + echo "ga_IE CP850" + echo "gd CP850" + echo "gd_GB CP850" + echo "gl CP850" + echo "gl_ES CP850" + echo "id CP850" # not CP437 ?? + echo "id_ID CP850" # not CP437 ?? + echo "is CP861" # not CP850 ?? + echo "is_IS CP861" # not CP850 ?? + echo "it CP850" + echo "it_CH CP850" + echo "it_IT CP850" + echo "lt CP775" + echo "lt_LT CP775" + echo "lv CP775" + echo "lv_LV CP775" + echo "nb CP865" # not CP850 ?? + echo "nb_NO CP865" # not CP850 ?? + echo "nl CP850" + echo "nl_BE CP850" + echo "nl_NL CP850" + echo "nn CP865" # not CP850 ?? + echo "nn_NO CP865" # not CP850 ?? + echo "no CP865" # not CP850 ?? + echo "no_NO CP865" # not CP850 ?? + echo "pt CP850" + echo "pt_BR CP850" + echo "pt_PT CP850" + echo "sv CP850" + echo "sv_SE CP850" + # ISO-8859-2 languages + echo "cs CP852" + echo "cs_CZ CP852" + echo "hr CP852" + echo "hr_HR CP852" + echo "hu CP852" + echo "hu_HU CP852" + echo "pl CP852" + echo "pl_PL CP852" + echo "ro CP852" + echo "ro_RO CP852" + echo "sk CP852" + echo "sk_SK CP852" + echo "sl CP852" + echo "sl_SI CP852" + echo "sq CP852" + echo "sq_AL CP852" + echo "sr CP852" # CP852 or CP866 or CP855 ?? + echo "sr_YU CP852" # CP852 or CP866 or CP855 ?? + # ISO-8859-3 languages + echo "mt CP850" + echo "mt_MT CP850" + # ISO-8859-5 languages + echo "be CP866" + echo "be_BE CP866" + echo "bg CP866" # not CP855 ?? + echo "bg_BG CP866" # not CP855 ?? + echo "mk CP866" # not CP855 ?? + echo "mk_MK CP866" # not CP855 ?? + echo "ru KOI8-R" # not CP866 ?? + echo "ru_RU KOI8-R" # not CP866 ?? + # ISO-8859-6 languages + echo "ar CP864" + echo "ar_AE CP864" + echo "ar_DZ CP864" + echo "ar_EG CP864" + echo "ar_IQ CP864" + echo "ar_IR CP864" + echo "ar_JO CP864" + echo "ar_KW CP864" + echo "ar_MA CP864" + echo "ar_OM CP864" + echo "ar_QA CP864" + echo "ar_SA CP864" + echo "ar_SY CP864" + # ISO-8859-7 languages + echo "el CP869" + echo "el_GR CP869" + # ISO-8859-8 languages + echo "he CP862" + echo "he_IL CP862" + # ISO-8859-9 languages + echo "tr CP857" + echo "tr_TR CP857" + # Japanese + echo "ja CP932" + echo "ja_JP CP932" + # Chinese + echo "zh_CN GBK" + echo "zh_TW CP950" # not CP938 ?? + # Korean + echo "kr CP949" # not CP934 ?? + echo "kr_KR CP949" # not CP934 ?? + # Thai + echo "th CP874" + echo "th_TH CP874" + # Other + echo "eo CP850" + echo "eo_EO CP850" + ;; +esac diff --git a/libprozilla/intl/dcgettext.c b/libprozilla/intl/dcgettext.c new file mode 100644 index 0000000..469e78d --- /dev/null +++ b/libprozilla/intl/dcgettext.c @@ -0,0 +1,57 @@ +/* Implementation of the dcgettext(3) function. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCGETTEXT __dcgettext +# define DCIGETTEXT __dcigettext +#else +# define DCGETTEXT dcgettext__ +# define DCIGETTEXT dcigettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCGETTEXT (domainname, msgid, category) + const char *domainname; + const char *msgid; + int category; +{ + return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dcgettext, dcgettext); +#endif diff --git a/libprozilla/intl/dcigettext.c b/libprozilla/intl/dcigettext.c new file mode 100644 index 0000000..8456550 --- /dev/null +++ b/libprozilla/intl/dcigettext.c @@ -0,0 +1,1257 @@ +/* Implementation of the internal dcigettext function. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +#endif + +#include +#ifndef errno +extern int errno; +#endif +#ifndef __set_errno +# define __set_errno(val) errno = (val) +#endif + +#include +#include + +#include +#if !HAVE_STRCHR && !defined _LIBC +# ifndef strchr +# define strchr index +# endif +#endif + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include + +#if defined HAVE_SYS_PARAM_H || defined _LIBC +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif +#include "hash-string.h" + +/* Thread safetyness. */ +#ifdef _LIBC +# include +#else +/* Provide dummy implementation if this is outside glibc. */ +# define __libc_lock_define_initialized(CLASS, NAME) +# define __libc_lock_lock(NAME) +# define __libc_lock_unlock(NAME) +# define __libc_rwlock_define_initialized(CLASS, NAME) +# define __libc_rwlock_rdlock(NAME) +# define __libc_rwlock_unlock(NAME) +#endif + +/* Alignment of types. */ +#if defined __GNUC__ && __GNUC__ >= 2 +# define alignof(TYPE) __alignof__ (TYPE) +#else +# define alignof(TYPE) \ + ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2) +#endif + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_default_domain _nl_default_default_domain__ +# define _nl_current_default_domain _nl_current_default_domain__ +# define _nl_default_dirname _nl_default_dirname__ +# define _nl_domain_bindings _nl_domain_bindings__ +#endif + +/* Some compilers, like SunOS4 cc, don't have offsetof in . */ +#ifndef offsetof +# define offsetof(type,ident) ((size_t)&(((type*)0)->ident)) +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define getcwd __getcwd +# ifndef stpcpy +# define stpcpy __stpcpy +# endif +# define tfind __tfind +#else +# if !defined HAVE_GETCWD +char *getwd (); +# define getcwd(buf, max) getwd (buf) +# else +char *getcwd (); +# endif +# ifndef HAVE_STPCPY +static char *stpcpy PARAMS ((char *dest, const char *src)); +# endif +# ifndef HAVE_MEMPCPY +static void *mempcpy PARAMS ((void *dest, const void *src, size_t n)); +# endif +#endif + +/* Amount to increase buffer size by in each try. */ +#define PATH_INCR 32 + +/* The following is from pathmax.h. */ +/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define + PATH_MAX but might cause redefinition warnings when sys/param.h is + later included (as on MORE/BSD 4.3). */ +#if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__) +# include +#endif + +#ifndef _POSIX_PATH_MAX +# define _POSIX_PATH_MAX 255 +#endif + +#if !defined PATH_MAX && defined _PC_PATH_MAX +# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX)) +#endif + +/* Don't include sys/param.h if it already has been. */ +#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN +# include +#endif + +#if !defined PATH_MAX && defined MAXPATHLEN +# define PATH_MAX MAXPATHLEN +#endif + +#ifndef PATH_MAX +# define PATH_MAX _POSIX_PATH_MAX +#endif + +/* Pathname support. + ISSLASH(C) tests whether C is a directory separator character. + IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not, + it may be concatenated to a directory pathname. + IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. + */ +#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ + /* Win32, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +# define HAS_DEVICE(P) \ + ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ + && (P)[1] == ':') +# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P)) +# define IS_PATH_WITH_DIR(P) \ + (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) +# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) +#endif + +/* XPG3 defines the result of `setlocale (category, NULL)' as: + ``Directs `setlocale()' to query `category' and return the current + setting of `local'.'' + However it does not specify the exact format. Neither do SUSV2 and + ISO C 99. So we can use this feature only on selected systems (e.g. + those using GNU C Library). */ +#if defined _LIBC || (defined __GNU_LIBRARY__ && __GNU_LIBRARY__ >= 2) +# define HAVE_LOCALE_NULL +#endif + +/* This is the type used for the search tree where known translations + are stored. */ +struct known_translation_t +{ + /* Domain in which to search. */ + char *domainname; + + /* The category. */ + int category; + + /* State of the catalog counter at the point the string was found. */ + int counter; + + /* Catalog where the string was found. */ + struct loaded_l10nfile *domain; + + /* And finally the translation. */ + const char *translation; + size_t translation_length; + + /* Pointer to the string in question. */ + char msgid[ZERO]; +}; + +/* Root of the search tree with known translations. We can use this + only if the system provides the `tsearch' function family. */ +#if defined HAVE_TSEARCH || defined _LIBC +# include + +static void *root; + +# ifdef _LIBC +# define tsearch __tsearch +# endif + +/* Function to compare two entries in the table of known translations. */ +static int transcmp PARAMS ((const void *p1, const void *p2)); +static int +transcmp (p1, p2) + const void *p1; + const void *p2; +{ + const struct known_translation_t *s1; + const struct known_translation_t *s2; + int result; + + s1 = (const struct known_translation_t *) p1; + s2 = (const struct known_translation_t *) p2; + + result = strcmp (s1->msgid, s2->msgid); + if (result == 0) + { + result = strcmp (s1->domainname, s2->domainname); + if (result == 0) + /* We compare the category last (though this is the cheapest + operation) since it is hopefully always the same (namely + LC_MESSAGES). */ + result = s1->category - s2->category; + } + + return result; +} +#endif + +/* Name of the default domain used for gettext(3) prior any call to + textdomain(3). The default value for this is "messages". */ +const char _nl_default_default_domain[] = "messages"; + +/* Value used as the default domain for gettext(3). */ +const char *_nl_current_default_domain = _nl_default_default_domain; + +/* Contains the default location of the message catalogs. */ +const char _nl_default_dirname[] = LOCALEDIR; + +/* List with bindings of specific domains created by bindtextdomain() + calls. */ +struct binding *_nl_domain_bindings; + +/* Prototypes for local functions. */ +static char *plural_lookup PARAMS ((struct loaded_l10nfile *domain, + unsigned long int n, + const char *translation, + size_t translation_len)) + internal_function; +static unsigned long int plural_eval PARAMS ((struct expression *pexp, + unsigned long int n)) + internal_function; +static const char *category_to_name PARAMS ((int category)) internal_function; +static const char *guess_category_value PARAMS ((int category, + const char *categoryname)) + internal_function; + + +/* For those loosing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +/* Nothing has to be done. */ +# define ADD_BLOCK(list, address) /* nothing */ +# define FREE_BLOCKS(list) /* nothing */ +#else +struct block_list +{ + void *address; + struct block_list *next; +}; +# define ADD_BLOCK(list, addr) \ + do { \ + struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ + /* If we cannot get a free block we cannot add the new element to \ + the list. */ \ + if (newp != NULL) { \ + newp->address = (addr); \ + newp->next = (list); \ + (list) = newp; \ + } \ + } while (0) +# define FREE_BLOCKS(list) \ + do { \ + while (list != NULL) { \ + struct block_list *old = list; \ + list = list->next; \ + free (old); \ + } \ + } while (0) +# undef alloca +# define alloca(size) (malloc (size)) +#endif /* have alloca */ + + +#ifdef _LIBC +/* List of blocks allocated for translations. */ +typedef struct transmem_list +{ + struct transmem_list *next; + char data[ZERO]; +} transmem_block_t; +static struct transmem_list *transmem_list; +#else +typedef unsigned char transmem_block_t; +#endif + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCIGETTEXT __dcigettext +#else +# define DCIGETTEXT dcigettext__ +#endif + +/* Lock variable to protect the global data in the gettext implementation. */ +#ifdef _LIBC +__libc_rwlock_define_initialized (, _nl_state_lock) +#endif + +/* Checking whether the binaries runs SUID must be done and glibc provides + easier methods therefore we make a difference here. */ +#ifdef _LIBC +# define ENABLE_SECURE __libc_enable_secure +# define DETERMINE_SECURE +#else +# ifndef HAVE_GETUID +# define getuid() 0 +# endif +# ifndef HAVE_GETGID +# define getgid() 0 +# endif +# ifndef HAVE_GETEUID +# define geteuid() getuid() +# endif +# ifndef HAVE_GETEGID +# define getegid() getgid() +# endif +static int enable_secure; +# define ENABLE_SECURE (enable_secure == 1) +# define DETERMINE_SECURE \ + if (enable_secure == 0) \ + { \ + if (getuid () != geteuid () || getgid () != getegid ()) \ + enable_secure = 1; \ + else \ + enable_secure = -1; \ + } +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current + CATEGORY locale and, if PLURAL is nonzero, search over string + depending on the plural form determined by N. */ +char * +DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category) + const char *domainname; + const char *msgid1; + const char *msgid2; + int plural; + unsigned long int n; + int category; +{ +#ifndef HAVE_ALLOCA + struct block_list *block_list = NULL; +#endif + struct loaded_l10nfile *domain; + struct binding *binding; + const char *categoryname; + const char *categoryvalue; + char *dirname, *xdomainname; + char *single_locale; + char *retval; + size_t retlen; + int saved_errno; +#if defined HAVE_TSEARCH || defined _LIBC + struct known_translation_t *search; + struct known_translation_t **foundp = NULL; + size_t msgid_len; +#endif + size_t domainname_len; + + /* If no real MSGID is given return NULL. */ + if (msgid1 == NULL) + return NULL; + + __libc_rwlock_rdlock (_nl_state_lock); + + /* If DOMAINNAME is NULL, we are interested in the default domain. If + CATEGORY is not LC_MESSAGES this might not make much sense but the + definition left this undefined. */ + if (domainname == NULL) + domainname = _nl_current_default_domain; + +#if defined HAVE_TSEARCH || defined _LIBC + msgid_len = strlen (msgid1) + 1; + + /* Try to find the translation among those which we found at + some time. */ + search = (struct known_translation_t *) + alloca (offsetof (struct known_translation_t, msgid) + msgid_len); + memcpy (search->msgid, msgid1, msgid_len); + search->domainname = (char *) domainname; + search->category = category; + + foundp = (struct known_translation_t **) tfind (search, &root, transcmp); + if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr) + { + /* Now deal with plural. */ + if (plural) + retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation, + (*foundp)->translation_length); + else + retval = (char *) (*foundp)->translation; + + __libc_rwlock_unlock (_nl_state_lock); + return retval; + } +#endif + + /* Preserve the `errno' value. */ + saved_errno = errno; + + /* See whether this is a SUID binary or not. */ + DETERMINE_SECURE; + + /* First find matching binding. */ + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (binding == NULL) + dirname = (char *) _nl_default_dirname; + else if (IS_ABSOLUTE_PATH (binding->dirname)) + dirname = binding->dirname; + else + { + /* We have a relative path. Make it absolute now. */ + size_t dirname_len = strlen (binding->dirname) + 1; + size_t path_max; + char *ret; + + path_max = (unsigned int) PATH_MAX; + path_max += 2; /* The getcwd docs say to do this. */ + + for (;;) + { + dirname = (char *) alloca (path_max + dirname_len); + ADD_BLOCK (block_list, dirname); + + __set_errno (0); + ret = getcwd (dirname, path_max); + if (ret != NULL || errno != ERANGE) + break; + + path_max += path_max / 2; + path_max += PATH_INCR; + } + + if (ret == NULL) + { + /* We cannot get the current working directory. Don't signal an + error but simply return the default string. */ + FREE_BLOCKS (block_list); + __set_errno (saved_errno); + return (plural == 0 + ? (char *) msgid1 + /* Use the Germanic plural rule. */ + : n == 1 ? (char *) msgid1 : (char *) msgid2); + } + + stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname); + } + + /* Now determine the symbolic name of CATEGORY and its value. */ + categoryname = category_to_name (category); + categoryvalue = guess_category_value (category, categoryname); + + domainname_len = strlen (domainname); + xdomainname = (char *) alloca (strlen (categoryname) + + domainname_len + 5); + ADD_BLOCK (block_list, xdomainname); + + stpcpy (mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), + domainname, domainname_len), + ".mo"); + + /* Creating working area. */ + single_locale = (char *) alloca (strlen (categoryvalue) + 1); + ADD_BLOCK (block_list, single_locale); + + + /* Search for the given string. This is a loop because we perhaps + got an ordered list of languages to consider for the translation. */ + while (1) + { + /* Make CATEGORYVALUE point to the next element of the list. */ + while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') + ++categoryvalue; + if (categoryvalue[0] == '\0') + { + /* The whole contents of CATEGORYVALUE has been searched but + no valid entry has been found. We solve this situation + by implicitly appending a "C" entry, i.e. no translation + will take place. */ + single_locale[0] = 'C'; + single_locale[1] = '\0'; + } + else + { + char *cp = single_locale; + while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') + *cp++ = *categoryvalue++; + *cp = '\0'; + + /* When this is a SUID binary we must not allow accessing files + outside the dedicated directories. */ + if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale)) + /* Ingore this entry. */ + continue; + } + + /* If the current locale value is C (or POSIX) we don't load a + domain. Return the MSGID. */ + if (strcmp (single_locale, "C") == 0 + || strcmp (single_locale, "POSIX") == 0) + { + FREE_BLOCKS (block_list); + __libc_rwlock_unlock (_nl_state_lock); + __set_errno (saved_errno); + return (plural == 0 + ? (char *) msgid1 + /* Use the Germanic plural rule. */ + : n == 1 ? (char *) msgid1 : (char *) msgid2); + } + + + /* Find structure describing the message catalog matching the + DOMAINNAME and CATEGORY. */ + domain = _nl_find_domain (dirname, single_locale, xdomainname, binding); + + if (domain != NULL) + { + retval = _nl_find_msg (domain, binding, msgid1, &retlen); + + if (retval == NULL) + { + int cnt; + + for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) + { + retval = _nl_find_msg (domain->successor[cnt], binding, + msgid1, &retlen); + + if (retval != NULL) + { + domain = domain->successor[cnt]; + break; + } + } + } + + if (retval != NULL) + { + /* Found the translation of MSGID1 in domain DOMAIN: + starting at RETVAL, RETLEN bytes. */ + FREE_BLOCKS (block_list); + __set_errno (saved_errno); +#if defined HAVE_TSEARCH || defined _LIBC + if (foundp == NULL) + { + /* Create a new entry and add it to the search tree. */ + struct known_translation_t *newp; + + newp = (struct known_translation_t *) + malloc (offsetof (struct known_translation_t, msgid) + + msgid_len + domainname_len + 1); + if (newp != NULL) + { + newp->domainname = + mempcpy (newp->msgid, msgid1, msgid_len); + memcpy (newp->domainname, domainname, domainname_len + 1); + newp->category = category; + newp->counter = _nl_msg_cat_cntr; + newp->domain = domain; + newp->translation = retval; + newp->translation_length = retlen; + + /* Insert the entry in the search tree. */ + foundp = (struct known_translation_t **) + tsearch (newp, &root, transcmp); + if (foundp == NULL + || __builtin_expect (*foundp != newp, 0)) + /* The insert failed. */ + free (newp); + } + } + else + { + /* We can update the existing entry. */ + (*foundp)->counter = _nl_msg_cat_cntr; + (*foundp)->domain = domain; + (*foundp)->translation = retval; + (*foundp)->translation_length = retlen; + } +#endif + /* Now deal with plural. */ + if (plural) + retval = plural_lookup (domain, n, retval, retlen); + + __libc_rwlock_unlock (_nl_state_lock); + return retval; + } + } + } + /* NOTREACHED */ +} + + +char * +internal_function +_nl_find_msg (domain_file, domainbinding, msgid, lengthp) + struct loaded_l10nfile *domain_file; + struct binding *domainbinding; + const char *msgid; + size_t *lengthp; +{ + struct loaded_domain *domain; + size_t act; + char *result; + size_t resultlen; + + if (domain_file->decided == 0) + _nl_load_domain (domain_file, domainbinding); + + if (domain_file->data == NULL) + return NULL; + + domain = (struct loaded_domain *) domain_file->data; + + /* Locate the MSGID and its translation. */ + if (domain->hash_size > 2 && domain->hash_tab != NULL) + { + /* Use the hashing table. */ + nls_uint32 len = strlen (msgid); + nls_uint32 hash_val = hash_string (msgid); + nls_uint32 idx = hash_val % domain->hash_size; + nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); + + while (1) + { + nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]); + + if (nstr == 0) + /* Hash table entry is empty. */ + return NULL; + + /* Compare msgid with the original string at index nstr-1. + We compare the lengths with >=, not ==, because plural entries + are represented by strings with an embedded NUL. */ + if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) >= len + && (strcmp (msgid, + domain->data + W (domain->must_swap, + domain->orig_tab[nstr - 1].offset)) + == 0)) + { + act = nstr - 1; + goto found; + } + + if (idx >= domain->hash_size - incr) + idx -= domain->hash_size - incr; + else + idx += incr; + } + /* NOTREACHED */ + } + else + { + /* Try the default method: binary search in the sorted array of + messages. */ + size_t top, bottom; + + bottom = 0; + top = domain->nstrings; + while (bottom < top) + { + int cmp_val; + + act = (bottom + top) / 2; + cmp_val = strcmp (msgid, (domain->data + + W (domain->must_swap, + domain->orig_tab[act].offset))); + if (cmp_val < 0) + top = act; + else if (cmp_val > 0) + bottom = act + 1; + else + goto found; + } + /* No translation was found. */ + return NULL; + } + + found: + /* The translation was found at index ACT. If we have to convert the + string to use a different character set, this is the time. */ + result = ((char *) domain->data + + W (domain->must_swap, domain->trans_tab[act].offset)); + resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1; + +#if defined _LIBC || HAVE_ICONV + if (domain->codeset_cntr + != (domainbinding != NULL ? domainbinding->codeset_cntr : 0)) + { + /* The domain's codeset has changed through bind_textdomain_codeset() + since the message catalog was initialized or last accessed. We + have to reinitialize the converter. */ + _nl_free_domain_conv (domain); + _nl_init_domain_conv (domain_file, domain, domainbinding); + } + + if ( +# ifdef _LIBC + domain->conv != (__gconv_t) -1 +# else +# if HAVE_ICONV + domain->conv != (iconv_t) -1 +# endif +# endif + ) + { + /* We are supposed to do a conversion. First allocate an + appropriate table with the same structure as the table + of translations in the file, where we can put the pointers + to the converted strings in. + There is a slight complication with plural entries. They + are represented by consecutive NUL terminated strings. We + handle this case by converting RESULTLEN bytes, including + NULs. */ + + if (domain->conv_tab == NULL + && ((domain->conv_tab = (char **) calloc (domain->nstrings, + sizeof (char *))) + == NULL)) + /* Mark that we didn't succeed allocating a table. */ + domain->conv_tab = (char **) -1; + + if (__builtin_expect (domain->conv_tab == (char **) -1, 0)) + /* Nothing we can do, no more memory. */ + goto converted; + + if (domain->conv_tab[act] == NULL) + { + /* We haven't used this string so far, so it is not + translated yet. Do this now. */ + /* We use a bit more efficient memory handling. + We allocate always larger blocks which get used over + time. This is faster than many small allocations. */ + __libc_lock_define_initialized (static, lock) +# define INITIAL_BLOCK_SIZE 4080 + static unsigned char *freemem; + static size_t freemem_size; + + const unsigned char *inbuf; + unsigned char *outbuf; + int malloc_count; +# ifndef _LIBC + transmem_block_t *transmem_list = NULL; +# endif + + __libc_lock_lock (lock); + + inbuf = (const unsigned char *) result; + outbuf = freemem + sizeof (size_t); + + malloc_count = 0; + while (1) + { + transmem_block_t *newmem; +# ifdef _LIBC + size_t non_reversible; + int res; + + if (freemem_size < sizeof (size_t)) + goto resize_freemem; + + res = __gconv (domain->conv, + &inbuf, inbuf + resultlen, + &outbuf, + outbuf + freemem_size - sizeof (size_t), + &non_reversible); + + if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT) + break; + + if (res != __GCONV_FULL_OUTPUT) + { + __libc_lock_unlock (lock); + goto converted; + } + + inbuf = result; +# else +# if HAVE_ICONV + const char *inptr = (const char *) inbuf; + size_t inleft = resultlen; + char *outptr = (char *) outbuf; + size_t outleft; + + if (freemem_size < sizeof (size_t)) + goto resize_freemem; + + outleft = freemem_size - sizeof (size_t); + if (iconv (domain->conv, + (ICONV_CONST char **) &inptr, &inleft, + &outptr, &outleft) + != (size_t) (-1)) + { + outbuf = (unsigned char *) outptr; + break; + } + if (errno != E2BIG) + { + __libc_lock_unlock (lock); + goto converted; + } +# endif +# endif + + resize_freemem: + /* We must allocate a new buffer or resize the old one. */ + if (malloc_count > 0) + { + ++malloc_count; + freemem_size = malloc_count * INITIAL_BLOCK_SIZE; + newmem = (transmem_block_t *) realloc (transmem_list, + freemem_size); +# ifdef _LIBC + if (newmem != NULL) + transmem_list = transmem_list->next; + else + { + struct transmem_list *old = transmem_list; + + transmem_list = transmem_list->next; + free (old); + } +# endif + } + else + { + malloc_count = 1; + freemem_size = INITIAL_BLOCK_SIZE; + newmem = (transmem_block_t *) malloc (freemem_size); + } + if (__builtin_expect (newmem == NULL, 0)) + { + freemem = NULL; + freemem_size = 0; + __libc_lock_unlock (lock); + goto converted; + } + +# ifdef _LIBC + /* Add the block to the list of blocks we have to free + at some point. */ + newmem->next = transmem_list; + transmem_list = newmem; + + freemem = newmem->data; + freemem_size -= offsetof (struct transmem_list, data); +# else + transmem_list = newmem; + freemem = newmem; +# endif + + outbuf = freemem + sizeof (size_t); + } + + /* We have now in our buffer a converted string. Put this + into the table of conversions. */ + *(size_t *) freemem = outbuf - freemem - sizeof (size_t); + domain->conv_tab[act] = (char *) freemem; + /* Shrink freemem, but keep it aligned. */ + freemem_size -= outbuf - freemem; + freemem = outbuf; + freemem += freemem_size & (alignof (size_t) - 1); + freemem_size = freemem_size & ~ (alignof (size_t) - 1); + + __libc_lock_unlock (lock); + } + + /* Now domain->conv_tab[act] contains the translation of all + the plural variants. */ + result = domain->conv_tab[act] + sizeof (size_t); + resultlen = *(size_t *) domain->conv_tab[act]; + } + + converted: + /* The result string is converted. */ + +#endif /* _LIBC || HAVE_ICONV */ + + *lengthp = resultlen; + return result; +} + + +/* Look up a plural variant. */ +static char * +internal_function +plural_lookup (domain, n, translation, translation_len) + struct loaded_l10nfile *domain; + unsigned long int n; + const char *translation; + size_t translation_len; +{ + struct loaded_domain *domaindata = (struct loaded_domain *) domain->data; + unsigned long int index; + const char *p; + + index = plural_eval (domaindata->plural, n); + if (index >= domaindata->nplurals) + /* This should never happen. It means the plural expression and the + given maximum value do not match. */ + index = 0; + + /* Skip INDEX strings at TRANSLATION. */ + p = translation; + while (index-- > 0) + { +#ifdef _LIBC + p = __rawmemchr (p, '\0'); +#else + p = strchr (p, '\0'); +#endif + /* And skip over the NUL byte. */ + p++; + + if (p >= translation + translation_len) + /* This should never happen. It means the plural expression + evaluated to a value larger than the number of variants + available for MSGID1. */ + return (char *) translation; + } + return (char *) p; +} + + +/* Function to evaluate the plural expression and return an index value. */ +static unsigned long int +internal_function +plural_eval (pexp, n) + struct expression *pexp; + unsigned long int n; +{ + switch (pexp->nargs) + { + case 0: + switch (pexp->operation) + { + case var: + return n; + case num: + return pexp->val.num; + default: + break; + } + /* NOTREACHED */ + break; + case 1: + { + /* pexp->operation must be lnot. */ + unsigned long int arg = plural_eval (pexp->val.args[0], n); + return ! arg; + } + case 2: + { + unsigned long int leftarg = plural_eval (pexp->val.args[0], n); + if (pexp->operation == lor) + return leftarg || plural_eval (pexp->val.args[1], n); + else if (pexp->operation == land) + return leftarg && plural_eval (pexp->val.args[1], n); + else + { + unsigned long int rightarg = plural_eval (pexp->val.args[1], n); + + switch (pexp->operation) + { + case mult: + return leftarg * rightarg; + case divide: + return leftarg / rightarg; + case module: + return leftarg % rightarg; + case plus: + return leftarg + rightarg; + case minus: + return leftarg - rightarg; + case less_than: + return leftarg < rightarg; + case greater_than: + return leftarg > rightarg; + case less_or_equal: + return leftarg <= rightarg; + case greater_or_equal: + return leftarg >= rightarg; + case equal: + return leftarg == rightarg; + case not_equal: + return leftarg != rightarg; + default: + break; + } + } + /* NOTREACHED */ + break; + } + case 3: + { + /* pexp->operation must be qmop. */ + unsigned long int boolarg = plural_eval (pexp->val.args[0], n); + return plural_eval (pexp->val.args[boolarg ? 1 : 2], n); + } + } + /* NOTREACHED */ + return 0; +} + + +/* Return string representation of locale CATEGORY. */ +static const char * +internal_function +category_to_name (category) + int category; +{ + const char *retval; + + switch (category) + { +#ifdef LC_COLLATE + case LC_COLLATE: + retval = "LC_COLLATE"; + break; +#endif +#ifdef LC_CTYPE + case LC_CTYPE: + retval = "LC_CTYPE"; + break; +#endif +#ifdef LC_MONETARY + case LC_MONETARY: + retval = "LC_MONETARY"; + break; +#endif +#ifdef LC_NUMERIC + case LC_NUMERIC: + retval = "LC_NUMERIC"; + break; +#endif +#ifdef LC_TIME + case LC_TIME: + retval = "LC_TIME"; + break; +#endif +#ifdef LC_MESSAGES + case LC_MESSAGES: + retval = "LC_MESSAGES"; + break; +#endif +#ifdef LC_RESPONSE + case LC_RESPONSE: + retval = "LC_RESPONSE"; + break; +#endif +#ifdef LC_ALL + case LC_ALL: + /* This might not make sense but is perhaps better than any other + value. */ + retval = "LC_ALL"; + break; +#endif + default: + /* If you have a better idea for a default value let me know. */ + retval = "LC_XXX"; + } + + return retval; +} + +/* Guess value of current locale from value of the environment variables. */ +static const char * +internal_function +guess_category_value (category, categoryname) + int category; + const char *categoryname; +{ + const char *language; + const char *retval; + + /* The highest priority value is the `LANGUAGE' environment + variable. But we don't use the value if the currently selected + locale is the C locale. This is a GNU extension. */ + language = getenv ("LANGUAGE"); + if (language != NULL && language[0] == '\0') + language = NULL; + + /* We have to proceed with the POSIX methods of looking to `LC_ALL', + `LC_xxx', and `LANG'. On some systems this can be done by the + `setlocale' function itself. */ +#if defined _LIBC || (defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL) + retval = setlocale (category, NULL); +#else + /* Setting of LC_ALL overwrites all other. */ + retval = getenv ("LC_ALL"); + if (retval == NULL || retval[0] == '\0') + { + /* Next comes the name of the desired category. */ + retval = getenv (categoryname); + if (retval == NULL || retval[0] == '\0') + { + /* Last possibility is the LANG environment variable. */ + retval = getenv ("LANG"); + if (retval == NULL || retval[0] == '\0') + /* We use C as the default domain. POSIX says this is + implementation defined. */ + return "C"; + } + } +#endif + + return language != NULL && strcmp (retval, "C") != 0 ? language : retval; +} + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (dest, src) + char *dest; + const char *src; +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif + +#if !_LIBC && !HAVE_MEMPCPY +static void * +mempcpy (dest, src, n) + void *dest; + const void *src; + size_t n; +{ + return (void *) ((char *) memcpy (dest, src, n) + n); +} +#endif + + +#ifdef _LIBC +/* If we want to free all resources we have to do some work at + program's end. */ +static void __attribute__ ((unused)) +free_mem (void) +{ + void *old; + + while (_nl_domain_bindings != NULL) + { + struct binding *oldp = _nl_domain_bindings; + _nl_domain_bindings = _nl_domain_bindings->next; + if (oldp->dirname != _nl_default_dirname) + /* Yes, this is a pointer comparison. */ + free (oldp->dirname); + free (oldp->codeset); + free (oldp); + } + + if (_nl_current_default_domain != _nl_default_default_domain) + /* Yes, again a pointer comparison. */ + free ((char *) _nl_current_default_domain); + + /* Remove the search tree with the known translations. */ + __tdestroy (root, free); + root = NULL; + + while (transmem_list != NULL) + { + old = transmem_list; + transmem_list = transmem_list->next; + free (old); + } +} + +text_set_element (__libc_subfreeres, free_mem); +#endif diff --git a/libprozilla/intl/dcngettext.c b/libprozilla/intl/dcngettext.c new file mode 100644 index 0000000..e5da257 --- /dev/null +++ b/libprozilla/intl/dcngettext.c @@ -0,0 +1,59 @@ +/* Implementation of the dcngettext(3) function. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCNGETTEXT __dcngettext +# define DCIGETTEXT __dcigettext +#else +# define DCNGETTEXT dcngettext__ +# define DCIGETTEXT dcigettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCNGETTEXT (domainname, msgid1, msgid2, n, category) + const char *domainname; + const char *msgid1; + const char *msgid2; + unsigned long int n; + int category; +{ + return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dcngettext, dcngettext); +#endif diff --git a/libprozilla/intl/dgettext.c b/libprozilla/intl/dgettext.c new file mode 100644 index 0000000..c513041 --- /dev/null +++ b/libprozilla/intl/dgettext.c @@ -0,0 +1,58 @@ +/* Implementation of the dgettext(3) function. + Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DGETTEXT __dgettext +# define DCGETTEXT __dcgettext +#else +# define DGETTEXT dgettext__ +# define DCGETTEXT dcgettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale. */ +char * +DGETTEXT (domainname, msgid) + const char *domainname; + const char *msgid; +{ + return DCGETTEXT (domainname, msgid, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dgettext, dgettext); +#endif diff --git a/libprozilla/intl/dngettext.c b/libprozilla/intl/dngettext.c new file mode 100644 index 0000000..79aaa9a --- /dev/null +++ b/libprozilla/intl/dngettext.c @@ -0,0 +1,60 @@ +/* Implementation of the dngettext(3) function. + Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DNGETTEXT __dngettext +# define DCNGETTEXT __dcngettext +#else +# define DNGETTEXT dngettext__ +# define DCNGETTEXT dcngettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale and skip message according to the plural form. */ +char * +DNGETTEXT (domainname, msgid1, msgid2, n) + const char *domainname; + const char *msgid1; + const char *msgid2; + unsigned long int n; +{ + return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dngettext, dngettext); +#endif diff --git a/libprozilla/intl/explodename.c b/libprozilla/intl/explodename.c new file mode 100644 index 0000000..c4ddcc4 --- /dev/null +++ b/libprozilla/intl/explodename.c @@ -0,0 +1,191 @@ +/* Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +char * +_nl_find_language (name) + const char *name; +{ + while (name[0] != '\0' && name[0] != '_' && name[0] != '@' + && name[0] != '+' && name[0] != ',') + ++name; + + return (char *) name; +} + + +int +_nl_explode_name (name, language, modifier, territory, codeset, + normalized_codeset, special, sponsor, revision) + char *name; + const char **language; + const char **modifier; + const char **territory; + const char **codeset; + const char **normalized_codeset; + const char **special; + const char **sponsor; + const char **revision; +{ + enum { undecided, xpg, cen } syntax; + char *cp; + int mask; + + *modifier = NULL; + *territory = NULL; + *codeset = NULL; + *normalized_codeset = NULL; + *special = NULL; + *sponsor = NULL; + *revision = NULL; + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_' and `@' if + we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ + mask = 0; + syntax = undecided; + *language = cp = name; + cp = _nl_find_language (*language); + + if (*language == cp) + /* This does not make sense: language has to be specified. Use + this entry as it is without exploding. Perhaps it is an alias. */ + cp = strchr (*language, '\0'); + else if (cp[0] == '_') + { + /* Next is the territory. */ + cp[0] = '\0'; + *territory = ++cp; + + while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@' + && cp[0] != '+' && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= TERRITORY; + + if (cp[0] == '.') + { + /* Next is the codeset. */ + syntax = xpg; + cp[0] = '\0'; + *codeset = ++cp; + + while (cp[0] != '\0' && cp[0] != '@') + ++cp; + + mask |= XPG_CODESET; + + if (*codeset != cp && (*codeset)[0] != '\0') + { + *normalized_codeset = _nl_normalize_codeset (*codeset, + cp - *codeset); + if (strcmp (*codeset, *normalized_codeset) == 0) + free ((char *) *normalized_codeset); + else + mask |= XPG_NORM_CODESET; + } + } + } + + if (cp[0] == '@' || (syntax != xpg && cp[0] == '+')) + { + /* Next is the modifier. */ + syntax = cp[0] == '@' ? xpg : cen; + cp[0] = '\0'; + *modifier = ++cp; + + while (syntax == cen && cp[0] != '\0' && cp[0] != '+' + && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= XPG_MODIFIER | CEN_AUDIENCE; + } + + if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_')) + { + syntax = cen; + + if (cp[0] == '+') + { + /* Next is special application (CEN syntax). */ + cp[0] = '\0'; + *special = ++cp; + + while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= CEN_SPECIAL; + } + + if (cp[0] == ',') + { + /* Next is sponsor (CEN syntax). */ + cp[0] = '\0'; + *sponsor = ++cp; + + while (cp[0] != '\0' && cp[0] != '_') + ++cp; + + mask |= CEN_SPONSOR; + } + + if (cp[0] == '_') + { + /* Next is revision (CEN syntax). */ + cp[0] = '\0'; + *revision = ++cp; + + mask |= CEN_REVISION; + } + } + + /* For CEN syntax values it might be important to have the + separator character in the file name, not for XPG syntax. */ + if (syntax == xpg) + { + if (*territory != NULL && (*territory)[0] == '\0') + mask &= ~TERRITORY; + + if (*codeset != NULL && (*codeset)[0] == '\0') + mask &= ~XPG_CODESET; + + if (*modifier != NULL && (*modifier)[0] == '\0') + mask &= ~XPG_MODIFIER; + } + + return mask; +} diff --git a/libprozilla/intl/finddomain.c b/libprozilla/intl/finddomain.c new file mode 100644 index 0000000..4882554 --- /dev/null +++ b/libprozilla/intl/finddomain.c @@ -0,0 +1,197 @@ +/* Handle list of needed message catalogs + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ +/* List of already loaded domains. */ +static struct loaded_l10nfile *_nl_loaded_domains; + + +/* Return a data structure describing the message catalog described by + the DOMAINNAME and CATEGORY parameters with respect to the currently + established bindings. */ +struct loaded_l10nfile * +internal_function +_nl_find_domain (dirname, locale, domainname, domainbinding) + const char *dirname; + char *locale; + const char *domainname; + struct binding *domainbinding; +{ + struct loaded_l10nfile *retval; + const char *language; + const char *modifier; + const char *territory; + const char *codeset; + const char *normalized_codeset; + const char *special; + const char *sponsor; + const char *revision; + const char *alias_value; + int mask; + + /* LOCALE can consist of up to four recognized parts for the XPG syntax: + + language[_territory[.codeset]][@modifier] + + and six parts for the CEN syntax: + + language[_territory][+audience][+special][,[sponsor][_revision]] + + Beside the first part all of them are allowed to be missing. If + the full specified locale is not found, the less specific one are + looked for. The various parts will be stripped off according to + the following order: + (1) revision + (2) sponsor + (3) special + (4) codeset + (5) normalized codeset + (6) territory + (7) audience/modifier + */ + + /* If we have already tested for this locale entry there has to + be one data set in the list of loaded domains. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, 0, locale, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, domainname, 0); + if (retval != NULL) + { + /* We know something about this locale. */ + int cnt; + + if (retval->decided == 0) + _nl_load_domain (retval, domainbinding); + + if (retval->data != NULL) + return retval; + + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided == 0) + _nl_load_domain (retval->successor[cnt], domainbinding); + + if (retval->successor[cnt]->data != NULL) + break; + } + return cnt >= 0 ? retval : NULL; + /* NOTREACHED */ + } + + /* See whether the locale value is an alias. If yes its value + *overwrites* the alias name. No test for the original value is + done. */ + alias_value = _nl_expand_alias (locale); + if (alias_value != NULL) + { +#if defined _LIBC || defined HAVE_STRDUP + locale = strdup (alias_value); + if (locale == NULL) + return NULL; +#else + size_t len = strlen (alias_value) + 1; + locale = (char *) malloc (len); + if (locale == NULL) + return NULL; + + memcpy (locale, alias_value, len); +#endif + } + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_' and `@' if + we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ + mask = _nl_explode_name (locale, &language, &modifier, &territory, + &codeset, &normalized_codeset, &special, + &sponsor, &revision); + + /* Create all possible locale entries which might be interested in + generalization. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, mask, language, territory, + codeset, normalized_codeset, modifier, special, + sponsor, revision, domainname, 1); + if (retval == NULL) + /* This means we are out of core. */ + return NULL; + + if (retval->decided == 0) + _nl_load_domain (retval, domainbinding); + if (retval->data == NULL) + { + int cnt; + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided == 0) + _nl_load_domain (retval->successor[cnt], domainbinding); + if (retval->successor[cnt]->data != NULL) + break; + } + } + + /* The room for an alias was dynamically allocated. Free it now. */ + if (alias_value != NULL) + free (locale); + + /* The space for normalized_codeset is dynamically allocated. Free it. */ + if (mask & XPG_NORM_CODESET) + free ((void *) normalized_codeset); + + return retval; +} + + +#ifdef _LIBC +static void __attribute__ ((unused)) +free_mem (void) +{ + struct loaded_l10nfile *runp = _nl_loaded_domains; + + while (runp != NULL) + { + struct loaded_l10nfile *here = runp; + if (runp->data != NULL) + _nl_unload_domain ((struct loaded_domain *) runp->data); + runp = runp->next; + free ((char *) here->filename); + free (here); + } +} + +text_set_element (__libc_subfreeres, free_mem); +#endif diff --git a/libprozilla/intl/gettext.c b/libprozilla/intl/gettext.c new file mode 100644 index 0000000..a640205 --- /dev/null +++ b/libprozilla/intl/gettext.c @@ -0,0 +1,63 @@ +/* Implementation of gettext(3) function. + Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define __need_NULL +# include +#else +# include /* Just for NULL. */ +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define GETTEXT __gettext +# define DCGETTEXT __dcgettext +#else +# define GETTEXT gettext__ +# define DCGETTEXT dcgettext__ +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +char * +GETTEXT (msgid) + const char *msgid; +{ + return DCGETTEXT (NULL, msgid, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__gettext, gettext); +#endif diff --git a/libprozilla/intl/gettext.h b/libprozilla/intl/gettext.h new file mode 100644 index 0000000..eb58890 --- /dev/null +++ b/libprozilla/intl/gettext.h @@ -0,0 +1,101 @@ +/* Description of GNU message catalog format: general file layout. + Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _GETTEXT_H +#define _GETTEXT_H 1 + +#if HAVE_LIMITS_H || _LIBC +# include +#endif + +/* @@ end of prolog @@ */ + +/* The magic number of the GNU message catalog format. */ +#define _MAGIC 0x950412de +#define _MAGIC_SWAPPED 0xde120495 + +/* Revision number of the currently used .mo (binary) file format. */ +#define MO_REVISION_NUMBER 0 + +/* The following contortions are an attempt to use the C preprocessor + to determine an unsigned integral type that is 32 bits wide. An + alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but + as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work + when cross-compiling. */ + +#if __STDC__ +# define UINT_MAX_32_BITS 4294967295U +#else +# define UINT_MAX_32_BITS 0xFFFFFFFF +#endif + +/* If UINT_MAX isn't defined, assume it's a 32-bit type. + This should be valid for all systems GNU cares about because + that doesn't include 16-bit systems, and only modern systems + (that certainly have ) have 64+-bit integral types. */ + +#ifndef UINT_MAX +# define UINT_MAX UINT_MAX_32_BITS +#endif + +#if UINT_MAX == UINT_MAX_32_BITS +typedef unsigned nls_uint32; +#else +# if USHRT_MAX == UINT_MAX_32_BITS +typedef unsigned short nls_uint32; +# else +# if ULONG_MAX == UINT_MAX_32_BITS +typedef unsigned long nls_uint32; +# else + /* The following line is intended to throw an error. Using #error is + not portable enough. */ + "Cannot determine unsigned 32-bit data type." +# endif +# endif +#endif + + +/* Header for binary .mo file format. */ +struct mo_file_header +{ + /* The magic number. */ + nls_uint32 magic; + /* The revision number of the file format. */ + nls_uint32 revision; + /* The number of strings pairs. */ + nls_uint32 nstrings; + /* Offset of table with start offsets of original strings. */ + nls_uint32 orig_tab_offset; + /* Offset of table with start offsets of translation strings. */ + nls_uint32 trans_tab_offset; + /* Size of hashing table. */ + nls_uint32 hash_tab_size; + /* Offset of first hashing entry. */ + nls_uint32 hash_tab_offset; +}; + +struct string_desc +{ + /* Length of addressed string. */ + nls_uint32 length; + /* Offset of string in file. */ + nls_uint32 offset; +}; + +/* @@ begin of epilog @@ */ + +#endif /* gettext.h */ diff --git a/libprozilla/intl/gettextP.h b/libprozilla/intl/gettextP.h new file mode 100644 index 0000000..ee8ca48 --- /dev/null +++ b/libprozilla/intl/gettextP.h @@ -0,0 +1,251 @@ +/* Header describing internals of libintl library. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _GETTEXTP_H +#define _GETTEXTP_H + +#include /* Get size_t. */ + +#ifdef _LIBC +# include "../iconv/gconv_int.h" +#else +# if HAVE_ICONV +# include +# endif +#endif + +#include "loadinfo.h" + +#include "gettext.h" /* Get nls_uint32. */ + +/* @@ end of prolog @@ */ + +#ifndef PARAMS +# if __STDC__ +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#ifndef internal_function +# define internal_function +#endif + +/* Tell the compiler when a conditional or integer expression is + almost always true or almost always false. */ +#ifndef HAVE_BUILTIN_EXPECT +# define __builtin_expect(expr, val) (expr) +#endif + +#ifndef W +# define W(flag, data) ((flag) ? SWAP (data) : (data)) +#endif + + +#ifdef _LIBC +# include +# define SWAP(i) bswap_32 (i) +#else +static inline nls_uint32 +SWAP (i) + nls_uint32 i; +{ + return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); +} +#endif + + +/* This is the representation of the expressions to determine the + plural form. */ +struct expression +{ + int nargs; /* Number of arguments. */ + enum operator + { + /* Without arguments: */ + var, /* The variable "n". */ + num, /* Decimal number. */ + /* Unary operators: */ + lnot, /* Logical NOT. */ + /* Binary operators: */ + mult, /* Multiplication. */ + divide, /* Division. */ + module, /* Module operation. */ + plus, /* Addition. */ + minus, /* Subtraction. */ + less_than, /* Comparison. */ + greater_than, /* Comparison. */ + less_or_equal, /* Comparison. */ + greater_or_equal, /* Comparison. */ + equal, /* Comparision for equality. */ + not_equal, /* Comparision for inequality. */ + land, /* Logical AND. */ + lor, /* Logical OR. */ + /* Ternary operators: */ + qmop /* Question mark operator. */ + } operation; + union + { + unsigned long int num; /* Number value for `num'. */ + struct expression *args[3]; /* Up to three arguments. */ + } val; +}; + +/* This is the data structure to pass information to the parser and get + the result in a thread-safe way. */ +struct parse_args +{ + const char *cp; + struct expression *res; +}; + + +/* The representation of an opened message catalog. */ +struct loaded_domain +{ + const char *data; + int use_mmap; + size_t mmap_size; + int must_swap; + nls_uint32 nstrings; + struct string_desc *orig_tab; + struct string_desc *trans_tab; + nls_uint32 hash_size; + nls_uint32 *hash_tab; + int codeset_cntr; +#ifdef _LIBC + __gconv_t conv; +#else +# if HAVE_ICONV + iconv_t conv; +# endif +#endif + char **conv_tab; + + struct expression *plural; + unsigned long int nplurals; +}; + +/* We want to allocate a string at the end of the struct. But ISO C + doesn't allow zero sized arrays. */ +#ifdef __GNUC__ +# define ZERO 0 +#else +# define ZERO 1 +#endif + +/* A set of settings bound to a message domain. Used to store settings + from bindtextdomain() and bind_textdomain_codeset(). */ +struct binding +{ + struct binding *next; + char *dirname; + int codeset_cntr; /* Incremented each time codeset changes. */ + char *codeset; + char domainname[ZERO]; +}; + +/* A counter which is incremented each time some previous translations + become invalid. + This variable is part of the external ABI of the GNU libintl. */ +extern int _nl_msg_cat_cntr; + +struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname, + char *__locale, + const char *__domainname, + struct binding *__domainbinding)) + internal_function; +void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain, + struct binding *__domainbinding)) + internal_function; +void _nl_unload_domain PARAMS ((struct loaded_domain *__domain)) + internal_function; +const char *_nl_init_domain_conv PARAMS ((struct loaded_l10nfile *__domain_file, + struct loaded_domain *__domain, + struct binding *__domainbinding)) + internal_function; +void _nl_free_domain_conv PARAMS ((struct loaded_domain *__domain)) + internal_function; + +char *_nl_find_msg PARAMS ((struct loaded_l10nfile *domain_file, + struct binding *domainbinding, + const char *msgid, size_t *lengthp)) + internal_function; + +#ifdef _LIBC +extern char *__gettext PARAMS ((const char *__msgid)); +extern char *__dgettext PARAMS ((const char *__domainname, + const char *__msgid)); +extern char *__dcgettext PARAMS ((const char *__domainname, + const char *__msgid, int __category)); +extern char *__ngettext PARAMS ((const char *__msgid1, const char *__msgid2, + unsigned long int __n)); +extern char *__dngettext PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int n)); +extern char *__dcngettext PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category)); +extern char *__dcigettext PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category)); +extern char *__textdomain PARAMS ((const char *__domainname)); +extern char *__bindtextdomain PARAMS ((const char *__domainname, + const char *__dirname)); +extern char *__bind_textdomain_codeset PARAMS ((const char *__domainname, + const char *__codeset)); +#else +extern char *gettext__ PARAMS ((const char *__msgid)); +extern char *dgettext__ PARAMS ((const char *__domainname, + const char *__msgid)); +extern char *dcgettext__ PARAMS ((const char *__domainname, + const char *__msgid, int __category)); +extern char *ngettext__ PARAMS ((const char *__msgid1, const char *__msgid2, + unsigned long int __n)); +extern char *dngettext__ PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n)); +extern char *dcngettext__ PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category)); +extern char *dcigettext__ PARAMS ((const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category)); +extern char *textdomain__ PARAMS ((const char *__domainname)); +extern char *bindtextdomain__ PARAMS ((const char *__domainname, + const char *__dirname)); +extern char *bind_textdomain_codeset__ PARAMS ((const char *__domainname, + const char *__codeset)); +#endif + +#ifdef _LIBC +extern void __gettext_free_exp PARAMS ((struct expression *exp)) + internal_function; +extern int __gettextparse PARAMS ((void *arg)); +#else +extern void gettext_free_exp__ PARAMS ((struct expression *exp)) + internal_function; +extern int gettextparse__ PARAMS ((void *arg)); +#endif + +/* @@ begin of epilog @@ */ + +#endif /* gettextP.h */ diff --git a/libprozilla/intl/hash-string.h b/libprozilla/intl/hash-string.h new file mode 100644 index 0000000..37d4ce1 --- /dev/null +++ b/libprozilla/intl/hash-string.h @@ -0,0 +1,58 @@ +/* Description of GNU message catalog format: string hashing function. + Copyright (C) 1995, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* @@ end of prolog @@ */ + +#ifndef PARAMS +# if __STDC__ +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +#endif + +/* We assume to have `unsigned long int' value with at least 32 bits. */ +#define HASHWORDBITS 32 + + +/* Defines the so called `hashpjw' function by P.J. Weinberger + [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, + 1986, 1987 Bell Telephone Laboratories, Inc.] */ +static unsigned long int hash_string PARAMS ((const char *__str_param)); + +static inline unsigned long int +hash_string (str_param) + const char *str_param; +{ + unsigned long int hval, g; + const char *str = str_param; + + /* Compute the hash value for the given string. */ + hval = 0; + while (*str != '\0') + { + hval <<= 4; + hval += (unsigned long int) *str++; + g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4)); + if (g != 0) + { + hval ^= g >> (HASHWORDBITS - 8); + hval ^= g; + } + } + return hval; +} diff --git a/libprozilla/intl/intl-compat.c b/libprozilla/intl/intl-compat.c new file mode 100644 index 0000000..b8edaa1 --- /dev/null +++ b/libprozilla/intl/intl-compat.c @@ -0,0 +1,165 @@ +/* intl-compat.c - Stub functions to call gettext functions from GNU gettext + Library. + Copyright (C) 1995, 2000, 2001 Software Foundation, Inc. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "libgnuintl.h" +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +/* This file redirects the gettext functions (without prefix or suffix) to + those defined in the included GNU gettext library (with "__" suffix). + It is compiled into libintl when the included GNU gettext library is + configured --with-included-gettext. + + This redirection works also in the case that the system C library or + the system libintl library contain gettext/textdomain/... functions. + If it didn't, we would need to add preprocessor level redirections to + libgnuintl.h of the following form: + +# define gettext gettext__ +# define dgettext dgettext__ +# define dcgettext dcgettext__ +# define ngettext ngettext__ +# define dngettext dngettext__ +# define dcngettext dcngettext__ +# define textdomain textdomain__ +# define bindtextdomain bindtextdomain__ +# define bind_textdomain_codeset bind_textdomain_codeset__ + + How does this redirection work? There are two cases. + A. When libintl.a is linked into an executable, it works because + functions defined in the executable always override functions in + the shared libraries. + B. When libintl.so is used, it works because + 1. those systems defining gettext/textdomain/... in the C library + (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer) are + ELF systems and define these symbols as weak, thus explicitly + letting other shared libraries override it. + 2. those systems defining gettext/textdomain/... in a standalone + libintl.so library (namely, Solaris 2.3 and newer) have this + shared library in /usr/lib, and the linker will search /usr/lib + *after* the directory where the GNU gettext library is installed. + + A third case, namely when libintl.a is linked into a shared library + whose name is not libintl.so, is not supported. In this case, on + Solaris, when -lintl precedes the linker option for the shared library + containing GNU gettext, the system's gettext would indeed override + the GNU gettext. Anyone doing this kind of stuff must be clever enough + to 1. compile libintl.a with -fPIC, 2. remove -lintl from his linker + command line. */ + + +#undef gettext +#undef dgettext +#undef dcgettext +#undef ngettext +#undef dngettext +#undef dcngettext +#undef textdomain +#undef bindtextdomain +#undef bind_textdomain_codeset + + +char * +gettext (msgid) + const char *msgid; +{ + return gettext__ (msgid); +} + + +char * +dgettext (domainname, msgid) + const char *domainname; + const char *msgid; +{ + return dgettext__ (domainname, msgid); +} + + +char * +dcgettext (domainname, msgid, category) + const char *domainname; + const char *msgid; + int category; +{ + return dcgettext__ (domainname, msgid, category); +} + + +char * +ngettext (msgid1, msgid2, n) + const char *msgid1; + const char *msgid2; + unsigned long int n; +{ + return ngettext__ (msgid1, msgid2, n); +} + + +char * +dngettext (domainname, msgid1, msgid2, n) + const char *domainname; + const char *msgid1; + const char *msgid2; + unsigned long int n; +{ + return dngettext__ (domainname, msgid1, msgid2, n); +} + + +char * +dcngettext (domainname, msgid1, msgid2, n, category) + const char *domainname; + const char *msgid1; + const char *msgid2; + unsigned long int n; + int category; +{ + return dcngettext__ (domainname, msgid1, msgid2, n, category); +} + + +char * +textdomain (domainname) + const char *domainname; +{ + return textdomain__ (domainname); +} + + +char * +bindtextdomain (domainname, dirname) + const char *domainname; + const char *dirname; +{ + return bindtextdomain__ (domainname, dirname); +} + + +char * +bind_textdomain_codeset (domainname, codeset) + const char *domainname; + const char *codeset; +{ + return bind_textdomain_codeset__ (domainname, codeset); +} diff --git a/libprozilla/intl/l10nflist.c b/libprozilla/intl/l10nflist.c new file mode 100644 index 0000000..557253e --- /dev/null +++ b/libprozilla/intl/l10nflist.c @@ -0,0 +1,404 @@ +/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Tell glibc's to provide a prototype for stpcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#if !HAVE_STRCHR && !defined _LIBC +# ifndef strchr +# define strchr index +# endif +#endif + +#if defined _LIBC || defined HAVE_ARGZ_H +# include +#endif +#include +#include +#include + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# ifndef stpcpy +# define stpcpy(dest, src) __stpcpy(dest, src) +# endif +#else +# ifndef HAVE_STPCPY +static char *stpcpy PARAMS ((char *dest, const char *src)); +# endif +#endif + +/* Define function which are usually not available. */ + +#if !defined _LIBC && !defined HAVE___ARGZ_COUNT +/* Returns the number of strings in ARGZ. */ +static size_t argz_count__ PARAMS ((const char *argz, size_t len)); + +static size_t +argz_count__ (argz, len) + const char *argz; + size_t len; +{ + size_t count = 0; + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len + 1; + len -= part_len + 1; + count++; + } + return count; +} +# undef __argz_count +# define __argz_count(argz, len) argz_count__ (argz, len) +#endif /* !_LIBC && !HAVE___ARGZ_COUNT */ + +#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY +/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's + except the last into the character SEP. */ +static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep)); + +static void +argz_stringify__ (argz, len, sep) + char *argz; + size_t len; + int sep; +{ + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len; + len -= part_len + 1; + if (len > 0) + *argz++ = sep; + } +} +# undef __argz_stringify +# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep) +#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */ + +#if !defined _LIBC && !defined HAVE___ARGZ_NEXT +static char *argz_next__ PARAMS ((char *argz, size_t argz_len, + const char *entry)); + +static char * +argz_next__ (argz, argz_len, entry) + char *argz; + size_t argz_len; + const char *entry; +{ + if (entry) + { + if (entry < argz + argz_len) + entry = strchr (entry, '\0') + 1; + + return entry >= argz + argz_len ? NULL : (char *) entry; + } + else + if (argz_len > 0) + return argz; + else + return 0; +} +# undef __argz_next +# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry) +#endif /* !_LIBC && !HAVE___ARGZ_NEXT */ + + +/* Return number of bits set in X. */ +static int pop PARAMS ((int x)); + +static inline int +pop (x) + int x; +{ + /* We assume that no more than 16 bits are used. */ + x = ((x & ~0x5555) >> 1) + (x & 0x5555); + x = ((x & ~0x3333) >> 2) + (x & 0x3333); + x = ((x >> 4) + x) & 0x0f0f; + x = ((x >> 8) + x) & 0xff; + + return x; +} + + +struct loaded_l10nfile * +_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language, + territory, codeset, normalized_codeset, modifier, special, + sponsor, revision, filename, do_allocate) + struct loaded_l10nfile **l10nfile_list; + const char *dirlist; + size_t dirlist_len; + int mask; + const char *language; + const char *territory; + const char *codeset; + const char *normalized_codeset; + const char *modifier; + const char *special; + const char *sponsor; + const char *revision; + const char *filename; + int do_allocate; +{ + char *abs_filename; + struct loaded_l10nfile *last = NULL; + struct loaded_l10nfile *retval; + char *cp; + size_t entries; + int cnt; + + /* Allocate room for the full file name. */ + abs_filename = (char *) malloc (dirlist_len + + strlen (language) + + ((mask & TERRITORY) != 0 + ? strlen (territory) + 1 : 0) + + ((mask & XPG_CODESET) != 0 + ? strlen (codeset) + 1 : 0) + + ((mask & XPG_NORM_CODESET) != 0 + ? strlen (normalized_codeset) + 1 : 0) + + (((mask & XPG_MODIFIER) != 0 + || (mask & CEN_AUDIENCE) != 0) + ? strlen (modifier) + 1 : 0) + + ((mask & CEN_SPECIAL) != 0 + ? strlen (special) + 1 : 0) + + (((mask & CEN_SPONSOR) != 0 + || (mask & CEN_REVISION) != 0) + ? (1 + ((mask & CEN_SPONSOR) != 0 + ? strlen (sponsor) + 1 : 0) + + ((mask & CEN_REVISION) != 0 + ? strlen (revision) + 1 : 0)) : 0) + + 1 + strlen (filename) + 1); + + if (abs_filename == NULL) + return NULL; + + retval = NULL; + last = NULL; + + /* Construct file name. */ + memcpy (abs_filename, dirlist, dirlist_len); + __argz_stringify (abs_filename, dirlist_len, PATH_SEPARATOR); + cp = abs_filename + (dirlist_len - 1); + *cp++ = '/'; + cp = stpcpy (cp, language); + + if ((mask & TERRITORY) != 0) + { + *cp++ = '_'; + cp = stpcpy (cp, territory); + } + if ((mask & XPG_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, codeset); + } + if ((mask & XPG_NORM_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, normalized_codeset); + } + if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0) + { + /* This component can be part of both syntaces but has different + leading characters. For CEN we use `+', else `@'. */ + *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@'; + cp = stpcpy (cp, modifier); + } + if ((mask & CEN_SPECIAL) != 0) + { + *cp++ = '+'; + cp = stpcpy (cp, special); + } + if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0) + { + *cp++ = ','; + if ((mask & CEN_SPONSOR) != 0) + cp = stpcpy (cp, sponsor); + if ((mask & CEN_REVISION) != 0) + { + *cp++ = '_'; + cp = stpcpy (cp, revision); + } + } + + *cp++ = '/'; + stpcpy (cp, filename); + + /* Look in list of already loaded domains whether it is already + available. */ + last = NULL; + for (retval = *l10nfile_list; retval != NULL; retval = retval->next) + if (retval->filename != NULL) + { + int compare = strcmp (retval->filename, abs_filename); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It's not in the list. */ + retval = NULL; + break; + } + + last = retval; + } + + if (retval != NULL || do_allocate == 0) + { + free (abs_filename); + return retval; + } + + retval = (struct loaded_l10nfile *) + malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len) + * (1 << pop (mask)) + * sizeof (struct loaded_l10nfile *))); + if (retval == NULL) + return NULL; + + retval->filename = abs_filename; + retval->decided = (__argz_count (dirlist, dirlist_len) != 1 + || ((mask & XPG_CODESET) != 0 + && (mask & XPG_NORM_CODESET) != 0)); + retval->data = NULL; + + if (last == NULL) + { + retval->next = *l10nfile_list; + *l10nfile_list = retval; + } + else + { + retval->next = last->next; + last->next = retval; + } + + entries = 0; + /* If the DIRLIST is a real list the RETVAL entry corresponds not to + a real file. So we have to use the DIRLIST separation mechanism + of the inner loop. */ + cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask; + for (; cnt >= 0; --cnt) + if ((cnt & ~mask) == 0 + && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0) + && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0)) + { + /* Iterate over all elements of the DIRLIST. */ + char *dir = NULL; + + while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) + != NULL) + retval->successor[entries++] + = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt, + language, territory, codeset, + normalized_codeset, modifier, special, + sponsor, revision, filename, 1); + } + retval->successor[entries] = NULL; + + return retval; +} + +/* Normalize codeset name. There is no standard for the codeset + names. Normalization allows the user to use any of the common + names. The return value is dynamically allocated and has to be + freed by the caller. */ +const char * +_nl_normalize_codeset (codeset, name_len) + const char *codeset; + size_t name_len; +{ + int len = 0; + int only_digit = 1; + char *retval; + char *wp; + size_t cnt; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalnum (codeset[cnt])) + { + ++len; + + if (isalpha (codeset[cnt])) + only_digit = 0; + } + + retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1); + + if (retval != NULL) + { + if (only_digit) + wp = stpcpy (retval, "iso"); + else + wp = retval; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalpha (codeset[cnt])) + *wp++ = tolower (codeset[cnt]); + else if (isdigit (codeset[cnt])) + *wp++ = codeset[cnt]; + + *wp = '\0'; + } + + return (const char *) retval; +} + + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (dest, src) + char *dest; + const char *src; +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif diff --git a/libprozilla/intl/libgettext.h b/libprozilla/intl/libgettext.h new file mode 100644 index 0000000..553382c --- /dev/null +++ b/libprozilla/intl/libgettext.h @@ -0,0 +1,48 @@ +/* Convenience header for conditional use of GNU . + Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _LIBGETTEXT_H +#define _LIBGETTEXT_H 1 + +/* NLS can be disabled through the configure --disable-nls option. */ +#if ENABLE_NLS + +/* Get declarations of GNU message catalog functions. */ +# include + +#else + +# define gettext(Msgid) (Msgid) +# define dgettext(Domainname, Msgid) (Msgid) +# define dcgettext(Domainname, Msgid, Category) (Msgid) +# define ngettext(Msgid1, Msgid2, N) \ + ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2)) +# define dngettext(Domainname, Msgid1, Msgid2, N) \ + ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2)) +# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ + ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2)) +# define textdomain(Domainname) ((char *) (Domainname)) +# define bindtextdomain(Domainname, Dirname) ((char *) (Dirname)) +# define bind_textdomain_codeset(Domainname, Codeset) ((char *) (Codeset)) + +#endif + +/* For automatical extraction of messages sometimes no real + translation is needed. Instead the string itself is the result. */ +#define gettext_noop(Str) (Str) + +#endif /* _LIBGETTEXT_H */ diff --git a/libprozilla/intl/libgnuintl.h b/libprozilla/intl/libgnuintl.h new file mode 100644 index 0000000..577001a --- /dev/null +++ b/libprozilla/intl/libgnuintl.h @@ -0,0 +1,127 @@ +/* Message catalogs for internationalization. + Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _LIBINTL_H +#define _LIBINTL_H 1 + +#include + +/* The LC_MESSAGES locale category is the category used by the functions + gettext() and dgettext(). It is specified in POSIX, but not in ANSI C. + On systems that don't define it, use an arbitrary value instead. + On Solaris, defines __LOCALE_H then includes (i.e. + this file!) and then only defines LC_MESSAGES. To avoid a redefinition + warning, don't define LC_MESSAGES in this case. */ +#if !defined LC_MESSAGES && !defined __LOCALE_H +# define LC_MESSAGES 1729 +#endif + +/* We define an additional symbol to signal that we use the GNU + implementation of gettext. */ +#define __USE_GNU_GETTEXT 1 + +/* Resolve a platform specific conflict on DJGPP. GNU gettext takes + precedence over _conio_gettext. */ +#ifdef __DJGPP__ +# undef gettext +# define gettext gettext +#endif + +#ifndef PARAMS +# if __STDC__ || defined __cplusplus +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +extern char *gettext PARAMS ((const char *__msgid)); + +/* Look up MSGID in the DOMAINNAME message catalog for the current + LC_MESSAGES locale. */ +extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid)); + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid, + int __category)); + + +/* Similar to `gettext' but select the plural form corresponding to the + number N. */ +extern char *ngettext PARAMS ((const char *__msgid1, const char *__msgid2, + unsigned long int __n)); + +/* Similar to `dgettext' but select the plural form corresponding to the + number N. */ +extern char *dngettext PARAMS ((const char *__domainname, const char *__msgid1, + const char *__msgid2, unsigned long int __n)); + +/* Similar to `dcgettext' but select the plural form corresponding to the + number N. */ +extern char *dcngettext PARAMS ((const char *__domainname, const char *__msgid1, + const char *__msgid2, unsigned long int __n, + int __category)); + + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +extern char *textdomain PARAMS ((const char *__domainname)); + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +extern char *bindtextdomain PARAMS ((const char *__domainname, + const char *__dirname)); + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +extern char *bind_textdomain_codeset PARAMS ((const char *__domainname, + const char *__codeset)); + + +/* Optimized version of the functions above. */ +#if defined __OPTIMIZED +/* These are macros, but could also be inline functions. */ + +# define gettext(msgid) \ + dgettext (NULL, msgid) + +# define dgettext(domainname, msgid) \ + dcgettext (domainname, msgid, LC_MESSAGES) + +# define ngettext(msgid1, msgid2, n) \ + dngettext (NULL, msgid1, msgid2, n) + +# define dngettext(domainname, msgid1, msgid2, n) \ + dcngettext (domainname, msgid1, msgid2, n, LC_MESSAGES) + +#endif /* Optimizing. */ + + +#ifdef __cplusplus +} +#endif + +#endif /* libintl.h */ diff --git a/libprozilla/intl/libintl.glibc b/libprozilla/intl/libintl.glibc new file mode 100644 index 0000000..7298852 --- /dev/null +++ b/libprozilla/intl/libintl.glibc @@ -0,0 +1,116 @@ +/* Message catalogs for internationalization. + Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc. + This file is derived from the file libgettext.h in the GNU gettext package. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _LIBINTL_H +#define _LIBINTL_H 1 + +#include + +/* We define an additional symbol to signal that we use the GNU + implementation of gettext. */ +#define __USE_GNU_GETTEXT 1 + +__BEGIN_DECLS + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +extern char *gettext (__const char *__msgid) __THROW; + +/* Look up MSGID in the DOMAINNAME message catalog for the current + LC_MESSAGES locale. */ +extern char *dgettext (__const char *__domainname, __const char *__msgid) + __THROW; +extern char *__dgettext (__const char *__domainname, __const char *__msgid) + __THROW __attribute_format_arg__ (2); + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +extern char *dcgettext (__const char *__domainname, + __const char *__msgid, int __category) __THROW; +extern char *__dcgettext (__const char *__domainname, + __const char *__msgid, int __category) + __THROW __attribute_format_arg__ (2); + + +/* Similar to `gettext' but select the plural form corresponding to the + number N. */ +extern char *ngettext (__const char *__msgid1, __const char *__msgid2, + unsigned long int __n) + __THROW __attribute_format_arg__ (1); + +/* Similar to `dgettext' but select the plural form corresponding to the + number N. */ +extern char *dngettext (__const char *__domainname, __const char *__msgid1, + __const char *__msgid2, unsigned long int __n) + __THROW __attribute_format_arg__ (2); + +/* Similar to `dcgettext' but select the plural form corresponding to the + number N. */ +extern char *dcngettext (__const char *__domainname, __const char *__msgid1, + __const char *__msgid2, unsigned long int __n, + int __category) + __THROW __attribute_format_arg__ (2); + + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +extern char *textdomain (__const char *__domainname) __THROW; + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +extern char *bindtextdomain (__const char *__domainname, + __const char *__dirname) __THROW; + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +extern char *bind_textdomain_codeset (__const char *__domainname, + __const char *__codeset) __THROW; + + +/* Optimized version of the function above. */ +#if defined __OPTIMIZE__ + +/* We need NULL for `gettext'. */ +# define __need_NULL +# include + +/* We need LC_MESSAGES for `dgettext'. */ +# include + +/* These must be macros. Inlined functions are useless because the + `__builtin_constant_p' predicate in dcgettext would always return + false. */ + +# define gettext(msgid) dgettext (NULL, msgid) + +# define dgettext(domainname, msgid) \ + dcgettext (domainname, msgid, LC_MESSAGES) + +# define ngettext(msgid1, msgid2, n) dngettext (NULL, msgid1, msgid2, n) + +# define dngettext(domainname, msgid1, msgid2, n) \ + dcngettext (domainname, msgid1, msgid2, n, LC_MESSAGES) + +#endif /* Optimizing. */ + +__END_DECLS + +#endif /* libintl.h */ diff --git a/libprozilla/intl/loadinfo.h b/libprozilla/intl/loadinfo.h new file mode 100644 index 0000000..5171a8f --- /dev/null +++ b/libprozilla/intl/loadinfo.h @@ -0,0 +1,108 @@ +/* Copyright (C) 1996-1999, 2000, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _LOADINFO_H +#define _LOADINFO_H 1 + +#ifndef PARAMS +# if __STDC__ +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#ifndef internal_function +# define internal_function +#endif + +/* Tell the compiler when a conditional or integer expression is + almost always true or almost always false. */ +#ifndef HAVE_BUILTIN_EXPECT +# define __builtin_expect(expr, val) (expr) +#endif + +/* Separator in PATH like lists of pathnames. */ +#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ + /* Win32, OS/2, DOS */ +# define PATH_SEPARATOR ';' +#else + /* Unix */ +# define PATH_SEPARATOR ':' +#endif + +/* Encoding of locale name parts. */ +#define CEN_REVISION 1 +#define CEN_SPONSOR 2 +#define CEN_SPECIAL 4 +#define XPG_NORM_CODESET 8 +#define XPG_CODESET 16 +#define TERRITORY 32 +#define CEN_AUDIENCE 64 +#define XPG_MODIFIER 128 + +#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE) +#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER) + + +struct loaded_l10nfile +{ + const char *filename; + int decided; + + const void *data; + + struct loaded_l10nfile *next; + struct loaded_l10nfile *successor[1]; +}; + + +/* Normalize codeset name. There is no standard for the codeset + names. Normalization allows the user to use any of the common + names. The return value is dynamically allocated and has to be + freed by the caller. */ +extern const char *_nl_normalize_codeset PARAMS ((const char *codeset, + size_t name_len)); + +extern struct loaded_l10nfile * +_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list, + const char *dirlist, size_t dirlist_len, int mask, + const char *language, const char *territory, + const char *codeset, + const char *normalized_codeset, + const char *modifier, const char *special, + const char *sponsor, const char *revision, + const char *filename, int do_allocate)); + + +extern const char *_nl_expand_alias PARAMS ((const char *name)); + +/* normalized_codeset is dynamically allocated and has to be freed by + the caller. */ +extern int _nl_explode_name PARAMS ((char *name, const char **language, + const char **modifier, + const char **territory, + const char **codeset, + const char **normalized_codeset, + const char **special, + const char **sponsor, + const char **revision)); + +extern char *_nl_find_language PARAMS ((const char *name)); + +#endif /* loadinfo.h */ diff --git a/libprozilla/intl/loadmsgcat.c b/libprozilla/intl/loadmsgcat.c new file mode 100644 index 0000000..d589243 --- /dev/null +++ b/libprozilla/intl/loadmsgcat.c @@ -0,0 +1,566 @@ +/* Load needed message catalogs. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +#endif + +#include +#include + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#ifdef _LIBC +# include +# include +#endif + +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || (defined _LIBC && defined _POSIX_MAPPED_FILES) +# include +# undef HAVE_MMAP +# define HAVE_MMAP 1 +#else +# undef HAVE_MMAP +#endif + +#include "gettext.h" +#include "gettextP.h" + +#ifdef _LIBC +# include "../locale/localeinfo.h" +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ISO C functions. This is required by the standard + because some ISO C functions will require linking with this object + file and the name space must not be polluted. */ +# define open __open +# define close __close +# define read __read +# define mmap __mmap +# define munmap __munmap +#endif + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define PLURAL_PARSE __gettextparse +#else +# define PLURAL_PARSE gettextparse__ +#endif + +/* For those losing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +# define freea(p) /* nothing */ +#else +# define alloca(n) malloc (n) +# define freea(p) free (p) +#endif + +/* For systems that distinguish between text and binary I/O. + O_BINARY is usually declared in . */ +#if !defined O_BINARY && defined _O_BINARY + /* For MSC-compatible compilers. */ +# define O_BINARY _O_BINARY +# define O_TEXT _O_TEXT +#endif +#ifdef __BEOS__ + /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */ +# undef O_BINARY +# undef O_TEXT +#endif +/* On reasonable systems, binary I/O is the default. */ +#ifndef O_BINARY +# define O_BINARY 0 +#endif + +/* We need a sign, whether a new catalog was loaded, which can be associated + with all translations. This is important if the translations are + cached by one of GCC's features. */ +int _nl_msg_cat_cntr; + +#if (defined __GNUC__ && !defined __APPLE_CC__) \ + || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) + +/* These structs are the constant expression for the germanic plural + form determination. It represents the expression "n != 1". */ +static const struct expression plvar = +{ + .nargs = 0, + .operation = var, +}; +static const struct expression plone = +{ + .nargs = 0, + .operation = num, + .val = + { + .num = 1 + } +}; +static struct expression germanic_plural = +{ + .nargs = 2, + .operation = not_equal, + .val = + { + .args = + { + [0] = (struct expression *) &plvar, + [1] = (struct expression *) &plone + } + } +}; + +# define INIT_GERMANIC_PLURAL() + +#else + +/* For compilers without support for ISO C 99 struct/union initializers: + Initialization at run-time. */ + +static struct expression plvar; +static struct expression plone; +static struct expression germanic_plural; + +static void +init_germanic_plural () +{ + if (plone.val.num == 0) + { + plvar.nargs = 0; + plvar.operation = var; + + plone.nargs = 0; + plone.operation = num; + plone.val.num = 1; + + germanic_plural.nargs = 2; + germanic_plural.operation = not_equal; + germanic_plural.val.args[0] = &plvar; + germanic_plural.val.args[1] = &plone; + } +} + +# define INIT_GERMANIC_PLURAL() init_germanic_plural () + +#endif + + +/* Initialize the codeset dependent parts of an opened message catalog. + Return the header entry. */ +const char * +internal_function +_nl_init_domain_conv (domain_file, domain, domainbinding) + struct loaded_l10nfile *domain_file; + struct loaded_domain *domain; + struct binding *domainbinding; +{ + /* Find out about the character set the file is encoded with. + This can be found (in textual form) in the entry "". If this + entry does not exist or if this does not contain the `charset=' + information, we will assume the charset matches the one the + current locale and we don't have to perform any conversion. */ + char *nullentry; + size_t nullentrylen; + + /* Preinitialize fields, to avoid recursion during _nl_find_msg. */ + domain->codeset_cntr = + (domainbinding != NULL ? domainbinding->codeset_cntr : 0); +#ifdef _LIBC + domain->conv = (__gconv_t) -1; +#else +# if HAVE_ICONV + domain->conv = (iconv_t) -1; +# endif +#endif + domain->conv_tab = NULL; + + /* Get the header entry. */ + nullentry = _nl_find_msg (domain_file, domainbinding, "", &nullentrylen); + + if (nullentry != NULL) + { +#if defined _LIBC || HAVE_ICONV + const char *charsetstr; + + charsetstr = strstr (nullentry, "charset="); + if (charsetstr != NULL) + { + size_t len; + char *charset; + const char *outcharset; + + charsetstr += strlen ("charset="); + len = strcspn (charsetstr, " \t\n"); + + charset = (char *) alloca (len + 1); +# if defined _LIBC || HAVE_MEMPCPY + *((char *) mempcpy (charset, charsetstr, len)) = '\0'; +# else + memcpy (charset, charsetstr, len); + charset[len] = '\0'; +# endif + + /* The output charset should normally be determined by the + locale. But sometimes the locale is not used or not correctly + set up, so we provide a possibility for the user to override + this. Moreover, the value specified through + bind_textdomain_codeset overrides both. */ + if (domainbinding != NULL && domainbinding->codeset != NULL) + outcharset = domainbinding->codeset; + else + { + outcharset = getenv ("OUTPUT_CHARSET"); + if (outcharset == NULL || outcharset[0] == '\0') + { +# ifdef _LIBC + outcharset = (*_nl_current[LC_CTYPE])->values[_NL_ITEM_INDEX (CODESET)].string; +# else +# if HAVE_ICONV + extern const char *locale_charset (void); + outcharset = locale_charset (); +# endif +# endif + } + } + +# ifdef _LIBC + /* We always want to use transliteration. */ + outcharset = norm_add_slashes (outcharset, "TRANSLIT"); + charset = norm_add_slashes (charset, NULL); + if (__gconv_open (outcharset, charset, &domain->conv, + GCONV_AVOID_NOCONV) + != __GCONV_OK) + domain->conv = (__gconv_t) -1; +# else +# if HAVE_ICONV + /* When using GNU libiconv, we want to use transliteration. */ +# if _LIBICONV_VERSION >= 0x0105 + len = strlen (outcharset); + { + char *tmp = (char *) alloca (len + 10 + 1); + memcpy (tmp, outcharset, len); + memcpy (tmp + len, "//TRANSLIT", 10 + 1); + outcharset = tmp; + } +# endif + domain->conv = iconv_open (outcharset, charset); +# if _LIBICONV_VERSION >= 0x0105 + freea (outcharset); +# endif +# endif +# endif + + freea (charset); + } +#endif /* _LIBC || HAVE_ICONV */ + } + + return nullentry; +} + +/* Frees the codeset dependent parts of an opened message catalog. */ +void +internal_function +_nl_free_domain_conv (domain) + struct loaded_domain *domain; +{ + if (domain->conv_tab != NULL && domain->conv_tab != (char **) -1) + free (domain->conv_tab); + +#ifdef _LIBC + if (domain->conv != (__gconv_t) -1) + __gconv_close (domain->conv); +#else +# if HAVE_ICONV + if (domain->conv != (iconv_t) -1) + iconv_close (domain->conv); +# endif +#endif +} + +/* Load the message catalogs specified by FILENAME. If it is no valid + message catalog do nothing. */ +void +internal_function +_nl_load_domain (domain_file, domainbinding) + struct loaded_l10nfile *domain_file; + struct binding *domainbinding; +{ + int fd; + size_t size; +#ifdef _LIBC + struct stat64 st; +#else + struct stat st; +#endif + struct mo_file_header *data = (struct mo_file_header *) -1; + int use_mmap = 0; + struct loaded_domain *domain; + const char *nullentry; + + domain_file->decided = 1; + domain_file->data = NULL; + + /* Note that it would be useless to store domainbinding in domain_file + because domainbinding might be == NULL now but != NULL later (after + a call to bind_textdomain_codeset). */ + + /* If the record does not represent a valid locale the FILENAME + might be NULL. This can happen when according to the given + specification the locale file name is different for XPG and CEN + syntax. */ + if (domain_file->filename == NULL) + return; + + /* Try to open the addressed file. */ + fd = open (domain_file->filename, O_RDONLY | O_BINARY); + if (fd == -1) + return; + + /* We must know about the size of the file. */ + if ( +#ifdef _LIBC + __builtin_expect (fstat64 (fd, &st) != 0, 0) +#else + __builtin_expect (fstat (fd, &st) != 0, 0) +#endif + || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0) + || __builtin_expect (size < sizeof (struct mo_file_header), 0)) + { + /* Something went wrong. */ + close (fd); + return; + } + +#ifdef HAVE_MMAP + /* Now we are ready to load the file. If mmap() is available we try + this first. If not available or it failed we try to load it. */ + data = (struct mo_file_header *) mmap (NULL, size, PROT_READ, + MAP_PRIVATE, fd, 0); + + if (__builtin_expect (data != (struct mo_file_header *) -1, 1)) + { + /* mmap() call was successful. */ + close (fd); + use_mmap = 1; + } +#endif + + /* If the data is not yet available (i.e. mmap'ed) we try to load + it manually. */ + if (data == (struct mo_file_header *) -1) + { + size_t to_read; + char *read_ptr; + + data = (struct mo_file_header *) malloc (size); + if (data == NULL) + return; + + to_read = size; + read_ptr = (char *) data; + do + { + long int nb = (long int) read (fd, read_ptr, to_read); + if (nb <= 0) + { +#ifdef EINTR + if (nb == -1 && errno == EINTR) + continue; +#endif + close (fd); + return; + } + read_ptr += nb; + to_read -= nb; + } + while (to_read > 0); + + close (fd); + } + + /* Using the magic number we can test whether it really is a message + catalog file. */ + if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED, + 0)) + { + /* The magic number is wrong: not a message catalog file. */ +#ifdef HAVE_MMAP + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + return; + } + + domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); + if (domain == NULL) + return; + domain_file->data = domain; + + domain->data = (char *) data; + domain->use_mmap = use_mmap; + domain->mmap_size = size; + domain->must_swap = data->magic != _MAGIC; + + /* Fill in the information about the available tables. */ + switch (W (domain->must_swap, data->revision)) + { + case 0: + domain->nstrings = W (domain->must_swap, data->nstrings); + domain->orig_tab = (struct string_desc *) + ((char *) data + W (domain->must_swap, data->orig_tab_offset)); + domain->trans_tab = (struct string_desc *) + ((char *) data + W (domain->must_swap, data->trans_tab_offset)); + domain->hash_size = W (domain->must_swap, data->hash_tab_size); + domain->hash_tab = (nls_uint32 *) + ((char *) data + W (domain->must_swap, data->hash_tab_offset)); + break; + default: + /* This is an invalid revision. */ +#ifdef HAVE_MMAP + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + free (domain); + domain_file->data = NULL; + return; + } + + /* Now initialize the character set converter from the character set + the file is encoded with (found in the header entry) to the domain's + specified character set or the locale's character set. */ + nullentry = _nl_init_domain_conv (domain_file, domain, domainbinding); + + /* Also look for a plural specification. */ + if (nullentry != NULL) + { + const char *plural; + const char *nplurals; + + plural = strstr (nullentry, "plural="); + nplurals = strstr (nullentry, "nplurals="); + if (plural == NULL || nplurals == NULL) + goto no_plural; + else + { + /* First get the number. */ + char *endp; + unsigned long int n; + struct parse_args args; + + nplurals += 9; + while (*nplurals != '\0' && isspace (*nplurals)) + ++nplurals; +#if defined HAVE_STRTOUL || defined _LIBC + n = strtoul (nplurals, &endp, 10); +#else + for (endp = nplurals, n = 0; *endp >= '0' && *endp <= '9'; endp++) + n = n * 10 + (*endp - '0'); +#endif + domain->nplurals = n; + if (nplurals == endp) + goto no_plural; + + /* Due to the restrictions bison imposes onto the interface of the + scanner function we have to put the input string and the result + passed up from the parser into the same structure which address + is passed down to the parser. */ + plural += 7; + args.cp = plural; + if (PLURAL_PARSE (&args) != 0) + goto no_plural; + domain->plural = args.res; + } + } + else + { + /* By default we are using the Germanic form: singular form only + for `one', the plural form otherwise. Yes, this is also what + English is using since English is a Germanic language. */ + no_plural: + INIT_GERMANIC_PLURAL (); + domain->plural = &germanic_plural; + domain->nplurals = 2; + } +} + + +#ifdef _LIBC +void +internal_function +_nl_unload_domain (domain) + struct loaded_domain *domain; +{ + if (domain->plural != &germanic_plural) + __gettext_free_exp (domain->plural); + + _nl_free_domain_conv (domain); + +# ifdef _POSIX_MAPPED_FILES + if (domain->use_mmap) + munmap ((caddr_t) domain->data, domain->mmap_size); + else +# endif /* _POSIX_MAPPED_FILES */ + free ((void *) domain->data); + + free (domain); +} +#endif diff --git a/libprozilla/intl/localcharset.c b/libprozilla/intl/localcharset.c new file mode 100644 index 0000000..22e09e4 --- /dev/null +++ b/libprozilla/intl/localcharset.c @@ -0,0 +1,271 @@ +/* Determine a canonical name for the current locale's character encoding. + + Copyright (C) 2000-2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +/* Written by Bruno Haible . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if HAVE_STDDEF_H +# include +#endif + +#include +#if HAVE_STRING_H +# include +#else +# include +#endif +#if HAVE_STDLIB_H +# include +#endif + +#if defined _WIN32 || defined __WIN32__ +# undef WIN32 /* avoid warning on mingw32 */ +# define WIN32 +#endif + +#ifndef WIN32 +# if HAVE_LANGINFO_CODESET +# include +# else +# if HAVE_SETLOCALE +# include +# endif +# endif +#else /* WIN32 */ +# define WIN32_LEAN_AND_MEAN +# include +#endif + +#ifndef DIRECTORY_SEPARATOR +# define DIRECTORY_SEPARATOR '/' +#endif + +#ifndef ISSLASH +# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) +#endif + +/* The following static variable is declared 'volatile' to avoid a + possible multithread problem in the function get_charset_aliases. If we + are running in a threaded environment, and if two threads initialize + 'charset_aliases' simultaneously, both will produce the same value, + and everything will be ok if the two assignments to 'charset_aliases' + are atomic. But I don't know what will happen if the two assignments mix. */ +#if __STDC__ != 1 +# define volatile /* empty */ +#endif +/* Pointer to the contents of the charset.alias file, if it has already been + read, else NULL. Its format is: + ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */ +static char * volatile charset_aliases; + +/* Return a pointer to the contents of the charset.alias file. */ +static const char * +get_charset_aliases () +{ + char *cp; + + cp = charset_aliases; + if (cp == NULL) + { +#ifndef WIN32 + FILE *fp; + const char *dir = LIBDIR; + const char *base = "charset.alias"; + char *file_name; + + /* Concatenate dir and base into freshly allocated file_name. */ + { + size_t dir_len = strlen (dir); + size_t base_len = strlen (base); + int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1])); + file_name = (char *) malloc (dir_len + add_slash + base_len + 1); + if (file_name != NULL) + { + memcpy (file_name, dir, dir_len); + if (add_slash) + file_name[dir_len] = DIRECTORY_SEPARATOR; + memcpy (file_name + dir_len + add_slash, base, base_len + 1); + } + } + + if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL) + /* Out of memory or file not found, treat it as empty. */ + cp = ""; + else + { + /* Parse the file's contents. */ + int c; + char buf1[50+1]; + char buf2[50+1]; + char *res_ptr = NULL; + size_t res_size = 0; + size_t l1, l2; + + for (;;) + { + c = getc (fp); + if (c == EOF) + break; + if (c == '\n' || c == ' ' || c == '\t') + continue; + if (c == '#') + { + /* Skip comment, to end of line. */ + do + c = getc (fp); + while (!(c == EOF || c == '\n')); + if (c == EOF) + break; + continue; + } + ungetc (c, fp); + if (fscanf(fp, "%50s %50s", buf1, buf2) < 2) + break; + l1 = strlen (buf1); + l2 = strlen (buf2); + if (res_size == 0) + { + res_size = l1 + 1 + l2 + 1; + res_ptr = malloc (res_size + 1); + } + else + { + res_size += l1 + 1 + l2 + 1; + res_ptr = realloc (res_ptr, res_size + 1); + } + if (res_ptr == NULL) + { + /* Out of memory. */ + res_size = 0; + break; + } + strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1); + strcpy (res_ptr + res_size - (l2 + 1), buf2); + } + fclose (fp); + if (res_size == 0) + cp = ""; + else + { + *(res_ptr + res_size) = '\0'; + cp = res_ptr; + } + } + + if (file_name != NULL) + free (file_name); + +#else /* WIN32 */ + + /* To avoid the troubles of installing a separate file in the same + directory as the DLL and of retrieving the DLL's directory at + runtime, simply inline the aliases here. */ + + cp = "CP936" "\0" "GBK" "\0" + "CP1361" "\0" "JOHAB" "\0"; +#endif + + charset_aliases = cp; + } + + return cp; +} + +/* Determine the current locale's character encoding, and canonicalize it + into one of the canonical names listed in config.charset. + The result must not be freed; it is statically allocated. + If the canonical name cannot be determined, the result is a non-canonical + name. */ + +#ifdef STATIC +STATIC +#endif +const char * +locale_charset () +{ + const char *codeset; + const char *aliases; + +#ifndef WIN32 + +# if HAVE_LANGINFO_CODESET + + /* Most systems support nl_langinfo (CODESET) nowadays. */ + codeset = nl_langinfo (CODESET); + +# else + + /* On old systems which lack it, use setlocale or getenv. */ + const char *locale = NULL; + + /* But most old systems don't have a complete set of locales. Some + (like SunOS 4 or DJGPP) have only the C locale. Therefore we don't + use setlocale here; it would return "C" when it doesn't support the + locale name the user has set. */ +# if HAVE_SETLOCALE && 0 + locale = setlocale (LC_CTYPE, NULL); +# endif + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_ALL"); + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_CTYPE"); + if (locale == NULL || locale[0] == '\0') + locale = getenv ("LANG"); + } + } + + /* On some old systems, one used to set locale = "iso8859_1". On others, + you set it to "language_COUNTRY.charset". In any case, we resolve it + through the charset.alias file. */ + codeset = locale; + +# endif + +#else /* WIN32 */ + + static char buf[2 + 10 + 1]; + + /* Win32 has a function returning the locale's codepage as a number. */ + sprintf (buf, "CP%u", GetACP ()); + codeset = buf; + +#endif + + if (codeset == NULL) + /* The canonical name cannot be determined. */ + codeset = ""; + + /* Resolve alias. */ + for (aliases = get_charset_aliases (); + *aliases != '\0'; + aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1) + if (strcmp (codeset, aliases) == 0 + || (aliases[0] == '*' && aliases[1] == '\0')) + { + codeset = aliases + strlen (aliases) + 1; + break; + } + + return codeset; +} diff --git a/libprozilla/intl/locale.alias b/libprozilla/intl/locale.alias new file mode 100644 index 0000000..48940f7 --- /dev/null +++ b/libprozilla/intl/locale.alias @@ -0,0 +1,77 @@ +# Locale name alias data base. +# Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# The format of this file is the same as for the corresponding file of +# the X Window System, which normally can be found in +# /usr/lib/X11/locale/locale.alias +# A single line contains two fields: an alias and a substitution value. +# All entries are case independent. + +# Note: This file is far from being complete. If you have a value for +# your own site which you think might be useful for others too, share +# it with the rest of us. Send it using the `glibcbug' script to +# bugs@gnu.org. + +# Packages using this file: + +bokmal no_NO.ISO-8859-1 +bokmĺl no_NO.ISO-8859-1 +catalan ca_ES.ISO-8859-1 +croatian hr_HR.ISO-8859-2 +czech cs_CZ.ISO-8859-2 +danish da_DK.ISO-8859-1 +dansk da_DK.ISO-8859-1 +deutsch de_DE.ISO-8859-1 +dutch nl_NL.ISO-8859-1 +eesti et_EE.ISO-8859-1 +estonian et_EE.ISO-8859-1 +finnish fi_FI.ISO-8859-1 +français fr_FR.ISO-8859-1 +french fr_FR.ISO-8859-1 +galego gl_ES.ISO-8859-1 +galician gl_ES.ISO-8859-1 +german de_DE.ISO-8859-1 +greek el_GR.ISO-8859-7 +hebrew iw_IL.ISO-8859-8 +hrvatski hr_HR.ISO-8859-2 +hungarian hu_HU.ISO-8859-2 +icelandic is_IS.ISO-8859-1 +italian it_IT.ISO-8859-1 +japanese ja_JP.eucJP +japanese.euc ja_JP.eucJP +ja_JP ja_JP.eucJP +ja_JP.ujis ja_JP.eucJP +japanese.sjis ja_JP.SJIS +korean ko_KR.eucKR +korean.euc ko_KR.eucKR +ko_KR ko_KR.eucKR +lithuanian lt_LT.ISO-8859-13 +nb_NO no_NO.ISO-8859-1 +nb_NO.ISO-8859-1 no_NO.ISO-8859-1 +norwegian no_NO.ISO-8859-1 +nynorsk nn_NO.ISO-8859-1 +polish pl_PL.ISO-8859-2 +portuguese pt_PT.ISO-8859-1 +romanian ro_RO.ISO-8859-2 +russian ru_RU.ISO-8859-5 +slovak sk_SK.ISO-8859-2 +slovene sl_SI.ISO-8859-2 +slovenian sl_SI.ISO-8859-2 +spanish es_ES.ISO-8859-1 +swedish sv_SE.ISO-8859-1 +thai th_TH.TIS-620 +turkish tr_TR.ISO-8859-9 diff --git a/libprozilla/intl/localealias.c b/libprozilla/intl/localealias.c new file mode 100644 index 0000000..76f19a9 --- /dev/null +++ b/libprozilla/intl/localealias.c @@ -0,0 +1,403 @@ +/* Handle aliases for locale names. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Tell glibc's to provide a prototype for mempcpy(). + This must come before because may include + , and once has been included, it's too late. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +#endif + +#include + +#include +#if !HAVE_STRCHR && !defined _LIBC +# ifndef strchr +# define strchr index +# endif +#endif + +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define strcasecmp __strcasecmp + +# ifndef mempcpy +# define mempcpy __mempcpy +# endif +# define HAVE_MEMPCPY 1 + +/* We need locking here since we can be called from different places. */ +# include + +__libc_lock_define_initialized (static, lock); +#endif + +#ifndef internal_function +# define internal_function +#endif + +/* For those losing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +# define freea(p) /* nothing */ +#else +# define alloca(n) malloc (n) +# define freea(p) free (p) +#endif + +#if defined _LIBC_REENTRANT || defined HAVE_FGETS_UNLOCKED +# undef fgets +# define fgets(buf, len, s) fgets_unlocked (buf, len, s) +#endif +#if defined _LIBC_REENTRANT || defined HAVE_FEOF_UNLOCKED +# undef feof +# define feof(s) feof_unlocked (s) +#endif + + +struct alias_map +{ + const char *alias; + const char *value; +}; + + +static char *string_space; +static size_t string_space_act; +static size_t string_space_max; +static struct alias_map *map; +static size_t nmap; +static size_t maxmap; + + +/* Prototypes for local functions. */ +static size_t read_alias_file PARAMS ((const char *fname, int fname_len)) + internal_function; +static int extend_alias_table PARAMS ((void)); +static int alias_compare PARAMS ((const struct alias_map *map1, + const struct alias_map *map2)); + + +const char * +_nl_expand_alias (name) + const char *name; +{ + static const char *locale_alias_path = LOCALE_ALIAS_PATH; + struct alias_map *retval; + const char *result = NULL; + size_t added; + +#ifdef _LIBC + __libc_lock_lock (lock); +#endif + + do + { + struct alias_map item; + + item.alias = name; + + if (nmap > 0) + retval = (struct alias_map *) bsearch (&item, map, nmap, + sizeof (struct alias_map), + (int (*) PARAMS ((const void *, + const void *)) + ) alias_compare); + else + retval = NULL; + + /* We really found an alias. Return the value. */ + if (retval != NULL) + { + result = retval->value; + break; + } + + /* Perhaps we can find another alias file. */ + added = 0; + while (added == 0 && locale_alias_path[0] != '\0') + { + const char *start; + + while (locale_alias_path[0] == PATH_SEPARATOR) + ++locale_alias_path; + start = locale_alias_path; + + while (locale_alias_path[0] != '\0' + && locale_alias_path[0] != PATH_SEPARATOR) + ++locale_alias_path; + + if (start < locale_alias_path) + added = read_alias_file (start, locale_alias_path - start); + } + } + while (added != 0); + +#ifdef _LIBC + __libc_lock_unlock (lock); +#endif + + return result; +} + + +static size_t +internal_function +read_alias_file (fname, fname_len) + const char *fname; + int fname_len; +{ + FILE *fp; + char *full_fname; + size_t added; + static const char aliasfile[] = "/locale.alias"; + + full_fname = (char *) alloca (fname_len + sizeof aliasfile); +#ifdef HAVE_MEMPCPY + mempcpy (mempcpy (full_fname, fname, fname_len), + aliasfile, sizeof aliasfile); +#else + memcpy (full_fname, fname, fname_len); + memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); +#endif + + fp = fopen (full_fname, "r"); + freea (full_fname); + if (fp == NULL) + return 0; + + added = 0; + while (!feof (fp)) + { + /* It is a reasonable approach to use a fix buffer here because + a) we are only interested in the first two fields + b) these fields must be usable as file names and so must not + be that long + */ + char buf[BUFSIZ]; + char *alias; + char *value; + char *cp; + + if (fgets (buf, sizeof buf, fp) == NULL) + /* EOF reached. */ + break; + + /* Possibly not the whole line fits into the buffer. Ignore + the rest of the line. */ + if (strchr (buf, '\n') == NULL) + { + char altbuf[BUFSIZ]; + do + if (fgets (altbuf, sizeof altbuf, fp) == NULL) + /* Make sure the inner loop will be left. The outer loop + will exit at the `feof' test. */ + break; + while (strchr (altbuf, '\n') == NULL); + } + + cp = buf; + /* Ignore leading white space. */ + while (isspace (cp[0])) + ++cp; + + /* A leading '#' signals a comment line. */ + if (cp[0] != '\0' && cp[0] != '#') + { + alias = cp++; + while (cp[0] != '\0' && !isspace (cp[0])) + ++cp; + /* Terminate alias name. */ + if (cp[0] != '\0') + *cp++ = '\0'; + + /* Now look for the beginning of the value. */ + while (isspace (cp[0])) + ++cp; + + if (cp[0] != '\0') + { + size_t alias_len; + size_t value_len; + + value = cp++; + while (cp[0] != '\0' && !isspace (cp[0])) + ++cp; + /* Terminate value. */ + if (cp[0] == '\n') + { + /* This has to be done to make the following test + for the end of line possible. We are looking for + the terminating '\n' which do not overwrite here. */ + *cp++ = '\0'; + *cp = '\n'; + } + else if (cp[0] != '\0') + *cp++ = '\0'; + + if (nmap >= maxmap) + if (__builtin_expect (extend_alias_table (), 0)) + return added; + + alias_len = strlen (alias) + 1; + value_len = strlen (value) + 1; + + if (string_space_act + alias_len + value_len > string_space_max) + { + /* Increase size of memory pool. */ + size_t new_size = (string_space_max + + (alias_len + value_len > 1024 + ? alias_len + value_len : 1024)); + char *new_pool = (char *) realloc (string_space, new_size); + if (new_pool == NULL) + return added; + + if (__builtin_expect (string_space != new_pool, 0)) + { + size_t i; + + for (i = 0; i < nmap; i++) + { + map[i].alias += new_pool - string_space; + map[i].value += new_pool - string_space; + } + } + + string_space = new_pool; + string_space_max = new_size; + } + + map[nmap].alias = memcpy (&string_space[string_space_act], + alias, alias_len); + string_space_act += alias_len; + + map[nmap].value = memcpy (&string_space[string_space_act], + value, value_len); + string_space_act += value_len; + + ++nmap; + ++added; + } + } + } + + /* Should we test for ferror()? I think we have to silently ignore + errors. --drepper */ + fclose (fp); + + if (added > 0) + qsort (map, nmap, sizeof (struct alias_map), + (int (*) PARAMS ((const void *, const void *))) alias_compare); + + return added; +} + + +static int +extend_alias_table () +{ + size_t new_size; + struct alias_map *new_map; + + new_size = maxmap == 0 ? 100 : 2 * maxmap; + new_map = (struct alias_map *) realloc (map, (new_size + * sizeof (struct alias_map))); + if (new_map == NULL) + /* Simply don't extend: we don't have any more core. */ + return -1; + + map = new_map; + maxmap = new_size; + return 0; +} + + +#ifdef _LIBC +static void __attribute__ ((unused)) +free_mem (void) +{ + if (string_space != NULL) + free (string_space); + if (map != NULL) + free (map); +} +text_set_element (__libc_subfreeres, free_mem); +#endif + + +static int +alias_compare (map1, map2) + const struct alias_map *map1; + const struct alias_map *map2; +{ +#if defined _LIBC || defined HAVE_STRCASECMP + return strcasecmp (map1->alias, map2->alias); +#else + const unsigned char *p1 = (const unsigned char *) map1->alias; + const unsigned char *p2 = (const unsigned char *) map2->alias; + unsigned char c1, c2; + + if (p1 == p2) + return 0; + + do + { + /* I know this seems to be odd but the tolower() function in + some systems libc cannot handle nonalpha characters. */ + c1 = isupper (*p1) ? tolower (*p1) : *p1; + c2 = isupper (*p2) ? tolower (*p2) : *p2; + if (c1 == '\0') + break; + ++p1; + ++p2; + } + while (c1 == c2); + + return c1 - c2; +#endif +} diff --git a/libprozilla/intl/ngettext.c b/libprozilla/intl/ngettext.c new file mode 100644 index 0000000..8b1fa02 --- /dev/null +++ b/libprozilla/intl/ngettext.c @@ -0,0 +1,67 @@ +/* Implementation of ngettext(3) function. + Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define __need_NULL +# include +#else +# include /* Just for NULL. */ +#endif + +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif + +#include + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define NGETTEXT __ngettext +# define DCNGETTEXT __dcngettext +#else +# define NGETTEXT ngettext__ +# define DCNGETTEXT dcngettext__ +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +char * +NGETTEXT (msgid1, msgid2, n) + const char *msgid1; + const char *msgid2; + unsigned long int n; +{ + return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__ngettext, ngettext); +#endif diff --git a/libprozilla/intl/plural.c b/libprozilla/intl/plural.c new file mode 100644 index 0000000..8191335 --- /dev/null +++ b/libprozilla/intl/plural.c @@ -0,0 +1,1325 @@ + +/* A Bison parser, made from plural.y + by GNU Bison version 1.28 */ + +#define YYBISON 1 /* Identify Bison output. */ + +#define yyparse __gettextparse +#define yylex __gettextlex +#define yyerror __gettexterror +#define yylval __gettextlval +#define yychar __gettextchar +#define yydebug __gettextdebug +#define yynerrs __gettextnerrs +#define EQUOP2 257 +#define CMPOP2 258 +#define ADDOP2 259 +#define MULOP2 260 +#define NUMBER 261 + +#line 1 "plural.y" + +/* Expression parsing for plural form selection. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* The bison generated parser uses alloca. AIX 3 forces us to put this + declaration at the beginning of the file. The declaration in bison's + skeleton file comes too late. This must come before + because may include arbitrary system headers. */ +#if defined _AIX && !defined __GNUC__ + #pragma alloca +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include "gettextP.h" + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define FREE_EXPRESSION __gettext_free_exp +#else +# define FREE_EXPRESSION gettext_free_exp__ +# define __gettextparse gettextparse__ +#endif + +#define YYLEX_PARAM &((struct parse_args *) arg)->cp +#define YYPARSE_PARAM arg + +#line 52 "plural.y" +typedef union { + unsigned long int num; + enum operator op; + struct expression *exp; +} YYSTYPE; +#line 58 "plural.y" + +/* Prototypes for local functions. */ +static struct expression *new_exp PARAMS ((int nargs, enum operator op, + struct expression * const *args)); +static inline struct expression *new_exp_0 PARAMS ((enum operator op)); +static inline struct expression *new_exp_1 PARAMS ((enum operator op, + struct expression *right)); +static struct expression *new_exp_2 PARAMS ((enum operator op, + struct expression *left, + struct expression *right)); +static inline struct expression *new_exp_3 PARAMS ((enum operator op, + struct expression *bexp, + struct expression *tbranch, + struct expression *fbranch)); +static int yylex PARAMS ((YYSTYPE *lval, const char **pexp)); +static void yyerror PARAMS ((const char *str)); + +/* Allocation of expressions. */ + +static struct expression * +new_exp (nargs, op, args) + int nargs; + enum operator op; + struct expression * const *args; +{ + int i; + struct expression *newp; + + /* If any of the argument could not be malloc'ed, just return NULL. */ + for (i = nargs - 1; i >= 0; i--) + if (args[i] == NULL) + goto fail; + + /* Allocate a new expression. */ + newp = (struct expression *) malloc (sizeof (*newp)); + if (newp != NULL) + { + newp->nargs = nargs; + newp->operation = op; + for (i = nargs - 1; i >= 0; i--) + newp->val.args[i] = args[i]; + return newp; + } + + fail: + for (i = nargs - 1; i >= 0; i--) + FREE_EXPRESSION (args[i]); + + return NULL; +} + +static inline struct expression * +new_exp_0 (op) + enum operator op; +{ + return new_exp (0, op, NULL); +} + +static inline struct expression * +new_exp_1 (op, right) + enum operator op; + struct expression *right; +{ + struct expression *args[1]; + + args[0] = right; + return new_exp (1, op, args); +} + +static struct expression * +new_exp_2 (op, left, right) + enum operator op; + struct expression *left; + struct expression *right; +{ + struct expression *args[2]; + + args[0] = left; + args[1] = right; + return new_exp (2, op, args); +} + +static inline struct expression * +new_exp_3 (op, bexp, tbranch, fbranch) + enum operator op; + struct expression *bexp; + struct expression *tbranch; + struct expression *fbranch; +{ + struct expression *args[3]; + + args[0] = bexp; + args[1] = tbranch; + args[2] = fbranch; + return new_exp (3, op, args); +} + +#include + +#ifndef __cplusplus +#ifndef __STDC__ +#define const +#endif +#endif + + + +#define YYFINAL 27 +#define YYFLAG -32768 +#define YYNTBASE 16 + +#define YYTRANSLATE(x) ((unsigned)(x) <= 261 ? yytranslate[x] : 18) + +static const char yytranslate[] = { 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 10, 2, 2, 2, 2, 5, 2, 14, + 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 12, 2, 2, + 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 13, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 6, 7, 8, 9, + 11 +}; + +#if YYDEBUG != 0 +static const short yyprhs[] = { 0, + 0, 2, 8, 12, 16, 20, 24, 28, 32, 35, + 37, 39 +}; + +static const short yyrhs[] = { 17, + 0, 17, 3, 17, 12, 17, 0, 17, 4, 17, + 0, 17, 5, 17, 0, 17, 6, 17, 0, 17, + 7, 17, 0, 17, 8, 17, 0, 17, 9, 17, + 0, 10, 17, 0, 13, 0, 11, 0, 14, 17, + 15, 0 +}; + +#endif + +#if YYDEBUG != 0 +static const short yyrline[] = { 0, + 177, 185, 189, 193, 197, 201, 205, 209, 213, 217, + 221, 226 +}; +#endif + + +#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) + +static const char * const yytname[] = { "$","error","$undefined.","'?'","'|'", +"'&'","EQUOP2","CMPOP2","ADDOP2","MULOP2","'!'","NUMBER","':'","'n'","'('","')'", +"start","exp", NULL +}; +#endif + +static const short yyr1[] = { 0, + 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17 +}; + +static const short yyr2[] = { 0, + 1, 5, 3, 3, 3, 3, 3, 3, 2, 1, + 1, 3 +}; + +static const short yydefact[] = { 0, + 0, 11, 10, 0, 1, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 0, 3, 4, 5, 6, + 7, 8, 0, 2, 0, 0, 0 +}; + +static const short yydefgoto[] = { 25, + 5 +}; + +static const short yypact[] = { -9, + -9,-32768,-32768, -9, 34,-32768, 11, -9, -9, -9, + -9, -9, -9, -9,-32768, 24, 39, 43, 16, 26, + -3,-32768, -9, 34, 21, 53,-32768 +}; + +static const short yypgoto[] = {-32768, + -1 +}; + + +#define YYLAST 53 + + +static const short yytable[] = { 6, + 1, 2, 7, 3, 4, 14, 16, 17, 18, 19, + 20, 21, 22, 8, 9, 10, 11, 12, 13, 14, + 26, 24, 12, 13, 14, 15, 8, 9, 10, 11, + 12, 13, 14, 13, 14, 23, 8, 9, 10, 11, + 12, 13, 14, 10, 11, 12, 13, 14, 11, 12, + 13, 14, 27 +}; + +static const short yycheck[] = { 1, + 10, 11, 4, 13, 14, 9, 8, 9, 10, 11, + 12, 13, 14, 3, 4, 5, 6, 7, 8, 9, + 0, 23, 7, 8, 9, 15, 3, 4, 5, 6, + 7, 8, 9, 8, 9, 12, 3, 4, 5, 6, + 7, 8, 9, 5, 6, 7, 8, 9, 6, 7, + 8, 9, 0 +}; +#define YYPURE 1 + +/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ +#line 3 "/home/haible/gnu/arch/linuxlibc6/share/bison.simple" +/* This file comes from bison-1.28. */ + +/* Skeleton output parser for bison, + Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ + +/* This is the parser code that is written into each bison parser + when the %semantic_parser declaration is not specified in the grammar. + It was written by Richard Stallman by simplifying the hairy parser + used when %semantic_parser is specified. */ + +#ifndef YYSTACK_USE_ALLOCA +#ifdef alloca +#define YYSTACK_USE_ALLOCA +#else /* alloca not defined */ +#ifdef __GNUC__ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca +#else /* not GNU C. */ +#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) +#define YYSTACK_USE_ALLOCA +#include +#else /* not sparc */ +/* We think this test detects Watcom and Microsoft C. */ +/* This used to test MSDOS, but that is a bad idea + since that symbol is in the user namespace. */ +#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) +#if 0 /* No need for malloc.h, which pollutes the namespace; + instead, just don't use alloca. */ +#include +#endif +#else /* not MSDOS, or __TURBOC__ */ +#if defined(_AIX) +/* I don't know what this was needed for, but it pollutes the namespace. + So I turned it off. rms, 2 May 1997. */ +/* #include */ + #pragma alloca +#define YYSTACK_USE_ALLOCA +#else /* not MSDOS, or __TURBOC__, or _AIX */ +#if 0 +#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, + and on HPUX 10. Eventually we can turn this on. */ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca +#endif /* __hpux */ +#endif +#endif /* not _AIX */ +#endif /* not MSDOS, or __TURBOC__ */ +#endif /* not sparc */ +#endif /* not GNU C */ +#endif /* alloca not defined */ +#endif /* YYSTACK_USE_ALLOCA not defined */ + +#ifdef YYSTACK_USE_ALLOCA +#define YYSTACK_ALLOC alloca +#else +#define YYSTACK_ALLOC malloc +#endif + +/* Note: there must be only one dollar sign in this file. + It is replaced by the list of actions, each action + as one case of the switch. */ + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY -2 +#define YYEOF 0 +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrlab1 +/* Like YYERROR except do call yyerror. + This remains here temporarily to ease the + transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ +#define YYFAIL goto yyerrlab +#define YYRECOVERING() (!!yyerrstatus) +#define YYBACKUP(token, value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { yychar = (token), yylval = (value); \ + yychar1 = YYTRANSLATE (yychar); \ + YYPOPSTACK; \ + goto yybackup; \ + } \ + else \ + { yyerror ("syntax error: cannot back up"); YYERROR; } \ +while (0) + +#define YYTERROR 1 +#define YYERRCODE 256 + +#ifndef YYPURE +#define YYLEX yylex() +#endif + +#ifdef YYPURE +#ifdef YYLSP_NEEDED +#ifdef YYLEX_PARAM +#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) +#else +#define YYLEX yylex(&yylval, &yylloc) +#endif +#else /* not YYLSP_NEEDED */ +#ifdef YYLEX_PARAM +#define YYLEX yylex(&yylval, YYLEX_PARAM) +#else +#define YYLEX yylex(&yylval) +#endif +#endif /* not YYLSP_NEEDED */ +#endif + +/* If nonreentrant, generate the variables here */ + +#ifndef YYPURE + +int yychar; /* the lookahead symbol */ +YYSTYPE yylval; /* the semantic value of the */ + /* lookahead symbol */ + +#ifdef YYLSP_NEEDED +YYLTYPE yylloc; /* location data for the lookahead */ + /* symbol */ +#endif + +int yynerrs; /* number of parse errors so far */ +#endif /* not YYPURE */ + +#if YYDEBUG != 0 +int yydebug; /* nonzero means print parse trace */ +/* Since this is uninitialized, it does not stop multiple parsers + from coexisting. */ +#endif + +/* YYINITDEPTH indicates the initial size of the parser's stacks */ + +#ifndef YYINITDEPTH +#define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH is the maximum size the stacks can grow to + (effective only if the built-in stack extension method is used). */ + +#if YYMAXDEPTH == 0 +#undef YYMAXDEPTH +#endif + +#ifndef YYMAXDEPTH +#define YYMAXDEPTH 10000 +#endif + +/* Define __yy_memcpy. Note that the size argument + should be passed with type unsigned int, because that is what the non-GCC + definitions require. With GCC, __builtin_memcpy takes an arg + of type size_t, but it can handle unsigned int. */ + +#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ +#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) +#else /* not GNU C or C++ */ +#ifndef __cplusplus + +/* This is the most reliable way to avoid incompatibilities + in available built-in functions on various systems. */ +static void +__yy_memcpy (to, from, count) + char *to; + char *from; + unsigned int count; +{ + register char *f = from; + register char *t = to; + register int i = count; + + while (i-- > 0) + *t++ = *f++; +} + +#else /* __cplusplus */ + +/* This is the most reliable way to avoid incompatibilities + in available built-in functions on various systems. */ +static void +__yy_memcpy (char *to, char *from, unsigned int count) +{ + register char *t = to; + register char *f = from; + register int i = count; + + while (i-- > 0) + *t++ = *f++; +} + +#endif +#endif + +#line 217 "/home/haible/gnu/arch/linuxlibc6/share/bison.simple" + +/* The user can define YYPARSE_PARAM as the name of an argument to be passed + into yyparse. The argument should have type void *. + It should actually point to an object. + Grammar actions can access the variable by casting it + to the proper pointer type. */ + +#ifdef YYPARSE_PARAM +#ifdef __cplusplus +#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM +#define YYPARSE_PARAM_DECL +#else /* not __cplusplus */ +#define YYPARSE_PARAM_ARG YYPARSE_PARAM +#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; +#endif /* not __cplusplus */ +#else /* not YYPARSE_PARAM */ +#define YYPARSE_PARAM_ARG +#define YYPARSE_PARAM_DECL +#endif /* not YYPARSE_PARAM */ + +/* Prevent warning if -Wstrict-prototypes. */ +#ifdef __GNUC__ +#ifdef YYPARSE_PARAM +int yyparse (void *); +#else +int yyparse (void); +#endif +#endif + +int +yyparse(YYPARSE_PARAM_ARG) + YYPARSE_PARAM_DECL +{ + register int yystate; + register int yyn; + register short *yyssp; + register YYSTYPE *yyvsp; + int yyerrstatus; /* number of tokens to shift before error messages enabled */ + int yychar1 = 0; /* lookahead token as an internal (translated) token number */ + + short yyssa[YYINITDEPTH]; /* the state stack */ + YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ + + short *yyss = yyssa; /* refer to the stacks thru separate pointers */ + YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ + +#ifdef YYLSP_NEEDED + YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ + YYLTYPE *yyls = yylsa; + YYLTYPE *yylsp; + +#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) +#else +#define YYPOPSTACK (yyvsp--, yyssp--) +#endif + + int yystacksize = YYINITDEPTH; + int yyfree_stacks = 0; + +#ifdef YYPURE + int yychar; + YYSTYPE yylval; + int yynerrs; +#ifdef YYLSP_NEEDED + YYLTYPE yylloc; +#endif +#endif + + YYSTYPE yyval; /* the variable used to return */ + /* semantic values from the action */ + /* routines */ + + int yylen; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Starting parse\n"); +#endif + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss - 1; + yyvsp = yyvs; +#ifdef YYLSP_NEEDED + yylsp = yyls; +#endif + +/* Push a new state, which is found in yystate . */ +/* In all cases, when you get here, the value and location stacks + have just been pushed. so pushing a state here evens the stacks. */ +yynewstate: + + *++yyssp = yystate; + + if (yyssp >= yyss + yystacksize - 1) + { + /* Give user a chance to reallocate the stack */ + /* Use copies of these so that the &'s don't force the real ones into memory. */ + YYSTYPE *yyvs1 = yyvs; + short *yyss1 = yyss; +#ifdef YYLSP_NEEDED + YYLTYPE *yyls1 = yyls; +#endif + + /* Get the current used size of the three stacks, in elements. */ + int size = yyssp - yyss + 1; + +#ifdef yyoverflow + /* Each stack pointer address is followed by the size of + the data in use in that stack, in bytes. */ +#ifdef YYLSP_NEEDED + /* This used to be a conditional around just the two extra args, + but that might be undefined if yyoverflow is a macro. */ + yyoverflow("parser stack overflow", + &yyss1, size * sizeof (*yyssp), + &yyvs1, size * sizeof (*yyvsp), + &yyls1, size * sizeof (*yylsp), + &yystacksize); +#else + yyoverflow("parser stack overflow", + &yyss1, size * sizeof (*yyssp), + &yyvs1, size * sizeof (*yyvsp), + &yystacksize); +#endif + + yyss = yyss1; yyvs = yyvs1; +#ifdef YYLSP_NEEDED + yyls = yyls1; +#endif +#else /* no yyoverflow */ + /* Extend the stack our own way. */ + if (yystacksize >= YYMAXDEPTH) + { + yyerror("parser stack overflow"); + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 2; + } + yystacksize *= 2; + if (yystacksize > YYMAXDEPTH) + yystacksize = YYMAXDEPTH; +#ifndef YYSTACK_USE_ALLOCA + yyfree_stacks = 1; +#endif + yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); + __yy_memcpy ((char *)yyss, (char *)yyss1, + size * (unsigned int) sizeof (*yyssp)); + yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); + __yy_memcpy ((char *)yyvs, (char *)yyvs1, + size * (unsigned int) sizeof (*yyvsp)); +#ifdef YYLSP_NEEDED + yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); + __yy_memcpy ((char *)yyls, (char *)yyls1, + size * (unsigned int) sizeof (*yylsp)); +#endif +#endif /* no yyoverflow */ + + yyssp = yyss + size - 1; + yyvsp = yyvs + size - 1; +#ifdef YYLSP_NEEDED + yylsp = yyls + size - 1; +#endif + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Stack size increased to %d\n", yystacksize); +#endif + + if (yyssp >= yyss + yystacksize - 1) + YYABORT; + } + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Entering state %d\n", yystate); +#endif + + goto yybackup; + yybackup: + +/* Do appropriate processing given the current state. */ +/* Read a lookahead token if we need one and don't already have one. */ +/* yyresume: */ + + /* First try to decide what to do without reference to lookahead token. */ + + yyn = yypact[yystate]; + if (yyn == YYFLAG) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* yychar is either YYEMPTY or YYEOF + or a valid token in external form. */ + + if (yychar == YYEMPTY) + { +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Reading a token: "); +#endif + yychar = YYLEX; + } + + /* Convert token to internal form (in yychar1) for indexing tables with */ + + if (yychar <= 0) /* This means end of input. */ + { + yychar1 = 0; + yychar = YYEOF; /* Don't call YYLEX any more */ + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Now at end of input.\n"); +#endif + } + else + { + yychar1 = YYTRANSLATE(yychar); + +#if YYDEBUG != 0 + if (yydebug) + { + fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); + /* Give the individual parser a way to print the precise meaning + of a token, for further debugging info. */ +#ifdef YYPRINT + YYPRINT (stderr, yychar, yylval); +#endif + fprintf (stderr, ")\n"); + } +#endif + } + + yyn += yychar1; + if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) + goto yydefault; + + yyn = yytable[yyn]; + + /* yyn is what to do for this token type in this state. + Negative => reduce, -yyn is rule number. + Positive => shift, yyn is new state. + New state is final state => don't bother to shift, + just return success. + 0, or most negative number => error. */ + + if (yyn < 0) + { + if (yyn == YYFLAG) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + else if (yyn == 0) + goto yyerrlab; + + if (yyn == YYFINAL) + YYACCEPT; + + /* Shift the lookahead token. */ + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); +#endif + + /* Discard the token being shifted unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + *++yyvsp = yylval; +#ifdef YYLSP_NEEDED + *++yylsp = yylloc; +#endif + + /* count tokens shifted since error; after three, turn off error status. */ + if (yyerrstatus) yyerrstatus--; + + yystate = yyn; + goto yynewstate; + +/* Do the default action for the current state. */ +yydefault: + + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + +/* Do a reduction. yyn is the number of a rule to reduce with. */ +yyreduce: + yylen = yyr2[yyn]; + if (yylen > 0) + yyval = yyvsp[1-yylen]; /* implement default value of the action */ + +#if YYDEBUG != 0 + if (yydebug) + { + int i; + + fprintf (stderr, "Reducing via rule %d (line %d), ", + yyn, yyrline[yyn]); + + /* Print the symbols being reduced, and their result. */ + for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) + fprintf (stderr, "%s ", yytname[yyrhs[i]]); + fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); + } +#endif + + + switch (yyn) { + +case 1: +#line 178 "plural.y" +{ + if (yyvsp[0].exp == NULL) + YYABORT; + ((struct parse_args *) arg)->res = yyvsp[0].exp; + ; + break;} +case 2: +#line 186 "plural.y" +{ + yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 3: +#line 190 "plural.y" +{ + yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 4: +#line 194 "plural.y" +{ + yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 5: +#line 198 "plural.y" +{ + yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 6: +#line 202 "plural.y" +{ + yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 7: +#line 206 "plural.y" +{ + yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 8: +#line 210 "plural.y" +{ + yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); + ; + break;} +case 9: +#line 214 "plural.y" +{ + yyval.exp = new_exp_1 (lnot, yyvsp[0].exp); + ; + break;} +case 10: +#line 218 "plural.y" +{ + yyval.exp = new_exp_0 (var); + ; + break;} +case 11: +#line 222 "plural.y" +{ + if ((yyval.exp = new_exp_0 (num)) != NULL) + yyval.exp->val.num = yyvsp[0].num; + ; + break;} +case 12: +#line 227 "plural.y" +{ + yyval.exp = yyvsp[-1].exp; + ; + break;} +} + /* the action file gets copied in in place of this dollarsign */ +#line 543 "/home/haible/gnu/arch/linuxlibc6/share/bison.simple" + + yyvsp -= yylen; + yyssp -= yylen; +#ifdef YYLSP_NEEDED + yylsp -= yylen; +#endif + +#if YYDEBUG != 0 + if (yydebug) + { + short *ssp1 = yyss - 1; + fprintf (stderr, "state stack now"); + while (ssp1 != yyssp) + fprintf (stderr, " %d", *++ssp1); + fprintf (stderr, "\n"); + } +#endif + + *++yyvsp = yyval; + +#ifdef YYLSP_NEEDED + yylsp++; + if (yylen == 0) + { + yylsp->first_line = yylloc.first_line; + yylsp->first_column = yylloc.first_column; + yylsp->last_line = (yylsp-1)->last_line; + yylsp->last_column = (yylsp-1)->last_column; + yylsp->text = 0; + } + else + { + yylsp->last_line = (yylsp+yylen-1)->last_line; + yylsp->last_column = (yylsp+yylen-1)->last_column; + } +#endif + + /* Now "shift" the result of the reduction. + Determine what state that goes to, + based on the state we popped back to + and the rule number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTBASE] + *yyssp; + if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTBASE]; + + goto yynewstate; + +yyerrlab: /* here on detecting error */ + + if (! yyerrstatus) + /* If not already recovering from an error, report this error. */ + { + ++yynerrs; + +#ifdef YYERROR_VERBOSE + yyn = yypact[yystate]; + + if (yyn > YYFLAG && yyn < YYLAST) + { + int size = 0; + char *msg; + int x, count; + + count = 0; + /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ + for (x = (yyn < 0 ? -yyn : 0); + x < (sizeof(yytname) / sizeof(char *)); x++) + if (yycheck[x + yyn] == x) + size += strlen(yytname[x]) + 15, count++; + msg = (char *) malloc(size + 15); + if (msg != 0) + { + strcpy(msg, "parse error"); + + if (count < 5) + { + count = 0; + for (x = (yyn < 0 ? -yyn : 0); + x < (sizeof(yytname) / sizeof(char *)); x++) + if (yycheck[x + yyn] == x) + { + strcat(msg, count == 0 ? ", expecting `" : " or `"); + strcat(msg, yytname[x]); + strcat(msg, "'"); + count++; + } + } + yyerror(msg); + free(msg); + } + else + yyerror ("parse error; also virtual memory exceeded"); + } + else +#endif /* YYERROR_VERBOSE */ + yyerror("parse error"); + } + + goto yyerrlab1; +yyerrlab1: /* here on error raised explicitly by an action */ + + if (yyerrstatus == 3) + { + /* if just tried and failed to reuse lookahead token after an error, discard it. */ + + /* return failure if at end of input */ + if (yychar == YYEOF) + YYABORT; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); +#endif + + yychar = YYEMPTY; + } + + /* Else will try to reuse lookahead token + after shifting the error token. */ + + yyerrstatus = 3; /* Each real token shifted decrements this */ + + goto yyerrhandle; + +yyerrdefault: /* current state does not do anything special for the error token. */ + +#if 0 + /* This is wrong; only states that explicitly want error tokens + should shift them. */ + yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ + if (yyn) goto yydefault; +#endif + +yyerrpop: /* pop the current state because it cannot handle the error token */ + + if (yyssp == yyss) YYABORT; + yyvsp--; + yystate = *--yyssp; +#ifdef YYLSP_NEEDED + yylsp--; +#endif + +#if YYDEBUG != 0 + if (yydebug) + { + short *ssp1 = yyss - 1; + fprintf (stderr, "Error: state stack now"); + while (ssp1 != yyssp) + fprintf (stderr, " %d", *++ssp1); + fprintf (stderr, "\n"); + } +#endif + +yyerrhandle: + + yyn = yypact[yystate]; + if (yyn == YYFLAG) + goto yyerrdefault; + + yyn += YYTERROR; + if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) + goto yyerrdefault; + + yyn = yytable[yyn]; + if (yyn < 0) + { + if (yyn == YYFLAG) + goto yyerrpop; + yyn = -yyn; + goto yyreduce; + } + else if (yyn == 0) + goto yyerrpop; + + if (yyn == YYFINAL) + YYACCEPT; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Shifting error token, "); +#endif + + *++yyvsp = yylval; +#ifdef YYLSP_NEEDED + *++yylsp = yylloc; +#endif + + yystate = yyn; + goto yynewstate; + + yyacceptlab: + /* YYACCEPT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 0; + + yyabortlab: + /* YYABORT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 1; +} +#line 232 "plural.y" + + +void +internal_function +FREE_EXPRESSION (exp) + struct expression *exp; +{ + if (exp == NULL) + return; + + /* Handle the recursive case. */ + switch (exp->nargs) + { + case 3: + FREE_EXPRESSION (exp->val.args[2]); + /* FALLTHROUGH */ + case 2: + FREE_EXPRESSION (exp->val.args[1]); + /* FALLTHROUGH */ + case 1: + FREE_EXPRESSION (exp->val.args[0]); + /* FALLTHROUGH */ + default: + break; + } + + free (exp); +} + + +static int +yylex (lval, pexp) + YYSTYPE *lval; + const char **pexp; +{ + const char *exp = *pexp; + int result; + + while (1) + { + if (exp[0] == '\0') + { + *pexp = exp; + return YYEOF; + } + + if (exp[0] != ' ' && exp[0] != '\t') + break; + + ++exp; + } + + result = *exp++; + switch (result) + { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + { + unsigned long int n = result - '0'; + while (exp[0] >= '0' && exp[0] <= '9') + { + n *= 10; + n += exp[0] - '0'; + ++exp; + } + lval->num = n; + result = NUMBER; + } + break; + + case '=': + if (exp[0] == '=') + { + ++exp; + lval->op = equal; + result = EQUOP2; + } + else + result = YYERRCODE; + break; + + case '!': + if (exp[0] == '=') + { + ++exp; + lval->op = not_equal; + result = EQUOP2; + } + break; + + case '&': + case '|': + if (exp[0] == result) + ++exp; + else + result = YYERRCODE; + break; + + case '<': + if (exp[0] == '=') + { + ++exp; + lval->op = less_or_equal; + } + else + lval->op = less_than; + result = CMPOP2; + break; + + case '>': + if (exp[0] == '=') + { + ++exp; + lval->op = greater_or_equal; + } + else + lval->op = greater_than; + result = CMPOP2; + break; + + case '*': + lval->op = mult; + result = MULOP2; + break; + + case '/': + lval->op = divide; + result = MULOP2; + break; + + case '%': + lval->op = module; + result = MULOP2; + break; + + case '+': + lval->op = plus; + result = ADDOP2; + break; + + case '-': + lval->op = minus; + result = ADDOP2; + break; + + case 'n': + case '?': + case ':': + case '(': + case ')': + /* Nothing, just return the character. */ + break; + + case ';': + case '\n': + case '\0': + /* Be safe and let the user call this function again. */ + --exp; + result = YYEOF; + break; + + default: + result = YYERRCODE; +#if YYDEBUG != 0 + --exp; +#endif + break; + } + + *pexp = exp; + + return result; +} + + +static void +yyerror (str) + const char *str; +{ + /* Do nothing. We don't print error messages here. */ +} diff --git a/libprozilla/intl/plural.y b/libprozilla/intl/plural.y new file mode 100644 index 0000000..42ffa0e --- /dev/null +++ b/libprozilla/intl/plural.y @@ -0,0 +1,412 @@ +%{ +/* Expression parsing for plural form selection. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. + Written by Ulrich Drepper , 2000. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* The bison generated parser uses alloca. AIX 3 forces us to put this + declaration at the beginning of the file. The declaration in bison's + skeleton file comes too late. This must come before + because may include arbitrary system headers. */ +#if defined _AIX && !defined __GNUC__ + #pragma alloca +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include "gettextP.h" + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define FREE_EXPRESSION __gettext_free_exp +#else +# define FREE_EXPRESSION gettext_free_exp__ +# define __gettextparse gettextparse__ +#endif + +#define YYLEX_PARAM &((struct parse_args *) arg)->cp +#define YYPARSE_PARAM arg +%} +%pure_parser +%expect 10 + +%union { + unsigned long int num; + enum operator op; + struct expression *exp; +} + +%{ +/* Prototypes for local functions. */ +static struct expression *new_exp PARAMS ((int nargs, enum operator op, + struct expression * const *args)); +static inline struct expression *new_exp_0 PARAMS ((enum operator op)); +static inline struct expression *new_exp_1 PARAMS ((enum operator op, + struct expression *right)); +static struct expression *new_exp_2 PARAMS ((enum operator op, + struct expression *left, + struct expression *right)); +static inline struct expression *new_exp_3 PARAMS ((enum operator op, + struct expression *bexp, + struct expression *tbranch, + struct expression *fbranch)); +static int yylex PARAMS ((YYSTYPE *lval, const char **pexp)); +static void yyerror PARAMS ((const char *str)); + +/* Allocation of expressions. */ + +static struct expression * +new_exp (nargs, op, args) + int nargs; + enum operator op; + struct expression * const *args; +{ + int i; + struct expression *newp; + + /* If any of the argument could not be malloc'ed, just return NULL. */ + for (i = nargs - 1; i >= 0; i--) + if (args[i] == NULL) + goto fail; + + /* Allocate a new expression. */ + newp = (struct expression *) malloc (sizeof (*newp)); + if (newp != NULL) + { + newp->nargs = nargs; + newp->operation = op; + for (i = nargs - 1; i >= 0; i--) + newp->val.args[i] = args[i]; + return newp; + } + + fail: + for (i = nargs - 1; i >= 0; i--) + FREE_EXPRESSION (args[i]); + + return NULL; +} + +static inline struct expression * +new_exp_0 (op) + enum operator op; +{ + return new_exp (0, op, NULL); +} + +static inline struct expression * +new_exp_1 (op, right) + enum operator op; + struct expression *right; +{ + struct expression *args[1]; + + args[0] = right; + return new_exp (1, op, args); +} + +static struct expression * +new_exp_2 (op, left, right) + enum operator op; + struct expression *left; + struct expression *right; +{ + struct expression *args[2]; + + args[0] = left; + args[1] = right; + return new_exp (2, op, args); +} + +static inline struct expression * +new_exp_3 (op, bexp, tbranch, fbranch) + enum operator op; + struct expression *bexp; + struct expression *tbranch; + struct expression *fbranch; +{ + struct expression *args[3]; + + args[0] = bexp; + args[1] = tbranch; + args[2] = fbranch; + return new_exp (3, op, args); +} + +%} + +/* This declares that all operators have the same associativity and the + precedence order as in C. See [Harbison, Steele: C, A Reference Manual]. + There is no unary minus and no bitwise operators. + Operators with the same syntactic behaviour have been merged into a single + token, to save space in the array generated by bison. */ +%right '?' /* ? */ +%left '|' /* || */ +%left '&' /* && */ +%left EQUOP2 /* == != */ +%left CMPOP2 /* < > <= >= */ +%left ADDOP2 /* + - */ +%left MULOP2 /* * / % */ +%right '!' /* ! */ + +%token EQUOP2 CMPOP2 ADDOP2 MULOP2 +%token NUMBER +%type exp + +%% + +start: exp + { + if ($1 == NULL) + YYABORT; + ((struct parse_args *) arg)->res = $1; + } + ; + +exp: exp '?' exp ':' exp + { + $$ = new_exp_3 (qmop, $1, $3, $5); + } + | exp '|' exp + { + $$ = new_exp_2 (lor, $1, $3); + } + | exp '&' exp + { + $$ = new_exp_2 (land, $1, $3); + } + | exp EQUOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp CMPOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp ADDOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | exp MULOP2 exp + { + $$ = new_exp_2 ($2, $1, $3); + } + | '!' exp + { + $$ = new_exp_1 (lnot, $2); + } + | 'n' + { + $$ = new_exp_0 (var); + } + | NUMBER + { + if (($$ = new_exp_0 (num)) != NULL) + $$->val.num = $1; + } + | '(' exp ')' + { + $$ = $2; + } + ; + +%% + +void +internal_function +FREE_EXPRESSION (exp) + struct expression *exp; +{ + if (exp == NULL) + return; + + /* Handle the recursive case. */ + switch (exp->nargs) + { + case 3: + FREE_EXPRESSION (exp->val.args[2]); + /* FALLTHROUGH */ + case 2: + FREE_EXPRESSION (exp->val.args[1]); + /* FALLTHROUGH */ + case 1: + FREE_EXPRESSION (exp->val.args[0]); + /* FALLTHROUGH */ + default: + break; + } + + free (exp); +} + + +static int +yylex (lval, pexp) + YYSTYPE *lval; + const char **pexp; +{ + const char *exp = *pexp; + int result; + + while (1) + { + if (exp[0] == '\0') + { + *pexp = exp; + return YYEOF; + } + + if (exp[0] != ' ' && exp[0] != '\t') + break; + + ++exp; + } + + result = *exp++; + switch (result) + { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + { + unsigned long int n = result - '0'; + while (exp[0] >= '0' && exp[0] <= '9') + { + n *= 10; + n += exp[0] - '0'; + ++exp; + } + lval->num = n; + result = NUMBER; + } + break; + + case '=': + if (exp[0] == '=') + { + ++exp; + lval->op = equal; + result = EQUOP2; + } + else + result = YYERRCODE; + break; + + case '!': + if (exp[0] == '=') + { + ++exp; + lval->op = not_equal; + result = EQUOP2; + } + break; + + case '&': + case '|': + if (exp[0] == result) + ++exp; + else + result = YYERRCODE; + break; + + case '<': + if (exp[0] == '=') + { + ++exp; + lval->op = less_or_equal; + } + else + lval->op = less_than; + result = CMPOP2; + break; + + case '>': + if (exp[0] == '=') + { + ++exp; + lval->op = greater_or_equal; + } + else + lval->op = greater_than; + result = CMPOP2; + break; + + case '*': + lval->op = mult; + result = MULOP2; + break; + + case '/': + lval->op = divide; + result = MULOP2; + break; + + case '%': + lval->op = module; + result = MULOP2; + break; + + case '+': + lval->op = plus; + result = ADDOP2; + break; + + case '-': + lval->op = minus; + result = ADDOP2; + break; + + case 'n': + case '?': + case ':': + case '(': + case ')': + /* Nothing, just return the character. */ + break; + + case ';': + case '\n': + case '\0': + /* Be safe and let the user call this function again. */ + --exp; + result = YYEOF; + break; + + default: + result = YYERRCODE; +#if YYDEBUG != 0 + --exp; +#endif + break; + } + + *pexp = exp; + + return result; +} + + +static void +yyerror (str) + const char *str; +{ + /* Do nothing. We don't print error messages here. */ +} diff --git a/libprozilla/intl/po2tbl.sed b/libprozilla/intl/po2tbl.sed new file mode 100644 index 0000000..e69de29 diff --git a/libprozilla/intl/ref-add.sin b/libprozilla/intl/ref-add.sin new file mode 100644 index 0000000..167374e --- /dev/null +++ b/libprozilla/intl/ref-add.sin @@ -0,0 +1,31 @@ +# Add this package to a list of references stored in a text file. +# +# Copyright (C) 2000 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. +# +# Written by Bruno Haible . +# +/^# Packages using this file: / { + s/# Packages using this file:// + ta + :a + s/ @PACKAGE@ / @PACKAGE@ / + tb + s/ $/ @PACKAGE@ / + :b + s/^/# Packages using this file:/ +} diff --git a/libprozilla/intl/ref-del.sin b/libprozilla/intl/ref-del.sin new file mode 100644 index 0000000..613cf37 --- /dev/null +++ b/libprozilla/intl/ref-del.sin @@ -0,0 +1,26 @@ +# Remove this package from a list of references stored in a text file. +# +# Copyright (C) 2000 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU Library General Public License as published +# by the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. +# +# Written by Bruno Haible . +# +/^# Packages using this file: / { + s/# Packages using this file:// + s/ @PACKAGE@ / / + s/^/# Packages using this file:/ +} diff --git a/libprozilla/intl/textdomain.c b/libprozilla/intl/textdomain.c new file mode 100644 index 0000000..05c2fd7 --- /dev/null +++ b/libprozilla/intl/textdomain.c @@ -0,0 +1,141 @@ +/* Implementation of the textdomain(3) function. + Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#ifdef _LIBC +# include +#else +# include "libgnuintl.h" +#endif +#include "gettextP.h" + +#ifdef _LIBC +/* We have to handle multi-threaded applications. */ +# include +#else +/* Provide dummy implementation if this is outside glibc. */ +# define __libc_rwlock_define(CLASS, NAME) +# define __libc_rwlock_wrlock(NAME) +# define __libc_rwlock_unlock(NAME) +#endif + +/* The internal variables in the standalone libintl.a must have different + names than the internal variables in GNU libc, otherwise programs + using libintl.a cannot be linked statically. */ +#if !defined _LIBC +# define _nl_default_default_domain _nl_default_default_domain__ +# define _nl_current_default_domain _nl_current_default_domain__ +#endif + +/* @@ end of prolog @@ */ + +/* Name of the default text domain. */ +extern const char _nl_default_default_domain[]; + +/* Default text domain in which entries for gettext(3) are to be found. */ +extern const char *_nl_current_default_domain; + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define TEXTDOMAIN __textdomain +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define TEXTDOMAIN textdomain__ +#endif + +/* Lock variable to protect the global data in the gettext implementation. */ +__libc_rwlock_define (extern, _nl_state_lock) + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +char * +TEXTDOMAIN (domainname) + const char *domainname; +{ + char *new_domain; + char *old_domain; + + /* A NULL pointer requests the current setting. */ + if (domainname == NULL) + return (char *) _nl_current_default_domain; + + __libc_rwlock_wrlock (_nl_state_lock); + + old_domain = (char *) _nl_current_default_domain; + + /* If domain name is the null string set to default domain "messages". */ + if (domainname[0] == '\0' + || strcmp (domainname, _nl_default_default_domain) == 0) + { + _nl_current_default_domain = _nl_default_default_domain; + new_domain = (char *) _nl_current_default_domain; + } + else if (strcmp (domainname, old_domain) == 0) + /* This can happen and people will use it to signal that some + environment variable changed. */ + new_domain = old_domain; + else + { + /* If the following malloc fails `_nl_current_default_domain' + will be NULL. This value will be returned and so signals we + are out of core. */ +#if defined _LIBC || defined HAVE_STRDUP + new_domain = strdup (domainname); +#else + size_t len = strlen (domainname) + 1; + new_domain = (char *) malloc (len); + if (new_domain != NULL) + memcpy (new_domain, domainname, len); +#endif + + if (new_domain != NULL) + _nl_current_default_domain = new_domain; + } + + /* We use this possibility to signal a change of the loaded catalogs + since this is most likely the case and there is no other easy we + to do it. Do it only when the call was successful. */ + if (new_domain != NULL) + { + ++_nl_msg_cat_cntr; + + if (old_domain != new_domain && old_domain != _nl_default_default_domain) + free (old_domain); + } + + __libc_rwlock_unlock (_nl_state_lock); + + return new_domain; +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__textdomain, textdomain); +#endif diff --git a/libprozilla/libtool.m4 b/libprozilla/libtool.m4 new file mode 100644 index 0000000..03c26f0 --- /dev/null +++ b/libprozilla/libtool.m4 @@ -0,0 +1,3704 @@ +# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- +## Copyright 1996, 1997, 1998, 1999, 2000, 2001 +## Free Software Foundation, Inc. +## Originally by Gordon Matzigkeit , 1996 +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +## +## As a special exception to the GNU General Public License, if you +## distribute this file as part of a program that contains a +## configuration script generated by Autoconf, you may include it under +## the same distribution terms that you use for the rest of that program. + +# serial 46 AC_PROG_LIBTOOL + +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +]) + +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.13)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl +AC_REQUIRE([LT_AC_PROG_SED])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +_LT_AC_PROG_ECHO_BACKSLASH +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE(libtool-lock, + [ --disable-libtool-lock avoid locking (might break parallel builds)]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_SAVE + AC_LANG_C + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_RESTORE]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + + # recent cygwin and mingw systems supply a stub DllMain which the user + # can override, but on older systems we have to supply one + AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain, + [AC_TRY_LINK([], + [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*); + DllMain (0, 0, 0);], + [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])]) + + case $host/$CC in + *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*) + # old mingw systems require "-dll" to link a DLL, while more recent ones + # require "-mdll" + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -mdll" + AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch, + [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])]) + CFLAGS="$SAVE_CFLAGS" ;; + *-*-cygwin* | *-*-pw32*) + # cygwin systems need to pass --dll to the linker, and not link + # crt.o which will require a WinMain@16 definition. + lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;; + esac + ;; + ]) +esac + +_LT_AC_LTCONFIG_HACK + +]) + +# AC_LIBTOOL_HEADER_ASSERT +# ------------------------ +AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT], +[AC_CACHE_CHECK([whether $CC supports assert without backlinking], + [lt_cv_func_assert_works], + [case $host in + *-*-solaris*) + if test "$GCC" = yes && test "$with_gnu_ld" != yes; then + case `$CC --version 2>/dev/null` in + [[12]].*) lt_cv_func_assert_works=no ;; + *) lt_cv_func_assert_works=yes ;; + esac + fi + ;; + esac]) + +if test "x$lt_cv_func_assert_works" = xyes; then + AC_CHECK_HEADERS(assert.h) +fi +])# AC_LIBTOOL_HEADER_ASSERT + +# _LT_AC_CHECK_DLFCN +# -------------------- +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h) +])# _LT_AC_CHECK_DLFCN + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris* | sysv5*) + symcode='[[BDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $host_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[[ABCDGISTW]]' +fi + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. +lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[[]] = +{ +EOF + sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$no_builtin_flag" + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AC_FD_CC + fi + else + echo "cannot find nm_test_var in $nlist" >&AC_FD_CC + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC + fi + else + echo "$progname: failed program was:" >&AC_FD_CC + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +if test -z "$lt_cv_sys_global_symbol_pipe"; then + global_symbol_to_cdecl= + global_symbol_to_c_name_address= +else + global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" + global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" +fi +if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; +then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + +# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR +# --------------------------------- +AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR], +[# Find the correct PATH separator. Usually this is `:', but +# DJGPP uses `;' like DOS. +if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) lt_cv_sys_path_separator=';' ;; + *) lt_cv_sys_path_separator=':' ;; + esac + PATH_SEPARATOR=$lt_cv_sys_path_separator +fi +])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +AC_DIVERT_POP +])# _LT_AC_PROG_ECHO_BACKSLASH + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ------------------------------------------------------------------ +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[if test "$cross_compiling" = yes; then : + [$4] +else + AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_unknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + +# AC_LIBTOOL_DLOPEN_SELF +# ------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + cygwin* | mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + +AC_DEFUN([_LT_AC_LTCONFIG_HACK], +[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='s/\([[\\"\\`$\\\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([[\\"\\`\\\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" +need_locks="$enable_libtool_lock" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +if test x"$host" != x"$build"; then + ac_tool_prefix=${host_alias}- +else + ac_tool_prefix= +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case $host_os in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="[$]2" + +## FIXME: this should be a separate macro +## +AC_MSG_CHECKING([for objdir]) +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +AC_MSG_RESULT($objdir) +## +## END FIXME + + +## FIXME: this should be a separate macro +## +AC_ARG_WITH(pic, +[ --with-pic try to use only PIC/non-PIC objects [default=use both]], +pic_mode="$withval", pic_mode=default) +test -z "$pic_mode" && pic_mode=default + +# We assume here that the value for lt_cv_prog_cc_pic will not be cached +# in isolation, and that seeing it set (from the cache) indicates that +# the associated values are set (in the cache) correctly too. +AC_MSG_CHECKING([for $compiler option to produce PIC]) +AC_CACHE_VAL(lt_cv_prog_cc_pic, +[ lt_cv_prog_cc_pic= + lt_cv_prog_cc_shlib= + lt_cv_prog_cc_wl= + lt_cv_prog_cc_static= + lt_cv_prog_cc_no_builtin= + lt_cv_prog_cc_can_build_shared=$can_build_shared + + if test "$GCC" = yes; then + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-static' + + case $host_os in + aix*) + # Below there is a dirty hack to force normal static linking with -ldl + # The problem is because libdl dynamically linked with both libc and + # libC (AIX C++ library), which obviously doesn't included in libraries + # list by gcc. This cause undefined symbols with -static flags. + # This hack allows C programs to be linked with "-static -ldl", but + # not sure about C++ programs. + lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_cv_prog_cc_pic='-fno-common' + ;; + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_cv_prog_cc_pic=-Kconform_pic + fi + ;; + *) + lt_cv_prog_cc_pic='-fPIC' + ;; + esac + else + # PORTME Check for PIC flags for the system compiler. + case $host_os in + aix3* | aix4* | aix5*) + lt_cv_prog_cc_wl='-Wl,' + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_cv_prog_cc_static='-Bstatic' + else + lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + hpux9* | hpux10* | hpux11*) + # Is there a better lt_cv_prog_cc_static that works with the bundled CC? + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" + lt_cv_prog_cc_pic='+Z' + ;; + + irix5* | irix6* | nonstopux*) + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + cygwin* | mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + + newsos6) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + ;; + + osf3* | osf4* | osf5*) + # All OSF/1 code is PIC. + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + ;; + + sco3.2v5*) + lt_cv_prog_cc_pic='-Kpic' + lt_cv_prog_cc_static='-dn' + lt_cv_prog_cc_shlib='-belf' + ;; + + solaris*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + sunos4*) + lt_cv_prog_cc_pic='-PIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Qoption ld ' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + uts4*) + lt_cv_prog_cc_pic='-pic' + lt_cv_prog_cc_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_cv_prog_cc_pic='-Kconform_pic' + lt_cv_prog_cc_static='-Bstatic' + fi + ;; + + *) + lt_cv_prog_cc_can_build_shared=no + ;; + esac + fi +]) +if test -z "$lt_cv_prog_cc_pic"; then + AC_MSG_RESULT([none]) +else + AC_MSG_RESULT([$lt_cv_prog_cc_pic]) + + # Check to make sure the pic_flag actually works. + AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works]) + AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" + AC_TRY_COMPILE([], [], [dnl + case $host_os in + hpux9* | hpux10* | hpux11*) + # On HP-UX, both CC and GCC only warn that PIC is supported... then + # they create non-PIC objects. So, if there were any warnings, we + # assume that PIC is not supported. + if test -s conftest.err; then + lt_cv_prog_cc_pic_works=no + else + lt_cv_prog_cc_pic_works=yes + fi + ;; + *) + lt_cv_prog_cc_pic_works=yes + ;; + esac + ], [dnl + lt_cv_prog_cc_pic_works=no + ]) + CFLAGS="$save_CFLAGS" + ]) + + if test "X$lt_cv_prog_cc_pic_works" = Xno; then + lt_cv_prog_cc_pic= + lt_cv_prog_cc_can_build_shared=no + else + lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" + fi + + AC_MSG_RESULT([$lt_cv_prog_cc_pic_works]) +fi +## +## END FIXME + +# Check for any special shared library compilation flags. +if test -n "$lt_cv_prog_cc_shlib"; then + AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries]) + if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then : + else + AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure]) + lt_cv_prog_cc_can_build_shared=no + fi +fi + +## FIXME: this should be a separate macro +## +AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works]) +AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl + lt_cv_prog_cc_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" + AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes]) + LDFLAGS="$save_LDFLAGS" +]) + +# Belt *and* braces to stop my trousers falling down: +test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +AC_MSG_RESULT([$lt_cv_prog_cc_static_works]) + +pic_flag="$lt_cv_prog_cc_pic" +special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +wl="$lt_cv_prog_cc_wl" +link_static_flag="$lt_cv_prog_cc_static" +no_builtin_flag="$lt_cv_prog_cc_no_builtin" +can_build_shared="$lt_cv_prog_cc_can_build_shared" +## +## END FIXME + + +## FIXME: this should be a separate macro +## +# Check to see if options -o and -c are simultaneously supported by compiler +AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext]) +AC_CACHE_VAL([lt_cv_compiler_c_o], [ +$rm -r conftest 2>/dev/null +mkdir conftest +cd conftest +echo "int some_variable = 0;" > conftest.$ac_ext +mkdir out +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +# that will create temporary files in the current directory regardless of +# the output directory. Thus, making CWD read-only will cause this test +# to fail, enabling locking or at least warning the user not to do parallel +# builds. +chmod -w . +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +compiler_c_o=no +if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s out/conftest.err; then + lt_cv_compiler_c_o=no + else + lt_cv_compiler_c_o=yes + fi +else + # Append any errors to the config.log. + cat out/conftest.err 1>&AC_FD_CC + lt_cv_compiler_c_o=no +fi +CFLAGS="$save_CFLAGS" +chmod u+w . +$rm conftest* out/* +rmdir out +cd .. +rmdir conftest +$rm -r conftest 2>/dev/null +]) +compiler_c_o=$lt_cv_compiler_c_o +AC_MSG_RESULT([$compiler_c_o]) + +if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + AC_MSG_CHECKING([if $compiler supports -c -o file.lo]) + AC_CACHE_VAL([lt_cv_compiler_o_lo], [ + lt_cv_compiler_o_lo=no + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + save_objext="$ac_objext" + ac_objext=lo + AC_TRY_COMPILE([], [int some_variable = 0;], [dnl + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + lt_cv_compiler_o_lo=no + else + lt_cv_compiler_o_lo=yes + fi + ]) + ac_objext="$save_objext" + CFLAGS="$save_CFLAGS" + ]) + compiler_o_lo=$lt_cv_compiler_o_lo + AC_MSG_RESULT([$compiler_o_lo]) +else + compiler_o_lo=no +fi +## +## END FIXME + +## FIXME: this should be a separate macro +## +# Check to see if we can do hard links to lock some files if needed +hard_links="nottested" +if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +## +## END FIXME + +## FIXME: this should be a separate macro +## +if test "$GCC" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions]) + echo "int some_variable = 0;" > conftest.$ac_ext + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" + compiler_rtti_exceptions=no + AC_TRY_COMPILE([], [int some_variable = 0;], [dnl + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + compiler_rtti_exceptions=no + else + compiler_rtti_exceptions=yes + fi + ]) + CFLAGS="$save_CFLAGS" + AC_MSG_RESULT([$compiler_rtti_exceptions]) + + if test "$compiler_rtti_exceptions" = "yes"; then + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' + else + no_builtin_flag=' -fno-builtin' + fi +fi +## +## END FIXME + +## FIXME: this should be a separate macro +## +# See if the linker supports building shared libraries. +AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries]) + +allow_undefined_flag= +no_undefined_flag= +need_lib_prefix=unknown +need_version=unknown +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +archive_cmds= +archive_expsym_cmds= +old_archive_from_new_cmds= +old_archive_from_expsyms_cmds= +export_dynamic_flag_spec= +whole_archive_flag_spec= +thread_safe_flag_spec= +hardcode_into_libs=no +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= +link_all_deplibs=unknown +always_export_symbols=no +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +# include_expsyms should be a list of space-separated symbols to be *always* +# included in the symbol list +include_expsyms= +# exclude_expsyms can be an egrep regular expression of symbols to exclude +# it will be wrapped by ` (' and `)$', so one must not match beginning or +# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +# as well as any symbol that contains `d'. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +# platforms (ab)use it in PIC code, but their linkers get confused if +# the symbol is explicitly referenced. Since portable code cannot +# rely on this symbol name, it's probably fine to never include it in +# preloaded symbol tables. +extract_expsyms_cmds= + +case $host_os in +cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; +openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX, the GNU linker is very broken + # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=yes + + extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ + sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ + test -f $output_objdir/impgen.exe || (cd $output_objdir && \ + if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ + else $CC -o impgen impgen.c ; fi)~ + $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' + + old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' + + # cygwin and mingw dlls have different entry points and sets of symbols + # to exclude. + # FIXME: what about values for MSVC? + dll_entry=__cygwin_dll_entry@12 + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ + case $host_os in + mingw*) + # mingw values + dll_entry=_DllMainCRTStartup@12 + dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ + ;; + esac + + # mingw and cygwin differ, and it's simplest to just exclude the union + # of the two symbol sets. + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 + + # recent cygwin and mingw systems supply a stub DllMain which the user + # can override, but on older systems we have to supply one (in ltdll.c) + if test "x$lt_cv_need_dllmain" = "xyes"; then + ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " + ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ + test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' + else + ltdll_obj= + ltdll_cmds= + fi + + # Extract the symbol export list from an `--export-all' def file, + # then regenerate the def file from the symbol export list, so that + # the compiled dll only exports the symbol export list. + # Be careful not to strip the DATA tag left be newer dlltools. + export_symbols_cmds="$ltdll_cmds"' + $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ + sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' + + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is. + # If DATA tags from a recent dlltool are present, honour them! + archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname-def; + else + echo EXPORTS > $output_objdir/$soname-def; + _lt_hint=1; + cat $export_symbols | while read symbol; do + set dummy \$symbol; + case \[$]# in + 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; + 4) echo " \[$]2 \[$]3 \[$]4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;; + *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;; + esac; + _lt_hint=`expr 1 + \$_lt_hint`; + done; + fi~ + '"$ltdll_cmds"' + $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ + $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ + $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + case $host_os in + cygwin* | mingw* | pw32*) + # dlltool doesn't understand --whole-archive et. al. + whole_archive_flag_spec= + ;; + *) + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + ;; + esac + fi +else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + hardcode_direct=yes + archive_cmds='' + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + + shared_flag='-shared' + else + # not using gcc + if test "$host_cpu" = ia64; then + shared_flag='${wl}-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall can do strange things, so it is better to + # generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='${wl}-berok' + # This is a bit strange, but is similar to how AIX traditionally builds + # it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[[012]]) + allow_undefined_flag='-undefined suppress' + ;; + *) # Darwin 1.3 on + allow_undefined_flag='-flat_namespace -undefined suppress' + ;; + esac + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. Also zsh mangles + # `"' quotes if we put them in here... so don't! + archive_cmds='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs && $CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib ${lib}-master.o $deplibs$linker_flags $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)' + # We need to add '_' to the symbols in $export_symbols first + #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' + hardcode_direct=yes + hardcode_shlibpath_var=no + whole_archive_flag_spec='-all_load $convenience' + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9* | hpux10* | hpux11*) + case $host_os in + hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; + esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case "$host_os" in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + #Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + export_dynamic_flag_spec='${wl}-Bexport' + ;; + + solaris*) + # gcc --version < 3.0 without binutils cannot create self contained + # shared libraries reliably, requiring libgcc.a to resolve some of + # the object symbols generated in some cases. Libraries that use + # assert need libgcc.a to resolve __eprintf, for example. Linking + # a copy of libgcc.a into every shared library to guarantee resolving + # such symbols causes other problems: According to Tim Van Holder + # , C++ libraries end up with a separate + # (to the application) exception stack for one thing. + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + case `$CC --version 2>/dev/null` in + [[12]].*) + cat <&2 + +*** Warning: Releases of GCC earlier than version 3.0 cannot reliably +*** create self contained shared libraries on Solaris systems, without +*** introducing a dependency on libgcc.a. Therefore, libtool is disabling +*** -no-undefined support, which will at least allow you to build shared +*** libraries. However, you may find that when you link such libraries +*** into an application without using GCC, you have to manually add +*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to +*** upgrade to a newer version of GCC. Another option is to rebuild your +*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. + +EOF + no_undefined_flag= + ;; + esac + fi + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5uw7* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac +fi +AC_MSG_RESULT([$ld_shlibs]) +test "$ld_shlibs" = no && can_build_shared=no +## +## END FIXME + +## FIXME: this should be a separate macro +## +# Check hardcoding attributes. +AC_MSG_CHECKING([how to hardcode library paths into programs]) +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$hardcode_shlibpath_var" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +AC_MSG_RESULT([$hardcode_action]) +## +## END FIXME + +## FIXME: this should be a separate macro +## +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi +## +## END FIXME + +reload_cmds='$LD$reload_flag -o $output$reload_objs' +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +## FIXME: this should be a separate macro +## +# PORTME Fill in your ld.so characteristics +AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can + # not hardcode correct soname into executable. Probably we can + # add versioning support to collect2, so additional links can + # be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}.so$major' + fi + shlibpath_var=LIBPATH + fi + hardcode_into_libs=yes + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi4*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + export_dynamic_flag_spec=-rdynamic + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + need_version=no + need_lib_prefix=no + case $GCC,$host_os in + yes,cygwin*) + library_names_spec='$libname.dll.a' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' + postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog .libs/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + ;; + yes,mingw*) + library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"` + ;; + yes,pw32*) + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' + ;; + *) + library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' + soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + *) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) version_type=irix ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' + soname_spec='${libname}${release}.so$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case "$host_os" in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_version=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + hardcode_into_libs=yes + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='$libname.so.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no +## +## END FIXME + +## FIXME: this should be a separate macro +## +# Report the final consequences. +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) +## +## END FIXME + +## FIXME: this should be a separate macro +## +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) +## +## END FIXME + +## FIXME: this should be a separate macro +## +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) +## +## END FIXME + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +AC_LIBTOOL_DLOPEN_SELF + +## FIXME: this should be a separate macro +## +if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + AC_CACHE_VAL([lt_cv_archive_cmds_need_lc], + [$rm conftest* + echo 'static int dummy;' > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile); then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_cv_prog_cc_wl + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi]) + AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) + ;; + esac +fi +need_lc=${lt_cv_archive_cmds_need_lc-yes} +## +## END FIXME + +## FIXME: this should be a separate macro +## +# The second clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + : +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + test -f Makefile && make "$ltmain" +fi + +if test -f "$ltmain"; then + trap "$rm \"${ofile}T\"; exit 1" 1 2 15 + $rm -f "${ofile}T" + + echo creating $ofile + + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS SED \ + AR AR_FLAGS CC LD LN_S NM SHELL \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ + thread_safe_flag_spec whole_archive_flag_spec libname_spec \ + library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ + postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ + old_striplib striplib file_magic_cmd export_symbols_cmds \ + deplibs_check_method allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ + global_symbol_to_c_name_address \ + hardcode_libdir_flag_spec hardcode_libdir_separator \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case $var in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + cat <<__EOF__ > "${ofile}T" +#! $SHELL + +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996-2000 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="${SED} -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$need_lc + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# The default C compiler. +CC=$lt_CC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_pic_flag +pic_mode=$pic_mode + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_compiler_c_o + +# Can we write directly to a .lo ? +compiler_o_lo=$lt_compiler_o_lo + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_link_static_flag + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + case $host_os in + aix3*) + cat <<\EOF >> "${ofile}T" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + case $host_os in + cygwin* | mingw* | pw32* | os2*) + cat <<'EOF' >> "${ofile}T" + # This is a source program that is used to create dlls on Windows + # Don't remove nor modify the starting and closing comments +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ + # This is a source program that is used to create import libraries + # on Windows for dlls which lack them. Don't remove nor modify the + # starting and closing comments +# /* impgen.c starts here */ +# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +# +# This file is part of GNU libtool. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# */ +# +# #include /* for printf() */ +# #include /* for open(), lseek(), read() */ +# #include /* for O_RDONLY, O_BINARY */ +# #include /* for strdup() */ +# +# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +# #ifndef O_BINARY +# #define O_BINARY 0 +# #endif +# +# static unsigned int +# pe_get16 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[2]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 2); +# return b[0] + (b[1]<<8); +# } +# +# static unsigned int +# pe_get32 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[4]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 4); +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# static unsigned int +# pe_as32 (ptr) +# void *ptr; +# { +# unsigned char *b = ptr; +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# int +# main (argc, argv) +# int argc; +# char *argv[]; +# { +# int dll; +# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +# unsigned long export_rva, export_size, nsections, secptr, expptr; +# unsigned long name_rvas, nexp; +# unsigned char *expdata, *erva; +# char *filename, *dll_name; +# +# filename = argv[1]; +# +# dll = open(filename, O_RDONLY|O_BINARY); +# if (dll < 1) +# return 1; +# +# dll_name = filename; +# +# for (i=0; filename[i]; i++) +# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +# dll_name = filename + i +1; +# +# pe_header_offset = pe_get32 (dll, 0x3c); +# opthdr_ofs = pe_header_offset + 4 + 20; +# num_entries = pe_get32 (dll, opthdr_ofs + 92); +# +# if (num_entries < 1) /* no exports */ +# return 1; +# +# export_rva = pe_get32 (dll, opthdr_ofs + 96); +# export_size = pe_get32 (dll, opthdr_ofs + 100); +# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +# secptr = (pe_header_offset + 4 + 20 + +# pe_get16 (dll, pe_header_offset + 4 + 16)); +# +# expptr = 0; +# for (i = 0; i < nsections; i++) +# { +# char sname[8]; +# unsigned long secptr1 = secptr + 40 * i; +# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +# lseek(dll, secptr1, SEEK_SET); +# read(dll, sname, 8); +# if (vaddr <= export_rva && vaddr+vsize > export_rva) +# { +# expptr = fptr + (export_rva - vaddr); +# if (export_rva + export_size > vaddr + vsize) +# export_size = vsize - (export_rva - vaddr); +# break; +# } +# } +# +# expdata = (unsigned char*)malloc(export_size); +# lseek (dll, expptr, SEEK_SET); +# read (dll, expdata, export_size); +# erva = expdata - export_rva; +# +# nexp = pe_as32 (expdata+24); +# name_rvas = pe_as32 (expdata+32); +# +# printf ("EXPORTS\n"); +# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) + + mv -f "${ofile}T" "$ofile" || \ + (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") + chmod +x "$ofile" +fi +## +## END FIXME + +])# _LT_AC_LTCONFIG_HACK + +# AC_LIBTOOL_DLOPEN - enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) + +# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) + +# AC_ENABLE_SHARED - implement the --enable-shared flag +# Usage: AC_ENABLE_SHARED[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(shared, +changequote(<<, >>)dnl +<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case $enableval in +yes) enable_shared=yes ;; +no) enable_shared=no ;; +*) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl +]) + +# AC_DISABLE_SHARED - set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no)]) + +# AC_ENABLE_STATIC - implement the --enable-static flag +# Usage: AC_ENABLE_STATIC[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(static, +changequote(<<, >>)dnl +<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case $enableval in +yes) enable_static=yes ;; +no) enable_static=no ;; +*) + enable_static=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_static=AC_ENABLE_STATIC_DEFAULT)dnl +]) + +# AC_DISABLE_STATIC - set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no)]) + + +# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag +# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(fast-install, +changequote(<<, >>)dnl +<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], +changequote([, ])dnl +[p=${PACKAGE-default} +case $enableval in +yes) enable_fast_install=yes ;; +no) enable_fast_install=no ;; +*) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl +]) + +# AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no)]) + +# AC_LIBTOOL_PICMODE - implement the --with-pic flag +# Usage: AC_LIBTOOL_PICMODE[(MODE)] +# Where MODE is either `yes' or `no'. If omitted, it defaults to +# `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default)]) + + +# AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in + /*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; + ?:/*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +]) + + +# AC_PATH_MAGIC - find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl +AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH) + else + MAGIC_CMD=: + fi +fi +]) + + +# AC_PROG_LD - find the path to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH(gnu-ld, +[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], +test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | [[A-Za-z]]:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$lt_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_PROG_LD_GNU +]) + +# AC_PROG_LD_GNU - +AC_DEFUN([AC_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + lt_cv_prog_gnu_ld=yes +else + lt_cv_prog_gnu_ld=no +fi]) +with_gnu_ld=$lt_cv_prog_gnu_ld +]) + +# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker +# -- PORTME Some linkers may need a different reload flag. +AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], +[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag, +[lt_cv_ld_reload_flag='-r']) +reload_flag=$lt_cv_ld_reload_flag +test -n "$reload_flag" && reload_flag=" $reload_flag" +]) + +# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], +[AC_CACHE_CHECK([how to recognise dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given egrep regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi4*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin* | mingw* | pw32*) + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' + lt_cv_file_magic_cmd='/usr/bin/file -L' + case "$host_os" in + rhapsody* | darwin1.[[012]]) + lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` + ;; + *) # Darwin 1.3 on + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' + ;; + esac + ;; + +freebsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20*|hpux11*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + irix5* | nonstopux*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" + ;; + esac + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux-gnu*) + case $host_cpu in + alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64*) + lt_cv_deplibs_check_method=pass_all ;; + *) + # glibc up to 2.1.1 does not perform some relocations on ARM + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; + esac + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +openbsd*) + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' + else + lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + fi + ;; + +osf3* | osf4* | osf5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' + lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +sysv5uw[[78]]* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +]) + + +# AC_PROG_NM - find the path to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl +AC_MSG_CHECKING([for BSD-compatible nm]) +AC_CACHE_VAL(lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/${ac_tool_prefix}nm + if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then + lt_cv_path_NM="$tmp_nm -B" + break + elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + lt_cv_path_NM="$tmp_nm -p" + break + else + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +AC_MSG_RESULT([$NM]) +]) + +# AC_CHECK_LIBM - check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32*) + # These system don't have libm + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, main, LIBM="-lm") + ;; +esac +]) + +# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl convenience library and LTDLINCL to the include flags for +# the libltdl header and adds --enable-ltdl-convenience to the +# configure arguments. Note that LIBLTDL and LTDLINCL are not +# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not +# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed +# with '${top_builddir}/' and LTDLINCL will be prefixed with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +]) + +# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl installable library and LTDLINCL to the include flags for +# the libltdl header and adds --enable-ltdl-install to the configure +# arguments. Note that LIBLTDL and LTDLINCL are not AC_SUBSTed, nor is +# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed +# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will +# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed +# with '${top_srcdir}/' (note the single quotes!). If your package is +# not flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, main, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +]) + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_executable_p="test -f" +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext" + fi + done + done +done + + # Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/sed$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + _max=0 + _count=0 + # Add /usr/xpg4/bin/sed as it is typically found on Solaris + # along with /bin/sed that truncates output. + for _sed in $_sed_list /usr/xpg4/bin/sed; do + test ! -f ${_sed} && break + cat /dev/null > "$tmp/sed.in" + _count=0 + echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in" + # Check for GNU sed and select it if it is found. + if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then + lt_cv_path_SED=${_sed} + break + fi + while true; do + cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp" + mv "$tmp/sed.tmp" "$tmp/sed.in" + cp "$tmp/sed.in" "$tmp/sed.nl" + echo >>"$tmp/sed.nl" + ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break + cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break + # 40000 chars as input seems more than enough + test $_count -gt 10 && break + _count=`expr $_count + 1` + if test $_count -gt $_max; then + _max=$_count + lt_cv_path_SED=$_sed + fi + done + done + rm -rf "$tmp" +]) +if test "X$SED" != "X"; then + lt_cv_path_SED=$SED +else + SED=$lt_cv_path_SED +fi +AC_MSG_RESULT([$SED]) +]) diff --git a/libprozilla/ltdl.m4 b/libprozilla/ltdl.m4 new file mode 100644 index 0000000..43ed9cd --- /dev/null +++ b/libprozilla/ltdl.m4 @@ -0,0 +1,395 @@ +## ltdl.m4 - Configure ltdl for the target system. -*-Shell-script-*- +## Copyright (C) 1999-2000 Free Software Foundation, Inc. +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +## +## As a special exception to the GNU General Public License, if you +## distribute this file as part of a program that contains a +## configuration script generated by Autoconf, you may include it under +## the same distribution terms that you use for the rest of that program. + +# serial 5 AC_LIB_LTDL + +# AC_WITH_LTDL +# ------------ +# Clients of libltdl can use this macro to allow the installer to +# choose between a shipped copy of the ltdl sources or a preinstalled +# version of the library. +AC_DEFUN([AC_WITH_LTDL], +[AC_REQUIRE([AC_LIB_LTDL]) +AC_SUBST([LIBLTDL]) +AC_SUBST([INCLTDL]) + +# Unless the user asks us to check, assume no installed ltdl exists. +use_installed_libltdl=no + +AC_ARG_WITH([included_ltdl], + [ --with-included-ltdl use the GNU ltdl sources included here]) + +if test "x$with_included_ltdl" != xyes; then + # We are not being forced to use the included libltdl sources, so + # decide whether there is a useful installed version we can use. + AC_CHECK_HEADER([ltdl.h], + [AC_CHECK_LIB([ltdl], [lt_dlcaller_register], + [with_included_ltdl=no], + [with_included_ltdl=yes]) + ]) +fi + +if test "x$enable_ltdl_install" != xyes; then + # If the user did not specify an installable libltdl, then default + # to a convenience lib. + AC_LIBLTDL_CONVENIENCE +fi + +if test "x$with_included_ltdl" = xno; then + # If the included ltdl is not to be used. then Use the + # preinstalled libltdl we found. + AC_DEFINE([HAVE_LTDL], 1, + [Define this if a modern libltdl is already installed]) + LIBLTDL=-lltdl +fi + +# Report our decision... +AC_MSG_CHECKING([whether to use included libltdl]) +AC_MSG_RESULT([$with_included_ltdl]) + +AC_CONFIG_SUBDIRS([libltdl]) +])# AC_WITH_LTDL + + +# AC_LIB_LTDL +# ----------- +# Perform all the checks necessary for compilation of the ltdl objects +# -- including compiler checks and header checks. +AC_DEFUN([AC_LIB_LTDL], +[AC_PREREQ(2.13) +AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AC_C_CONST]) +AC_REQUIRE([AC_HEADER_STDC]) +AC_REQUIRE([AC_HEADER_DIRENT]) +AC_REQUIRE([AC_LIBTOOL_HEADER_ASSERT]) +AC_REQUIRE([_LT_AC_CHECK_DLFCN]) +AC_REQUIRE([AC_LTDL_ENABLE_INSTALL]) +AC_REQUIRE([AC_LTDL_SHLIBEXT]) +AC_REQUIRE([AC_LTDL_SHLIBPATH]) +AC_REQUIRE([AC_LTDL_SYSSEARCHPATH]) +AC_REQUIRE([AC_LTDL_OBJDIR]) +AC_REQUIRE([AC_LTDL_DLPREOPEN]) +AC_REQUIRE([AC_LTDL_DLLIB]) +AC_REQUIRE([AC_LTDL_SYMBOL_USCORE]) +AC_REQUIRE([AC_LTDL_DLSYM_USCORE]) +AC_REQUIRE([AC_LTDL_SYS_DLOPEN_DEPLIBS]) +AC_REQUIRE([AC_LTDL_FUNC_ARGZ]) + +AC_CHECK_HEADERS([errno.h malloc.h memory.h stdlib.h stdio.h ctype.h unistd.h]) +AC_CHECK_HEADERS([dl.h sys/dl.h dld.h]) +AC_CHECK_HEADERS([string.h strings.h], break) + +AC_CHECK_FUNCS([strchr index], break) +AC_CHECK_FUNCS([strrchr rindex], break) +AC_CHECK_FUNCS([memcpy bcopy], break) +AC_CHECK_FUNCS([memmove strcmp]) + +])# AC_LIB_LTDL + +# AC_LTDL_ENABLE_INSTALL +# ---------------------- +AC_DEFUN([AC_LTDL_ENABLE_INSTALL], +[AC_ARG_ENABLE(ltdl-install, +[ --enable-ltdl-install install libltdl]) + +AM_CONDITIONAL(INSTALL_LTDL, test x"${enable_ltdl_install-no}" != xno) +AM_CONDITIONAL(CONVENIENCE_LTDL, test x"${enable_ltdl_convenience-no}" != xno) +])])# AC_LTDL_ENABLE_INSTALL + +# AC_LTDL_SYS_DLOPEN_DEPLIBS +# -------------------------- +AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_CACHE_CHECK([whether deplibs are loaded by dlopen], + libltdl_cv_sys_dlopen_deplibs, [dnl + # PORTME does your system automatically load deplibs for dlopen()? + libltdl_cv_sys_dlopen_deplibs=unknown + case "$host_os" in + hpux10*|hpux11*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + linux*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + netbsd*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + openbsd*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + solaris*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + esac +]) +if test "$libltdl_cv_sys_dlopen_deplibs" != yes; then + AC_DEFINE(LTDL_DLOPEN_DEPLIBS, 1, + [Define if the OS needs help to load dependent libraries for dlopen(). ]) +fi +])# AC_LTDL_SYS_DLOPEN_DEPLIBS + +# AC_LTDL_SHLIBEXT +# ---------------- +AC_DEFUN([AC_LTDL_SHLIBEXT], +[AC_REQUIRE([_LT_AC_LTCONFIG_HACK]) +AC_CACHE_CHECK([which extension is used for shared libraries], + libltdl_cv_shlibext, +[ac_last= + for ac_spec in $library_names_spec; do + ac_last="$ac_spec" + done + echo "$ac_last" | [sed 's/\[.*\]//;s/^[^.]*//;s/\$.*$//;s/\.$//'] > conftest +libltdl_cv_shlibext=`cat conftest` +rm -f conftest +]) +if test -n "$libltdl_cv_shlibext"; then + AC_DEFINE_UNQUOTED(LTDL_SHLIB_EXT, "$libltdl_cv_shlibext", + [Define to the extension used for shared libraries, say, ".so". ]) +fi +])# AC_LTDL_SHLIBEXT + +# AC_LTDL_SHLIBPATH +# ----------------- +AC_DEFUN([AC_LTDL_SHLIBPATH], +[AC_REQUIRE([_LT_AC_LTCONFIG_HACK]) +AC_CACHE_CHECK([which variable specifies run-time library path], + libltdl_cv_shlibpath_var, [libltdl_cv_shlibpath_var="$shlibpath_var"]) +if test -n "$libltdl_cv_shlibpath_var"; then + AC_DEFINE_UNQUOTED(LTDL_SHLIBPATH_VAR, "$libltdl_cv_shlibpath_var", + [Define to the name of the environment variable that determines the dynamic library search path. ]) +fi +])# AC_LTDL_SHLIBPATH + +# AC_LTDL_SYSSEARCHPATH +# --------------------- +AC_DEFUN([AC_LTDL_SYSSEARCHPATH], +[AC_REQUIRE([_LT_AC_LTCONFIG_HACK]) +AC_CACHE_CHECK([for the default library search path], + libltdl_cv_sys_search_path, [libltdl_cv_sys_search_path="$sys_lib_dlsearch_path_spec"]) +if test -n "$libltdl_cv_sys_search_path"; then + case "$host" in + *-*-mingw*) pathsep=";" ;; + *) pathsep=":" ;; + esac + sys_search_path= + for dir in $libltdl_cv_sys_search_path; do + if test -z "$sys_search_path"; then + sys_search_path="$dir" + else + sys_search_path="$sys_search_path$pathsep$dir" + fi + done + AC_DEFINE_UNQUOTED(LTDL_SYSSEARCHPATH, "$sys_search_path", + [Define to the system default library search path. ]) +fi +])# AC_LTDL_SYSSEARCHPATH + +# AC_LTDL_OBJDIR +# -------------- +AC_DEFUN([AC_LTDL_OBJDIR], +[AC_CACHE_CHECK([for objdir], + libltdl_cv_objdir, [libltdl_cv_objdir="$objdir" +if test -n "$objdir"; then + : +else + rm -f .libs 2>/dev/null + mkdir .libs 2>/dev/null + if test -d .libs; then + libltdl_cv_objdir=.libs + else + # MS-DOS does not allow filenames that begin with a dot. + libltdl_cv_objdir=_libs + fi +rmdir .libs 2>/dev/null +fi]) +AC_DEFINE_UNQUOTED(LTDL_OBJDIR, "$libltdl_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries. ]) +])# AC_LTDL_OBJDIR + +# AC_LTDL_DLPREOPEN +# ----------------- +AC_DEFUN([AC_LTDL_DLPREOPEN], +[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl +AC_CACHE_CHECK([whether libtool supports -dlopen/-dlpreopen], + libltdl_cv_preloaded_symbols, [dnl + if test -n "$global_symbol_pipe"; then + libltdl_cv_preloaded_symbols=yes + else + libltdl_cv_preloaded_symbols=no + fi +]) +if test x"$libltdl_cv_preloaded_symbols" = x"yes"; then + AC_DEFINE(HAVE_PRELOADED_SYMBOLS, 1, + [Define if libtool can extract symbol lists from object files. ]) +fi +])# AC_LTDL_DLPREOPEN + +# AC_LTDL_DLLIB +# ------------- +AC_DEFUN([AC_LTDL_DLLIB], +[LIBADD_DL= +AC_SUBST(LIBADD_DL) + +AC_CHECK_FUNC([shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.])], + [AC_CHECK_LIB([dld], [shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.]) + LIBADD_DL="$LIBADD_DL -ldld"], + [AC_CHECK_LIB([dl], [dlopen], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + LIBADD_DL="-ldl"], + [AC_TRY_LINK([#if HAVE_DLFCN_H +# include +#endif + ], + [dlopen(0, 0);], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.])], + [AC_CHECK_LIB([svld], [dlopen], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + LIBADD_DL="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [AC_DEFINE([HAVE_DLD], [1], + [Define if you have the GNU dld library.]) + LIBADD_DL="$LIBADD_DL -ldld" + ]) + ]) + ]) + ]) + ]) +]) + +if test "x$ac_cv_func_dlopen" = xyes || test "x$ac_cv_lib_dl_dlopen" = xyes; then + LIBS_SAVE="$LIBS" + LIBS="$LIBS $LIBADD_DL" + AC_CHECK_FUNCS(dlerror) + LIBS="$LIBS_SAVE" +fi +])# AC_LTDL_DLLIB + +# AC_LTDL_SYMBOL_USCORE +# --------------------- +AC_DEFUN([AC_LTDL_SYMBOL_USCORE], +[dnl does the compiler prefix global symbols with an underscore? +AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl +AC_MSG_CHECKING([for _ prefix in compiled symbols]) +AC_CACHE_VAL(ac_cv_sys_symbol_underscore, +[ac_cv_sys_symbol_underscore=no +cat > conftest.$ac_ext < $ac_nlist) && test -s "$ac_nlist"; then + # See whether the symbols have a leading underscore. + if egrep '^. _nm_test_func' "$ac_nlist" >/dev/null; then + ac_cv_sys_symbol_underscore=yes + else + if egrep '^. nm_test_func ' "$ac_nlist" >/dev/null; then + : + else + echo "configure: cannot find nm_test_func in $ac_nlist" >&AC_FD_CC + fi + fi + else + echo "configure: cannot run $global_symbol_pipe" >&AC_FD_CC + fi +else + echo "configure: failed program was:" >&AC_FD_CC + cat conftest.c >&AC_FD_CC +fi +rm -rf conftest* +]) +AC_MSG_RESULT($ac_cv_sys_symbol_underscore) +])# AC_LTDL_SYMBOL_USCORE + + +# AC_LTDL_DLSYM_USCORE +# -------------------- +AC_DEFUN([AC_LTDL_DLSYM_USCORE], +[AC_REQUIRE([AC_LTDL_SYMBOL_USCORE])dnl +if test x"$ac_cv_sys_symbol_underscore" = xyes; then + if test x"$ac_cv_func_dlopen" = xyes || + test x"$ac_cv_lib_dl_dlopen" = xyes ; then + AC_CACHE_CHECK([whether we have to add an underscore for dlsym], + libltdl_cv_need_uscore, [dnl + libltdl_cv_need_uscore=unknown + save_LIBS="$LIBS" + LIBS="$LIBS $LIBADD_DL" + _LT_AC_TRY_DLOPEN_SELF( + libltdl_cv_need_uscore=no, libltdl_cv_need_uscore=yes, + [], libltdl_cv_need_uscore=cross) + LIBS="$save_LIBS" + ]) + fi +fi + +if test x"$libltdl_cv_need_uscore" = xyes; then + AC_DEFINE(NEED_USCORE, 1, + [Define if dlsym() requires a leading underscore in symbol names. ]) +fi +])# AC_LTDL_DLSYM_USCORE + + +# AC_CHECK_TYPES(TYPES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], +# [INCLUDES]) +# --------------------------------------------------------------- +# This macro did not exist in Autoconf 2.13, which we do still support +ifdef([AC_CHECK_TYPES], [], +[define([AC_CHECK_TYPES], + [AC_CACHE_CHECK([for $1], ac_Type, + [AC_TRY_LINK([$4], + [if (($1 *) 0) + return 0; + if (sizeof ($1)) + return 0;], + [ac_Type=yes], + [ac_Type=no])]) + if test "x$ac_Type" = xyes; then + ifelse([$2], [], [:], [$2]) + else + ifelse([$3], [], [:], [$3]) + fi]) +])# AC_CHECK_TYPES + + +# AC_LTDL_FUNC_ARGZ +# ----------------- +AC_DEFUN([AC_LTDL_FUNC_ARGZ], +[AC_CHECK_HEADERS([argz.h]) + +AC_CHECK_TYPES([error_t], + [], + [AC_DEFINE([error_t], [int], + [Define to a type to use for \`error_t' if it is not otherwise available.])], + [#if HAVE_ARGZ_H +# include +#endif]) + +AC_CHECK_FUNCS([argz_append argz_create_sep argz_insert argz_next argz_stringify]) +])# AC_LTDL_FUNC_ARGZ diff --git a/libprozilla/ltmain.sh b/libprozilla/ltmain.sh new file mode 100644 index 0000000..7e0c9f4 --- /dev/null +++ b/libprozilla/ltmain.sh @@ -0,0 +1,5062 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" + +# Parse our command line options once, thoroughly. +while test $# -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + exit 0 + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 + exit 0 + ;; + + --debug) + echo "$progname: enabling shell trace mode" + set -x + ;; + + --dry-run | -n) + run=: + ;; + + --features) + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + exit 0 + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 +fi + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + case $nonopt in + *cc | *++ | gcc* | *-gcc* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + prev= + lastarg= + srcfile="$nonopt" + suppress_output= + + user_target=no + for arg + do + case $prev in + "") ;; + xcompiler) + # Aesthetically quote the previous argument. + prev= + lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + + case $arg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + + # Add the previous argument to base_compile. + if test -z "$base_compile"; then + base_compile="$lastarg" + else + base_compile="$base_compile $lastarg" + fi + continue + ;; + esac + + # Accept any command-line options. + case $arg in + -o) + if test "$user_target" != "no"; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit 1 + fi + user_target=next + ;; + + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + if test -z "$base_compile"; then + base_compile="$lastarg" + else + base_compile="$base_compile $lastarg" + fi + continue + ;; + esac + + case $user_target in + next) + # The next one is the -o target name + user_target=yes + continue + ;; + yes) + # We got the output file + user_target=set + libobj="$arg" + continue + ;; + esac + + # Accept the current argument as the source file. + lastarg="$srcfile" + srcfile="$arg" + + # Aesthetically quote the previous argument. + + # Backslashify any backslashes, double quotes, and dollar signs. + # These are the only characters that are still specially + # interpreted inside of double-quoted scrings. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $lastarg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + + # Add the previous argument to base_compile. + if test -z "$base_compile"; then + base_compile="$lastarg" + else + base_compile="$base_compile $lastarg" + fi + done + + case $user_target in + set) + ;; + no) + # Get the name of the library object. + libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + *) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit 1 + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSfmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit 1 + ;; + esac + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $libobj" + else + removelist="$libobj" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit 1" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit 1" 1 2 15 + else + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$0" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit 1 + fi + echo $srcfile > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + # All platforms use -DPIC, to notify preprocessed assembler code. + command="$base_compile $srcfile $pic_flag -DPIC" + else + # Don't build PIC code + command="$base_compile $srcfile" + fi + if test "$build_old_libs" = yes; then + lo_libobj="$libobj" + dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$libobj"; then + dir="$objdir" + else + dir="$dir/$objdir" + fi + libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` + + if test -d "$dir"; then + $show "$rm $libobj" + $run $rm $libobj + else + $show "$mkdir $dir" + $run $mkdir $dir + status=$? + if test $status -ne 0 && test ! -d $dir; then + exit $status + fi + fi + fi + if test "$compiler_o_lo" = yes; then + output_obj="$libobj" + command="$command -o $output_obj" + elif test "$compiler_c_o" = yes; then + output_obj="$obj" + command="$command -o $output_obj" + fi + + $run $rm "$output_obj" + $show "$command" + if $run eval "$command"; then : + else + test -n "$output_obj" && $run $rm $removelist + exit 1 + fi + + if test "$need_locks" = warn && + test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then + echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit 1 + fi + + # Just move the object if needed, then go on to compile the next one + if test x"$output_obj" != x"$libobj"; then + $show "$mv $output_obj $libobj" + if $run $mv $output_obj $libobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # If we have no pic_flag, then copy the object into place and finish. + if (test -z "$pic_flag" || test "$pic_mode" != default) && + test "$build_old_libs" = yes; then + # Rename the .lo from within objdir to obj + if test -f $obj; then + $show $rm $obj + $run $rm $obj + fi + + $show "$mv $libobj $obj" + if $run $mv $libobj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir="." + else + xdir="$xdir" + fi + baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"` + libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` + # Now arrange that obj and lo_libobj become the same file + $show "(cd $xdir && $LN_S $baseobj $libobj)" + if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + $run $rm "$lockfile" + fi + exit 0 + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Allow error messages only from the first compilation. + suppress_output=' >/dev/null 2>&1' + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $srcfile" + else + # All platforms use -DPIC, to notify preprocessed assembler code. + command="$base_compile $srcfile $pic_flag -DPIC" + fi + if test "$compiler_c_o" = yes; then + command="$command -o $obj" + output_obj="$obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + command="$command$suppress_output" + $run $rm "$output_obj" + $show "$command" + if $run eval "$command"; then : + else + $run $rm $removelist + exit 1 + fi + + if test "$need_locks" = warn && + test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then + echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit 1 + fi + + # Just move the object if needed + if test x"$output_obj" != x"$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Create an invalid libtool object if no PIC, so that we do not + # accidentally link it into a program. + if test "$build_libtool_libs" != yes; then + $show "echo timestamp > $libobj" + $run eval "echo timestamp > \$libobj" || exit $? + else + # Move the .lo from within objdir + $show "$mv $libobj $lo_libobj" + if $run $mv $libobj $lo_libobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + fi + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + $run $rm "$lockfile" + fi + + exit 0 + ;; + + # libtool link mode + link | relink) + modename="$modename: link" + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invokation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args="$nonopt" + compile_command="$nonopt" + finalize_command="$nonopt" + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + + avoid_version=no + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -all-static | -static) + if test "X$arg" = "X-all-static"; then + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + fi + build_libtool_libs=no + build_old_libs=yes + prefer_static_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test $# -gt 0; do + arg="$1" + shift + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit 1 + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit 1 + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n $prev + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit 1 + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | no/*-*-nonstopux*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + exit 1 + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-mingw* | *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -o) prev=output ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit 1 + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + + *.lo | *.$objext) + # A library or standard object. + if test "$prev" = dlfiles; then + # This file was specified with -dlopen. + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $arg" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` + prev= + else + case $arg in + *.lo) libobjs="$libobjs $arg" ;; + *) objs="$objs $arg" ;; + esac + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d $output_objdir; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + status=$? + if test $status -ne 0 && test ! -d $output_objdir; then + exit $status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit 1 + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test $linkmode = prog; then + # Determine which files to process + case $pass in + dlopen) + libs="$dlfiles" + save_deplibs="$deplibs" # Collect dlpreopened libraries + deplibs= + ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -l*) + if test $linkmode = oldlib && test $linkmode = obj; then + $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2 + continue + fi + if test $pass = conv; then + deplibs="$deplib $deplibs" + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + # Search the libtool library + lib="$searchdir/lib${name}.la" + if test -f "$lib"; then + found=yes + break + fi + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test $pass = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test $pass = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test $pass = scan; then + deplibs="$deplib $deplibs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test $pass = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test $pass = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + if test "$deplibs_check_method" != pass_all; then + echo + echo "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not used here." + else + echo + echo "*** Warning: Linking the shared library $output against the" + echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test $pass != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test $found = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib'" 1>&2 + exit 1 + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit 1 + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variable installed. + installed=yes + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test $linkmode = oldlib && test $linkmode = obj; }; then + # Add dl[pre]opened files of deplib + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test $pass = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit 1 + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test $linkmode != prog && test $linkmode != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit 1 + fi + continue + fi # $pass = conv + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit 1 + fi + + # This library was specified with -dlopen. + if test $pass = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit 1 + fi + if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. + dlprefiles="$dlprefiles $lib" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test $pass = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit 1 + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test $linkmode = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" + fi + continue + fi + + if test $linkmode = prog && test $pass != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test $linkalldeplibs = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + link_static=no # Whether the deplib will be linked statically + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + # Link against this shared library + + if test "$linkmode,$pass" = "prog,link" || + { test $linkmode = lib && test $hardcode_into_libs = yes; }; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + if test $linkmode = prog; then + # We need to hardcode the library path + if test -n "$shlibpath_var"; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $dir" ;; + esac + fi + fi + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + eval cmds=\"$extract_expsyms_cmds\" + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + eval cmds=\"$old_archive_from_expsyms_cmds\" + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n $old_archive_from_expsyms_cmds + + if test $linkmode = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit 1 + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test $linkmode = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test $linkmode = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + add="-l$name" + fi + + if test $linkmode = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test $linkmode = prog; then + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + + # Try to link the static library + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + echo "*** Warning: This system can not link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + convenience="$convenience $dir/$old_library" + old_convenience="$old_convenience $dir/$old_library" + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test $linkmode = lib; then + if test -n "$dependency_libs" && + { test $hardcode_into_libs != yes || test $build_old_libs = yes || + test $link_static = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test $link_all_deplibs != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="-L$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit 1 + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="-L$absdir" + fi + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$deplibs $path" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test $pass = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test $pass != dlopen; then + test $pass != scan && dependency_libs="$newdependency_libs" + if test $pass != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + *) + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + if test "$pass" = "conv" && + { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then + libs="$deplibs" # reset libs + deplibs= + fi + done # for pass + if test $linkmode = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit 1 + else + echo + echo "*** Warning: Linking the shared library $output against the non-libtool" + echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test $# -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + libext=al + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + current="$2" + revision="$3" + age="$4" + + # Check that each of the things are valid numbers. + case $current in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + case $revision in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + case $age in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + if test $age -gt $current; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + major=`expr $current - $age + 1` + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test $loop != 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test $loop != 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + verstring="0.0" + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring="" + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs. + $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" + $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + for path in $notinst_path; do + lib_search_path=`echo "$lib_search_path " | ${SED} -e 's% $path % %g'` + deplibs=`echo "$deplibs " | ${SED} -e 's% -L$path % %g'` + dependency_libs=`echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` + done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test $hardcode_into_libs != yes || test $build_old_libs = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd*) + # Do not include libc due to us having libc/libc_r. + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test $build_libtool_need_lc = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behaviour. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | egrep "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + echo "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + echo "*** with $libname but no candidates were found. (...for file magic test)" + else + echo "*** with $libname and none of the candidates passed a file format test" + echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name="`expr $a_deplib : '-l\(.*\)'`" + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check below in file_magic test + if eval echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | egrep "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + echo "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + echo "*** with $libname and none of the candidates passed a file format test" + echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | + grep . >/dev/null; then + echo + if test "X$deplibs_check_method" = "Xnone"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + echo "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test $allow_undefined = no; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test $hardcode_into_libs = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + test -z "$dlname" && dlname=$soname + + lib="$output_objdir/$realname" + for link + do + linknames="$linknames $link" + done + + # Ensure that we have .o objects for linkers which dislike .lo + # (e.g. aix) in case we are running --disable-static + for obj in $libobjs; do + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir="." + else + xdir="$xdir" + fi + baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` + if test ! -f $xdir/$oldobj; then + $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" + $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? + fi + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + eval cmds=\"$export_symbols_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` + done + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval cmds=\"$archive_expsym_cmds\" + else + save_deplibs="$deplibs" + for conv in $convenience; do + tmp_deplibs= + for test_deplib in $deplibs; do + if test "$test_deplib" != "$conv"; then + tmp_deplibs="$tmp_deplibs $test_deplib" + fi + done + deplibs="$tmp_deplibs" + done + eval cmds=\"$archive_cmds\" + deplibs="$save_deplibs" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + exit 0 + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit 1 + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` + done + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + eval cmds=\"$reload_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit 0 + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + $show "echo timestamp > $libobj" + $run eval "echo timestamp > $libobj" || exit $? + exit 0 + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + eval cmds=\"$reload_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + else + # Just create a symlink. + $show $rm $libobj + $run $rm $libobj + xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$libobj"; then + xdir="." + else + xdir="$xdir" + fi + baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` + oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` + $show "(cd $xdir && $LN_S $oldobj $baseobj)" + $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit 0 + ;; + + prog) + case $host in + *cygwin*) output=`echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + ;; + esac + ;; + esac + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$output.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + else + $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' + $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval 'echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DPIC";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit 1 + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test $need_relink = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit 0 + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $0 --fallback-echo"; then + case $0 in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; + *) qecho="$SHELL `pwd`/$0 --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) exeext=.exe ;; + *) exeext= ;; + esac + $rm $output + trap "$rm $output; exit 1" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit 1 + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 ${SED} + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # win32 systems need to use the prog path for dll + # lookup to work + *-*-cygwin* | *-*-pw32*) + $echo >> $output "\ + exec \$progdir/\$program \${1+\"\$@\"} +" + ;; + + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \$progdir\\\\\$program \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + # Export the path to the program. + PATH=\"\$progdir:\$PATH\" + export PATH + + exec \$program \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit 1 + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" + chmod +x $output + fi + exit 0 + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + # Add in members from convenience archives. + for xlib in $addlibs; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` + done + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + eval cmds=\"$old_archive_from_new_cmds\" + else + # Ensure that we have .o objects in place in case we decided + # not to build a shared library, and have fallen back to building + # static libs even though --disable-static was passed! + for oldobj in $oldobjs; do + if test ! -f $oldobj; then + xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$oldobj"; then + xdir="." + else + xdir="$xdir" + fi + baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` + obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` + $show "(cd $xdir && ${LN_S} $obj $baseobj)" + $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? + fi + done + + eval cmds=\"$old_archive_cmds\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit 1 + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit 1 + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit 1 + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test $need_relink = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit 0 + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg="$nonopt" + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest="$arg" + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) prev="-f" ;; + -g) prev="-g" ;; + -m) prev="-m" ;; + -o) prev="-o" ;; + -s) + stripme=" -s" + continue + ;; + -*) ;; + + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest="$arg" + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit 1 + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test $# -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + continue + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test $# -gt 0; then + # Delete the old symlinks, and create new ones. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + eval cmds=\"$postinstall_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit 0 + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | egrep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $wrapper ;; + *) . ./$wrapper ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit 1 + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $wrapper ;; + *) . ./$wrapper ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir="/tmp" + test -n "$TMPDIR" && tmpdir="$TMPDIR" + tmpdir="$tmpdir/libtool-$$" + if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : + else + $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 + continue + fi + file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyways + case $install_prog,$host in + /usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + eval cmds=\"$old_postinstall_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $0 --finish$current_libdirs' + else + exit 0 + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + eval cmds=\"$finish_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = ":" && exit 0 + + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + echo " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + echo "See any operating system documentation about shared libraries for" + echo "more information, such as the ld(1) and ld.so(8) manual pages." + echo "----------------------------------------------------------------------" + exit 0 + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit 1 + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit 1 + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved enviroment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit 0 + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + rmdirs= + + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$objdir" + else + objdir="$dir/$objdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test $mode = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test $mode = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + + if test $mode = uninstall; then + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + eval cmds=\"$postuninstall_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + if test $? != 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + eval cmds=\"$old_postuninstall_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + if test $? != 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + fi + fi + ;; + + *.lo) + if test "$build_old_libs" = yes; then + oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` + rmfiles="$rmfiles $dir/$oldobj" + fi + ;; + + *) + # Do a test to see if this is a libtool program. + if test $mode = clean && + (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$file + + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit 1 + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit 1 + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit 1 +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE." + exit 0 + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; +esac + +echo +$echo "Try \`$modename --help' for more information about other modes." + +exit 0 + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/libprozilla/man/CVS/Entries b/libprozilla/man/CVS/Entries new file mode 100644 index 0000000..1784810 --- /dev/null +++ b/libprozilla/man/CVS/Entries @@ -0,0 +1 @@ +D diff --git a/libprozilla/man/CVS/Repository b/libprozilla/man/CVS/Repository new file mode 100644 index 0000000..6964fd5 --- /dev/null +++ b/libprozilla/man/CVS/Repository @@ -0,0 +1 @@ +libprozilla/man diff --git a/libprozilla/man/CVS/Root b/libprozilla/man/CVS/Root new file mode 100644 index 0000000..0e741fc --- /dev/null +++ b/libprozilla/man/CVS/Root @@ -0,0 +1 @@ +:pserver:kalum@cvs.delrom.ro:/home/cvsroot diff --git a/libprozilla/missing b/libprozilla/missing new file mode 100755 index 0000000..6a37006 --- /dev/null +++ b/libprozilla/missing @@ -0,0 +1,336 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing 0.4 - GNU automake" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. + You can get \`$1Help2man' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then + # We have makeinfo, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + tar) + shift + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + fi + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequirements for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 diff --git a/libprozilla/mkinstalldirs b/libprozilla/mkinstalldirs new file mode 100755 index 0000000..5530db6 --- /dev/null +++ b/libprozilla/mkinstalldirs @@ -0,0 +1,40 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +# $Id: mkinstalldirs,v 1.2 2001/04/14 15:32:04 uwe Exp $ + +errstatus=0 + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# mkinstalldirs ends here diff --git a/libprozilla/po/CVS/Entries b/libprozilla/po/CVS/Entries new file mode 100644 index 0000000..566dbb4 --- /dev/null +++ b/libprozilla/po/CVS/Entries @@ -0,0 +1,15 @@ +/ChangeLog/1.1/Fri Sep 7 09:32:56 2001// +/Makefile.in.in/1.1/Fri Sep 7 09:32:56 2001// +/POTFILES.in/1.1/Fri Sep 7 09:32:56 2001// +/nl.gmo/1.1/Fri Sep 7 09:32:56 2001// +/nl.po/1.1/Fri Sep 7 09:32:56 2001// +/ro.gmo/1.1/Fri Sep 7 09:32:56 2001// +/ro.po/1.1/Fri Sep 7 09:32:56 2001// +/pt_BR.gmo/1.4/Sat Oct 6 08:21:50 2001// +/pt_BR.po/1.4/Sat Oct 6 08:21:47 2001// +/it.gmo/1.2/Sat Oct 6 08:04:13 2001// +/it.po/1.2/Sat Oct 6 08:03:32 2001// +/stamp-cat-id/1.1/Sat Oct 27 23:18:03 2001// +/cat-id-tbl.c/1.13/Sat Oct 27 23:18:03 2001// +/libprozilla.pot/1.27/Sat Oct 27 23:18:03 2001// +D diff --git a/libprozilla/po/CVS/Repository b/libprozilla/po/CVS/Repository new file mode 100644 index 0000000..4f73473 --- /dev/null +++ b/libprozilla/po/CVS/Repository @@ -0,0 +1 @@ +libprozilla/po diff --git a/libprozilla/po/CVS/Root b/libprozilla/po/CVS/Root new file mode 100644 index 0000000..0e741fc --- /dev/null +++ b/libprozilla/po/CVS/Root @@ -0,0 +1 @@ +:pserver:kalum@cvs.delrom.ro:/home/cvsroot diff --git a/libprozilla/po/ChangeLog b/libprozilla/po/ChangeLog new file mode 100644 index 0000000..d70e06a --- /dev/null +++ b/libprozilla/po/ChangeLog @@ -0,0 +1,4 @@ +2001-06-03 gettextize + + * Makefile.in.in: Upgrade to gettext-0.10.38. + diff --git a/libprozilla/po/Makefile.in.in b/libprozilla/po/Makefile.in.in new file mode 100644 index 0000000..111b40f --- /dev/null +++ b/libprozilla/po/Makefile.in.in @@ -0,0 +1,248 @@ +# Makefile for program source directory in GNU NLS utilities package. +# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper +# +# This file file be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datadir = $(prefix)/@DATADIRNAME@ +localedir = $(datadir)/locale +gnulocaledir = $(prefix)/share/locale +gettextsrcdir = $(prefix)/share/gettext/po +subdir = po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@ + +CC = @CC@ +GENCAT = @GENCAT@ +GMSGFMT = PATH=../src:$$PATH @GMSGFMT@ +MSGFMT = @MSGFMT@ +XGETTEXT = PATH=../src:$$PATH @XGETTEXT@ +MSGMERGE = PATH=../src:$$PATH msgmerge + +DEFS = @DEFS@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ + +INCLUDES = -I.. -I$(top_srcdir)/intl + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +SOURCES = cat-id-tbl.c +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ +stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES) + +POTFILES = \ + +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +INSTOBJEXT = @INSTOBJEXT@ + +.SUFFIXES: +.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat + +.c.o: + $(COMPILE) $< + +.po.pox: + $(MAKE) $(PACKAGE).pot + $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox + +.po.mo: + $(MSGFMT) -o $@ $< + +.po.gmo: + file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ + && rm -f $$file && $(GMSGFMT) -o $$file $< + +.po.cat: + sed -f ../intl/po2msg.sed < $< > $*.msg \ + && rm -f $@ && $(GENCAT) $@ $*.msg + + +all: all-@USE_NLS@ + +all-yes: cat-id-tbl.c $(CATALOGS) +all-no: + +$(srcdir)/$(PACKAGE).pot: $(POTFILES) + $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ + --add-comments --keyword=_ --keyword=N_ \ + --files-from=$(srcdir)/POTFILES.in \ + && test ! -f $(PACKAGE).po \ + || ( rm -f $(srcdir)/$(PACKAGE).pot \ + && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot ) + +$(srcdir)/cat-id-tbl.c: stamp-cat-id; @: +$(srcdir)/stamp-cat-id: $(PACKAGE).pot + rm -f cat-id-tbl.tmp + sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \ + | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp + if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \ + rm cat-id-tbl.tmp; \ + else \ + echo cat-id-tbl.c changed; \ + rm -f $(srcdir)/cat-id-tbl.c; \ + mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \ + fi + cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ +install-data-no: all +install-data-yes: all + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $(datadir); \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $(datadir); \ + fi + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + case "$$cat" in \ + *.gmo) destdir=$(gnulocaledir);; \ + *) destdir=$(localedir);; \ + esac; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + dir=$$destdir/$$lang/LC_MESSAGES; \ + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $$dir; \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \ + fi; \ + if test -r $$cat; then \ + $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ + echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \ + else \ + $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \ + fi; \ + if test -r $$cat.m; then \ + $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ + else \ + if test -r $(srcdir)/$$cat.m ; then \ + $(INSTALL_DATA) $(srcdir)/$$cat.m \ + $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ + else \ + true; \ + fi; \ + fi; \ + done + if test "$(PACKAGE)" = "gettext"; then \ + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $(gettextsrcdir); \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ + fi; \ + $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ + $(gettextsrcdir)/Makefile.in.in; \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ + rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ + rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ + rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ + done + rm -f $(gettextsrcdir)/po-Makefile.in.in + +check: all + +cat-id-tbl.o: ../intl/libgettext.h + +dvi info tags TAGS ID: + +mostlyclean: + rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f $(GMOFILES) + +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: update-po $(DISTFILES) + dists="$(DISTFILES)"; \ + for file in $$dists; do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir); \ + done + +update-po: Makefile + $(MAKE) $(PACKAGE).pot + PATH=`pwd`/../src:$$PATH; \ + cd $(srcdir); \ + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + mv $$lang.po $$lang.old.po; \ + echo "$$lang:"; \ + if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \ + rm -f $$lang.old.po; \ + else \ + echo "msgmerge for $$cat failed!"; \ + rm -f $$lang.po; \ + mv $$lang.old.po $$lang.po; \ + fi; \ + done + +POTFILES: POTFILES.in + ( if test 'x$(srcdir)' != 'x.'; then \ + posrcprefix='$(top_srcdir)/'; \ + else \ + posrcprefix="../"; \ + fi; \ + rm -f $@-t $@ \ + && (sed -e '/^#/d' -e '/^[ ]*$$/d' \ + -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \ + | sed -e '$$s/\\$$//') > $@-t \ + && chmod a-w $@-t \ + && mv $@-t $@ ) + +Makefile: Makefile.in.in ../config.status POTFILES + cd .. \ + && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ + $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libprozilla/po/POTFILES.in b/libprozilla/po/POTFILES.in new file mode 100644 index 0000000..f85e483 --- /dev/null +++ b/libprozilla/po/POTFILES.in @@ -0,0 +1,15 @@ +src/connect.c +src/connection.c +src/debug.c +src/download.c +src/ftp.c +src/ftpparse.c +src/ftp-retr.c +src/getopt.c +src/http.c +src/http-retr.c +src/logfile.c +src/main.c +src/misc.c +src/netrc.c +src/url.c diff --git a/libprozilla/po/cat-id-tbl.c b/libprozilla/po/cat-id-tbl.c new file mode 100644 index 0000000..82e5b44 --- /dev/null +++ b/libprozilla/po/cat-id-tbl.c @@ -0,0 +1,739 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2003-02-18 05:45+0600\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING\n" + +#: src/connection.c:177 src/connection.c:274 +msgid "write failed" +msgstr "" + +#: src/connection.c:180 src/connection.c:277 +#, c-format +msgid "Unable to write to file %s: %s!" +msgstr "" + +#: src/connection.c:201 src/connection.c:258 +msgid "connection timed out" +msgstr "" + +#: src/connection.c:212 src/connection.c:296 +#, c-format +msgid "download for this connection completed%s : %ld received" +msgstr "" + +#: src/connection.c:249 +msgid "Server Closed Connection Prematurely!" +msgstr "" + +#: src/connection.c:340 +msgid "Idle" +msgstr "" + +#: src/connection.c:343 +msgid "Connecting" +msgstr "" + +#: src/connection.c:346 +msgid "Logging in" +msgstr "" + +#: src/connection.c:349 +msgid "Downloading" +msgstr "" + +#: src/connection.c:352 +msgid "Completed" +msgstr "" + +#: src/connection.c:355 +msgid "Login Denied" +msgstr "" + +#: src/connection.c:358 +msgid "Connect Refused" +msgstr "" + +#: src/connection.c:361 +msgid "Remote Fatal" +msgstr "" + +#: src/connection.c:364 +msgid "Local Fatal" +msgstr "" + +#: src/connection.c:367 +msgid "Timed Out" +msgstr "" + +#: src/connection.c:369 +msgid "Max attempts reached" +msgstr "" + +#: src/connection.c:372 +msgid "Unkown Status!" +msgstr "" + +#: src/connection.c:463 src/misc.c:471 +msgid "Error: unsupported protocol" +msgstr "" + +#: src/connection.c:487 +#, c-format +msgid "The server returned location is wrong: %s!" +msgstr "" + +#: src/connection.c:496 +#, c-format +msgid "Redirected to => %s" +msgstr "" + +#: src/debug.c:60 src/download.c:799 src/download.c:1076 +#, c-format +msgid "unable to delete the file %s. Reason-: %s" +msgstr "" + +#: src/download.c:136 src/download.c:154 src/download.c:2094 +#: src/download.c:2112 +#, c-format +msgid "Unable to open file %s: %s!" +msgstr "" + +#: src/download.c:288 +msgid "Warning! Unable to create logfile!" +msgstr "" + +#: src/download.c:307 src/download.c:318 src/download.c:458 src/download.c:480 +#: src/download.c:512 src/download.c:555 src/download.c:576 src/download.c:601 +#: src/download.c:643 src/download.c:664 src/download.c:1388 +#: src/download.c:1433 src/download.c:1516 src/download.c:1563 +#: src/download.c:1640 src/download.c:1679 src/download.c:1725 +#: src/download.c:1777 src/download.c:1802 src/download.c:1827 +#: src/download.c:1873 src/download.c:1924 src/download.c:1949 +msgid "Error: Not enough system resources" +msgstr "" + +#: src/download.c:322 +msgid "Error: Unsupported Protocol was specified" +msgstr "" + +#: src/download.c:326 +msgid "All threads created" +msgstr "" + +#: src/download.c:446 src/download.c:1322 +msgid "The file was not found in all the connections!" +msgstr "" + +#: src/download.c:452 src/download.c:474 src/download.c:551 src/download.c:572 +#: src/download.c:639 src/download.c:660 src/download.c:1773 +#: src/download.c:1798 src/download.c:1920 src/download.c:1945 +msgid "Relaunching download" +msgstr "" + +#: src/download.c:468 src/download.c:1449 +msgid "Failed to change to the working directory on all the connections!" +msgstr "" + +#: src/download.c:490 src/download.c:1657 +#, c-format +msgid "Connection %d, had a local fatal error: %s .Aborting download. " +msgstr "" + +#: src/download.c:505 src/download.c:1672 +msgid "All logins rejected! Retrying connection" +msgstr "" + +#: src/download.c:594 src/download.c:1820 +msgid "All connections attempts have been rejected! Retrying connection" +msgstr "" + +#: src/download.c:1360 src/download.c:1488 +msgid "Trying additional paths available on this server" +msgstr "" + +#: src/download.c:1415 src/download.c:1544 +msgid "" +"No additional paths on this server available, so will switch to another " +"server" +msgstr "" + +#: src/download.c:1579 +msgid "The server(s) do not support REST on all the connections!" +msgstr "" + +#: src/download.c:1622 +msgid "" +"This server does not support resuming downloads, so will switch to another " +"server" +msgstr "" + +#: src/download.c:1707 +msgid "" +"This server has rejected the login attempt, so will switch to another server" +msgstr "" + +#: src/download.c:1855 +msgid "" +"This server has rejected the connection attempt, so will switch to another " +"server" +msgstr "" + +#: src/ftp.c:106 +#, c-format +msgid "Message = %s" +msgstr "" + +#: src/ftp.c:126 +#, c-format +msgid "Error checking for FTP data: %s" +msgstr "" + +#: src/ftp.c:143 +#, c-format +msgid "Error receiving FTP data: %s" +msgstr "" + +#: src/ftp.c:167 +#, c-format +msgid "Sending: %s" +msgstr "" + +#: src/ftp.c:172 +#, c-format +msgid "Error sending FTP data: %s" +msgstr "" + +#: src/ftp.c:213 +#, c-format +msgid "Received: %s" +msgstr "" + +#: src/ftp.c:344 +#, c-format +msgid "FTP PASV Header = %s" +msgstr "" + +#. Unknown error code. +#: src/ftp.c:759 +#, c-format +msgid "Unknown code %d retuned during FTP login" +msgstr "" + +#: src/ftp.c:811 src/ftp.c:831 src/http-retr.c:69 src/http-retr.c:84 +#: src/http.c:562 src/http.c:577 +#, c-format +msgid "Connecting to %s" +msgstr "" + +#: src/ftp.c:822 src/ftp.c:840 +#, c-format +msgid "Error while connecting to %s" +msgstr "" + +#: src/ftp.c:827 src/ftp.c:844 +#, c-format +msgid "Connected to %s" +msgstr "" + +#: src/ftp-retr.c:125 src/ftp.c:872 src/ftp.c:881 +#, c-format +msgid "Logging in as user %s with password %s" +msgstr "" + +#: src/ftp.c:895 +msgid "Logged in successfully" +msgstr "" + +#: src/ftp-retr.c:165 src/ftp.c:915 +#, c-format +msgid "CWD failed to change to directory '%s'" +msgstr "" + +#: src/ftp-retr.c:175 src/ftp.c:924 +msgid "CWD not needed" +msgstr "" + +#: src/ftp.c:931 +msgid "REST failed" +msgstr "" + +#: src/ftp.c:936 +msgid "REST ok" +msgstr "" + +#: src/ftp.c:1016 +#, c-format +msgid "Error receiving FTP transfer data: %s" +msgstr "" + +#: src/ftp.c:1021 +#, c-format +msgid "String received after the LIST command = %s" +msgstr "" + +#: src/ftp.c:1039 +msgid "" +"Unable to parse the line the FTP server returned:please report URL to " +"kalum@delrom.ro " +msgstr "" + +#: src/ftp.c:1066 +msgid "Server doesn't seem to support PASV" +msgstr "" + +#: src/ftp.c:1142 +#, c-format +msgid "Retrying attempt %d in %d seconds" +msgstr "" + +#: src/ftp.c:1161 src/http.c:734 +msgid "Successfully got info" +msgstr "" + +#: src/ftp.c:1169 src/http.c:746 +msgid "File not found!" +msgstr "" + +#: src/ftp-retr.c:319 src/ftp.c:1188 src/http-retr.c:331 src/http.c:765 +#, c-format +msgid "I have tried %d attempt(s) and have failed, aborting" +msgstr "" + +#: src/ftpparse.c:194 +#, c-format +msgid "MULTINET Size: %d\n" +msgstr "" + +#: src/ftpparse.c:235 +#, c-format +msgid "BINLS size: %d\n" +msgstr "" + +#: src/ftp-retr.c:171 +msgid "CWD ok" +msgstr "" + +#: src/ftp-retr.c:196 +msgid "" +"I have a bug in my code!!, check remote_starpos and resume_support values" +msgstr "" + +#: src/ftp-retr.c:206 +msgid "RETR failed" +msgstr "" + +#: src/ftp-retr.c:259 src/http-retr.c:272 src/http.c:717 +#, c-format +msgid "Retrying...Attempt %d in %d seconds" +msgstr "" + +#: src/ftp-retr.c:271 src/http-retr.c:284 +msgid "Error while attemting to process download file " +msgstr "" + +#: src/ftp-retr.c:302 src/http-retr.c:311 +msgid "Successfully got download" +msgstr "" + +#: src/ftp-retr.c:308 +msgid "Error occured in connection..." +msgstr "" + +#: src/getopt.c:741 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "" + +#: src/getopt.c:769 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "" + +#: src/getopt.c:776 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "" + +#: src/getopt.c:792 src/getopt.c:995 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "" + +#. +#. * --option +#. +#: src/getopt.c:825 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "" + +#. +#. * +option or -option +#. +#: src/getopt.c:831 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "" + +#. +#. * 1003.2 specifies the format of this message. +#. +#: src/getopt.c:863 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "" + +#: src/getopt.c:865 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "" + +#: src/getopt.c:902 src/getopt.c:1051 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "" + +#: src/getopt.c:961 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "" + +#: src/getopt.c:981 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "" + +#: src/getopt.c:1118 +msgid "digits occur in two different argv-elements.\n" +msgstr "" + +#: src/getopt.c:1124 +msgid "option a\n" +msgstr "" + +#: src/getopt.c:1128 +msgid "option b\n" +msgstr "" + +#: src/getopt.c:1132 +#, c-format +msgid "option c with value `%s'\n" +msgstr "" + +#: src/getopt.c:1139 +#, c-format +msgid "?? getopt returned character code 0%o ??\n" +msgstr "" + +#: src/getopt.c:1145 +msgid "non-option ARGV-elements: " +msgstr "" + +#: src/http.c:376 +msgid "Failed writing HTTP request" +msgstr "" + +#: src/http.c:397 +#, c-format +msgid "Header = %s" +msgstr "" + +#: src/http.c:401 +msgid "End of file while parsing headers" +msgstr "" + +#: src/http.c:412 +msgid "Read error in headers" +msgstr "" + +#. Store the descriptive response. +#. Malformed request. +#: src/http.c:438 +msgid "UNKNOWN" +msgstr "" + +#: src/http.c:440 +msgid "(no description)" +msgstr "" + +#: src/http-retr.c:77 src/http-retr.c:91 src/http-retr.c:394 src/http.c:571 +#: src/http.c:583 src/http.c:801 +#, c-format +msgid "Error connecting to %s" +msgstr "" + +#: src/http-retr.c:119 src/http-retr.c:421 src/http.c:611 src/http.c:828 +#, c-format +msgid "Authenticating as user %s password %s" +msgstr "" + +#: src/http-retr.c:120 src/http-retr.c:422 src/http.c:612 src/http.c:829 +#, c-format +msgid "Authentification string=%s" +msgstr "" + +#: src/http-retr.c:198 src/http-retr.c:477 src/http.c:682 +msgid "Sending HTTP request" +msgstr "" + +#: src/http-retr.c:304 +msgid "Will be handled in main " +msgstr "" + +#: src/logfile.c:49 +#, c-format +msgid "Error opening file %s for writing: %s" +msgstr "" + +#: src/logfile.c:65 src/logfile.c:75 src/logfile.c:97 src/logfile.c:113 +#: src/logfile.c:129 src/logfile.c:146 +#, c-format +msgid "Error writing to file %s: %s" +msgstr "" + +#: src/logfile.c:199 +msgid "logfile doesn't exist" +msgstr "" + +#: src/logfile.c:232 +#, c-format +msgid "Error opening file %s for reading: %s" +msgstr "" + +#: src/logfile.c:270 src/logfile.c:285 src/logfile.c:301 src/logfile.c:316 +#, c-format +msgid "Error reading from file %s: %s" +msgstr "" + +#: src/misc.c:48 +#, c-format +msgid "Failed to malloc() %lu bytes." +msgstr "" + +#: src/misc.c:63 +#, c-format +msgid "Failed to realloc() %lu bytes." +msgstr "" + +#: src/misc.c:85 +msgid "Not enough memory to continue: strdup() failed." +msgstr "" + +#: src/misc.c:304 +msgid "Warning: Unable to delay" +msgstr "" + +#: src/misc.c:326 +msgid "Unable to lookup hostname" +msgstr "" + +#: src/misc.c:328 +msgid "Unable to create socket" +msgstr "" + +#: src/misc.c:330 +msgid "Error occured while connecting" +msgstr "" + +#: src/misc.c:332 src/misc.c:386 +msgid "The connection attempt was refused" +msgstr "" + +#: src/misc.c:334 +msgid "Error while accepting the connection" +msgstr "" + +#: src/misc.c:336 +msgid "Error while Binding socket" +msgstr "" + +#: src/misc.c:338 +msgid "Error while listening" +msgstr "" + +#: src/misc.c:340 +msgid "The connection was reset/closed by the peer" +msgstr "" + +#: src/misc.c:342 +msgid "The URL Protocol was unknown" +msgstr "" + +#: src/misc.c:344 +msgid "The port specified in the URL is not valid!" +msgstr "" + +#: src/misc.c:346 +msgid "The Hostname specified in the URL is not valid!" +msgstr "" + +#: src/misc.c:348 +msgid "The Pattern specified in the URL does not look valid!" +msgstr "" + +#: src/misc.c:350 +msgid "End of file reached in HTTP connection" +msgstr "" + +#: src/misc.c:352 +msgid "Error occured in HTTP data transfer" +msgstr "" + +#: src/misc.c:354 +msgid "Authentification is required to access this resource" +msgstr "" + +#: src/misc.c:356 +msgid "Failed to Authenticate with host!" +msgstr "" + +#: src/misc.c:358 +msgid "The URL was not found on the host!" +msgstr "" + +#: src/misc.c:360 +msgid "The host disallowed the login attempt" +msgstr "" + +#: src/misc.c:362 +msgid "The PORT request was rejected by the server" +msgstr "" + +#: src/misc.c:364 +msgid "The object file/dir was not found on the host!" +msgstr "" + +#: src/misc.c:366 +msgid "The TYPE specified in not known by the FTP server!" +msgstr "" + +#: src/misc.c:368 +msgid "The command is not known by the FTP server!" +msgstr "" + +#: src/misc.c:370 +msgid "The SIZE command failed" +msgstr "" + +#: src/misc.c:372 +msgid "Error occured in FTP data transfer" +msgstr "" + +#: src/misc.c:374 +msgid "The REST command failed" +msgstr "" + +#: src/misc.c:376 +msgid "The peer did not allow access" +msgstr "" + +#: src/misc.c:378 src/misc.c:380 +msgid "The host rejected the password" +msgstr "" + +#: src/misc.c:382 +msgid "The PASV (passive mode) was not supported the host" +msgstr "" + +#: src/misc.c:384 +msgid "The host does not support PASV (passive mode) transfers" +msgstr "" + +#: src/misc.c:388 +msgid "Failed to (CWD)change to the directory" +msgstr "" + +#: src/misc.c:392 +msgid "" +"The host said the requested service was unavailable and closed the control " +"connection" +msgstr "" + +#: src/misc.c:394 +msgid "getsockname failed!" +msgstr "" + +#: src/misc.c:399 src/misc.c:409 +msgid "" +"The server, while acting as a gateway or proxy, received an invalid response " +"from the upstream server it accessed in attempting to fulfill the request" +msgstr "" + +#: src/misc.c:404 +msgid "" +"The server is currently unable to handle the request due to a temporary " +"overloading or maintenance of the server." +msgstr "" + +#: src/misc.c:414 +msgid "" +"The server encountered an unexpected condition which prevented it from " +"fulfilling the request." +msgstr "" + +#: src/misc.c:419 +msgid "" +"The server does not support the functionality required to fulfill the " +"request." +msgstr "" + +#: src/misc.c:422 +msgid "Error while opening file" +msgstr "" + +#: src/misc.c:424 +msgid "Error while writing to file" +msgstr "" + +#: src/misc.c:427 +msgid "The Download was aborted" +msgstr "" + +#: src/misc.c:429 +msgid "The Download encountered a local fatal error" +msgstr "" + +#: src/misc.c:431 +msgid "Error: Resuming this connection is not possible" +msgstr "" + +#: src/misc.c:433 +msgid "Error while reading data from socket" +msgstr "" + +#: src/misc.c:435 +msgid "Error while writing data to socket" +msgstr "" + +#: src/misc.c:437 +msgid "Error while Proxying" +msgstr "" + +#: src/misc.c:439 +msgid "The location is a directory" +msgstr "" + +#: src/misc.c:442 +msgid "Unknown/Unsupported error code" +msgstr "" + +#: src/netrc.c:215 +#, c-format +msgid "%s:%d: warning: found \"%s\" before any host names\n" +msgstr "" + +#: src/netrc.c:243 +#, c-format +msgid "%s:%d: warning: unknown token \"%s\"\n" +msgstr "" diff --git a/libprozilla/po/fr.gmo b/libprozilla/po/fr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..eedcabb7b50805afe3c848d4cb65b4a805d24682 GIT binary patch literal 16040 zcmbuFdyr&ReaEi}E;=d*DvAMe1{h{nw})Mx%eb&C!vKS`v+L~at`ZUMbl;h|Z1=s* zea!B#MicW;G^mM)C>k{-RZ>-) z+{yEI!HdC>bAn(D+z#sZIj{kq0uA^Ccm?=Z;4gze_ITd8L9m)_c4!u z?tlMhQ2gEoQF?zFC^}|5w!l~N{7&$4@L}*u@Jpb^^}ttw+vxNf@FMU=@LEv)b5Q$w z6#OOd%b>=6+yDL(Q1iW-Nv;NO2gUbO{`qlG3yK| z;jcl_|1Y4%kG$IP`wCF}ybin*yal`ld;>n*H-Vz(Q=r!Q26#63_x|}GK}ZPx71TW2P-<8hyaLobqUxHMkkndUt`ci!P}5p8&PbFMwBpKL9oULYQ?e zI1NH-aLVI{K=u0^DEWO4lw5xXYTPCKsOLLDJ$Jwf@S~vi`Iq4J;EzDbF@fNug17-wgn1b6ZL z1SmN?1!|pt07c(`L64xRv|58ni*UJwLNgX(`d zOcm|}MbBNJ_VpkrzI@jI{!LJF{soj55`wEh&AZ^A-{J97p!o1rkRid(K<$5Y-1*1r zz`Z=LfY*SJgQE8-@CNYTLDAQMNr*UzKwMJrE>Qe`7}R`U2W3}JfoFq12G#FBL0oz8 z5;iBhx)2n9cY?Fv8~pQoK+*dVQ0x8$D7_ZZ255k6C71)5GFSz*&rgDq>z{zT!M_8g z&)ZNkjlTh8s$dDc4*Vdfd7cEd|7Sr&7Z^IL{}lgi1G}IBPk{1wkAl*duYl9wcR|f} z8A>3&-33Zc9{|}x@P{C*4!#3QP9jcp?EsRve|`#t^}&xp zNC_?`NJx$cK&>Bxup(Fm)$egoa{n7p>-`rfeLf%NYkzw{&2u*>dw9q{{}Fg2&))|n z_lt3Ynr|A^e((4AK5!?`kAoWjx1j9sC!ofi3(>;sLG9}vkST-rgPQMapyc~3DEaKb zXbyohpq@VlN{)XDO3u%K(#vx(&V%3$;4Jtcn1kN}5m9g_lfDr=1-=J-61*2Ygz}7l zp9i(>pMhtC|KXp14$9x|c>}TmkAmXYM?lf>74Tm0pFr*BHk^R=*8$H39|I-7&w--z zOP~RN1X_N;)K~L-Jt+PjAyE8#5;R~BRKJm%+&(thrtNv`_DH0jWB+NWvN=a~QUHt-$( zy8*TDHf@E5IP6EX|BC;9Gq|6I$gS=^1b&eAQJQ31|NMr3_!KDqR-gIm3n)IEpxsN; zC!>ARehY%b;7e$~MO&ghNc#XyJba9%Pf0sTyGRdwWZ$o$r8Mc(i)fPdM`-#i(teG0 z9&MTSt2BKUX!p_Xr2PU-`nQetDw;mhQ+*N#_WyVDzx3-Sn)DsBwt90hc#3v6?I=y3 zChe`XM`&51Be;$(T!ETv`A zGMA3!mzu?BDa|4{vSwD&yf8`Fi5%;OMwH3%Bt4OsB0U}@cH~H~JxNU~%9~kiMY|)| zx6dp`1@bUiRFql5Mw=^P7B-70GtIOWnO$S4*|%>b*xzpRLy|;IDFp&4im1~qaLBEvRFZX;$~QA+Aud| z&KAdV(+%_dM4Gku-tVJ(n?;vihwG-~QOlaC^6MJ0>3;vI?EX~+%ZYK6G zrkQ0|3q@$BVQaz!xB9P|d>WNXm&_6b!KSde!VcoZ+_A85s4lpAw-YPs+zqo_Vpu^& zQI-eOS`&Um&ExtR{WP~RM~e+*dFpr7Z1K6Ary@ zM)9f^tH|B*WyOZ|oXn#{JKJmmN8c^6>yW3-<5A&hbgvF&=}DR9(2p_tFdCht0>rkkbKmMYb9gbqzQVDgZ>-DK@JFD%Q4hSV86^ujNv9d@%A;q=!o_|NmHJFcF(5a*~{AOh|13H=i6^IB65Do zRF>?Npkg_c$YJ?8Wfq6_A3kdCu%97N8PtgcW}QXk^%*)!aGKk9n6Y+g7T1a>pQz1`)@}K^qTISOg{UYm zg4^U3GcM4EX0cqBlkTh;G^G`dj_!1h7q#l7MRZSIgc%A$e$bMpk#^nV zC2vUHSSRpP5#`W@G2({{<=gWec90F|F3RmRp${R!Obh*+wQ=S)#TmXYFFUWDmo}^} zmF@PL{aLCUC$+Ejcx^>d586xwJ-6Zv(7^*oW*27WrWefNe$YJ-o~*X0Xl}z)Fh?+N zweY-YLd@%i#Y!%D*~m^}u!;`|S5X-m%1%rf4M3DRi#JzfI3a9ap_A*&bbTZ3z(xW& zeK174T}kXGBWRUfB2HID23#L5dz@?!=5&&f5DmgaS-7ol&z6YR!5hkg7Q z(mwy=q)ah5?07iUPDxPAR6p^T_qqn>blYg9WC))n__*-zM2J zt3t^pxzccFxkRh`B~+cvR8X58nykcF! zR^0|3SmTwvyCDbX7vPWe0k&_I9^+E%N?u8|okNm)mTbNo$-(ZYou^gcW#%dOKlCiexc;LoY zyYn19?OL@6S($-m&wM&9KGnLoS9w%i*>u|MDdkZ zymEckp?k750Janvfq%drJFCtQ_N)*0!&)?5U`V>CL!D*Pm3XY@lB2lF3@s~b%OZd3 zvI{8z8CERqYI93++GT4AcCw0x8nJ|zbiO|>)+`%1fmugN6hfXZYJ2uf*rok+L(U+9 zSJ6olAZ11H#03;Xazd2oX3;7~PTs_jZ*zG!x69P}+#i}A26CFo7}s8_Wm23JiJx_u znO12tILSw0C9b8igG{wYclf<>EAU=Yp1HG70rYaUxB)?8Vu4d6jn9lt+WB2$7#b_+N-S zEPk-WAG@-}hTLLcQNvkAaAfX{a|e&j1%sU2CVlXRq_E|ZLd8UQ1JV2{ZNWUzymMp`Cw&UcLotxP(BA&=nQ=8W1{`6V5tn=@-!ZfBl zwZITt*n}!C_E>8@Dihg`SJqE2kt;S3S@l{auEPZx3Dg{O)v{4D;G*X)vuOkUF7-1M z`wrKFV{#gccz0{5Rug4^CK$L%Q&=@gQIl4@98>$Urx}|MoKO*HiHZf5uWILN1M#Wi znNN%al`7iPnN3k^lM?t`SqK3m6m+ICqkz(!)WW78E;^3}o)YU8RboXMNFx%|z*klG z&)ZIX z&F(#uS6%!1UAuRwV`DyAjWy3E{jQz7=4#h(Hq490f@($Wkn-E4na<*-;nzGYsm$$d z`)@ZR%JxJnEnxPjN+zWZ!mEW=7Zj^N*;V3cM9+v zJY5C;zqgvLr$Ud8@a6g<{9qmF78i zhVqb9tCOCT)Ot<&`bzyXTn5-G{pd)rfOFyuK!kBA-br@q%I!rj%2k(dX#ZFshZCm2 zm3vndkqdJLV}}xspQ%Qj@t{k6$^KGm_PyRFwRmOtWXj`Z5mWrb`b%5C-_Ge)TTz-z z%*=OeEXXU5i+S0F1lU#H|t?VMM`Gr%lh@+6b7J!lE}JQq%{YR2MgF=ob+7% zUQ%G66#IKoRnhN30NcWakb&wwg*=X_6w?Pk*&cR*s*_6oAsS}OX=0#~KDMgTKYm+5 zeZuTtB!)3#t29Ng4N=4+8;i&rhn^`o(Mu@_B?nk4)Wfr#0znFQeY*4;<>nUK6xaVP6DPo!zWVS>K0c ziJz@nwmLvrHL6WkP2{K{r}3V5sGlXQzP&!p{_enWSp*JmrJ5a@#<6}hg`$YKP;qli z^kYv=y{HrR93y&M&uub<%7vSXjdU>w9&1ajn;(aPD|Gj_r(v;`$L2kucEGQ7k`V#D zPE1gcmYtCVIrVdsS+Pj|@oB5ZgCe{5T$2>>M(L9nYEKsxyZc%(?(Qtyxpgzy#P;@R zEAct=8`30cZx0)k0gTJWhBvpB*s7gvzWHGbT(3mBujr96yZefDdmYGoU?Y|6!*!b* zu%%L;A;DAzy^*3p_rB&<1X(eAW$cS)pxrfpH|Hh7Di8T>5HNxCZ!ow;l&bf!kR4fR|# zTiR<;X?s0>?Ffd4lq;_uQlZ(Pc;LawGnKgE~BV2o9gBS zr6ReROFN73uM?h(J0-~|-n`2DsNJ|Y9~^QyC-?T`D*Ws(RFbF-Q)1O^bnA!}{K z*^*0{?OY7=X6a71PLp*mD5>dGJ?zANZ_w#=Yz}3!H}3!eyLzyE2qZ*}_zn zl5KqB)2!KA_GRy1`XeemK!>WZX_Fer>1QSLRgAQ*th$gyxrn z+#*X>%Dzc|o#MO=leN=haD<~??Lvk3kK?L(xx=A5gu}U-8j3xJLk)E5NE0vZFv+;O z>x5SYA-%(!J5M~1hkFLqIi!0a^;G#^zRULM%TT*=EP9?h+S-)t{ZHRynBQOgczPX? zN{Gqr%gVZyr(0ziggt0&*Vtl51h%R_@YB|dc#7-%sx4ye%X=BEBEAmnheb58J1w~& zUY)7ze8aD-y7yVwOo_pAXc$vr8R-K_GVW&bCwPCtRPv|1w!a?5#aSyX3`r-XOjV-x zR=W!vnf(1%C2*uG@ynU^v+CSM{2^5ttm1TFz4ITu*B|)Y&ta8YLv<3@VtjOq+u5Ym z^ZGe(;tFV+`2Z&5`k@^*UA8S@;LQgKKtJN9W$jn-po+gWx%Qdly`dOTD@2KUTUw9+ z{7ukvT2^2EYuxnAgr3x0199YxF<@8z33Xt%f`ru^Be1i67NM0Z1@np*c5THI?b_H~ z*(GyOWcMe6X2>7xRb`|9?_`8ke>P9$fJ2>v4SaTokNWM;!1&h5%bs@E`3WogrLa7y z7$8GcuHuQ-*MU~*d}Yxoe*dky68g`xpTN;MQaQRQ*cOl+>;nhD7{A)+y=kSp;Yh;eEl#u_<}7#rd0rwnXv zsO*uSK?ZY&N*cPEqa0xav2_Q}FHs6+=B5tL%^exaewAvw%$L8tw8^m}Gm9G3&7`bY zi9ckm&zpUR{@HIht0v{m^vBY22ZK|ZFG`}`)X>QLvI#RKCAJB|@C0x^FWc5&>hW)Q z`|c1H4=>_0tv*{-2C`CX$ID2mDq+fcMP{Xww(jHH8RW~>6gi$Yd)Hkn-88%r9j4Y3 z>-I6F*y~rTDy(L^QZN2mP62>mW&MziF+Nf38}&5R(Q4FaupgG$dhe*IlSe4>!s@fy zIS>xLwL$9+u(o*I$|C*UjQ#snIW3#s!3|7iISW-Hv*{+Pr<, 2001 +# http://lassauge.free.fr/linux.html +# +msgid "" +msgstr "" +"Project-Id-Version: libprozilla 1.0.0\n" +"POT-Creation-Date: 2001-12-03 18:25+0100\n" +"PO-Revision-Date: 2001-12-03 15:43+0100\n" +"Last-Translator: Eric Lassauge \n" +"Language-Team: Gozer le maudit \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/connection.c:173 src/connection.c:263 +#, c-format +msgid "Unable to open file %s: %s!" +msgstr "Impossible d'ouvriri le fichier %s: %s!" + +#: src/connection.c:195 src/connection.c:310 +msgid "write failed" +msgstr "Ecriture impossible" + +#: src/connection.c:198 src/connection.c:313 +#, c-format +msgid "Unable to write to file %s: %s!" +msgstr "Impossible d'écrire le fichier %s: %s!" + +#: src/connection.c:221 src/connection.c:294 +msgid "connection timed out" +msgstr "Hors-temps de connexion" + +#: src/connection.c:232 src/connection.c:333 +#, c-format +msgid "download for this connection completed%s : %ld received" +msgstr "téléchargement terminé pour cette connexion %s: %ld recus" + +#: src/connection.c:285 +msgid "Server Closed Connection Prematurely!" +msgstr "Le serveur a fermé la connexion prématurément!" + +#: src/connection.c:391 +#, c-format +msgid "orig start pos= %d\n" +msgstr "Position de départ d'origine = %d\n" + +#: src/connection.c:422 +msgid "Idle" +msgstr "Innocupé" + +#: src/connection.c:425 +msgid "Connecting" +msgstr "Connexion en cours" + +#: src/connection.c:428 +msgid "Logging in" +msgstr "Accčs" + +#: src/connection.c:431 +msgid "Downloading" +msgstr "Téléchargement" + +#: src/connection.c:434 +msgid "Completed" +msgstr "Terminé" + +#: src/connection.c:437 +msgid "Login Denied" +msgstr "Accčs refusé" + +#: src/connection.c:440 +msgid "Connect Refused" +msgstr "Connexion refusée" + +#: src/connection.c:443 +msgid "Remote Fatal" +msgstr "Erreur distante fatale" + +#: src/connection.c:446 +msgid "Local Fatal" +msgstr "Erreur locale fatale" + +#: src/connection.c:449 +msgid "Timed Out" +msgstr "Hors temps" + +#: src/connection.c:451 +msgid "Max attempts reached" +msgstr "Nombre maximum de tentatives atteint" + +#: src/connection.c:454 +msgid "Unkown Status!" +msgstr "Etat inconnu!" + +#: src/connection.c:545 src/misc.c:471 +msgid "Error: unsupported protocol" +msgstr "Erreur: protocole non-supporté" + +#: src/connection.c:569 +#, c-format +msgid "The server returned location is wrong: %s!" +msgstr "L'emplacement donné par le serveur est faux: %s!" + +#: src/connection.c:578 +#, c-format +msgid "Redirected to => %s" +msgstr "Redirection vers => %s" + +#: src/debug.c:60 src/download.c:691 src/download.c:1092 +#, c-format +msgid "unable to delete the file %s. Reason-: %s" +msgstr "impossible de détruire le fichier %s. Cause : %s" + +#: src/download.c:173 +#, c-format +msgid "Error while processing prior download of connection number %d" +msgstr "Erreur dans le traitement du téléchargement de la connexion numéro %d" + +#: src/download.c:202 +msgid "Warning! Unable to create logfile!" +msgstr "Attention! Impossible de créer le fichier de traces!" + +#: src/download.c:227 src/download.c:238 src/download.c:349 src/download.c:371 +#: src/download.c:403 src/download.c:445 src/download.c:466 src/download.c:491 +#: src/download.c:533 src/download.c:554 src/download.c:1380 +#: src/download.c:1425 src/download.c:1508 src/download.c:1555 +#: src/download.c:1632 src/download.c:1671 src/download.c:1723 +#: src/download.c:1748 src/download.c:1773 src/download.c:1825 +#: src/download.c:1850 +msgid "Error: Not enough system resources" +msgstr "Erreur: pas assez de resources systčme" + +#: src/download.c:242 +msgid "Error: Unsupported Protocol was specified" +msgstr "Erreur: un protocole non-supporté a été spécifié" + +#: src/download.c:246 +msgid "All threads created" +msgstr "Tous les \"threads\" créés" + +#: src/download.c:337 src/download.c:1314 +msgid "The file was not found in all the connections!" +msgstr "Le fichier n'a été trouvé pour acune des connexions!" + +#: src/download.c:343 src/download.c:365 src/download.c:441 src/download.c:462 +#: src/download.c:529 src/download.c:550 src/download.c:1719 +#: src/download.c:1744 src/download.c:1821 src/download.c:1846 +msgid "Relaunching download" +msgstr "Re-démarrage du téléchargement" + +#: src/download.c:359 src/download.c:1441 +msgid "Failed to change to the working directory on all the connections!" +msgstr "" +"Impossible d'aller dans le répertoire de travail pour toutes les connexions!" + +#: src/download.c:381 src/download.c:1649 +#, c-format +msgid "Connection %d, had a local fatal error: %s .Aborting download. " +msgstr "" +"La connexion %d, a une erreur locale fatable: %s. Abandon du téléchargement." + +#: src/download.c:396 src/download.c:1664 +msgid "All logins rejected! Retrying connection" +msgstr "Tous les accčs rejetés! Re-tentative de se connecter" + +#: src/download.c:484 src/download.c:1766 +msgid "All connections attempts have been rejected! Retrying connection" +msgstr "Toutes les connexions rejetées! Re-tentative de se connecter" + +#: src/download.c:761 +#, c-format +msgid "Unable to allocate %ld bytes to recreate files" +msgstr "Impossible d'allouer %d octets pour re-créer les fichiers" + +#: src/download.c:779 +#, c-format +msgid "Error: unable to open the file %s for writing-: %s\n" +msgstr "Erreur: impossible d'ouvrir le fichier %s en écriture: %s\n" + +#: src/download.c:798 +#, c-format +msgid "Error: Unable to open the file %s for reading-: %s\n" +msgstr "Erreur: impossible d'ouvrir le fichier %s en lecture: %s\n" + +#: src/download.c:836 +#, c-format +msgid "Unable to delete the file %s before exiting. Reason-: %s" +msgstr "Impossible de détruire le fichier %s avant de quitter. Cause: %s" + +#: src/download.c:843 +#, c-format +msgid "Error:A write error occured while writing to %s -: %s\n" +msgstr "Erreur: erreur d'écriture vers %s: %s\n" + +#: src/download.c:858 +#, c-format +msgid "Successfully Wrote %s \n" +msgstr "Ecriture réussie de %s\n" + +#: src/download.c:1352 src/download.c:1480 +msgid "Trying additional paths available on this server" +msgstr "Essai des chemins additionnels disponibles sur ce serveur" + +#: src/download.c:1407 src/download.c:1536 +msgid "" +"No additional paths on this server available, so will switch to another " +"server" +msgstr "" +"Pas de chemins additionnels disponibles sur ce serveur,basculement vers un " +"autre serveur" + +#: src/download.c:1571 +msgid "The server(s) do not support REST on all the connections!" +msgstr "" +"Le(s) serveur(s) ne supportent pas l'option REST sur toutes les connexions!" + +#: src/download.c:1614 +msgid "" +"This server does not support resuming downloads, so will switch to another " +"server" +msgstr "" +"Ce serveur ne supporte pas la continuation des téléchargements,basculement " +"vers un autre serveur" + +#: src/ftp.c:106 +#, c-format +msgid "Message = %s" +msgstr "" + +#: src/ftp.c:126 +#, c-format +msgid "Error checking for FTP data: %s" +msgstr "Erreur ŕ la vérification des données FTP: %s" + +#: src/ftp.c:143 +#, c-format +msgid "Error receiving FTP data: %s" +msgstr "Erreur ŕ la réception des données FTP: %s" + +#: src/ftp.c:167 +#, c-format +msgid "Sending: %s" +msgstr "Emission: %s" + +#: src/ftp.c:172 +#, c-format +msgid "Error sending FTP data: %s" +msgstr "Erreur ŕ l'émission des données FTP: %s" + +#: src/ftp.c:213 +#, c-format +msgid "Received: %s" +msgstr "Réception: %s" + +#: src/ftp.c:344 +#, c-format +msgid "FTP PASV Header = %s" +msgstr "En-tęte PASV FTP = %s" + +#. Unknown error code. +#: src/ftp.c:759 +#, c-format +msgid "Unknown code %d retuned during FTP login" +msgstr "Code retourn inconnu (%d) pendant l'accčs FTP" + +#: src/ftp.c:811 src/ftp.c:831 src/http-retr.c:69 src/http-retr.c:84 +#: src/http.c:562 src/http.c:577 +#, c-format +msgid "Connecting to %s" +msgstr "Connexion ŕ %s" + +#: src/ftp.c:822 src/ftp.c:840 +#, c-format +msgid "Error while connecting to %s" +msgstr "Erreur lors de la connexion ŕ %s" + +#: src/ftp.c:827 src/ftp.c:844 +#, c-format +msgid "Connected to %s" +msgstr "Connecté ŕ %s" + +#: src/ftp-retr.c:125 src/ftp.c:872 src/ftp.c:881 +#, c-format +msgid "Logging in as user %s with password %s" +msgstr "Accčs comme utilisateur %s avec le mot de passe %s" + +#: src/ftp.c:895 +msgid "Logged in successfully" +msgstr "Accčs autorisé" + +#: src/ftp-retr.c:165 src/ftp.c:915 +#, c-format +msgid "CWD failed to change to directory '%s'" +msgstr "La commande CWD a échoué pour le répertoire '%s'" + +#: src/ftp-retr.c:175 src/ftp.c:924 +msgid "CWD not needed" +msgstr "Commande CWD inutile" + +#: src/ftp.c:931 +msgid "REST failed" +msgstr "La commande REST a échoué" + +#: src/ftp.c:936 +msgid "REST ok" +msgstr "La commande REST est Ok" + +#: src/ftp.c:1016 +#, c-format +msgid "Error receiving FTP transfer data: %s" +msgstr "Erreur ŕ la réception des données de transfert FTP: %s" + +#: src/ftp.c:1021 +#, c-format +msgid "String received after the LIST command = %s" +msgstr "Chaine recue aprčs la commande LIST = %s" + +#: src/ftp.c:1039 +msgid "" +"Unable to parse the line the FTP server returned:please report URL to " +"kalum@delrom.ro " +msgstr "" +"Impossible d'analyser la ligne retournée par le serveur FTP:indiquer son URL " +"ŕ " + +#: src/ftp.c:1066 +msgid "Server doesn't seem to support PASV" +msgstr "Le serveur ne supporte pas la commande PASV" + +#: src/ftp.c:1142 +#, c-format +msgid "Retrying attempt %d in %d seconds" +msgstr "Nouvelle tentative (n° %d) dans %d secondes" + +#: src/ftp.c:1161 src/http.c:734 +msgid "Successfully got info" +msgstr "Récupération des information réussie" + +#: src/ftp.c:1169 src/http.c:746 +msgid "File not found!" +msgstr "Fichier introuvable!" + +#: src/ftp-retr.c:319 src/ftp.c:1188 src/http-retr.c:331 src/http.c:765 +#, c-format +msgid "I have tried %d attempt(s) and have failed, aborting" +msgstr "%d tentative(s) ont échoué, abandon" + +#: src/ftpparse.c:194 +#, c-format +msgid "MULTINET Size: %d\n" +msgstr "Taille MULTINET: %d\n" + +#: src/ftpparse.c:235 +#, c-format +msgid "BINLS size: %d\n" +msgstr "Taille BINLS: %d\n" + +#: src/ftp-retr.c:171 +msgid "CWD ok" +msgstr "La commande CWD est Ok" + +#: src/ftp-retr.c:196 +msgid "" +"I have a bug in my code!!, check remote_starpos and resume_support values" +msgstr "" +"Erreur détectée dans le code! Vérifiez les valeurs de 'remote_starpos' et " +"'resume_support'" + +#: src/ftp-retr.c:206 +msgid "RETR failed" +msgstr "La commande RETR a échoué" + +#: src/ftp-retr.c:259 src/http-retr.c:272 src/http.c:717 +#, c-format +msgid "Retrying...Attempt %d in %d seconds" +msgstr "Nouvelle tentative... Essai %d dans %d secondes" + +#: src/ftp-retr.c:271 src/http-retr.c:284 +msgid "Error while attemting to process download file " +msgstr "Erreir" + +#: src/ftp-retr.c:302 src/http-retr.c:311 +msgid "Successfully got download" +msgstr "Récupération des informations réussie" + +#: src/ftp-retr.c:308 +msgid "Error occured in connection..." +msgstr "Erreur ŕ la connexion..." + +#: src/getopt.c:741 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: l'option '%s' est ambigüe\n" + +#: src/getopt.c:769 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: l'option '--%s' ne permet pas un argument\n" + +#: src/getopt.c:776 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: l'option '%c%s' ne permet pas un argument\n" + +#: src/getopt.c:792 src/getopt.c:995 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: l'option '%c%s' nécessite un argument\n" + +#. +#. * --option +#. +#: src/getopt.c:825 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: l'option '--%s' est inconnue\n" + +#. +#. * +option or -option +#. +#: src/getopt.c:831 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: l'option '%c%s' est inconnue\n" + +#. +#. * 1003.2 specifies the format of this message. +#. +#: src/getopt.c:863 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: option -- %c inconnue\n" + +#: src/getopt.c:865 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: option -- %c invalide\n" + +#: src/getopt.c:902 src/getopt.c:1051 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: l'option -- %c nécessite un argument\n" + +#: src/getopt.c:961 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: l'option '-W %s' est ambigüe\n" + +#: src/getopt.c:981 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: l'option '-W %s' ne permet pas un argument\n" + +#: src/getopt.c:1118 +msgid "digits occur in two different argv-elements.\n" +msgstr "présence de chiffres dans dans différents éléments d'option.\n" + +#: src/getopt.c:1124 +msgid "option a\n" +msgstr "" + +#: src/getopt.c:1128 +msgid "option b\n" +msgstr "" + +#: src/getopt.c:1132 +#, c-format +msgid "option c with value `%s'\n" +msgstr "option c avec la valeur '%s'\n" + +#: src/getopt.c:1139 +#, c-format +msgid "?? getopt returned character code 0%o ??\n" +msgstr "getopt() a retourné le code de charactčre 0%o ?!\n" + +#: src/getopt.c:1145 +msgid "non-option ARGV-elements: " +msgstr "Eléments hors options: " + +#: src/http.c:376 +msgid "Failed writing HTTP request" +msgstr "Impossible d'écrire la requęte HTTP" + +#: src/http.c:397 +#, c-format +msgid "Header = %s" +msgstr "En-tęte = %s" + +#: src/http.c:401 +msgid "End of file while parsing headers" +msgstr "Fin de fichier atteinte lors du de l'analyse des en-tętes" + +#: src/http.c:412 +msgid "Read error in headers" +msgstr "Erreur de lecture dans les en-tętes" + +#. Store the descriptive response. +#. Malformed request. +#: src/http.c:438 +msgid "UNKNOWN" +msgstr "INCONNU" + +#: src/http.c:440 +msgid "(no description)" +msgstr "(pas de description)" + +#: src/http-retr.c:77 src/http-retr.c:91 src/http-retr.c:394 src/http.c:571 +#: src/http.c:583 src/http.c:801 +#, c-format +msgid "Error connecting to %s" +msgstr "Erreur lors de la connexion ŕ %s" + +#: src/http-retr.c:119 src/http-retr.c:421 src/http.c:611 src/http.c:828 +#, c-format +msgid "Authenticating as user %s password %s" +msgstr "Authentification comme l'utilisateur %s (mot de passe %s)" + +#: src/http-retr.c:120 src/http-retr.c:422 src/http.c:612 src/http.c:829 +#, c-format +msgid "Authentification string=%s" +msgstr "Chaine d'authentification=%s" + +#: src/http-retr.c:198 src/http-retr.c:477 src/http.c:682 +msgid "Sending HTTP request" +msgstr "Emission de la requęte HTTP" + +#: src/http-retr.c:304 +msgid "Will be handled in main " +msgstr "Sera traité dans le programme principal" + +#: src/logfile.c:49 +#, c-format +msgid "Error opening file %s for writing: %s" +msgstr "Erreur ŕ l'ouverture du fichier %s en écriture: %s" + +#: src/logfile.c:65 src/logfile.c:75 src/logfile.c:93 src/logfile.c:104 +#: src/logfile.c:115 +#, c-format +msgid "Error writing to file %s: %s" +msgstr "Erreur ŕ l'écriture dans le fichier %s: %s" + +#: src/logfile.c:168 +msgid "logfile doesn't exist" +msgstr "le fichier de trace n'existe pas" + +#: src/logfile.c:198 +#, c-format +msgid "Error opening file %s for reading: %s" +msgstr "Erreur ŕ l'ouverture du fichier %s en lecture: %s" + +#: src/logfile.c:232 src/logfile.c:244 src/logfile.c:256 +#, c-format +msgid "Error reading from file %s: %s" +msgstr "Erreur ŕ la lecture depuis le fichier %s: %s" + +#: src/misc.c:48 +#, c-format +msgid "Failed to malloc() %lu bytes." +msgstr "Impossible d'allouer %lu octets" + +#: src/misc.c:63 +#, c-format +msgid "Failed to realloc() %lu bytes." +msgstr "Impossible de ré-allouer %lu octets" + +#: src/misc.c:85 +msgid "Not enough memory to continue: strdup() failed." +msgstr "Pas assez de mémoire pour continuer: échec de strdup()" + +#: src/misc.c:304 +msgid "Warning: Unable to delay" +msgstr "Attention: impossible d'attendre" + +#: src/misc.c:326 +msgid "Unable to lookup hostname" +msgstr "Impossible de consulter le nom d'hôte" + +#: src/misc.c:328 +msgid "Unable to create socket" +msgstr "Impossible de créer la socket" + +#: src/misc.c:330 +msgid "Error occured while connecting" +msgstr "Erreur lors de la connexion" + +#: src/misc.c:332 src/misc.c:386 +msgid "The connection attempt was refused" +msgstr "La tentative de connexion a été refusée" + +#: src/misc.c:334 +msgid "Error while accepting the connection" +msgstr "Erreur lors de l'acceptation de la connexion" + +#: src/misc.c:336 +msgid "Error while Binding socket" +msgstr "Erreur lors de la fourniture du nom ŕ une socket" + +#: src/misc.c:338 +msgid "Error while listening" +msgstr "Erreur lors de l'écoute d'une socket" + +#: src/misc.c:340 +msgid "The connection was reset/closed by the peer" +msgstr "La connexion a été fermée par le correspondant" + +#: src/misc.c:342 +msgid "The URL Protocol was unknown" +msgstr "Le protocole de l'URL est inconnu" + +#: src/misc.c:344 +msgid "The port specified in the URL is not valid!" +msgstr "Le port spécifié dans l'URL est invalide!" + +#: src/misc.c:346 +msgid "The Hostname specified in the URL is not valid!" +msgstr "Le nom d'hôte spécifié dans l'URL est invalide!" + +#: src/misc.c:348 +msgid "The Pattern specified in the URL does not look valid!" +msgstr "Le format spécifié dans l'URL est invalide!" + +#: src/misc.c:350 +msgid "End of file reached in HTTP connection" +msgstr "Fin de fichier atteinte dans la connexion HTTP" + +#: src/misc.c:352 +msgid "Error occured in HTTP data transfer" +msgstr "Erreur dans le transfert de données HTTP" + +#: src/misc.c:354 +msgid "Authentification is required to access this resource" +msgstr "Authentification requise pour accéder ŕ cette ressource" + +#: src/misc.c:356 +msgid "Failed to Authenticate with host!" +msgstr "Impossible de s'authentifier auprčs de l'hôte" + +#: src/misc.c:358 +msgid "The URL was not found on the host!" +msgstr "URL introuvable sur l'hôte" + +#: src/misc.c:360 +msgid "The host disallowed the login attempt" +msgstr "L'hôte a interdit la tentative de connexion" + +#: src/misc.c:362 +msgid "The PORT request was rejected by the server" +msgstr "Requčte PORT est rejetée par le serveur" + +#: src/misc.c:364 +msgid "The object file/dir was not found on the host!" +msgstr "Fichier ou répertoire introuvable sur l'hôte!" + +#: src/misc.c:366 +msgid "The TYPE specified in not known by the FTP server!" +msgstr "Le TYPE spécifié est inconnu du serveur FTP!" + +#: src/misc.c:368 +msgid "The command is not known by the FTP server!" +msgstr "La commande est inconnue du serveur FTP" + +#: src/misc.c:370 +msgid "The SIZE command failed" +msgstr "La commande SIZE a échoué" + +#: src/misc.c:372 +msgid "Error occured in FTP data transfer" +msgstr "Erreur lors du transfert de données FTP" + +#: src/misc.c:374 +msgid "The REST command failed" +msgstr "La commande REST a échoué" + +#: src/misc.c:376 +msgid "The peer did not allow access" +msgstr "L'hôte distant ne permet pas les accčs" + +#: src/misc.c:378 src/misc.c:380 +msgid "The host rejected the password" +msgstr "L'hôte a rejeté le mot de passe" + +#: src/misc.c:382 +msgid "The PASV (passive mode) was not supported the host" +msgstr "La commande PASV (mode passif) n'est pas supportée par l'hôte" + +#: src/misc.c:384 +msgid "The host does not support PASV (passive mode) transfers" +msgstr "l'hôte ne supportte pas les transferts PASV (mode passif)" + +#: src/misc.c:388 +msgid "Failed to (CWD)change to the directory" +msgstr "Impossible de changer le répertoire (commande CWD)" + +#: src/misc.c:392 +msgid "" +"The host said the requested service was unavailable and closed the control " +"connection" +msgstr "" +"L'hôte a indiqué que le service demandé est indisponible et a fermé la " +"connexion" + +#: src/misc.c:394 +msgid "getsockname failed!" +msgstr "l'appel ŕ getsockname() a échoué!" + +#: src/misc.c:399 src/misc.c:409 +msgid "" +"The server, while acting as a gateway or proxy, received an invalid response " +"from the upstream server it accessed in attempting to fulfill the request" +msgstr "" +"Le serveur, agissant comme passerelle ou proxy, a recu une réponse " +"invalidedu serveur distant qu'il contactait pour accomplir la requęte" + +#: src/misc.c:404 +msgid "" +"The server is currently unable to handle the request due to a temporary " +"overloading or maintenance of the server." +msgstr "" +"Le serveur est incapable de traiter la requęte en raison d'une " +"surchargemomentannée ou d'une maintenance du serveur" + +#: src/misc.c:414 +msgid "" +"The server encountered an unexpected condition which prevented it from " +"fulfilling the request." +msgstr "" +"Le serveur est incapable de traiter la requęte en raison d'une causeinconnue" + +#: src/misc.c:419 +msgid "" +"The server does not support the functionality required to fulfill the " +"request." +msgstr "" +"Le serveur ne supporte pas la fonctionnalité nécessaire pour traiter la " +"requęte" + +#: src/misc.c:422 +msgid "Error while opening file" +msgstr "Erreur ŕ l'ouverture du fichier" + +#: src/misc.c:424 +msgid "Error while writing to file" +msgstr "Erreur ŕ l'écriture du fichier" + +#: src/misc.c:427 +msgid "The Download was aborted" +msgstr "Le téléchargement a été abandonné" + +#: src/misc.c:429 +msgid "The Download encountered a local fatal error" +msgstr "Le téléchargement a eu une erreur locale fatale" + +#: src/misc.c:431 +msgid "Error: Resuming this connection is not possible" +msgstr "Erreur: continuation de la connexion impossible" + +#: src/misc.c:433 +msgid "Error while reading data from socket" +msgstr "Erreur lors de la lecture des données depuis la socket" + +#: src/misc.c:435 +msgid "Error while writing data to socket" +msgstr "Erreur lors de l'écriture des données dans la socket" + +#: src/misc.c:437 +msgid "Error while Proxying" +msgstr "Erreur dans le traitement du proxy" + +#: src/misc.c:439 +msgid "The location is a directory" +msgstr "L'emplacement est un répertoire" + +#: src/misc.c:442 +msgid "Unknown/Unsupported error code" +msgstr "Erreur inconnue" + +#: src/netrc.c:215 +#, c-format +msgid "%s:%d: warning: found \"%s\" before any host names\n" +msgstr "%s:%d: attention: \"%s\" a été trouvé avant un nom d'hôte\n" + +#: src/netrc.c:243 +#, c-format +msgid "%s:%d: warning: unknown token \"%s\"\n" +msgstr "%s:%d: attention: token \"%s\" inconnu\n" diff --git a/libprozilla/po/it.gmo b/libprozilla/po/it.gmo new file mode 100644 index 0000000000000000000000000000000000000000..b96f2343395f4dbe6be802da66c508c8c1f1f31c GIT binary patch literal 16667 zcmd6te{daFb;p+yekmak!jB{nSS1MA!IJF|6Idzg!N_=k{W8%PMO-djnF-`iDo z-;*o@g#<|XRSFaW~S32!t-mvi@|q;L*PCB{kOppo*w~2aPu>Q;3eSo;ETXpJbnP&&hsCEmx4b6p9wyN zf1AMzz&+q~;3n|x;Q8PeL5=rU;1%Fcz>B~aoEHRi5nKssy#3%Xn1YZJ+~L1}4txsF z_kvFYzwY0E)8qF*P5mbzT?Y??yTKtC^`KQ6hD6sUJpJ3UIFfd__M$_g8KeekgkLG zf|AQ;L5=q%Q1bmQcncI~{ zwfj#H5d=>_2(i%9xQ@ez+3(Emq5|`P4IH?zd_Z%4594+kAbi(c(2F1LDl;UkiX#P{1aX0AOwxK z6;%5fQ19R3pYH-kdHyyi`hEpo30{iOB)1#+cN9DYLPBsqsQUj7QZ;x!%CCNRf#P!v z-VA;PyahZzgl6y^;2q$X!Hi-1PdU*ttyoX@sMNdE`LY@zywBpwysQKOQpYH{w$KUbq z9|5=Xd>Jo8@Fr0FdoxJa!95CR9h35<$09Qcq={E4`;77r;!Ow%TpMMOB zj{88#Es_(t{V%Nc=klUICr}MgN^3suO$<jUPW!*d6e9^49wj(34thadLe?**k7e+{bN2f=59zW~LD zC+%=@9ric{hP+<|HQ$ecS~p(@HQs|DQwV+xO0E|$SyU?64N7ir0AWq=Hc8a*;34p{U;_RJxD4L-3OBC@z)$de7D^`k z3@ABYgR*O0`$5TJ8AMdUZQu*QKLvM#-vK4p^HF;7cNaJh-URCXeW2#?Q&9YQA&s5| z?g!QXYe4bkUEuS;FM#6TeW1pB5Tt2v&b7{8-{5f$yeL4f-~jj`kDmth{trQo^S7Y* z`5-7gecB$@5Ga~-J(nVW=z66C^EV&l{y7x&Av$lRgcS9qOLGx@$MnD@S)NPzH01!L ze!bp5ys!S!-`@<1UneLZqbyQ%O;8Go=5iKgiE@x~Jw^86w<#~DTt~?$zf1W|ige;r zl+RGg>$Ti`oN|hSn%i|F|HWrrT?fYJ%emM3d%Axocq#=ov+I2RU*PZGe3o(xrMzCp&6SiR{)KGVNB#XtP;0onKETaR%10+7G>7I+Y9caoTulZVk}Hrt#~17 zh1pUk$(j9RU1C5+NA$``urIPJJ@ zs>)PNiZE)=B@5lGTde<@$G3EoJf_a+`WP8`90QIV4!iu3u$sH zu2|+6%>B3kzpLNq_c*#(4NjMkJXL$@qR>Q@t=!9w1jvedz zT6EJBX||Gvo$N%MTFZf8Q<{a%xM<{wiFR|adv~}HcaTSz$DMATLTF<#%A-an&cjC5 zjKgh1S-5-mK(MFP;zgRq4Jicz>2%`uQl|(PqvaTy7=u3Ez~{I*I6577@>K}0HL)IA z*+N3&N3Ymf%;Tt8gbjcmgFW5OBKngwqK>+aim+Qi;!qJTMMbfag@ zN=+CMMvX>X6k%u4-WORnZ^Y{x6`hf!}%y_!6tfx zQ|UsiyCyo?=w$h7IE;Qh#%iNhFU^o(950g{`c?LZ6R1{EzcI%b8~pj_#Sua^rIo4Qgdkb2JS0 z`df8Afi7nA;XIsxzfofm3X(KDFgrU{mw3I}%AzVSMR_6lEh5}FFMhu(RbaZr07j6P& z4KcxJ&z54XP{#{+rzuEvc~_gkMzvP*L_Dt5^6kR;JZqO7_I+-|$+8A3r+eCuB^%aq zvWQbrwowOee%B?gLXkC2#2r6J_h~B6PHIi}z0``rmPj&-ai8psJFcbK3Rfu$m-5UO zVX0bfqJ5qAnA|6C*I6qmI>z$8CUpk)eelDH!lgVxIMui)a5)fbBJH;4Vhl>NuXQOA z(;E}Z28{87G+v9~GgRTL7EL*Z(*U)xr6lKDD*ae^7|Rf+S$APEELNFw8@+NS%dd+u z>_E|NJLY52YO~=$Xta3$$1nwuT0)#&d7=VQjJ z>MKN@h~u>mRK;-VAmlWmp2Eld~; z>hqs;9y$u=x(hPW?bQ%XX~u(tTb$uVt=d^9eqGUtaukNZqA5)yUVELFd`Q&CIDzj9 z_lPbG;Xhmqu&LN=jVuyy?r}>Pc^48)HqpO>=4bZF&v3u6;H-AhHGe$cZM9bIwNyDt zYqxbrZ=$Gsdv)YmoT=KVx?|pZF&gOVp`!<9Cl61|hBK8{KNOuTr=oDd+*xplKq11r zn+_c&bZ9m)*IA0AT#7o2g@kNz1YyWBh9g==&$PO>u>MgSV^OOuLN<$3a&?2+ z%5KAZ!UpQFdNGk*A`Rk?W_JnYaJ(E1rYB}*{e!#DPJpx1)jQPPFB2wO`qt@K?jk0N zWED)uPCa2fV_kiXd)JD(X=715EUh9Hr3|4HRTaj0NlWOA!2g2CHf^e37wF+H_c(1h zQ=QXRnTdOv5H6s|6+P>|B%y>W6w+j5rF_{Evm{`VJ8G%wbUPZ3hu(%x&>&C6s z!LnAlUnyd&Ec_|;UdAMtv2YN@aO@1Dc?HL^9tS6pOCxKywPZ|DW@;K89><==W}gOv zS*q{#5foOvK{!t@P_{t~)?Zns))o`Wt6mNe^DE@<*+sGtW2NP@PF<~1X!TVPuF;?}z$|+0DkV|hrJe45E+P&N z^vNq0L`Ymo11Aex2_8xdYR<$@TMgh`CnxCWanO3z-o*|m;C@u|8u(X*fyFy#seZx z7cqGDjM~t?yFP=F!mIcs!IvU3c;ft0NMMAsS<2&O_Q`xnn7-{JT;DEAthnFTJq%|2 zbCigBd2DN1OPINxAi8Z|3&H5gXr6_&Zru)qI%|e?mfjA?h7>J#SdvXvhYpTxb8WVj zj;!L=`W`BFM;`cLebx!xOow=c*&KI=eS=|-i=MmmCIYG|^_?7aN2|ecnU6W_e3a^R z3T@Ux41=D{3_GSI8A{Sj77|YGY)fUq!-|fu<~cUO1n8`Gc?9X{ytWt}2+B~*wulz; z);h%ly0aaO87XSO#9U(dN4U-D#u@HxU>vy&krLFgbCGBVj5 zImSs9k^dNb%kdlb?4JmaO-#>B9yvTPb!2vAT+4#5BYRmLW8vl7wrwBTwrk|_UE%g! zV^{2Y={DX_ab!APPSi`i-u7)H+jh`oY{!n5?msj;a4;%5BeOceYDJtTj)lBQ7rJai zMrJWv1h!W-<7->VXqGQrGjM3~&_s{6?W5ZU#&MJgZDe+J2~s-o$7ak)1nt>>Am=qgUG>nT<>kmb!DRopVWN;8i30<2244B{y6b&Bd*7+vt^?O^qAA6VIkg5y$qK&@#Oo1vzT_&5HIu+r2qLmeNjQASCkxOA z9hUTc%kh8g@G$f1da3HUY{BCg)MpGHe~UGg_U5r6nHzCPV^TRwv!ao7Ik&9m4$2v= zuhgGFkWWiZRwzWCEh9~rMc^>3t*9xyrHlDXiS>zB*i|S5tkMsCtu2pGRP?xh$SH89 zi0E8e!A7d56&52I+m_Db?ZAAa)WU4H(@DYvg-x-9oN$UPvoY*hq-A&s_GJ17L*~Vc zPBIuyb2vnUw3&sis9rxPJ2WFq#Qu2N5Kv%r8Q7&B5~T+ih6!jO%pLlr7x+gzajPO- zo_lrO>Tsfl@NkLvQlSQi-h?vnoKqV(!*a}v$nP*s8mt93n)RR@#D11%GuG;`Yy?IY zqc*8%SliAlbXkLxrI9CHGzC7x4dv7##)31wb1B%`ik3569Im0tR3M^xoW2^SEb)z- zMpnN}S#VrRz{LRxC#pVevF=qZbAjw#KElg$+6yEq--=|Wiv3DsDQwf%clYk&!9E%5 zlmWtvE|x0OipQ;zN+3Sb8I$%lBsMUDL&a!l*$j1xxvCBpM&WuE&NP^UiMBtd5plA_ z4m}b_`jyL)9DSAX`jPaZH5_p|gpp@0EVPp99L7#ZIcoIPpaI?1hNh)t9JQs_1S=xe z9ewsHuNm98w7x$!W6F8p-?5uoJY|;~bf>!Q#0#RVs$-O3eE1<-WFCY}tflh$zp}P^vZ4CX*9m;>t`;AHkKHl$F;!PJ@voXw0vo;JVzV|T#rMU3UlO#vx$z>-@Iq`jsg%bqoECE?} zw8v6FxJb^>`wiqnVZs(2ZJO&5G8Rtu-h~k{fa_%as;p;eFryR0-Zc26kGXTKE-GUw z8%&uZ5r5jzQ(k^d@@NBAj9D|}qjwEaY+>-Ab&DnT)mSZC<2%-VaD(iS^L(<(<};lQ zwN#Nwz0B;Bo>5JXYlr)Nw5&NV6*moXvM)!hP=!Qi$^4#6rHhUIvEqXcVGv%#XHm^U zC(0RB1Xf8S=2+#8>J`|E_`FfQhB8Z@bgkx64c)@&g(&6&_Q^a;l0H`KPbJAiAao^? z6e+Z^ZrU+4TrSBwwTMWLJsASi@BxpJYBwwSXjiqKZY>iHK1=(k@Lb@&lC91YG$rckqoIk8D+CEXg{KgQZs1n3lvql{7A}hr)q^z(+ zK53O%(#jOJ%39e|Uu76>DN z(kqm9*OFOTXvwTNn3d;Xjv}3PIMnzXA`%wkp>6oo@b1RItu*~%(6A(ja<4YczR z%Vvf?8Kz$!g|=m>m_g*8aM(ZuBw@PfeO>UbO-?D$%BY$FAmk4Y4j)*P2s59gfOS~s zdYZ&T?))Je3}C}Xc`#S0@>QmzMtW22azkr@h?tY*uj2oe5wT6u&sJ;ok<;sOC7u2u^UY z`c(@U*JF=!RNmI3lYa8nO=)e+^w7T2q0+yVe8}p%Q9ky@!j7yZ?s4=AOViSz7eZ?Na8WW8^DJAI%_Y#FUBO1I>{k;@ovB*IIz>p9&1XO+ zh{Hw!-EW1^VYj8O>0r4qAiyiKdaHQLe8`(=55V4Jk|MS8bO+=lX2Yk?HH%_62F%~3b4;6K$xtYSI&>E>`Z0DkqAgQOEb%Aj9cpB zYkGSsW>Phyw?<^jo5=k6Y+4%QbhBm7$ZXHWue3PD$4;l^&Yqyl&59qjh_(DO)lY*c zOuVg`16JZ(#C&)y?_g`%HQo~X{bIDB9VdIdDxoHNl}|G@b>3I>vF4OYbNXNcGt1K& zb{VxYp~j@Ti5VQP02U_pEg~F-@&#)J)|1z-BXLTvS$1v8M+fTys@`g};L7nim>EBE z_{hxorOR-6r(GDVb?Z|8?@_Vb=-l_bA2DqPQ_I*^kmAys(Zmv4w z)v;h6lk7m?Xua)+`Z_l&=^EQ1u=WPd4c13lw_o&nRin~Qz&NXukRJ>7?AN_9J~xi0G{(0IkJ8 z>--=ocLk79Hj3Q|;!MwhZ9R-BnsGmW)TVaEd`hjtV6aCao2|mZu+FTWyv!$INbn!^ z>iv6hD2(zZd^>F>uT;W%JQr}-XtLvcoZn(ff~n=`t85;zzfY(nBTDR%&%-oUVU_sr z52Nc|qgB21KK053EB_nY8OC6MEkAu~&lxYv?YUb^?z!8B#lW_a qjD2=*iv8o1a(hQe^SR`n, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2001-09-29 19:49+0200\n" +"PO-Revision-Date: 2001-10-05 20:55+GMT\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 0.7\n" + +#: src/connection.c:163 src/connection.c:253 +#, c-format +msgid "Unable to open file %s: %s!" +msgstr "Impossibile aprire il file %s: %s!" + +#: src/connection.c:185 src/connection.c:300 +msgid "write failed" +msgstr "Scrittura fallita" + +#: src/connection.c:188 src/connection.c:303 +#, c-format +msgid "Unable to write to file %s: %s!" +msgstr "Impossibile scrivere sul file %s: %s!" + +#: src/connection.c:211 src/connection.c:284 +msgid "connection timed out" +msgstr "Time Out Connessione" + +#: src/connection.c:222 src/connection.c:323 +#, c-format +msgid "download for this connection completed%s : %ld received" +msgstr "Il download per questa connessione completato %s: %ld ricevuto" + +#: src/connection.c:275 +msgid "Server Closed Connection Prematurely!" +msgstr "Il Server Ha Chiuso La Connessione Prematuramente!" + +#: src/connection.c:381 +#, c-format +msgid "orig start pos= %d\n" +msgstr "Pos Part Orig= %d\n" + +#: src/connection.c:412 +msgid "Idle" +msgstr "Inattivo" + +#: src/connection.c:415 +msgid "Connecting" +msgstr "Connettendo" + +#: src/connection.c:418 +msgid "Logging in" +msgstr "Effettuando login" + +#: src/connection.c:421 +msgid "Downloading" +msgstr "Sto Scaricando" + +#: src/connection.c:424 +msgid "Completed" +msgstr "Completato" + +#: src/connection.c:427 +msgid "Login Denied" +msgstr "Login Rifiutato" + +#: src/connection.c:430 +msgid "Connect Refused" +msgstr "Connessione Rifiutata" + +#: src/connection.c:433 +msgid "Remote Fatal" +msgstr "Errore Remoto Fatale" + +#: src/connection.c:436 +msgid "Local Fatal" +msgstr "Errore Locale Fatale" + +#: src/connection.c:439 +msgid "Timed Out" +msgstr "Time Out" + +#: src/connection.c:441 +msgid "Max attempts reached" +msgstr "Numero massimo di tentativi raggiunto" + +#: src/connection.c:444 +msgid "Unkown Status!" +msgstr "Stato Sconosciuto!" + +#: src/connection.c:526 src/misc.c:471 +msgid "Error: unsupported protocol" +msgstr "Errore: protocollo non supportato" + +#: src/connection.c:548 +#, c-format +msgid "The server returned location is wrong: %s!" +msgstr "La posizione indicata dal server č sbagliata: %s!" + +#: src/connection.c:556 +#, c-format +msgid "Redirected to => %s" +msgstr "Reindirizzato a => %s" + +#: src/debug.c:60 src/download.c:692 src/download.c:1065 +#, c-format +msgid "unable to delete the file %s. Reason-: %s" +msgstr "Non riesco a cancellare il file %s. Ragione-: %s" + +#: src/download.c:174 +#, c-format +msgid "Error while processing prior download of connection number %d" +msgstr "Errore durante l'elaborazione del precedente download della connessione numero %d" + +#: src/download.c:203 +msgid "Warning! Unable to create logfile!" +msgstr "Attenzione! Impossibile creare il file di log!" + +#: src/download.c:228 src/download.c:239 src/download.c:350 src/download.c:372 +#: src/download.c:404 src/download.c:446 src/download.c:467 src/download.c:492 +#: src/download.c:534 src/download.c:555 src/download.c:1353 +#: src/download.c:1398 src/download.c:1481 src/download.c:1528 +#: src/download.c:1567 src/download.c:1619 src/download.c:1644 +#: src/download.c:1669 src/download.c:1721 src/download.c:1746 +msgid "Error: Not enough system resources" +msgstr "Errore: Risore di sistema Insufficienti" + +#: src/download.c:243 +msgid "Error: Unsupported Protocol was specified" +msgstr "Errore: E' stato specificato un protocollo non supportato" + +#: src/download.c:247 +msgid "All threads created" +msgstr "Tutti i procressi creati" + +#: src/download.c:338 src/download.c:1287 +msgid "The file was not found in all the connections!" +msgstr "Il file non č stato trovato in tutte le connessioni!" + +#: src/download.c:344 src/download.c:366 src/download.c:442 src/download.c:463 +#: src/download.c:530 src/download.c:551 src/download.c:1615 +#: src/download.c:1640 src/download.c:1717 src/download.c:1742 +msgid "Relaunching download" +msgstr "Rilanciando il download" + +#: src/download.c:360 src/download.c:1414 +msgid "Failed to change to the working directory on all the connections!" +msgstr "Non č stato possibile cambiare alla directory di lavoro per tutte le connessioni!" + +#: src/download.c:382 src/download.c:1545 +#, c-format +msgid "Connection %d, had a local fatal error: %s .Aborting download. " +msgstr "La connessione %d ha subito un errrore fatale locale: %s. Abortendo il download." + +#: src/download.c:397 src/download.c:1560 +msgid "All logins rejected!.Retrying connection" +msgstr "Tutti i logins rifiutati! Ritentando la connessione" + +#: src/download.c:485 src/download.c:1662 +msgid "All connections attempts have been rejected!.Retrying connection" +msgstr "Tutti i tentativi di connessione sono stati rifiutati! Ritentando la connessione" + +#: src/download.c:755 +#, c-format +msgid "Unable to allocate %ld bytes to recreate files" +msgstr "Impossibile allocare %ld bytes per ricreare i files" + +#: src/download.c:773 +#, c-format +msgid "Error: unable to open the file %s for writing-: %s\n" +msgstr "Errore: impossibile aprire il file %s in scrittura-: %s\n" + +#: src/download.c:792 +#, c-format +msgid "Error: Unable to open the file %s for reading-: %s\n" +msgstr "Errore: Impossibile aprire il file %s in lettura-: %s\n" + +#: src/download.c:830 +#, c-format +msgid "Unable to delete the file %s before exiting. Reason-: %s" +msgstr "Impossibile cancellare il file %s prima di uscire. Ragione-: %s" + +#: src/download.c:837 +#, c-format +msgid "Error:A write error occured while writing to %s -: %s\n" +msgstr "Errore: E' occorso un errore di scrittura su %s -: %s\n" + +#: src/download.c:852 +#, c-format +msgid "Successfully Wrote %s \n" +msgstr "Creato con Successo %s \n" + +#: src/download.c:1325 src/download.c:1453 +msgid "Trying additional paths aailable on this server" +msgstr "Provando altri indirizzi disponibili su server" + +#: src/download.c:1380 src/download.c:1509 +msgid "" +"No additional paths on this server available, so will switch to another " +"server" +msgstr "Non sono stati trovati altri indirizzi su questo server, tenterň su un altro server" + +#: src/ftp.c:106 +#, c-format +msgid "Message = %s" +msgstr "Messaggio = %s" + +#: src/ftp.c:126 +#, c-format +msgid "Error checking for FTP data: %s" +msgstr "Errore durante il controllo dei dati FTP: %s" + +#: src/ftp.c:143 +#, c-format +msgid "Error receiving FTP data: %s" +msgstr "Errore durante la ricezione dei dati FTP: %s" + +#: src/ftp.c:167 +#, c-format +msgid "Sending: %s" +msgstr "Inviando: %s" + +#: src/ftp.c:172 +#, c-format +msgid "Error sending FTP data: %s" +msgstr "Errore durante l'invio di dati FTP: %s" + +#: src/ftp.c:213 +#, c-format +msgid "Received: %s" +msgstr "Ricevuto: %s" + +#: src/ftp.c:344 +#, c-format +msgid "FTP PASV Header = %s" +msgstr "FTP PASV Header = %s" + +#. Unknown error code. +#: src/ftp.c:759 +#, c-format +msgid "Unknown code %d retuned during FTP login" +msgstr "Codice sconosciuto %d ritornato durante il login FTP" + +#: src/ftp.c:811 src/ftp.c:831 src/http-retr.c:69 src/http-retr.c:84 +#: src/http.c:562 src/http.c:577 +#, c-format +msgid "Connecting to %s" +msgstr "Connettendo a %s" + +#: src/ftp.c:822 src/ftp.c:840 +#, c-format +msgid "Error while connecting to %s" +msgstr "Errore durante la connessione a %s" + +#: src/ftp.c:827 src/ftp.c:844 +#, c-format +msgid "Connected to %s" +msgstr "Connesso a %s" + +#: src/ftp.c:872 src/ftp.c:881 +#, c-format +msgid "Logging in as user %s with password %s" +msgstr "Effettuando il login come utente %s con password %s" + +#: src/ftp.c:895 +msgid "Logged in successfully" +msgstr "Effettuato il login con successo" + +#: src/ftp.c:915 +#, c-format +msgid "CWD failed to change to directory '%s'" +msgstr "Il comando CWD non č riuscito a cambiare la directory di lavoro in '%s'" + +#: src/ftp.c:924 +msgid "CWD not needed" +msgstr "CWD non necessario" + +#: src/ftp.c:931 +msgid "REST failed" +msgstr "REST fallito" + +#: src/ftp.c:936 +msgid "REST ok" +msgstr "REST ok" + +#: src/ftp.c:1016 +#, c-format +msgid "Error receiving FTP transfer data: %s" +msgstr "Errore durante la ricezione dei dati di trasferimento FTP: %s" + +#: src/ftp.c:1021 +#, c-format +msgid "String received after the LIST command = %s" +msgstr "Stringa ricevuta dopo il comando LIST = %s" + +#: src/ftp.c:1039 +msgid "" +"Unable to parse the line the FTP server returned:please report URL to " +"kalum@delrom.ro " +msgstr "" +"Impossibile analizzare la stringa ritornata dal server FTP: per favore riporta l'URL a " +"Kalum@delrom.ro" + +#: src/ftp.c:1066 +msgid "Server doesn't seem to support PASV" +msgstr "Sembra che il server non supporti PASV" + +#: src/ftp.c:1142 +#, c-format +msgid "Retrying attempt %d in %d seconds" +msgstr "Tenterň per la %d° fra %d secondi" + +#: src/ftp.c:1161 src/http.c:734 +msgid "Seccessfully got info" +msgstr "Informazioni ottenute con successo" + +#: src/ftp.c:1169 src/http.c:746 +msgid "File not found!" +msgstr "File non trovato!" + +#: src/ftp-retr.c:319 src/ftp.c:1188 src/http-retr.c:331 src/http.c:765 +#, c-format +msgid "I have tried %d attempt(s) and have failed, aborting" +msgstr "Ho tentato per %d volte(a) e ho fallito, sto abortendo" + +#: src/ftpparse.c:194 +#, c-format +msgid "MULTINET Size: %d\n" +msgstr "Grandezza MULTINET: %d\n" + +#: src/ftpparse.c:235 +#, c-format +msgid "BINLS size: %d\n" +msgstr "Grandezza BINLS: %d\n" + +#: src/ftp-retr.c:125 +#, c-format +msgid "Logging in as user %s with password %s." +msgstr "Effettuando il login come utente %s con password %s" + +#: src/ftp-retr.c:165 +#, c-format +msgid "CWD failed to change to directory '%s'." +msgstr "CWD ha fallito nel cambiare la directory a '%s'." + +#: src/ftp-retr.c:171 +msgid "CWD ok." +msgstr "CWD ok." + +#: src/ftp-retr.c:175 +msgid "CWD not needed." +msgstr "CWD non necessario" + +#: src/ftp-retr.c:196 +msgid "I have a bug in my code!!, check remote_starpos and resume_support values" +msgstr "C'č un bug nel mio codice!!, controlla i valori di remote_startpos e resume_support." + +#: src/ftp-retr.c:206 +msgid "RETR failed" +msgstr "RETR failed" + +#: src/ftp-retr.c:259 +#, c-format +msgid "Retrying..Attempt %d in %d seconds" +msgstr "Riprovando...Tentativo %d fra %d secondi" + +#: src/ftp-retr.c:271 src/http-retr.c:284 +msgid "Error while attemting to process download file " +msgstr "Errore durante il tentativo di processare il file da scaricare" + +#: src/ftp-retr.c:302 src/http-retr.c:311 +msgid "Seccessfully got download" +msgstr "Download effettuato con successo" + +#: src/ftp-retr.c:308 +msgid "Error occured in connection..." +msgstr "C'č stato un errore nella connessione..." + +#: src/getopt.c:741 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: l'opzione `%s' č ambigua\n" + +#: src/getopt.c:769 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: opzione `--%s' non autorizza un argomento\n" + +#: src/getopt.c:776 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: opzione `%c%s' non autorizza un argomento\n" + +#: src/getopt.c:792 src/getopt.c:995 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: opzione `%s' richiede un argomento\n" + +#. +#. * --option +#. +#: src/getopt.c:825 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: opzione non riconosciuta `--%s'\n" + +#. +#. * +option or -option +#. +#: src/getopt.c:831 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: opzione non riconosciuta `%c%s'\n" + +#. +#. * 1003.2 specifies the format of this message. +#. +#: src/getopt.c:863 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%: opzione illegale -- %c\n" + +#: src/getopt.c:865 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opzione non valida -- %c\n" + +#: src/getopt.c:902 src/getopt.c:1051 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: l'opzione richiede un argomento -- %c\n" + +#: src/getopt.c:961 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: l'opzione `-W %s' č ambigua\n" + +#: src/getopt.c:981 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: l'opzione `-W %s' non autorizza un argomento\n" + +#: src/getopt.c:1118 +msgid "digits occur in two different argv-elements.\n" +msgstr "si trovano cifre in due differenti argomenti-argv.\n" + +#: src/getopt.c:1124 +msgid "option a\n" +msgstr "opzione a\n" + +#: src/getopt.c:1128 +msgid "option b\n" +msgstr "opzione b\n" + +#: src/getopt.c:1132 +#, c-format +msgid "option c with value `%s'\n" +msgstr "opzione c con valore `%s'\n" + +#: src/getopt.c:1139 +#, c-format +msgid "?? getopt returned character code 0%o ??\n" +msgstr "?? getopt ha replicato character code 0%o ??\n" + +#: src/getopt.c:1145 +msgid "non-option ARGV-elements: " +msgstr "non-option ARGV-elements: " + +#: src/http.c:376 +msgid "Failed writing HTTP request" +msgstr "Fallita la scrittura della richiesta HTTP" + +#: src/http.c:397 +#, c-format +msgid "Header = %s" +msgstr "Header = %s" + +#: src/http.c:401 +msgid "End of file while parsing headers" +msgstr "End of file durante l'analisi degli headers" + +#: src/http.c:412 +msgid "Read error in headers" +msgstr "Errore di lettura negli headers" + +#. Store the descriptive response. +#. Malformed request. +#: src/http.c:438 +msgid "UNKNOWN" +msgstr "SCONOSCIUTO" + +#: src/http.c:440 +msgid "(no description)" +msgstr "(senza descrizione)" + +#: src/http-retr.c:77 src/http-retr.c:91 src/http-retr.c:394 src/http.c:571 +#: src/http.c:583 src/http.c:801 +#, c-format +msgid "Error connecting to %s" +msgstr "Errore durante la connessione a %s" + +#: src/http-retr.c:119 src/http-retr.c:421 src/http.c:611 src/http.c:828 +#, c-format +msgid "Authenticating as user %s password %s" +msgstr "Autenticando come utente %s con password %s" + +#: src/http-retr.c:120 src/http-retr.c:422 src/http.c:612 src/http.c:829 +#, c-format +msgid "Authentification string=%s" +msgstr "Stringa di autenticazione=%s" + +#: src/http-retr.c:198 src/http-retr.c:477 src/http.c:682 +msgid "Sending HTTP request" +msgstr "Inviando la richiesta HTTP" + +#: src/http-retr.c:272 src/http.c:717 +#, c-format +msgid "Retrying...Attempt %d in %d seconds" +msgstr "Riprovando...Tentativo %d fra %d secondi" + +#: src/http-retr.c:304 +msgid "Will be hanled in main " +msgstr "Will be hanled in main " + +#: src/logfile.c:49 +#, c-format +msgid "Error opening file %s for writing: %s" +msgstr "Errore durante l'apertura del file %s in scrittura: %s" + +#: src/logfile.c:65 src/logfile.c:75 src/logfile.c:93 src/logfile.c:104 +#: src/logfile.c:115 +#, c-format +msgid "Error writing to file %s: %s" +msgstr "Errore di scrittura sul file %s: %s" + +#: src/logfile.c:168 +msgid "logfile doesn't exist" +msgstr "Il logfile non esiste!" + +#: src/logfile.c:198 +#, c-format +msgid "Error opening file %s for reading: %s" +msgstr "Errore durante l'apertura del file %s in lettura: %s" + +#: src/logfile.c:232 src/logfile.c:244 src/logfile.c:256 +#, c-format +msgid "Error reading from file %s: %s" +msgstr "Errore di lettura dal file %s: %s" + +#: src/misc.c:48 +#, c-format +msgid "Failed to malloc() %lu bytes." +msgstr "Fallito il malloc() di %lu bytes" + +#: src/misc.c:63 +#, c-format +msgid "Failed to realloc() %lu bytes." +msgstr "Fallito il realloc() di %lu bytes." + +#: src/misc.c:85 +msgid "Not enough memory to continue: strdup() failed." +msgstr "Memoria insufficiente per continuare: strduo() fallito." + +#: src/misc.c:304 +msgid "Warning: Unable to delay" +msgstr "Attenzione: Impossibile ritardare" + +#: src/misc.c:326 +msgid "Unable to lookup hostname" +msgstr "Impossibile trovare il nome dell'host" + +#: src/misc.c:328 +msgid "Unable to create socket" +msgstr "Impossibile creare il socket" + +#: src/misc.c:330 +msgid "Error occured while connecting" +msgstr "Errore durante la connessione" + +#: src/misc.c:332 +msgid "The cconnection attempt was refused" +msgstr "Il tentativo di connessione č stato rifiutato" + +#: src/misc.c:334 +msgid "Error while accepting the connection" +msgstr "Errore mentre la connessione veniva accettata" + +#: src/misc.c:336 +msgid "Error while Binding socket" +msgstr "Errore mentre il socket veniva assicurato" + +#: src/misc.c:338 +msgid "Error while listening" +msgstr "Errore durante l'ascolto" + +#: src/misc.c:340 +msgid "The connection was reset/closed by the peer" +msgstr "La connessione č stata resettata/chiusa dal peer" + +#: src/misc.c:342 +msgid "The URL Protocol was unknown" +msgstr "Il protocollo URL era sconosciuto" + +#: src/misc.c:344 +msgid "The port specified in the URL is not valid!" +msgstr "La porta specificata nell'URL non č valida!" + +#: src/misc.c:346 +msgid "The Hostname specified in the URL is not valid!" +msgstr "L'Hostname specificato nell'URL non č valido!" + +#: src/misc.c:348 +msgid "The Pattern specified in the URL does not look valid!" +msgstr "La struttura dell'URL non sembra valida!" + +#: src/misc.c:350 +msgid "End of file reached in HTTP connection" +msgstr "End of file raggiunta nella connessione HTTP" + +#: src/misc.c:352 +msgid "Error occured in HTTP data transfer" +msgstr "Errore durante la trasmissione di dati HTTP" + +#: src/misc.c:354 +msgid "Authentification is required to access this resource" +msgstr "Autenticazione richiesta per accedere a questa risorsa" + +#: src/misc.c:356 +msgid "Failed to Authenticate with host!" +msgstr "Fallita l'autenticazione con l'host!" + +#: src/misc.c:358 +msgid "The URL was not found on the host!" +msgstr "L'URL non č stato trovato sull'host!" + +#: src/misc.c:360 +msgid "The host disallowed the login attempt" +msgstr "L'host non ha autorizzato il tentativo di login" + +#: src/misc.c:362 +msgid "The PORT request was rejected by the server" +msgstr "La richiesta PORT č stata rifiutata dal server" + +#: src/misc.c:364 +msgid "The object file/dir was not found on the host!" +msgstr "Il file/dir obiettivo non č stato trovato sull'host!" + +#: src/misc.c:366 +msgid "The TYPE specified in not known by the FTP server!" +msgstr "Il TYPE specificato non č conosciuto dal server FTP!" + +#: src/misc.c:368 +msgid "The command is not known by the FTP server!" +msgstr "Il comando č sconosciuto al server FTP!" + +#: src/misc.c:370 +msgid "The SIZE command failed" +msgstr "Comando SIZE fallito" + +#: src/misc.c:372 +msgid "Error occured in FTP data transfer" +msgstr "Errore durante il trasferimento di dati FTP" + +#: src/misc.c:374 +msgid "The REST command failed" +msgstr "Comando REST fallito" + +#: src/misc.c:376 +msgid "The peer did not allow access" +msgstr "Il peer non autorizza l'accesso" + +#: src/misc.c:378 src/misc.c:380 +msgid "The host rejected the password" +msgstr "L'host ha rifiutato la password" + +#: src/misc.c:382 +msgid "The PASV (passive mode) was not supported the host" +msgstr "La PASV (passive mode) non č supportata dall'host" + +#: src/misc.c:384 +msgid "The host does not support PASV (passive mode) transfers" +msgstr "L'host non supporta i trasferimenti PASV (passive mode)" + +#: src/misc.c:386 +msgid "The connection attempt was refused" +msgstr "Il tentativo di connessione č stato rifiutato" + +#: src/misc.c:388 +msgid "Failed to (CWD)change to the directory" +msgstr "Fallito il cambiamento (CWD) di directory" + +#: src/misc.c:392 +msgid "" +"The host said the requested service was unavailable and closed the control " +"connection" +msgstr "L'host ha detto che il servizio richiesto non č disponibile e ha chiuso la connessione di controllo" + +#: src/misc.c:394 +msgid "getsockname failed!" +msgstr "Fallito il getsockname" + +#: src/misc.c:399 +msgid "" +"The server, while acting as a gateway or proxy, received an invalid response " +"from the upstream server it accessed in attempting to fulfill the request" +msgstr "" +"Il server, mentre agiva da gateway o proxy, ha ricevuto un responso non valido dall'upstrem server" +"a cui era accesso nel tentativo di completare la richiesta" + +#: src/misc.c:404 +msgid "" +"The server is currently unable to handle the request due to a temporary " +"overloading or maintenance of the server." +msgstr "" +"Il server attualmente non puň processare la richiesta a causa di un temporaneo " +"sovraccarico o mantenimento del server." + +#: src/misc.c:409 +msgid "" +"The server, while acting as a gateway or proxy, received an invalid response " +"from the upstream server it accessed in attempting to fulfill the request." +msgstr "" +"Il server, mentre agiva da gateway o proxy, ha ricevuto un responso non valido dall'upstrem server" +"a cui era accesso nel tentativo di completare la richiesta" + +#: src/misc.c:414 +msgid "" +"The server encountered an unexpected condition which prevented it from " +"fulfilling the request." +msgstr "Il server ha incontrato una condizione inaspettata che gli ha impedito di portare a termine la richiesta." + +#: src/misc.c:419 +msgid "" +"The server does not support the functionality required to fulfill the " +"request." +msgstr "Il server non supporta la funzionalitŕ richiesta per completare la richiesta." + +#: src/misc.c:422 +msgid "Error while opening file" +msgstr "Errore durante l'apertura del file" + +#: src/misc.c:424 +msgid "Error while writing to file" +msgstr "Errore durante la scrittura sul file" + +#: src/misc.c:427 +msgid "The Download was aborted" +msgstr "Il download č stato abortito" + +#: src/misc.c:429 +msgid "The Download encountered a local fatal error" +msgstr "Il Download ha incontrato un errore fatale locale" + +#: src/misc.c:431 +msgid "Error: Resuming this connection is not possible" +msgstr "Errore: Effettuare il Resume sulla connessione č impossibile" + +#: src/misc.c:433 +msgid "Error while reading data from socket" +msgstr "Errore durante la lettura dei dati dal socket" + +#: src/misc.c:435 +msgid "Error while writing data to socket" +msgstr "Errore durante la scrittura di dati sul socket" + +#: src/misc.c:437 +msgid "Error while Proxying" +msgstr "Errore durante l'attivitŕ di proxy" + +#: src/misc.c:439 +msgid "The location is a directory" +msgstr "L'indirizzo č una directory" + +#: src/misc.c:442 +msgid "Unknown/Unsupported error code" +msgstr "Codice errore Sconosciuto/Non Supportato" + +#: src/netrc.c:215 +#, c-format +msgid "%s:%d: warning: found \"%s\" before any host names\n" +msgstr "%s:%d: attenzione: trovato \"%s\" prima di qualunque nome host\n" + +#: src/netrc.c:243 +#, c-format +msgid "%s:%d: warning: unknown token \"%s\"\n" +msgstr "%s:%d: attenzione: token sconosciuto \"%s\"\n" + diff --git a/libprozilla/po/libprozilla.pot b/libprozilla/po/libprozilla.pot new file mode 100644 index 0000000..82e5b44 --- /dev/null +++ b/libprozilla/po/libprozilla.pot @@ -0,0 +1,739 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2003-02-18 05:45+0600\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING\n" + +#: src/connection.c:177 src/connection.c:274 +msgid "write failed" +msgstr "" + +#: src/connection.c:180 src/connection.c:277 +#, c-format +msgid "Unable to write to file %s: %s!" +msgstr "" + +#: src/connection.c:201 src/connection.c:258 +msgid "connection timed out" +msgstr "" + +#: src/connection.c:212 src/connection.c:296 +#, c-format +msgid "download for this connection completed%s : %ld received" +msgstr "" + +#: src/connection.c:249 +msgid "Server Closed Connection Prematurely!" +msgstr "" + +#: src/connection.c:340 +msgid "Idle" +msgstr "" + +#: src/connection.c:343 +msgid "Connecting" +msgstr "" + +#: src/connection.c:346 +msgid "Logging in" +msgstr "" + +#: src/connection.c:349 +msgid "Downloading" +msgstr "" + +#: src/connection.c:352 +msgid "Completed" +msgstr "" + +#: src/connection.c:355 +msgid "Login Denied" +msgstr "" + +#: src/connection.c:358 +msgid "Connect Refused" +msgstr "" + +#: src/connection.c:361 +msgid "Remote Fatal" +msgstr "" + +#: src/connection.c:364 +msgid "Local Fatal" +msgstr "" + +#: src/connection.c:367 +msgid "Timed Out" +msgstr "" + +#: src/connection.c:369 +msgid "Max attempts reached" +msgstr "" + +#: src/connection.c:372 +msgid "Unkown Status!" +msgstr "" + +#: src/connection.c:463 src/misc.c:471 +msgid "Error: unsupported protocol" +msgstr "" + +#: src/connection.c:487 +#, c-format +msgid "The server returned location is wrong: %s!" +msgstr "" + +#: src/connection.c:496 +#, c-format +msgid "Redirected to => %s" +msgstr "" + +#: src/debug.c:60 src/download.c:799 src/download.c:1076 +#, c-format +msgid "unable to delete the file %s. Reason-: %s" +msgstr "" + +#: src/download.c:136 src/download.c:154 src/download.c:2094 +#: src/download.c:2112 +#, c-format +msgid "Unable to open file %s: %s!" +msgstr "" + +#: src/download.c:288 +msgid "Warning! Unable to create logfile!" +msgstr "" + +#: src/download.c:307 src/download.c:318 src/download.c:458 src/download.c:480 +#: src/download.c:512 src/download.c:555 src/download.c:576 src/download.c:601 +#: src/download.c:643 src/download.c:664 src/download.c:1388 +#: src/download.c:1433 src/download.c:1516 src/download.c:1563 +#: src/download.c:1640 src/download.c:1679 src/download.c:1725 +#: src/download.c:1777 src/download.c:1802 src/download.c:1827 +#: src/download.c:1873 src/download.c:1924 src/download.c:1949 +msgid "Error: Not enough system resources" +msgstr "" + +#: src/download.c:322 +msgid "Error: Unsupported Protocol was specified" +msgstr "" + +#: src/download.c:326 +msgid "All threads created" +msgstr "" + +#: src/download.c:446 src/download.c:1322 +msgid "The file was not found in all the connections!" +msgstr "" + +#: src/download.c:452 src/download.c:474 src/download.c:551 src/download.c:572 +#: src/download.c:639 src/download.c:660 src/download.c:1773 +#: src/download.c:1798 src/download.c:1920 src/download.c:1945 +msgid "Relaunching download" +msgstr "" + +#: src/download.c:468 src/download.c:1449 +msgid "Failed to change to the working directory on all the connections!" +msgstr "" + +#: src/download.c:490 src/download.c:1657 +#, c-format +msgid "Connection %d, had a local fatal error: %s .Aborting download. " +msgstr "" + +#: src/download.c:505 src/download.c:1672 +msgid "All logins rejected! Retrying connection" +msgstr "" + +#: src/download.c:594 src/download.c:1820 +msgid "All connections attempts have been rejected! Retrying connection" +msgstr "" + +#: src/download.c:1360 src/download.c:1488 +msgid "Trying additional paths available on this server" +msgstr "" + +#: src/download.c:1415 src/download.c:1544 +msgid "" +"No additional paths on this server available, so will switch to another " +"server" +msgstr "" + +#: src/download.c:1579 +msgid "The server(s) do not support REST on all the connections!" +msgstr "" + +#: src/download.c:1622 +msgid "" +"This server does not support resuming downloads, so will switch to another " +"server" +msgstr "" + +#: src/download.c:1707 +msgid "" +"This server has rejected the login attempt, so will switch to another server" +msgstr "" + +#: src/download.c:1855 +msgid "" +"This server has rejected the connection attempt, so will switch to another " +"server" +msgstr "" + +#: src/ftp.c:106 +#, c-format +msgid "Message = %s" +msgstr "" + +#: src/ftp.c:126 +#, c-format +msgid "Error checking for FTP data: %s" +msgstr "" + +#: src/ftp.c:143 +#, c-format +msgid "Error receiving FTP data: %s" +msgstr "" + +#: src/ftp.c:167 +#, c-format +msgid "Sending: %s" +msgstr "" + +#: src/ftp.c:172 +#, c-format +msgid "Error sending FTP data: %s" +msgstr "" + +#: src/ftp.c:213 +#, c-format +msgid "Received: %s" +msgstr "" + +#: src/ftp.c:344 +#, c-format +msgid "FTP PASV Header = %s" +msgstr "" + +#. Unknown error code. +#: src/ftp.c:759 +#, c-format +msgid "Unknown code %d retuned during FTP login" +msgstr "" + +#: src/ftp.c:811 src/ftp.c:831 src/http-retr.c:69 src/http-retr.c:84 +#: src/http.c:562 src/http.c:577 +#, c-format +msgid "Connecting to %s" +msgstr "" + +#: src/ftp.c:822 src/ftp.c:840 +#, c-format +msgid "Error while connecting to %s" +msgstr "" + +#: src/ftp.c:827 src/ftp.c:844 +#, c-format +msgid "Connected to %s" +msgstr "" + +#: src/ftp-retr.c:125 src/ftp.c:872 src/ftp.c:881 +#, c-format +msgid "Logging in as user %s with password %s" +msgstr "" + +#: src/ftp.c:895 +msgid "Logged in successfully" +msgstr "" + +#: src/ftp-retr.c:165 src/ftp.c:915 +#, c-format +msgid "CWD failed to change to directory '%s'" +msgstr "" + +#: src/ftp-retr.c:175 src/ftp.c:924 +msgid "CWD not needed" +msgstr "" + +#: src/ftp.c:931 +msgid "REST failed" +msgstr "" + +#: src/ftp.c:936 +msgid "REST ok" +msgstr "" + +#: src/ftp.c:1016 +#, c-format +msgid "Error receiving FTP transfer data: %s" +msgstr "" + +#: src/ftp.c:1021 +#, c-format +msgid "String received after the LIST command = %s" +msgstr "" + +#: src/ftp.c:1039 +msgid "" +"Unable to parse the line the FTP server returned:please report URL to " +"kalum@delrom.ro " +msgstr "" + +#: src/ftp.c:1066 +msgid "Server doesn't seem to support PASV" +msgstr "" + +#: src/ftp.c:1142 +#, c-format +msgid "Retrying attempt %d in %d seconds" +msgstr "" + +#: src/ftp.c:1161 src/http.c:734 +msgid "Successfully got info" +msgstr "" + +#: src/ftp.c:1169 src/http.c:746 +msgid "File not found!" +msgstr "" + +#: src/ftp-retr.c:319 src/ftp.c:1188 src/http-retr.c:331 src/http.c:765 +#, c-format +msgid "I have tried %d attempt(s) and have failed, aborting" +msgstr "" + +#: src/ftpparse.c:194 +#, c-format +msgid "MULTINET Size: %d\n" +msgstr "" + +#: src/ftpparse.c:235 +#, c-format +msgid "BINLS size: %d\n" +msgstr "" + +#: src/ftp-retr.c:171 +msgid "CWD ok" +msgstr "" + +#: src/ftp-retr.c:196 +msgid "" +"I have a bug in my code!!, check remote_starpos and resume_support values" +msgstr "" + +#: src/ftp-retr.c:206 +msgid "RETR failed" +msgstr "" + +#: src/ftp-retr.c:259 src/http-retr.c:272 src/http.c:717 +#, c-format +msgid "Retrying...Attempt %d in %d seconds" +msgstr "" + +#: src/ftp-retr.c:271 src/http-retr.c:284 +msgid "Error while attemting to process download file " +msgstr "" + +#: src/ftp-retr.c:302 src/http-retr.c:311 +msgid "Successfully got download" +msgstr "" + +#: src/ftp-retr.c:308 +msgid "Error occured in connection..." +msgstr "" + +#: src/getopt.c:741 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "" + +#: src/getopt.c:769 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "" + +#: src/getopt.c:776 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "" + +#: src/getopt.c:792 src/getopt.c:995 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "" + +#. +#. * --option +#. +#: src/getopt.c:825 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "" + +#. +#. * +option or -option +#. +#: src/getopt.c:831 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "" + +#. +#. * 1003.2 specifies the format of this message. +#. +#: src/getopt.c:863 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "" + +#: src/getopt.c:865 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "" + +#: src/getopt.c:902 src/getopt.c:1051 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "" + +#: src/getopt.c:961 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "" + +#: src/getopt.c:981 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "" + +#: src/getopt.c:1118 +msgid "digits occur in two different argv-elements.\n" +msgstr "" + +#: src/getopt.c:1124 +msgid "option a\n" +msgstr "" + +#: src/getopt.c:1128 +msgid "option b\n" +msgstr "" + +#: src/getopt.c:1132 +#, c-format +msgid "option c with value `%s'\n" +msgstr "" + +#: src/getopt.c:1139 +#, c-format +msgid "?? getopt returned character code 0%o ??\n" +msgstr "" + +#: src/getopt.c:1145 +msgid "non-option ARGV-elements: " +msgstr "" + +#: src/http.c:376 +msgid "Failed writing HTTP request" +msgstr "" + +#: src/http.c:397 +#, c-format +msgid "Header = %s" +msgstr "" + +#: src/http.c:401 +msgid "End of file while parsing headers" +msgstr "" + +#: src/http.c:412 +msgid "Read error in headers" +msgstr "" + +#. Store the descriptive response. +#. Malformed request. +#: src/http.c:438 +msgid "UNKNOWN" +msgstr "" + +#: src/http.c:440 +msgid "(no description)" +msgstr "" + +#: src/http-retr.c:77 src/http-retr.c:91 src/http-retr.c:394 src/http.c:571 +#: src/http.c:583 src/http.c:801 +#, c-format +msgid "Error connecting to %s" +msgstr "" + +#: src/http-retr.c:119 src/http-retr.c:421 src/http.c:611 src/http.c:828 +#, c-format +msgid "Authenticating as user %s password %s" +msgstr "" + +#: src/http-retr.c:120 src/http-retr.c:422 src/http.c:612 src/http.c:829 +#, c-format +msgid "Authentification string=%s" +msgstr "" + +#: src/http-retr.c:198 src/http-retr.c:477 src/http.c:682 +msgid "Sending HTTP request" +msgstr "" + +#: src/http-retr.c:304 +msgid "Will be handled in main " +msgstr "" + +#: src/logfile.c:49 +#, c-format +msgid "Error opening file %s for writing: %s" +msgstr "" + +#: src/logfile.c:65 src/logfile.c:75 src/logfile.c:97 src/logfile.c:113 +#: src/logfile.c:129 src/logfile.c:146 +#, c-format +msgid "Error writing to file %s: %s" +msgstr "" + +#: src/logfile.c:199 +msgid "logfile doesn't exist" +msgstr "" + +#: src/logfile.c:232 +#, c-format +msgid "Error opening file %s for reading: %s" +msgstr "" + +#: src/logfile.c:270 src/logfile.c:285 src/logfile.c:301 src/logfile.c:316 +#, c-format +msgid "Error reading from file %s: %s" +msgstr "" + +#: src/misc.c:48 +#, c-format +msgid "Failed to malloc() %lu bytes." +msgstr "" + +#: src/misc.c:63 +#, c-format +msgid "Failed to realloc() %lu bytes." +msgstr "" + +#: src/misc.c:85 +msgid "Not enough memory to continue: strdup() failed." +msgstr "" + +#: src/misc.c:304 +msgid "Warning: Unable to delay" +msgstr "" + +#: src/misc.c:326 +msgid "Unable to lookup hostname" +msgstr "" + +#: src/misc.c:328 +msgid "Unable to create socket" +msgstr "" + +#: src/misc.c:330 +msgid "Error occured while connecting" +msgstr "" + +#: src/misc.c:332 src/misc.c:386 +msgid "The connection attempt was refused" +msgstr "" + +#: src/misc.c:334 +msgid "Error while accepting the connection" +msgstr "" + +#: src/misc.c:336 +msgid "Error while Binding socket" +msgstr "" + +#: src/misc.c:338 +msgid "Error while listening" +msgstr "" + +#: src/misc.c:340 +msgid "The connection was reset/closed by the peer" +msgstr "" + +#: src/misc.c:342 +msgid "The URL Protocol was unknown" +msgstr "" + +#: src/misc.c:344 +msgid "The port specified in the URL is not valid!" +msgstr "" + +#: src/misc.c:346 +msgid "The Hostname specified in the URL is not valid!" +msgstr "" + +#: src/misc.c:348 +msgid "The Pattern specified in the URL does not look valid!" +msgstr "" + +#: src/misc.c:350 +msgid "End of file reached in HTTP connection" +msgstr "" + +#: src/misc.c:352 +msgid "Error occured in HTTP data transfer" +msgstr "" + +#: src/misc.c:354 +msgid "Authentification is required to access this resource" +msgstr "" + +#: src/misc.c:356 +msgid "Failed to Authenticate with host!" +msgstr "" + +#: src/misc.c:358 +msgid "The URL was not found on the host!" +msgstr "" + +#: src/misc.c:360 +msgid "The host disallowed the login attempt" +msgstr "" + +#: src/misc.c:362 +msgid "The PORT request was rejected by the server" +msgstr "" + +#: src/misc.c:364 +msgid "The object file/dir was not found on the host!" +msgstr "" + +#: src/misc.c:366 +msgid "The TYPE specified in not known by the FTP server!" +msgstr "" + +#: src/misc.c:368 +msgid "The command is not known by the FTP server!" +msgstr "" + +#: src/misc.c:370 +msgid "The SIZE command failed" +msgstr "" + +#: src/misc.c:372 +msgid "Error occured in FTP data transfer" +msgstr "" + +#: src/misc.c:374 +msgid "The REST command failed" +msgstr "" + +#: src/misc.c:376 +msgid "The peer did not allow access" +msgstr "" + +#: src/misc.c:378 src/misc.c:380 +msgid "The host rejected the password" +msgstr "" + +#: src/misc.c:382 +msgid "The PASV (passive mode) was not supported the host" +msgstr "" + +#: src/misc.c:384 +msgid "The host does not support PASV (passive mode) transfers" +msgstr "" + +#: src/misc.c:388 +msgid "Failed to (CWD)change to the directory" +msgstr "" + +#: src/misc.c:392 +msgid "" +"The host said the requested service was unavailable and closed the control " +"connection" +msgstr "" + +#: src/misc.c:394 +msgid "getsockname failed!" +msgstr "" + +#: src/misc.c:399 src/misc.c:409 +msgid "" +"The server, while acting as a gateway or proxy, received an invalid response " +"from the upstream server it accessed in attempting to fulfill the request" +msgstr "" + +#: src/misc.c:404 +msgid "" +"The server is currently unable to handle the request due to a temporary " +"overloading or maintenance of the server." +msgstr "" + +#: src/misc.c:414 +msgid "" +"The server encountered an unexpected condition which prevented it from " +"fulfilling the request." +msgstr "" + +#: src/misc.c:419 +msgid "" +"The server does not support the functionality required to fulfill the " +"request." +msgstr "" + +#: src/misc.c:422 +msgid "Error while opening file" +msgstr "" + +#: src/misc.c:424 +msgid "Error while writing to file" +msgstr "" + +#: src/misc.c:427 +msgid "The Download was aborted" +msgstr "" + +#: src/misc.c:429 +msgid "The Download encountered a local fatal error" +msgstr "" + +#: src/misc.c:431 +msgid "Error: Resuming this connection is not possible" +msgstr "" + +#: src/misc.c:433 +msgid "Error while reading data from socket" +msgstr "" + +#: src/misc.c:435 +msgid "Error while writing data to socket" +msgstr "" + +#: src/misc.c:437 +msgid "Error while Proxying" +msgstr "" + +#: src/misc.c:439 +msgid "The location is a directory" +msgstr "" + +#: src/misc.c:442 +msgid "Unknown/Unsupported error code" +msgstr "" + +#: src/netrc.c:215 +#, c-format +msgid "%s:%d: warning: found \"%s\" before any host names\n" +msgstr "" + +#: src/netrc.c:243 +#, c-format +msgid "%s:%d: warning: unknown token \"%s\"\n" +msgstr "" diff --git a/libprozilla/po/nl.gmo b/libprozilla/po/nl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..0bd9831a820c36b835a861a2ed316cc8b2339b3b GIT binary patch literal 15269 zcmd6tYmgk(b;p~BdC0tkjWO8Ry`YUGvs&>G0XBfpTLNhX(n>NA0=+YLW?MVcJ#_bI zwF|al6B9cxV+VoO93YznpvWBLSbMXz!-2cuNrcD>$|+2rdAhKGWfs zz%ia*1TO+lKPw1E!Ihxi?*i9=3t$L74gMVX9Qa=FHIL_<9R!#2d>MENI1QcyJ^-!; z9|bpnUj$cyC(-#fa17LXH-hWH7I-1}ILOf8uR*Q%kKju1KS7oZ&Rg#KSAeJTybe4a zyw1Ph>Ty5FmV*|^)ZiX)J@{ept>BkH(f=Aa0{$4(zRo{42;Ko+4PFdRg4)+T;CsMF zJpL6Z{=ebzr~dtW*_`Bl1E~HxK<(>89-jc;&hzKM72xyWTJQ&;=8e#K9(V)zPH+mm z9_)e||EHk%dI5YF_#;sB&SsL{kAb4M8@v)c0!k0h_~(~E&0EeUuLjqEkO&MYc`SgE z$5Wu};>)1+{T)#Ag7cmH-wjHRW8h8THQ+k%e(+@QS>OM6AX9_qKso;_s=I|^xDsIP%0hRzB;WwK|SvV#m~Lq)!`)C&BN6zXV>v>Ls0TOj|b5m2c?Itpw_zs z)P6q(azuhJg3{MFK|~z90*cR55T5WHQ2bm7YWzA-_P-sJUNhf+#N%V2)_DdLzuy7H z?+F|>y?-Al`Me*bE4Uw&{r(ZC{eI2ke}Lli6qKa(ZUD9Z3^)ef2W|%c7+ep&3TmI@ z5L5pq@H(&uite9-IuFl*3=LlNcp`^J@>>O-4PFhN0&W9O11CYzJpjt@bwHiF5BTSg zf}41L3>5vBK&}58D0{t#&5QrNpzP-Zp!WSZD7k(f48d=KI@kXV%AS`qNw^slzjGiY zgD3s_ulV;r0TEU39)v1AZUT7~+y?3#-4ANrXF$>aCs2C%cTn;>4P)kOunW}q!=ToA z8pITW7eGuZ_z}1cJde#yfH#5K=STSO2JkbW=>7ndJeH$u@v{$POTjD{f)9fnt>Cku z`1(4iaj${m@04*T-;2O~Jg)+;2S4cF|1Bsve-)HHeB0xzp!hkFO>i-JsTez~eKZ)_ob2 zet!(g{?5MK+1aI_^fduWUUz|#&k<1P?`cr;z6`=j@DeCK&%_vX9=3t<6GuRef7atS zK--@_z<`p{2s{A;D11l zPH+W6*1m58Zv-Cz?*P9F&VrZxyj$<%;DbE>y~o{bLh^hWJPmvmlz#sUlwDi}Q|rM! zpzPxzQ1bdqumOG(lw7VwD2O(QLFwVsp!oa(h$#hM2PIc+O7^@Od?$D-$Wp;UkG~JT zo#$_Z=Y!t|rLR+e!SQ#A$1zazukttvawLK_sC7RH>Z3DL{k)5ZCuld)#J6;_opvAX zA=<+7OXa2HMc(PxgPvn}~PMboEGd%ykW;?M{A{z;m2uJhEP>4P}z zN4)-`|Goj-NRvDy`;XCni}ol@wxo|_uFw4rg5Lwr^53VyJ+uS<`CRZY?QZ{^fxqj& zPl3z)_t@iaf|t`C^UuHGQF_-$c5*%~)dL@$Pw7&hCuxSZmzL8G(mp`bXCLiDw3}!r z&~B!^g(f}gv(rJ4cq~D7E!zuevUN<^o`rkC-=UpD)2BtdllCcEMAJuS0TT}%p?#XB zPnUKL?L69rG=18%+iAb5hsx(9zTf7bcU9g$!1rIKeS~%i?L^u~X|nwtwDNNSU#_Dq z(B#+knW6nU?G8OG`rP85-{!FZbzWrSyJ^2do2QkZt^Ui0!6t15ZIbqJ+V!+8wEeVk z+Uc}Iv{PvMtaC8<|7^aUF?e$E;|R~&Xq)`|)4-EyzfJoDtw+0*b}Q{c+C8*iqg_GM zXEdJ(<4(u4qfVIiia1TeHEY7r#xmEF9Ev(|bBP{5_U_TfXudLRrY28T7Gc!sq;p}E zgi+S+cTG|_GK0Ykjq@<-PRH$j+Ru;f&CEUhI5Uhn7L7G)-o%1y4uo%h^f5VHin*$^ z`blOQX*-D*%s^yLKyIT;_S^l~{?X<{I2UC}oU|vxR@zUR;l-o*#o@GRrI|q@^WjXI z7hw{0jT2pMMn9QN(zzro(pi((nahGzNg6gy-pFFB+SS4O^n9g{ovhB*qH2uGXCf=vfDhpi~? zASS3GsibZ6t%;2`iZq)KS7KjpaM-vVm!xRWm?nD^_2HxIPG`Zi+v^xfVUtrpxW}~E z{@~fM1HZl>?kiu#V5JYKj5fzmTQiKpPTJt0x1xgoO_rq@`^>}f4by36<=n)AI%(7# z4};DAtB7yG7SmSPLK4U~YRtevoP^t_rf#WfygF=dMuU4%mP>y#DA#0putjSkNYj|r zYYaQw3XLWViIcM5+Z`j^Ufi^_(dcJx<#JM3WKoj0Oy*}+hFIoA_&8&R20lJMzKDd| zKsiD}u)L=|qZ8_6f$X#enJ(`tJ6LMeToy~ll~I0P*viswNwC)4F!3QRR&Mv0ouwES zOENc!I9rN<+uz364an2RtSS5+UDqvHdRS+=_EIMbUn0%Sn40dbblgnqE8L(o>}9Dv zgr#Y@jn;?`g{27v zZme3C5R6x(m9-c?&JcQaXv#I51!#^vN(#QE(NBbvcm|WC{q{_l&$H()cI8}_KNl1D zfxO>!!pEakcEgiANiWUwc)DC~BHWimJZU}2%c{&TT(#RZ;$oTOQFHQsuZKV2q+tR@ z+DJRZr98}grV+Pd+>kv96Jh`O)V-MM)cY0csLE3J^frW=VVqwI%aiPkpcFYfk;C#d zbu4b#uy=pB-MW|XdP#HZz+bPz!LA-UZ5iyqaaV>_LX8RM;$p^z*^$bKuJW43s@36W zryoww7bYLC^kOr|>@NAX&Pb8TA(uL4G8ta=*jH*C?Fsx8-8H^C5a}nvsz) z=Qc5lZd#bT@*>JmH)%mrc0#swm)BcJ&c-@{Cq-~WlcRWl7r|HMtL-Ek$6at63nL!@ zf*nn)XQz!4TNNev-flaeoA+%rZS^~ydHY(17$=pl)i7-ZS&h{qj1%b^HG8=R_+H|Cf__L`xZ!Zubm;OD5GIBBK9ULPWAChA{K z=(I5+J7ltOQzs<{2{#RrLfnJtMx>FZGe1&}Dz5^$!GR(7(kOLKgS|G>LTgTRVboII zse`$52Rdk^-LCA}YH@GH+`q^-6zHEieyHD9^6o3eY)6kD)o*^Vu)(i9{87 zxv|oAmMqPUL}mHur0HyxDQl3WFr1ZIYI}FwzGWb!%KNF?ZrM^_LhQTifagiB((&c? zEos!eyT3lzb<`=3FDmXLLclC#;N~|f!KbunP04(wDqWO2@KQf6KW~U!c^mOk&rPwm z;f&JnvS+;9?M0~>=k`L1(TaI{7b#tb-KQH>YN2YW;UbeL^Q(L~Z=iM2E*;&lJCC?G ztIJyoOi2E5gBYXROcEU;P}%S-llS}31Vm9}#N44sELElM_I{2yqe>u~VoEx#il4dt;t@b z2qB~)ovL`o?b4o{Ng7;#IXDcb5YSJ|VR8>8B*>&m7L7TQ7c^!_@ysEviS)#5-=@)y zwo8%*(yx(6fLtUp=5^*PNes6;f?t)Xu-UiC6ITfCzG)T_N>YxtZb({y?6MohET2RP zdL_ZszTGBjD-JH(RVB`4sk;rh6Xm9jX=8A~ja(~WDN)$wMm!g>bf#qb@cbCUEFCCU zUSFdj3FvWANA41X80q&2btdY1jwB*?A(ptPuecy%B}GDdv`#82`B`EM$;Mr_u)ALb z`zCLm+C-jYt=5SX_hsm?;og;MCa4NTjLVEY zqB@c6ZI*1Wdm{{^_VFwYD`Z_h&6q{YI!|oNJxEF9RS0VKRR*zFMe8adWCyOT-Uy7l zz!N9ct$Nemf)s$=9B`$pk#HzQFI}jKfx(dKy#&6a`QU)O!89>8N>ppXICZYVVCVwF z!s2UK?o{r?7RU(_tiV?|H|*KAf3WyO82H!Gvhv&X;9J98 zHEgaP-c1#Wo-A&YokqA{GJBFBDp14;e}g;PB%7CwyFy&5$U7chA-!aB;^H0XNHwqjdo?-W`BCxbQaX&u3-8Z_dFYdbG?HcvP9QvU+{=&3PqJrN+RgIlLTJA|tAhdCv($NKm2caFzj|2bH6bx=+7*IeYau?E=nX|yiUuR&;YPE7VWvHl z-=C|DMVOpZWTH|pAuCF{rlY_Jk^jT|W=4%LK|Ht(lhsSWQ19e)O=ta>{op>yaT+tl z9MY>*f|Vl~<@qpRIGv$lVam@NcsAIbMMz?=AhT_n1q#^&;Xy^%O)jKnSeVU+CE<3K zri4p;gs%z@3JF?>#6dC+yK&y>&lba?@EaRt50$kyR}$74vyWv-IM|G+_1g%ekjY{jl&wF+r%q+i!d0O{D?w1Wei zMj#6uT3Kx*?-v#&;S*Nd}G)I0osiGrivi1}V`}MNI1b!=OwQ-s7 zJm5rfDzg(Rg#B(;uC8f`ObqljRI4*gCe?*D96B%#s{%Vbi6ZWPOAC28+>SctJ{FCu zSQS-lc`sZnKG&78DFeyLV()$*+qnko?&0jhdf}ngY>7rBx@p^V;)An(Qks-6bWAFT z21E9uuNac%X@g`#vivy$_b(jhZA_JTyA=*Cbw6aWHm;K z;-{5b@H2~x{x;R|QG1L5HoyhDu?d@K6cnQuM@0ocr8&~0txz6HJ8Vc9k_3qeTyJIE zQK^dt*3%b90HG)VsNznlyg1=GdX{H}4OX&&LCL(9v#4tBWC3X(nqfPmh*J2fdF9}? z&5Y@b32X`j;^>GmxvNU~+{?|^&;3(iYnNpKy?nXT82wTzd#^_H-DOCz;cjzT)1A>t z`;8tkgm z=pM?E>DQ?hY{wD0NdTQL)AP z7M2=-lr;Sc|A}>83{4Xno_HRqY#7yU=fmo z3v6n%m^%?mnRRJ?q)z3*^CfjBeoL)dmp2r5@bPSnO}p4FA7gKuxJ#|(30QSlLlZ~b z8Azy=`dg8xCa>Q$h`u_9GbA$5tC6*mo#iFe`QfWZ8@BBQQ2Cxy0lq}`V6{}?Oj7r0 zycUugwU&&4(o@8BA5xUznQr-=N&E5>)qN;Bm-;WY#&q5KG*pqO;$FwB<5|#84Jy<$ z`NJ(2n9GuUt1QXO+3FZdI*N4e52aLqbAni0j90RU*h|%-gvAnr#L=?)Sz&03C@gJs zlza!fCpT`ndCTNxQm1N~PAK*zcy~hhQyzO)W3&EP$hfhf%)Fw@RAsii10JJuIA4(p z0&{WBUpl#3nod4t82*wZQGt|1&DH2D#0SAkB39v|wzOwWbp6f3U2sOK{JBG;B%FdB zdc<_g`%J~%iv~hc4nyXYMegrvh&yueHn~5ldS79aHJHEXHc)am>5VYsSU5tF5B|2=iBnvHH-yaquN5VRrWnmn4Z9!0_{^4lqyWOf; zc%fwc!A26?&R-&OT&1;{G;K9GV*I(0jv6U2DTjWQ)AdY8+?6PE`HG?KHR6Mm{wvog zs1?KjjX-w#<7O$yRDKu0GAcg|*b408YpC~uO)F+R#vqppsy__){MP<5P%6eEj!6!W z!I+<`7gv89kTnGEwf}8^a*X?FfYV?v67DKvONs860e%=F6Gj`=p9l60&s(`Z()Gt- OG_M_ip&^xN`Tqh@o, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2001-08-15 04:19+0600\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING\n" + +#: src/connection.c:157 src/connection.c:247 +#, c-format +msgid "Unable to open file %s: %s!" +msgstr "Onmogelijk bestand te openen %s: %s!" + +#: src/connection.c:179 src/connection.c:294 +msgid "write failed" +msgstr "schrijven mislukt" + +#: src/connection.c:182 src/connection.c:297 +#, c-format +msgid "Unable to write to file %s: %s!" +msgstr "Onmogelijk om te schrijven naar bestand %s: %s!" + +#: src/connection.c:205 src/connection.c:278 +msgid "connection timed out" +msgstr "verbindingstijd verlopen" + +#: src/connection.c:216 src/connection.c:317 +#, c-format +msgid "download for this connection completed%s : %ld received" +msgstr "download voor deze verbinding voltooid%s: %ld ontvangen" + +#: src/connection.c:269 +msgid "Server Closed Connection Prematurely!" +msgstr "Server sloot verbinding van tevoren!" + +#: src/connection.c:375 +#, c-format +msgid "orig start pos= %d\n" +msgstr "originele start pos= %d\n" + +#: src/connection.c:406 +msgid "Idle" +msgstr "Ongebruikt" + +#: src/connection.c:409 +msgid "Connecting" +msgstr "Verbinding" + +#: src/connection.c:412 +msgid "Logging in" +msgstr "Bezig met aanmelden" + +#: src/connection.c:415 +msgid "Downloading" +msgstr "Aan het downloaden" + +#: src/connection.c:418 +msgid "Completed" +msgstr "Voltooid" + +#: src/connection.c:421 +msgid "Login Denied" +msgstr "Aanmelding geweigerd" + +#: src/connection.c:424 +msgid "Connect Refused" +msgstr "Verbinding geweigerd" + +#: src/connection.c:427 +msgid "Remote Fatal" +msgstr "Fatale fout andere zijde" + +#: src/connection.c:430 +msgid "Local Fatal" +msgstr "Locale fatale fout" + +#: src/connection.c:433 +msgid "Timed Out" +msgstr "Tijd verlopen" + +#: src/connection.c:435 +msgid "Max attempts reached" +msgstr "Max pogingen bereikt" + +#: src/connection.c:438 +msgid "Unkown Status!" +msgstr "Onbekende status!" + +#: src/connection.c:520 src/misc.c:469 +msgid "Error: unsupported protocol" +msgstr "Fout: niet ondersteund protocol" + +#: src/connection.c:542 +#, c-format +msgid "The server returned location is wrong: %s!" +msgstr "De server meld dat de lokatie verkeerd is: %s!" + +#: src/connection.c:549 +#, c-format +msgid "Redirected to => %s" +msgstr "" + +#: src/debug.c:60 src/download.c:633 src/download.c:1021 +#, c-format +msgid "unable to delete the file %s. Reason-: %s" +msgstr "Unmogelijk bestand te wissen %s. Reden-: %s" + +#: src/download.c:171 +#, c-format +msgid "Error while processing prior download of connection number %d" +msgstr "Fout bij het verwerken voorafgaande download van connectie nummer %d" + +#: src/download.c:200 +msgid "Warning! Unable to create logfile!" +msgstr "Waarschuwing! Onmogelijk om logfile te maken!" + +#: src/download.c:225 src/download.c:236 src/download.c:338 src/download.c:377 +#: src/download.c:396 src/download.c:418 src/download.c:457 src/download.c:476 +msgid "Error: Not enough system resources" +msgstr "Fout: Niet genoeg systeem bronnen" + +#: src/download.c:240 +msgid "Error: Unsupported Protocol was specified" +msgstr "Fout: Niet ondersteund protocol is ingesteld" + +#: src/download.c:244 +msgid "All threads created" +msgstr "Alle draden gecreerd" + +#: src/download.c:318 +#, c-format +msgid "Connection %d, had a local fatal error: %s .Aborting download. " +msgstr "Connectie %d, heeft een locale fatale fout: %s . Download gestopt. " + +#: src/download.c:334 +msgid "All logins rejected!.Retrying connection" +msgstr "Alle aanmeldingen verworpen!. Bezig opnieuw verbinding te maken" + +#: src/download.c:373 src/download.c:392 src/download.c:453 src/download.c:472 +msgid "Relaunching download" +msgstr "Download herstarten" + +#: src/download.c:414 +msgid "All connections attempts have been rejected!.Retrying connection" +msgstr "Alle verbindingen zijn verworpen!. Bezig opnieuw verbinding te maken" + +#: src/download.c:695 +#, c-format +msgid "Unable to allocate %d bytes to recreate files" +msgstr "Onmogelijk om %d bytes te lokaliseren om bestanden te creëren" + +#: src/download.c:713 +#, c-format +msgid "Error: unable to open the file %s for writing-: %s\n" +msgstr "Fout: onmogelijk om bestand %s te openen om te schrijven-: %s\n" + +#: src/download.c:732 +#, c-format +msgid "Error: Unable to open the file %s for reading-: %s\n" +msgstr "Fout: onmogelijk om bestand %s te openen om te lezen-: %s\n" + +#: src/download.c:770 +#, c-format +msgid "Unable to delete the file %s before exiting. Reason-: %s" +msgstr "Onmogelijk om bestand %s te wissen voor het sluiten. Reden-: %s" + +#: src/download.c:777 +#, c-format +msgid "Error:A write error occured while writing to %s -: %s\n" +msgstr "Foute: Een schrijffout is ontstaan bij het schrijven naar %s -: %s\n" + +#: src/download.c:792 +#, c-format +msgid "Successfully Wrote %s \n" +msgstr "Successvol geschreven %s \n" + +#: src/ftp.c:106 +#, c-format +msgid "Message = %s" +msgstr "Bericht = %s" + +#: src/ftp.c:126 +#, c-format +msgid "Error checking for FTP data: %s" +msgstr "Fout bij het controleren van FTP data: %s" + +#: src/ftp.c:143 +#, c-format +msgid "Error receiving FTP data: %s" +msgstr "Foute bij het onvangen van FTP data: %s" + +#: src/ftp.c:167 +#, c-format +msgid "Sending: %s" +msgstr "Verzenden: %s" + +#: src/ftp.c:172 +#, c-format +msgid "Error sending FTP data: %s" +msgstr "Foute bij het zenden van FTP data: %s" + +#: src/ftp.c:213 +#, c-format +msgid "Received: %s" +msgstr "Ontvangen: %s" + +#: src/ftp.c:344 +#, c-format +msgid "FTP PASV Header = %s" +msgstr "FTP PASV Beginkop= %s" + +#. Unknown error code. +#: src/ftp.c:759 +#, c-format +msgid "Unknown code %d retuned during FTP login" +msgstr "Onbekende code %d ontstaan bij het FTP aanmelden" + +#: src/ftp.c:811 src/ftp.c:831 src/http-retr.c:69 src/http-retr.c:84 +#: src/http.c:562 src/http.c:577 +#, c-format +msgid "Connecting to %s" +msgstr "Verbinden met $s" + +#: src/ftp.c:822 src/ftp.c:840 +#, c-format +msgid "Error while connecting to %s" +msgstr "Fout bij het verbinden met %s" + +#: src/ftp.c:827 src/ftp.c:844 +#, c-format +msgid "Connected to %s" +msgstr "Verbonden met %s" + +#: src/ftp.c:870 +#, c-format +msgid "Logging in as user %s with password %s" +msgstr "Aanmelden als gebruiker %s met wachtwoord %s" + +#: src/ftp.c:882 +msgid "Logged in successfully" +msgstr "Aanmelden succesvol" + +#: src/ftp.c:902 +#, c-format +msgid "CWD failed to change to directory '%s'" +msgstr "CWD directory veranderen mislukt '%s'" + +#: src/ftp.c:911 +msgid "CWD not needed" +msgstr "CWD niet nodig" + +#: src/ftp.c:918 +msgid "REST failed" +msgstr "REST mislukt" + +#: src/ftp.c:923 +msgid "REST ok" +msgstr "REST ok" + +#: src/ftp.c:1003 +#, c-format +msgid "Error receiving FTP transfer data: %s" +msgstr "Fout bij het ontvangen van FTP overdracht data: %s" + +#: src/ftp.c:1008 +#, c-format +msgid "String received after the LIST command = %s" +msgstr "Lijn ontvangen na het LIST commando = %s" + +#: src/ftp.c:1026 +msgid "" +"Unable to parse the line the FTP server returned:please report URL to " +"kalum@delrom.ro " +msgstr "" +"Onmogelijk om de inkomende lijn van de FTP server te vertalen: rapporteer URL naar " +"kalum@delrom.ro " + +#: src/ftp.c:1053 +msgid "Server doesn't seem to support PASV" +msgstr "De server ondersteund geen PASV" + +#: src/ftp.c:1129 +#, c-format +msgid "Retrying attempt %d in %d seconds" +msgstr "Nogmaals een poging %d in %d seconden" + +#: src/ftp.c:1148 src/http.c:734 +msgid "Seccessfully got info" +msgstr "Successvol info verkregen" + +#: src/ftp.c:1156 src/http.c:746 +msgid "File not found!" +msgstr "Bestand niet gevonden!" + +#: src/ftp-retr.c:321 src/ftp.c:1175 src/http-retr.c:333 src/http.c:765 +#, c-format +msgid "I have tried %d attempt(s) and have failed, aborting" +msgstr "Ik heb %d poging(en) geprobeerd en deze zijn mislukt, gestopt" + +#: src/ftpparse.c:194 +#, c-format +msgid "MULTINET Size: %d\n" +msgstr "MULTINET grootte: %d\n" + +#: src/ftpparse.c:235 +#, c-format +msgid "BINLS size: %d\n" +msgstr "BINLS grootte: %d\n" + +#: src/ftp-retr.c:125 +#, c-format +msgid "Logging in as user %s with password %s." +msgstr "Bezig in te loggen als gebruiker %s met wachtwoord %s" + +#: src/ftp-retr.c:165 +#, c-format +msgid "CWD failed to change to directory '%s'." +msgstr "CWD directory veranderen mislukt '%s'" + +#: src/ftp-retr.c:171 +msgid "CWD ok." +msgstr "CWD ok" + +#: src/ftp-retr.c:175 +msgid "CWD not needed." +msgstr "CWD niet nodig." + +#: src/ftp-retr.c:196 +msgid "" +"I have a bug in my code!!, check remote_starpos and resume_support values" +msgstr "Ik heb een fout in mijn code!!, controleer remote_starpos en resume_support's waarden" + +#: src/ftp-retr.c:206 +msgid "RETR failed" +msgstr "RETR mislukt" + +#: src/ftp-retr.c:261 +#, c-format +msgid "Retrying..Attempt %d in %d seconds" +msgstr "Opnieuw proberen... poging %d in %d seconden" + +#: src/ftp-retr.c:273 src/http-retr.c:286 +msgid "Error while attemting to process download file " +msgstr "Fout bij het verwerken van het download bestand" + +#: src/ftp-retr.c:304 src/http-retr.c:313 +msgid "Seccessfully got download" +msgstr "Succesvol gedownload" + +#: src/ftp-retr.c:310 +msgid "Error occured in connection..." +msgstr "Fout opgetreden in verbinding..." + +#: src/getopt.c:741 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: optie '%s' is dubbelzinnig\n" + +#: src/getopt.c:769 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: optie '--%s' staat dit argument niet toe\n" + +#: src/getopt.c:776 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: optie '%c%s' staat dit argument niet toe\n" + +#: src/getopt.c:792 src/getopt.c:995 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: optie '%s' is een argument benodigd\n" + +#. +#. * --option +#. +#: src/getopt.c:825 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: onbekende optie '--%s'\n" + +#. +#. * +option or -option +#. +#: src/getopt.c:831 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: onbekende optie '%c%s'\n" + +#. +#. * 1003.2 specifies the format of this message. +#. +#: src/getopt.c:863 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: foutieve optie -- %c\n" + +#: src/getopt.c:865 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: foutieve optie -- %c\n" + +#: src/getopt.c:902 src/getopt.c:1051 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: optie is een argument nodig -- %c\n" + +#: src/getopt.c:961 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: optie '-W %s' is tegenstrijdig\n" + +#: src/getopt.c:981 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: optie '-W %s' staat geen argument toe\n" + +#: src/getopt.c:1118 +msgid "digits occur in two different argv-elements.\n" +msgstr "cijfers ontstaan in twee verschillende ergv-elementen.\n" + +#: src/getopt.c:1124 +msgid "option a\n" +msgstr "optie a\n" + +#: src/getopt.c:1128 +msgid "option b\n" +msgstr "optie b\n" + +#: src/getopt.c:1132 +#, c-format +msgid "option c with value `%s'\n" +msgstr "optie c met waarde '%s'\n" + +#: src/getopt.c:1139 +#, c-format +msgid "?? getopt returned character code 0%o ??\n" +msgstr "?? getopt terugkerende karakter code )%o ??\n" + +#: src/getopt.c:1145 +msgid "non-option ARGV-elements: " +msgstr "geen-optie ARGV-elementen: " + +#: src/http.c:376 +msgid "Failed writing HTTP request" +msgstr "HTTP aanvraag mislukt" + +#: src/http.c:397 +#, c-format +msgid "Header = %s" +msgstr "Begin = %s" + +#: src/http.c:401 +msgid "End of file while parsing headers" +msgstr "Einde van bestand tijdens het verwerken van het begin" + +#: src/http.c:412 +msgid "Read error in headers" +msgstr "Lees fout in het begin" + +#. Store the descriptive response. +#. Malformed request. +#: src/http.c:438 +msgid "UNKNOWN" +msgstr "ONBEKEND" + +#: src/http.c:440 +msgid "(no description)" +msgstr "(geen omschrijving)" + +#: src/http-retr.c:77 src/http-retr.c:91 src/http-retr.c:395 src/http.c:571 +#: src/http.c:583 src/http.c:801 +#, c-format +msgid "Error connecting to %s" +msgstr "Fout bij het verbinden met %s" + +#: src/http-retr.c:119 src/http-retr.c:422 src/http.c:611 src/http.c:828 +#, c-format +msgid "Authenticating as user %s password %s" +msgstr "Authenticatie als gebruiker %s wachtwoord %s" + +#: src/http-retr.c:120 src/http-retr.c:423 src/http.c:612 src/http.c:829 +#, c-format +msgid "Authentification string=%s" +msgstr "Authenticatie tekenreeks=%s" + +#: src/http-retr.c:198 src/http-retr.c:478 src/http.c:682 +msgid "Sending HTTP request" +msgstr "Verzenden van HTTP aanvraag" + +#: src/http-retr.c:274 src/http.c:717 +#, c-format +msgid "Retrying...Attempt %d in %d seconds" +msgstr "Opnieuw proberen... poging %d in %d seconden" + +#: src/http-retr.c:306 +msgid "Will be hanled in main " +msgstr "Zal in het hoofddeel worden afgehandeld" + +#: src/logfile.c:49 +#, c-format +msgid "Error opening file %s for writing: %s" +msgstr "Fout bij openen van bestand %s om te schrijven: %s" + +#: src/logfile.c:65 src/logfile.c:75 src/logfile.c:93 src/logfile.c:104 +#: src/logfile.c:115 +#, c-format +msgid "Error writing to file %s: %s" +msgstr "Fout bij het schrijven naar %s: %s" + +#: src/logfile.c:168 +msgid "logfile doesn't exist" +msgstr "logbestand bestaat niet" + +#: src/logfile.c:198 +#, c-format +msgid "Error opening file %s for reading: %s" +msgstr "Fout bij het openen van bestand %s om te lezen: %s" + +#: src/logfile.c:232 src/logfile.c:244 src/logfile.c:256 +#, c-format +msgid "Error reading from file %s: %s" +msgstr "Fout bij het lezen van bestand %s: %s" + +#: src/misc.c:48 +#, c-format +msgid "Failed to malloc() %lu bytes." +msgstr "Fout bij malloc() %lu bytes." + +#: src/misc.c:63 +#, c-format +msgid "Failed to realloc() %lu bytes." +msgstr "Fout bij realloc() %lu bytes." + +#: src/misc.c:85 +msgid "Not enough memory to continue: strdup() failed." +msgstr "Niet genoeg geheugen om verder te gaan: strdup() mislukt." + +#: src/misc.c:304 +msgid "Warning: Unable to delay" +msgstr "Waarschuwing: ommogelijk om te vertragen" + +#: src/misc.c:326 +msgid "Unable to lookup hostname" +msgstr "Onmogelijk hostnaam te vinden" + +#: src/misc.c:328 +msgid "Unable to create socket" +msgstr "Onmogelijk socket te creëren" + +#: src/misc.c:330 +msgid "Error occured while connecting" +msgstr "Fout bij het verbinden" + +#: src/misc.c:332 +msgid "The cconnection attempt was refused" +msgstr "De verbindingspoging is geweigerd" + +#: src/misc.c:334 +msgid "Error while accepting the connection" +msgstr "Fout bij het accepteren van de verbinding" + +#: src/misc.c:336 +msgid "Error while Binding socket" +msgstr "Fout bij het verbinden met de socket" + +#: src/misc.c:338 +msgid "Error while listening" +msgstr "Fout bij het luisteren" + +#: src/misc.c:340 +msgid "The connection was reset/closed by the peer" +msgstr "De verbinding was teruggezet/verbroken door andere zijde" + +#: src/misc.c:342 +msgid "The URL Protocol was unknown" +msgstr "Het URL protocol is niet bekend" + +#: src/misc.c:344 +msgid "The port specified in the URL is not valid!" +msgstr "De poort opgegeven in de URL is niet geldig!" + +#: src/misc.c:346 +msgid "The Hostname specified in the URL is not valid!" +msgstr "De hostnaam opgegeven in de URL is niet geldig!" + +#: src/misc.c:348 +msgid "The Pattern specified in the URL does not look valid!" +msgstr "Het patroon opgegeven in de URL ziet er niet geldig uit!" + +#: src/misc.c:350 +msgid "End of file reached in HTTP connection" +msgstr "Einde van bestand bereikt in HTTP verbinding" + +#: src/misc.c:352 +msgid "Error occured in HTTP data transfer" +msgstr "Fout in HTTP data verkeer" + +#: src/misc.c:354 +msgid "Authentification is required to access this resource" +msgstr "Authenticatie is vereist om toegang te krijgen tot deze bron" + +#: src/misc.c:356 +msgid "Failed to Authenticate with host!" +msgstr "Fout bij authenticatie met host!" + +#: src/misc.c:358 +msgid "The URL was not found on the host!" +msgstr "De URL is niet gevonden op de host!" + +#: src/misc.c:360 +msgid "The host disallowed the login attempt" +msgstr "De host heeft de aanmeldpoging niet toegestaan" + +#: src/misc.c:362 +msgid "The PORT request was rejected by the server" +msgstr "De poort die werdt gevraagd is afgewezen door de server" + +#: src/misc.c:364 +msgid "The object file/dir was not found on the host!" +msgstr "Het object bestand/map is niet gevonden op de host!" + +#: src/misc.c:366 +msgid "The TYPE specified in not known by the FTP server!" +msgstr "Het TYPE is niet bekend bij de FTP server!" + +#: src/misc.c:368 +msgid "The command is not known by the FTP server!" +msgstr "Het commando is niet bekend bij de FTP server!" + +#: src/misc.c:370 +msgid "The SIZE command failed" +msgstr "Het SIZE commando mislukte" + +#: src/misc.c:372 +msgid "Error occured in FTP data transfer" +msgstr "Fout opgetreden in FTP data verkeer" + +#: src/misc.c:374 +msgid "The REST command failed" +msgstr "Het REST commando mislukte" + +#: src/misc.c:376 +msgid "The peer did not allow access" +msgstr "De andere zijde stond geen toegang toe" + +#: src/misc.c:378 src/misc.c:380 +msgid "The host rejected the password" +msgstr "De host wees het wachtwoord af" + +#: src/misc.c:382 +msgid "The PASV (passive mode) was not supported the host" +msgstr "De PASV (passieve modus) is niet ondersteund door de host" + +#: src/misc.c:384 +msgid "The host does not support PASV (passive mode) transfers" +msgstr "Deze host onderteund geen PASV (passieve modus) overdracht" + +#: src/misc.c:386 +msgid "The connection attempt was refused" +msgstr "De verbindingspoging is geweigerd" + +#: src/misc.c:388 +msgid "Failed to (CWD)change to the directory" +msgstr "Mislukt om (CWD) directory te veranderen" + +#: src/misc.c:392 +msgid "" +"The host said the requested service was unavailable and closed the control " +"connection" +msgstr "" +"De host zei dat de gevraagde service niet aanwezig was en verbrook de controle " +"verbinding" + +#: src/misc.c:394 +msgid "getsockname failed!" +msgstr "getsockname mislukt!" + +#: src/misc.c:399 +msgid "" +"The server, while acting as a gateway or proxy, received an invalid response " +"from the upstream server it accessed in attempting to fulfill the request" +msgstr "" +"De server, die zich voordeed als gateway of proxy, ontving een foute reactie" +"van de upstream server bij de toegang om aan de aanvraag te voldoen." + +#: src/misc.c:404 +msgid "" +"The server is currently unable to handle the request due to a temporary " +"overloading or maintenance of the server." +msgstr "" +"De server is tijdelijk niet in staat de aanvraag te verwerken doordat hij " +"overbelast is of in onderhoud is." + +#: src/misc.c:409 +msgid "" +"The server, while acting as a gateway or proxy, received an invalid response " +"from the upstream server it accessed in attempting to fulfill the request." +msgstr "" +"De server, die zich voordeed als gateway of proxy, ontving een foute reactie" +"van de upstream server bij de toegang om aan de aanvraag te voldoen." + +#: src/misc.c:414 +msgid "" +"The server encountered an unexpected condition which prevented it from " +"fulfilling the request." +msgstr "" +"De server onderging een onverwachte conditie waardoor hij " +"aan de aanvraag niet kan voldoen." + +#: src/misc.c:419 +msgid "" +"The server does not support the functionality required to fulfill the " +"request." +msgstr "" +"De server heeft geen functionaliteit om de aanvraag te" +"voltooien." + +#: src/misc.c:422 +msgid "Error while opening file" +msgstr "Fout bij openen van het bestand" + +#: src/misc.c:424 +msgid "Error while writing to file" +msgstr "Fout bij het schrijven naar het bestand" + +#: src/misc.c:427 +msgid "The Download was aborted" +msgstr "De download is afgebroken" + +#: src/misc.c:429 +msgid "Error: Resuming this connection is not possible" +msgstr "Fout: Hervatten van deze verbinding is niet mogelijk" + +#: src/misc.c:431 +msgid "Error while reading data from socket" +msgstr "Fout: bij het lezen van data van de socket" + +#: src/misc.c:433 +msgid "Error while writing data to socket" +msgstr "Fout: bij het schrijven van data naar de socket" + +#: src/misc.c:435 +msgid "Error while Proxying" +msgstr "Fout bij het proxy-en" + +#: src/misc.c:437 +msgid "The location is a directory" +msgstr "De lokatie en map" + +#: src/misc.c:440 +msgid "Unknown/Unsupported error code" +msgstr "Onbekende/Niet ondersteunde fout code" + +#: src/netrc.c:215 +#, c-format +msgid "%s:%d: warning: found \"%s\" before any host names\n" +msgstr "%s:%d: waarschuwing: gevonden \"%s\" voor alle hostnamen\n" + +#: src/netrc.c:243 +#, c-format +msgid "%s:%d: warning: unknown token \"%s\"\n" +msgstr "%s:%d: waarschuwing: token onbekend \"%s\"\n" diff --git a/libprozilla/po/pt_BR.gmo b/libprozilla/po/pt_BR.gmo new file mode 100644 index 0000000000000000000000000000000000000000..1fd5e481b9ec24e8176cd57df55ea224326a219d GIT binary patch literal 15503 zcmd6tdvG0BeaAN>fkq*QB!pK|dK3_`iLWdtv161ti7d;p5?gX5+2)mm)x9fe<9l~+ zcJI~0w1k#Y!m|$^ftDsA^^`v{ona^)+ERu`I~`_H$_)LZO$#k9g*40r22!RoJcfS0 z=bYWUSC)+PS9?e2e(&y{$M5`pzw>*o{_V00J{0gdMZ1c2^Myh1@8FvT_~P@=mjuDf zz$ZLD18(Q~k}W~-%it(D1ilW`{kMWO@G;PUPk^rme+>Q#IQRmGW8hA%L-3X02f!DC zp8>alUk1m(AA(!K8+dp*co(Sk?gMWC9|T_x{yj+7;7L&H{SSBz_=-z|fTe>2pq?KE zp9eC3WK+XSia1ea;Wo|zQ!54GA1YQl^4{BeJ zg0BGo&f~X1(SHG(5xxf0^CO`6pZfdn1+}kFdHf3aBCh`nd=>aJa0hrbH#KesyaG(Y zmxAvA_ks_B>i>06be%`1E5TQR8h0D0`*(qw?``1q;3q-J;XnQL7B;7G`@kE)yFsQ5 zJ`9Q*!qQ+B6g}_p_a6bZpFah)-ZwzW{V9L_1CXr+KLa(-OTqY0=por2p;qJH=z3cD=0Z`;Y)N~3u?V7P~$Uy{~>?#r7t=}eZ3Cykqu|}(DeykO6cF zlzhJp9y|~G1ZusTV5<7hg5pC9)IL4}@)vyC-~Sg-e7q24);@NE((5C9vBhA;<43{U zxc)52U+`1Dbbelm@=H&y2gkuWcmwzeQ1g8q)OtSwcY=d3&C&&Gzb#Pwe>?coCbm=MIz|yb2V*YySStpy;_B+zTEDe+m2$C^{YjMaSnr>Cd-7o#*pl z4k8F%3c|YJCQy93$KzW-x&{w|kP>_mlzhGmqO!q-FmD9B8q~O1Q2R?k?eATn0Urjn z&oB7<-v>qSg&aEdy8@IxTnlQRIw(7NKPWvq1xoKe2QoDHhR2IgrklCm1&Y6!zdi+O z->1RXf?8bqHwqeX8q|KMiQf=9q>K&`(DJ{LR%N*<4a zlG|T{lGj&3(f?1N=Km@9eDG?RrTy#xwai;-606qz7 zo*#nR*Tro9QqX`}?>bQZUkCCRbo}+7fZF$$K#l(nD7ti-o``ur2{3h>IC+_;?}TL@-A(f0s&Irw?-GVmWk$>BSo&i59SU-%MGax$Ri z+XEufU<%v{(vUk z)F*Nf{I-@F&_!io{zwUyM`rk)EokM+2I0$|hlng)SuYbp*?210( z>q}{wF8D|evXS~cLX$qs(UxgV+S_RQ9HX^pcha6iJ4BN$k=*n-?7;eQ|I>oxej9C& z#&NLvAsu=v?H<~tG<}w6chf#ftJD67CY?jYgOAXDi>6PThPqlmaHVeWiD_@7y;~QR z&jtK`gTJ1t+wD-`Ydw0-^&&&BCzx3<034ilmk8ko=g~7Jp108Qn(RuRc>{YEUKrANqjOYS>_nzHoD<+ zyC3^}s4;3*!YqlC#Zj}6c9Vv=dMLlz%ts4p7QvA1GLp)|bL8taqZ!)YC>}Mut*z>#YO9 zShLBEB#G)$3Ix*WM6GrwH%sAi1Wl~L9QX1#Y77p~M4fC6!Yf1U49#>gX7DfW*jdV= zu#uZOz>L9Ix3h%)#PzVFX~W!fb4VP@O*_o`K`=PtY&P%BQBTQJYM|o~K zOZI-AcC&hP=AgWjvBqBJ+c!CNXx8KiaMTPn27>Y9`^`caH(?XA!Kq|1(ys&CqwqKGW!6<65N6p^5bdS>$VA^UoBXMEe3Bb%m3v9oe-8DPpCYjG z46Y0{wj;KN2~9JtbI=#U4&PChr5XFo&G6WKnpr+K(4b}-Hik{G-~ZI)6X;^PU>4v6 z{0-|%P!K2P;N0Ais>G|^R+iMc9cH=Yw}fz`EDt8MCX9^gCv+RdHV2ra0YRdqc<%L% z9&RsgSX!@lGq-Xv$aJzW$rqx`kF0dD#A)KQ^yw-1@bK`uDclB%9%6!}J#9xip^g{u zPFs-ba<8(3je4zQv3OkR<;R(YENvAN_C2mg@v;^xw!7)Wf(`3AnMa8z+h_u}zkRXm zkf-$%QOEDmJvx%5t2)ztH+7=0C6dfi)F*q(9XHb23fCz$?JTv2uuv_x(Y{H0OzxAn zo2(h<9n12*Ayo$VJ@Ctk!gdxToN`?hxLAlYk#t-05eB8vH@c9B)f+384H)AEX?ZPz z&(ejbIyA)^P6IT?9wj;7Lg`1%6qX@M((dAt$=BF(3%znC%b$x;>_FaaIp$;0D!buI zmZY8Lc|2dNH)@V1Ay-;Y{IVkR3s?2FCMpITjT)18+imOtCk++or1i9kU&>A1j_UD3 zj2W^gVbpZbKD%dA|Lon$?1;+F?&ljb8WB0WWQvpQl%QZaJCVWibLvuA!cKpz)yv9Ly|*Sf9Jus=G*Kb>&KmQ+ipVd0D{Q|+H=Tyi39Qy z{9asiHaG8DZ@SQJHrMQJDPo*depcPIWn|S?Ya%z|Y~6-69sAzTkw?=GA3ZcTIW;k7 zW=o%ZI9x5ZB4=-%QE(VHAL5&>22>7G3ufV^Q5y~m7O9J4$K5x&ZKUZoKOD?V%+C1> z_d7iS&drqf&@Qi)P*%9InMl?-B4|VDW+JCqaEi6|-s0{x!){Vv(xwX|L`O-_INp{~ zlNXJo#0q@p1d>TZ^SZbS_cZ3jceXy8cA1TOqBDzVUP;dxPvT@D4Q9RD=u=yNb5tjg z9@%n~nek>yTw=z{KoOG>wL(J6sJS*+^eWPWJi@5KpF&Y}c7s_PeIZH5P7^LD7S&-r zG>Kg5X{#k2x00Q$sGvEH`G~AJ7zpO*zTXEd7|}Y>GqXV11|d&>XIVC@{b-wJIY@}D z2)k$QBodKxbmoxaOC4OB6%E?{*8XgjqN5C^#Zld6t);s445`K|cy~jlXXe`FwsFxT~!YGldA)QGQ^o@Sb!s1jv0y5O8sb35DY7CjR2Hkm1GkKL#1RY;+#)@Geb6aiY^8&^tQ za~GDf_c#wpy!FUy3PgziaUCZGpK!j*cslFfbw2z)Gyqm~GMsjgC3aTD{x-pfongfj z&M_pNS0-npk{wvGUnD%Si5VJJz?MZm)v^mIc<9$AQMK{$aVljC2zIi9hZ?bf^%TLB zAUbQ74WwPxz~Y05W13a=4BMssbbS^efmhKg!HXgqc+wyYM;!?)>Py6k(K2}^Phz%j z<8U{(i?T}Y_e~E2$wV^7HPPHqp0YnXOlaxRRwVop2}04co4bK?NzjR*-cwi=@;mAxme9##h(2!_30k zk~8}v4^c#$Odr0B4I-r5##csR%Tpv4xr|!uqCn$3lI0W;?U^#Eh~)nhS#UOPv4!bw zCpbEF=hXD^sh}4r+h7ic5$rWwuqT%V!{7vW6+h>d?*6vV0eaIkBBk(_jYY`q3pvrM z%>##t=EFQqY%E)uP`13=w%$U1sPe?d@P0By9fOr;O0?Z-%{XyCdKMe%U9o4Bx}sS{ISiXWg>S6x)K)kmAn{N34OitB_)oO=~Ne$adUO z%_$;R0>Dw~u_{)x9Rdb+bKDib22GEPp1aH@0?IDc%m%u{wcxnS!8}ejOjNBwJ9V&3 z(6fQ2V}+g~^hUfGQ^~R^hV||%D(NgxM&L-RcDYf$4OWnnvvm=;hh6VrsrzoIv6~!?dN=qn(IbJcGgDr)UMxYMs|b|@6_g0)MJN=5lCm zK9Me?vGZ}545!)REsRSRyJP^hIqcOa>4P5C_RW}^U9Z}FcAF{*VLn`s+xcRsVZ-y; zEdz%q4^Q;AxN~@9U>yI6>}zvtZT8cNRy#Y|O|8e3{=Hs#e{^Yk(>g=}6Ua7CAZF@giK24Q9tk#l4GIl-l1@?rW?I>$0KQ3zP zsjr{+x>8<$O4aqJVTCI>_dT&!+Dtv~56El@pE+T8EQ` z3Q&ZARn@xsCO!Hq>mkaQj=GAv!UIC2ut9|wQRmdi&3)Z4&I!pg!Vv1~x~1r@S7`SW zxbnJ+>YkRgsI})LH?G)@;MSGe(~QE7Aq#y5+oPJisTWoEqToK4Hsq|SR-=0ysAYbt zUrO-8=BYE{h!r!&osgb`W={PQ_K>8@I0`lrFb5?8{;c`6#mUN`bkjk8VPAuHOYzb` z>!@7L+!WZg6y`3a65l;dX$=oVV4yQOROuz9<)s1nIDJADfJ1@?rRSNU_#xjz?39yZ zy1b7qhQ$huRTX|NB;#9xOR2F1dF*Ogi*GK$$1rtFB6{jJnAa|%1ibT%=&ID@&$YX+ z%~xqpU46dq))_T=R7jO~E1?-Smcuf8qmGc!F0n?>xrBX{pS?#CE+EIWfGQJqXeFMlYJce$8axHOnnm0)x-Jd z$q+8N5~D5FcClp8-e3c{e7PvFB|7n4>d0o0Wvjf+dPREk-K37tp`{${MsD84Qg|@! zR(9W`Usd_DJyRi4RE6^yNlURo^wMfXlcU0BD)iG$TU+1Jz9Fl;fzXuAs5)V94!QSv z$|D;xX#GPNaRz7lI2t9(_^FL2t8%-q$lNCft74W9QGyLih}Af5*a*C2sRyO_tZlJb zfIpHwW=Lqhf>L%brQKTvs$f?a6)1c4algDvq~O;mrX|#hQI96dQ7UNi<5q+WeHp%B zywe`oQYo$LnFPf-A@{V(X{Ee*CokrbqH=Uk{-s6scWTPuGhdZn|6iwx-1G7 z0>;|1IR~AoNtj8udGu_T^Ge^h+$K{G`ne19gsS+_#Ly{;urhnKD9eo-X{P$T@3Rn|L?y~1JrniS>HB&S ztNLR7Cf&+ixUx$ue`ameSYchc(F-8@tM>;_OF$~!!-E!VasJ*G@6%)<#us8!iP(9e zZ#8UPF<;)XTFMXP#Tw_e}~H@q5{brpPRj@U;DA5WaB z#%_mr)U!UfZu=Il{aiW~W&0^2Txh6x@S=jxNyCXBKD`>Vlt1-|z#1eQ>`=o`RKssk z>J9v1qFukt`1g-B>Xy2eXL50oHZ=Iuk z5nv6+gmnOMm1@F}0an`YMd8mTR29}rB{Tm&57mA$t+wzlg`Muz{rk)@klSxxWVwRL~l49>)~nVUQ^-S1W0{!j~>T`AS9(5@KJZo2e4 z2&v$Tc2SOFm(}~Fl?+kgis2sXo%;R^M-1^XbdUCPpzT~H921#7lhQiwNH)S93+OOW zd;gx{QsHQ}-DD2*;iT;(nd$r*uAg4tKf;idFvid6YPB1CU<2 z+$YD)cw{3`xtTG79%7TKuAvG&<*6R2K6V!z4DCAr*Qyo zC^EcC@T%R}*|hhP00Me13FZl6M66{AF)$nT#i|M|WE?SlR9{q3 zXMMW(7bT=1^>FX%nk;-rVB=_D{@?Pfs137@yofZKDqVB-O#M{trUr1Kd?e&$fug|p^UnJIs$%DHV-Ryy$TX6Vr{J`=?!t!lKsT& zh3ncO{+3QSm_TJw)M~kIFc?!QaL^`veVlTlD(KTmP8WUeQR@ZzdWU586t(m}4yQ>z zlIULVqxIq;uqPUJS}kL$!udpn!Zn`e9R!-=5-93ESYw4f{>6iiJ{c0PBJ^g$zL?NI z{g$b;<+ZA6<;+9?dJ_Q==nqHTzlxZbcK5%EP#DmA6(K8cUqeJeud*ylqgN4D71SfA zQD-H3v@a!OjO;rJ{jjej^rH?jEtlT-7ZT{I4SuCVdO5Mz>>>*|r!&x}^~%bqY49I8 HHir3MBC*mg literal 0 HcmV?d00001 diff --git a/libprozilla/po/pt_BR.po b/libprozilla/po/pt_BR.po new file mode 100644 index 0000000..8ef3412 --- /dev/null +++ b/libprozilla/po/pt_BR.po @@ -0,0 +1,776 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# Gustavo Noronha Silva , 2001. +# +msgid "" +msgstr "" +"Project-Id-Version: libprozilla 0.0.1\n" +"POT-Creation-Date: 2001-08-31 06:56+0600\n" +"PO-Revision-Date: 2001-06-03 21:28-0300\n" +"Last-Translator: Gustavo Noronha Silva \n" +"Language-Team: Debian-BR \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/connection.c:160 src/connection.c:250 +#, c-format +msgid "Unable to open file %s: %s!" +msgstr "Erro: Năo foi possível abrir arquivo %s-: %s!" + +#: src/connection.c:182 src/connection.c:297 +msgid "write failed" +msgstr "escrita falhou" + +#: src/connection.c:185 src/connection.c:300 +#, c-format +msgid "Unable to write to file %s: %s!" +msgstr "Erro ao escrever arquivo %s: %s!" + +#: src/connection.c:208 src/connection.c:281 +msgid "connection timed out" +msgstr "tempo limite de conexăo excedido" + +#: src/connection.c:219 src/connection.c:320 +#, c-format +msgid "download for this connection completed%s : %ld received" +msgstr "download para essa conexăo completado%s : %ld recebido" + +#: src/connection.c:272 +msgid "Server Closed Connection Prematurely!" +msgstr "O Servidor Fechou Conexăo Prematuramente!" + +#: src/connection.c:378 +#, c-format +msgid "orig start pos= %d\n" +msgstr "pos inic de orig= 5d\n" + +#: src/connection.c:409 +msgid "Idle" +msgstr "Parado" + +#: src/connection.c:412 +msgid "Connecting" +msgstr "Conectando" + +#: src/connection.c:415 +msgid "Logging in" +msgstr "Logando" + +#: src/connection.c:418 +msgid "Downloading" +msgstr "Baixando" + +#: src/connection.c:421 +msgid "Completed" +msgstr "Completado" + +#: src/connection.c:424 +msgid "Login Denied" +msgstr "Login Negado" + +#: src/connection.c:427 +msgid "Connect Refused" +msgstr "Conexăo Recusada" + +#: src/connection.c:430 +msgid "Remote Fatal" +msgstr "Erro Remoto Fatal" + +#: src/connection.c:433 +msgid "Local Fatal" +msgstr "Erro Local Fatal" + +#: src/connection.c:436 +msgid "Timed Out" +msgstr "Tempo Limite Excedido" + +#: src/connection.c:438 +msgid "Max attempts reached" +msgstr "Máximo número de tentativas" + +#: src/connection.c:441 +msgid "Unkown Status!" +msgstr "Estado desconhecido!" + +#: src/connection.c:523 src/misc.c:471 +msgid "Error: unsupported protocol" +msgstr "Erro: protocolo năo suportado!" + +#: src/connection.c:545 +#, c-format +msgid "The server returned location is wrong: %s!" +msgstr "A localizaçăo retornada pelo servidor está errada: %s!" + +#: src/connection.c:553 +#, c-format +msgid "Redirected to => %s" +msgstr "Redirecionado para => %s" + +#: src/debug.c:60 src/download.c:635 src/download.c:1024 +#, c-format +msgid "unable to delete the file %s. Reason-: %s" +msgstr "Năo foi possível deletar o arquivo %s. Razăo-: %s" + +#: src/download.c:171 +#, c-format +msgid "Error while processing prior download of connection number %d" +msgstr "Erro ao processar download inicial da conexăo número %d" + +#: src/download.c:200 +msgid "Warning! Unable to create logfile!" +msgstr "Aviso! Năo foi possível criar arquivo de log!" + +#: src/download.c:225 src/download.c:236 src/download.c:340 src/download.c:379 +#: src/download.c:398 src/download.c:420 src/download.c:459 src/download.c:478 +msgid "Error: Not enough system resources" +msgstr "Erro: Năo há recursos de sistema o bastante" + +#: src/download.c:240 +msgid "Error: Unsupported Protocol was specified" +msgstr "Erro: foi especificado um protocolo năo suportado" + +#: src/download.c:244 +msgid "All threads created" +msgstr "Todas as threads foram criadas" + +#: src/download.c:321 +#, c-format +msgid "Connection %d, had a local fatal error: %s .Aborting download. " +msgstr "Conexăo %d teve um erro local fatal: %s. Abortando download. " + +#: src/download.c:336 +msgid "All logins rejected!.Retrying connection" +msgstr "Todos os logins foram rejeitados! Tentando novamente" + +#: src/download.c:375 src/download.c:394 src/download.c:455 src/download.c:474 +msgid "Relaunching download" +msgstr "Reiniciando download" + +#: src/download.c:416 +msgid "All connections attempts have been rejected!.Retrying connection" +msgstr "Todas as tentativas de conexăo foram rejeitadas! Tentando novamente" + +#: src/download.c:698 +#, c-format +msgid "Unable to allocate %ld bytes to recreate files" +msgstr "Năo foi possível alocar %ld bytes para recriar os arquivos" + +#: src/download.c:716 +#, c-format +msgid "Error: unable to open the file %s for writing-: %s\n" +msgstr "Erro: năo foi possível abrir o arquivo %s para escrita-: %s\n" + +#: src/download.c:735 +#, c-format +msgid "Error: Unable to open the file %s for reading-: %s\n" +msgstr "Erro: năo foi possível abrir o arquivo %s para leitura-: %s\n" + +#: src/download.c:773 +#, c-format +msgid "Unable to delete the file %s before exiting. Reason-: %s" +msgstr "Năo foi possível deletar o arquivo %s antes de sair. Razăo-: %s" + +#: src/download.c:780 +#, c-format +msgid "Error:A write error occured while writing to %s -: %s\n" +msgstr "Erro: um erro de escrita ocorreu ao escrever em %s -: %s\n" + +#: src/download.c:795 +#, c-format +msgid "Successfully Wrote %s \n" +msgstr "Escrevi com sucesso %s\n" + +#: src/ftp.c:106 +#, c-format +msgid "Message = %s" +msgstr "Mensagem = " + +#: src/ftp.c:126 +#, c-format +msgid "Error checking for FTP data: %s" +msgstr "Erro procurando dados FTP: %s" + +#: src/ftp.c:143 +#, c-format +msgid "Error receiving FTP data: %s" +msgstr "Erro recebendo dados FTP: %s" + +#: src/ftp.c:167 +#, c-format +msgid "Sending: %s" +msgstr "Enviando: %s" + +#: src/ftp.c:172 +#, c-format +msgid "Error sending FTP data: %s" +msgstr "Erro enviando dados FTP: %s" + +#: src/ftp.c:213 +#, c-format +msgid "Received: %s" +msgstr "Recebi: %s" + +#: src/ftp.c:344 +#, c-format +msgid "FTP PASV Header = %s" +msgstr "Header FTP PASV = %s" + +#. Unknown error code. +#: src/ftp.c:759 +#, c-format +msgid "Unknown code %d retuned during FTP login" +msgstr "Código desconhecido %d retornado durante login FTP" + +#: src/ftp.c:811 src/ftp.c:831 src/http-retr.c:69 src/http-retr.c:84 +#: src/http.c:562 src/http.c:577 +#, c-format +msgid "Connecting to %s" +msgstr "Conectando a %s" + +#: src/ftp.c:822 src/ftp.c:840 +#, c-format +msgid "Error while connecting to %s" +msgstr "Erro ao conectar a %s" + +#: src/ftp.c:827 src/ftp.c:844 +#, c-format +msgid "Connected to %s" +msgstr "Conectado a %s" + +#: src/ftp.c:872 src/ftp.c:881 +#, c-format +msgid "Logging in as user %s with password %s" +msgstr "Logando como usuário %s com senha %s" + +#: src/ftp.c:895 +msgid "Logged in successfully" +msgstr "Logado com sucesso" + +#: src/ftp.c:915 +#, c-format +msgid "CWD failed to change to directory '%s'" +msgstr "CWD falhou ao tentar mudar para diretório '%s'" + +#: src/ftp.c:924 +msgid "CWD not needed" +msgstr "CWD năo necessário" + +#: src/ftp.c:931 +msgid "REST failed" +msgstr "REST falhou" + +#: src/ftp.c:936 +msgid "REST ok" +msgstr "REST ok" + +#: src/ftp.c:1016 +#, c-format +msgid "Error receiving FTP transfer data: %s" +msgstr "Erro recebendo dados de transferęncia de FTP: %s" + +#: src/ftp.c:1021 +#, c-format +msgid "String received after the LIST command = %s" +msgstr "String recebida depois do comando LIST = %s" + +#: src/ftp.c:1039 +msgid "" +"Unable to parse the line the FTP server returned:please report URL to " +"kalum@delrom.ro " +msgstr "" +"Incapaz de analizar a linha que o servidor de FTP retornou: por favor relate " +"a URL para kalum@delrom.ro" + +#: src/ftp.c:1066 +msgid "Server doesn't seem to support PASV" +msgstr "O Servidor parece năo suportar PASVOB" + +#: src/ftp.c:1142 +#, c-format +msgid "Retrying attempt %d in %d seconds" +msgstr "Tentativa %d iniciando em %d segundos" + +#: src/ftp.c:1161 src/http.c:734 +msgid "Seccessfully got info" +msgstr "Informaçőes conseguidas com sucesso" + +#: src/ftp.c:1169 src/http.c:746 +msgid "File not found!" +msgstr "Arquivo năo encontrado!" + +#: src/ftp-retr.c:321 src/ftp.c:1188 src/http-retr.c:333 src/http.c:765 +#, c-format +msgid "I have tried %d attempt(s) and have failed, aborting" +msgstr "Tentei %d vezes e todas falharam, abortando" + +#: src/ftpparse.c:194 +#, c-format +msgid "MULTINET Size: %d\n" +msgstr "Tamanho do MULTINET: %d\n" + +#: src/ftpparse.c:235 +#, c-format +msgid "BINLS size: %d\n" +msgstr "Tamanho do BINLS: %d\n" + +#: src/ftp-retr.c:125 +#, c-format +msgid "Logging in as user %s with password %s." +msgstr "Logando como usuário %s com senha %s." + +#: src/ftp-retr.c:165 +#, c-format +msgid "CWD failed to change to directory '%s'." +msgstr "CWD falhou ao tentar mudar para diretório '%s'." + +#: src/ftp-retr.c:171 +msgid "CWD ok." +msgstr "CWD ok." + +#: src/ftp-retr.c:175 +msgid "CWD not needed." +msgstr "CWD năo necessário." + +#: src/ftp-retr.c:196 +msgid "" +"I have a bug in my code!!, check remote_starpos and resume_support values" +msgstr "" +"Há um bug em meu código!!, confira os valores de remote_starpos e " +"resume_support" + +#: src/ftp-retr.c:206 +msgid "RETR failed" +msgstr "RETR falhou" + +#: src/ftp-retr.c:261 +#, c-format +msgid "Retrying..Attempt %d in %d seconds" +msgstr "Tentando novamente... Tentativa %d em %d segundos" + +#: src/ftp-retr.c:273 src/http-retr.c:286 +msgid "Error while attemting to process download file " +msgstr "Erro ao tentar processar o arquivo de download" + +#: src/ftp-retr.c:304 src/http-retr.c:313 +msgid "Seccessfully got download" +msgstr "Arquivo baixado com sucesso" + +#: src/ftp-retr.c:310 +msgid "Error occured in connection..." +msgstr "Houve um erro na conexăo..." + +#: src/getopt.c:741 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: a opçăo `%s' é ambígua\n" + +#: src/getopt.c:769 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: a opçăo `--%s' năo permite argumentos\n" + +#: src/getopt.c:776 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: a opçăo `%c%s' năo permite argumentos\n" + +#: src/getopt.c:792 src/getopt.c:995 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: a opçăo `%s' requer um argumento\n" + +#. +#. * --option +#. +#: src/getopt.c:825 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: opçăo năo reconhecida `--%s'\n" + +#. +#. * +option or -option +#. +#: src/getopt.c:831 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: opçăo năo reconhecida `%c%s'\n" + +#. +#. * 1003.2 specifies the format of this message. +#. +#: src/getopt.c:863 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opçăo ilegal -- %c\n" + +#: src/getopt.c:865 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opçăo inválida -- %c\n" + +#: src/getopt.c:902 src/getopt.c:1051 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: a opçăo requer um argumento -- %c\n" + +#: src/getopt.c:961 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: a opçăo `-W %s' é ambígua\n" + +#: src/getopt.c:981 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: a opçăo `-W %s' năo permite argumentos\n" + +#: src/getopt.c:1118 +msgid "digits occur in two different argv-elements.\n" +msgstr "dígitos ocorrem em dois elementos da argv diferentes\n" + +#: src/getopt.c:1124 +msgid "option a\n" +msgstr "opçăo a\n" + +#: src/getopt.c:1128 +msgid "option b\n" +msgstr "opçăo b\n" + +#: src/getopt.c:1132 +#, c-format +msgid "option c with value `%s'\n" +msgstr "opçăo c com valor `%s'\n" + +#: src/getopt.c:1139 +#, c-format +msgid "?? getopt returned character code 0%o ??\n" +msgstr "?? getopt retornou o código de caracter 0%o ??\n" + +#: src/getopt.c:1145 +msgid "non-option ARGV-elements: " +msgstr "argumentos do ARGV que năo săo opçőes: " + +#: src/http.c:376 +msgid "Failed writing HTTP request" +msgstr "Falha ao escrever requesiçăo HTTP" + +#: src/http.c:397 +#, c-format +msgid "Header = %s" +msgstr "Header = %s" + +#: src/http.c:401 +msgid "End of file while parsing headers" +msgstr "Fim de arquivo ao analizar cabeçalhos" + +#: src/http.c:412 +msgid "Read error in headers" +msgstr "Erro na leitura dos headers" + +#. Store the descriptive response. +#. Malformed request. +#: src/http.c:438 +msgid "UNKNOWN" +msgstr "DESCONHECIDO" + +#: src/http.c:440 +msgid "(no description)" +msgstr "(sem descriçăo)" + +#: src/http-retr.c:77 src/http-retr.c:91 src/http-retr.c:395 src/http.c:571 +#: src/http.c:583 src/http.c:801 +#, c-format +msgid "Error connecting to %s" +msgstr "Erro ao conectar em %s" + +#: src/http-retr.c:119 src/http-retr.c:422 src/http.c:611 src/http.c:828 +#, c-format +msgid "Authenticating as user %s password %s" +msgstr "Autenticando como usuário %s senha %s" + +#: src/http-retr.c:120 src/http-retr.c:423 src/http.c:612 src/http.c:829 +#, c-format +msgid "Authentification string=%s" +msgstr "String de autenticaçăo=%s" + +#: src/http-retr.c:198 src/http-retr.c:478 src/http.c:682 +msgid "Sending HTTP request" +msgstr "Enviando requisiçăo HTTP" + +#: src/http-retr.c:274 src/http.c:717 +#, c-format +msgid "Retrying...Attempt %d in %d seconds" +msgstr "Tentativa %d em %d segundos" + +#: src/http-retr.c:306 +msgid "Will be hanled in main " +msgstr "Será manejado na main" + +#: src/logfile.c:49 +#, c-format +msgid "Error opening file %s for writing: %s" +msgstr "Erro abrindo arquivo %s para escrita: %s" + +#: src/logfile.c:65 src/logfile.c:75 src/logfile.c:93 src/logfile.c:104 +#: src/logfile.c:115 +#, c-format +msgid "Error writing to file %s: %s" +msgstr "Erro ao escrever arquivo %s: %s" + +#: src/logfile.c:168 +msgid "logfile doesn't exist" +msgstr "logfile năo existe" + +#: src/logfile.c:198 +#, c-format +msgid "Error opening file %s for reading: %s" +msgstr "Erro ao abrir arquivo %s para leitura: %s" + +#: src/logfile.c:232 src/logfile.c:244 src/logfile.c:256 +#, c-format +msgid "Error reading from file %s: %s" +msgstr "Erro ao ler arquivo %s: %s" + +#: src/misc.c:48 +#, c-format +msgid "Failed to malloc() %lu bytes." +msgstr "Falha ao fazer malloc() de %lu bytes." + +#: src/misc.c:63 +#, c-format +msgid "Failed to realloc() %lu bytes." +msgstr "Falha ao fazer realloc() de %lu bytes." + +#: src/misc.c:85 +msgid "Not enough memory to continue: strdup() failed." +msgstr "Năo há memória suficiente para continuar: strdup() falhou." + +#: src/misc.c:304 +msgid "Warning: Unable to delay" +msgstr "Aviso: năo foi possível atrasar" + +#: src/misc.c:326 +msgid "Unable to lookup hostname" +msgstr "Impossível achar hostname" + +#: src/misc.c:328 +msgid "Unable to create socket" +msgstr "Năo foi possível criar um socket" + +#: src/misc.c:330 +msgid "Error occured while connecting" +msgstr "Houve um erro na conexăo..." + +#: src/misc.c:332 +msgid "The cconnection attempt was refused" +msgstr "A tentativa de conexăo foi recusada" + +#: src/misc.c:334 +msgid "Error while accepting the connection" +msgstr "Erro enquanto aceitava a conexăo" + +#: src/misc.c:336 +msgid "Error while Binding socket" +msgstr "Erro ao conectar o socket" + +#: src/misc.c:338 +msgid "Error while listening" +msgstr "Erro ao escutar" + +#: src/misc.c:340 +msgid "The connection was reset/closed by the peer" +msgstr "A conexăo foi reiniciada/fechada pelo servidor" + +#: src/misc.c:342 +msgid "The URL Protocol was unknown" +msgstr "O Protocolo da URL năo foi conhecido" + +#: src/misc.c:344 +msgid "The port specified in the URL is not valid!" +msgstr "A porta especificada na URL năo é válida!" + +#: src/misc.c:346 +msgid "The Hostname specified in the URL is not valid!" +msgstr "O Hostname especificado na URL năo é válida!" + +#: src/misc.c:348 +msgid "The Pattern specified in the URL does not look valid!" +msgstr "O Padrăo específicado na URL năo parece válido!" + +#: src/misc.c:350 +msgid "End of file reached in HTTP connection" +msgstr "Fim de Arquivo na conexăo HTTP" + +#: src/misc.c:352 +msgid "Error occured in HTTP data transfer" +msgstr "Erro na transferęncia de dados HTTP" + +#: src/misc.c:354 +msgid "Authentification is required to access this resource" +msgstr "Autenticaçăo necessária para acessar este recurso" + +#: src/misc.c:356 +msgid "Failed to Authenticate with host!" +msgstr "Falha ao autenticar com o servidor!" + +#: src/misc.c:358 +msgid "The URL was not found on the host!" +msgstr "A URL năo foi encontrada no servidor!" + +#: src/misc.c:360 +msgid "The host disallowed the login attempt" +msgstr "O servidor năo permitiu a tentativa de login" + +#: src/misc.c:362 +msgid "The PORT request was rejected by the server" +msgstr "A requisiçăo PORT foi rejeitada pelo servidor" + +#: src/misc.c:364 +msgid "The object file/dir was not found on the host!" +msgstr "O arquivo/diretório năo foi encontrado no servidor!" + +#: src/misc.c:366 +msgid "The TYPE specified in not known by the FTP server!" +msgstr "O TIPO especificado năo é conhecido pelo servidor FTP!" + +#: src/misc.c:368 +msgid "The command is not known by the FTP server!" +msgstr "O comando năo é conhecido pelo servidor FTP!" + +#: src/misc.c:370 +msgid "The SIZE command failed" +msgstr "O comando SIZE falhou" + +#: src/misc.c:372 +msgid "Error occured in FTP data transfer" +msgstr "Erro na transferęncia de dados FTP" + +#: src/misc.c:374 +msgid "The REST command failed" +msgstr "O comando REST falhou" + +#: src/misc.c:376 +msgid "The peer did not allow access" +msgstr "O servidor năo permitiu o acesso" + +#: src/misc.c:378 src/misc.c:380 +msgid "The host rejected the password" +msgstr "O servidor rejeitou a senha" + +#: src/misc.c:382 +msgid "The PASV (passive mode) was not supported the host" +msgstr "O PASV (modo passivo) năo é suportado pelo servidor" + +#: src/misc.c:384 +msgid "The host does not support PASV (passive mode) transfers" +msgstr "O servidor năo suporta transferęncias PASV (modo passivo)" + +#: src/misc.c:386 +msgid "The connection attempt was refused" +msgstr "A tentativa de conexăo foi recusada" + +#: src/misc.c:388 +msgid "Failed to (CWD)change to the directory" +msgstr "Falha ao (CWD)mudar de diretório" + +#: src/misc.c:392 +msgid "" +"The host said the requested service was unavailable and closed the control " +"connection" +msgstr "" +"O servidor disse que o serviço requisitado está indisponível e fechou a " +"conexăo" + +#: src/misc.c:394 +msgid "getsockname failed!" +msgstr "getsockname falhou!" + +#: src/misc.c:399 +msgid "" +"The server, while acting as a gateway or proxy, received an invalid response " +"from the upstream server it accessed in attempting to fulfill the request" +msgstr "" +"O servidor, agindo como gateway ou proxy, recebeu uma resposta inválida do " +"servidor acima dele ao tentar responder ŕ requisiçăo" + +#: src/misc.c:404 +msgid "" +"The server is currently unable to handle the request due to a temporary " +"overloading or maintenance of the server." +msgstr "" +"O servidor está no momento incapaz de lidar com a requisiçăo por causa de " +"uma sobrecarga temporaria ou por motivos de manutençăo do servidor." + +#: src/misc.c:409 +msgid "" +"The server, while acting as a gateway or proxy, received an invalid response " +"from the upstream server it accessed in attempting to fulfill the request." +msgstr "" +"O servidor, agindo como gateway ou proxy, recebeu uma resposta inválida do " +"servidor acima dele ao tentar responder ŕ requisiçăo" + +#: src/misc.c:414 +msgid "" +"The server encountered an unexpected condition which prevented it from " +"fulfilling the request." +msgstr "" +"O servidor encontrou uma condiçăo inesperada que o previne de responder ŕ " +"requisiçăo." + +#: src/misc.c:419 +msgid "" +"The server does not support the functionality required to fulfill the " +"request." +msgstr "" +"O servidor năo suporta a funcionalidade necessária para responder ŕ " +"requisiçăo." + +#: src/misc.c:422 +msgid "Error while opening file" +msgstr "Erro ao abrir arquivo" + +#: src/misc.c:424 +msgid "Error while writing to file" +msgstr "Erro ao escrever arquivo" + +#: src/misc.c:427 +msgid "The Download was aborted" +msgstr "O Download foi abortado" + +#: src/misc.c:429 +msgid "The Download encountered a local fatal error" +msgstr "O Download encontou um erro local fatal" + +#: src/misc.c:431 +msgid "Error: Resuming this connection is not possible" +msgstr "Erro: continuar essa conexăo năo é possível" + +#: src/misc.c:433 +msgid "Error while reading data from socket" +msgstr "Erro ao ler dados do socket" + +#: src/misc.c:435 +msgid "Error while writing data to socket" +msgstr "Erro ao escrever dados para o socket" + +#: src/misc.c:437 +msgid "Error while Proxying" +msgstr "Erro ao conectar a %s" + +#: src/misc.c:439 +msgid "The location is a directory" +msgstr "A localizaçăo é um diretório" + +#: src/misc.c:442 +msgid "Unknown/Unsupported error code" +msgstr "Código de erro Desconhecido/Năo suportado" + +#: src/netrc.c:215 +#, c-format +msgid "%s:%d: warning: found \"%s\" before any host names\n" +msgstr "%s:%d: aviso: \"%s\" encontrado antes de quaisquer nomes de hosts\n" + +#: src/netrc.c:243 +#, c-format +msgid "%s:%d: warning: unknown token \"%s\"\n" +msgstr "%s:%d: aviso: token desconhecido \"%s\"\n" diff --git a/libprozilla/po/ro.gmo b/libprozilla/po/ro.gmo new file mode 100644 index 0000000000000000000000000000000000000000..9712aa7fe64f3a5e3a23f877867e46a778cc1797 GIT binary patch literal 15236 zcmd6ue~cYhb;mD1LdZgX5<&un-c7QNUA*f6P6`|HW3zS=C-&NS*EYXGGW*`_?!@oS zJZ9dky{0WRDJA?!2`zy%h44$DQjxZ*T2*pdQBf(Ps6vGRLV%#;6%~q_mR6No3T{8& zd+*Gfw_ZD@>K`5D`a3`FJ@?#m&OPVc^EThU;F%8?u20Z@j<)R#W4;6K8Z+h+@bhPT zd;;9U^H0DRgPYGWW&*q!)cY(iksQK;yw}Ed5UkDxp>1w_TYQFD*SAfqw-x#Jg+dzGv18UwzF!AQ?ze;beiYQYJ{s^*@Is!y23`*S5Znr$$4ia70en7qJ9sfz zfY*ZW0oDHtp!oV{@I~MSbk?{jQ15R8MK1+k0X_^$4_^+?KLIuFN)~xFxC?}oxd)Uy z9t0(i&w{dx?}A#_e}fwLk{5XSPlJ-CTT0dO1mG4Pq-*TVO2f($kP07@UnLCtd( zi<4fj1fL7O7DSXL2F1^j@cuqf>v;&&d|v>i_pgQLZ-Xq!{39qjGIB&}&IUzi9Mt=( zL9J^Rls;on@_Hx8f95m%BRY?P8uu+w<9-B6kH-X88gOdMap!~xZL9OQ};48rk5i+7OyFtyr3?2aQ0p&No0m={j7-TAQ8H>`sz7f>= zUc*05uAu1N2TC8G1U26=Q1g5rl%B^ClJs^Jh{(-tp!~s7z#b@mj)Lm{eo*`2_dx0Q z%b>=6C*Y4k@%MZ-8=^JWf!cR(;2*tz8>sQ02DP5YLFwV&K$c`K;X!x}_-gQWP~#o~ z<%j+X)cCJ}+ri_Y>}8fsA$b*`^z&ZuTJTX&eEcV<{c#bShFh~4p~W zBX|QSzjY5NIuC(b=U;-Do_PYqRLmJ{F1D1}42u7o!RLSn!PkH-5YpyP!85=oK-u&6 zLD}t3!Lz~VZS`^;2i1Q!sP{)f^}838{2m6!z{fz@*O$WcIV|Q(o-YCQeH_$!wt%8@ z3n=*=05$(zp!U~WL9OqDAR;q=0cxHffU>LeU*^|$IjHeBf}(!_lw2dwg7<=`)_fX# zF8DZzh|J%ClFvCfIaoDYK+W?;Q2p->_{X60y8(X$PV@a)D9wU1pzLB16n}SvqW}Bh z`RgE}bU{dbZQbVedjQn_eh2t^@Z+HT%TGaun2Rtn@pmgIx+~z#;Qio!@ay0zIE67| zisqBx`@p{ie+yj1n6%!12PK!MV@%@XZ1DNut3lb@K2UtT3$)-T!9(C<;rZpS^7cLt z%C6oCo)10(N6 zMc~D}-v(;^yTNn764WJIZ(c9r;UU@$H0e`1xrO$twD;3KK>H{y3^yO4M_meO<~26stDZw&V{p!TlhEg$f1+WoZO zp-FeT+8)f?1AZLTdUdsE`)CLCz;yxbC@sv?UtIZ~oHj>$AMIM&4%z|Q6zwe95!$n8y0&?!|2>yG z`GD%Wj+GbnY544ew&ulUP^lnO@5@Hy@&R4ny!gr+9sV&yc~6G*6Sx( zY9}Y{L~G1{Nmrvz(%#@p=zHfxYofTqwzIfMujt#T)5#9oD78_(Tz2EM@5$7i>6#Qa z>MkbBWmXm^e$C@Imq{Me=VUY{Cx3(!_ zZus4;$9b?ez=060OGY#2k5i7hmJ{_|(3*pRd7pV}v8n$(9qwK6S_b zN*+h;!nOb?nwhe{g83w^s4ucnVaoyzCkoq(isEpVx4Ex-ExCS}E~*PkY9j|5wOVme z*#3%pUu0$8iccI=^mFF87J4`CoZB^T3-mW_C)#6X_TYBA6eS&`1T_SeF2}lSW1_8o zmao|>Ft5|>Hs$)I848T!Hft31;iLbY9Rjm%uMu1jn{D$vv-?$Zn zjc-V0qP+#JwQXcOS&MzX6!rNx&hsp1orRs6S{^T7iQkwYMxR>}_hi+3oO(I`^Wykp5OsZk!iphvr0(aqEy?W7qa3XtZHSoK)X~ z+0nzV#ShC`tupsBSA%RnkJ4f(&cnz?7ss3kpQ6vuzNe<9){*cFsCq~Uj`yq=YlC`O zAUiEVrpvp=3O4F>I8P+wMz1i=F6CLbA~^E76(_5jtXl3#KUQK`FUcZK#o0y#{Q7Q8 ze1{@y9g6#5jsDZ#JUgO2J@QgJ3Rfb{ti&U_chd1AovZMjGTX~Dw+SoL@(UdyIu!DV zzCE!{QuLk3M}{;7Jn|t-Ck}ggf^zD4G2m(<_C#8C7h@bsdt`K_5ob3}EgJ|XDALJV z44*kR5OI=qjseZQ5)nI;CA)>&L}Z<0~d} z($5v!&KD^##YNxTB*!Rixez~Yn%wX7(KWJ*<+40%cg>>ac04}5#d}R`qMP;OJBogk zqivFcw#yDr{OUA}LCXgbwp~wlGzmMOWip_42i{d`EZLv}C|7K?!B7G>NX{Etb02<9z)x`f7im!xg863 zz7EN|qa)Q)6zg3qGP{ZL5uw>xKw}?u5f(ujt6{I;kV@h@(Y{^w(57Gfl-ajqejz;g z`|J?7u&;iHbp@k@vnrD9i{+eSQZ|fkU+gUlNio;8*ZFsys7zZcT6E=u=qT-3FWWk4 z3aXKon1O!_(#W(ex<0KUI?Z_XovP1CyUfQ!)!Ah%ujc23FG;$TnfVYkM$9(6oVHrr ze4MYwxt;A~q$PH?P80DMaW^8dj5}-NRj=xBP{jB&->&MzeD)ZNnJY>4kMYVz;^;7b5 zTI8z3OptmJ_qVpZ1&3Ak;vjc-&T1!xJI`WAV&0u)D&OPQ>3daLXqvTMXA)I@Rt(40 zS{LogQw~2D5yx(Q3YG#Bl7G@7NFgU;?<$ebg?H_bunrAC6#bl-Jrs$fs?^^d?-6Iz zh=dCa$rg2xb4kfoJlRtzPhx^X+bP(ID4ew1M9LjTtw~&MynVb$x$=P{R>@E!mhhfp zm;yw9&540imvgYhAkvslQ#?~{>OgM91Ek0*K0@xIga(x88V$WFUa z!t`mBqE`}Bt=lhRWXAfe-c;h@JoBdszoY!HEm{~{aG=)=@@{sS6ZPSUsdFXcN7l9= z%*xwxWDX@BvWOn%eB>@Mh>@~Ktc;^>;7B6!2Wp9n@{Es2PEsVaC+ei3lK)R^A=#wM z684mRvw!ZkxjhHx%rH@Q$s7Vxpmn*PA{O#O5WH0OTr_%z*Wm;(q|%OcfOk@?67EpN ziI2Eb;1s!hRAi}3Wg7(L%FCV$779a+FD`=*#FTW5H@@kZ?Pu#GslORIY`FK8o@uHI z5&iPmZBgw=)^><=v3mmyqxPvhvkkI7AE(c{X}u?Q)gq)M@~R`XOO;XFQPa6f2)T}1 znt+VvsJ>#6aDpd9H!)Xw4jyH&`UbMyYBw7^n7? zHA5F@`%dQ>I&UY-31uvIz;MC+unIa$6cO0bDqOBkqCFKai>WbFrAqF=pcE7%c|lanj=nXBK?$@&Ez&dhnB} z3mO!5ap_73sAX`r^(kguNv;P6W2Wj@u~HR>mj?MDl!sxoSsae+lPUF01-f=gDp6I4 ztK#rNCU5v8Q7dl^as?cwXJZg$BbBO4whNVNWphXAIgYpUorj$wp`tDumhuFw!bxPye$q*po1n+uY+-~ENm0au*+FpyX{=_6V>=odN}Z&i zmp;%zD&meqdz`>qQQ~F8fd!$k;*p^$An!&PT?V;AG7cfskRux(Dltp^iYY3~^#?PL z2_D0)k>yfyEFrCYa%3`{K&wtj%J<<0#uW1$ZGR#!J7q#4$ukpKvaDbXf-I|efPZ3wdKhI!&TCZsiesITj#SVxRNui~pAoYU%u z{42?=SB(>DqL^`N!nLTPP=uXqngJ8Ie77M-U%qziYOG8;X_}39Qhqs-E#uk#Lm4}H z%BcIcqKZz*EqW;5bAty+u+Qot_e+l;E|=>|u)Lt|SCR zIXt*}cC`s=Ee5ldHtS+_)hQUjP=74w38TWr!&Man35wy)>!-2HZ$^vZGu>f)VcncJR0gj+`|(62FA^ZE zDa^jEHh#k8=FRxFF5AfCk{C7^ zeLMQ}6dB3SkiAqD@({-BjH4=*<9bOt=E^Sdxx+E&NYZ6%G**i8;M>uTp@NI|wPF1fwgD52Me;3|$zg2vreC3OEPgk{(WK?`mAsLikOUG|(@ zy^9%DA>C&s!$LZBiKA|ZhlHY1i_bTPR%@y}(;58GDY|{*>gxPeMO^nH2HP*XB-Zs; zb~vfjSN1^-{#1RP1vUF^ud^CbEN>7yDW>P$=y)OpYqiGq2Gq#E<1>M*~P zU6_A1h{l<6<*BNdu83Z}Tu2o78w8ooRnuLls?S?B6LjVte?4yYhDgIJu@Lwk9?}eN zNoTb7@Xa3qwRhOSJ*M;@tiF2jx99392h+*({Uppa2>cy#*?_BjP|8-6kJtM-UU+cXEEUr1%00+shG|)XOHz->{VuoAp{xuRoAr={bW~m%wBR3@#}wl zSC+Ezo~hjhGgXpP1>L3RRM0Vg7lKuYs9pM#IKv(#!=&;;Q%$KgHob~UI(80i$DOk~ zkKh`*J$|ayA7IJ#R1_&RB5xP+?JvA@!XEt{d0TfXZJ6t0-+R~bc_WN z8GYfrHZ%5sTy%B*th&3G{-}YYtKJ^NOY>8H)fwfW)4Jf5pfWUTcV{Tw7tfiTqPDjx zZ&GqJiZ~U?jgAIh>w$6H6o))*1Rbxvnj-8|b@Qk{$xqf*Fm^SBRcyCh9`FY`kvk$_ zdBItudyM2L<>+Wqf3R5GP#4xKW?YiblA0^@%*+z-hFeT>40cB6aKs#D>+TE)H@J6x zi_>4txC7mA{MN<^h8p|m_BAuUv^Z{q1V$9(%r@iys0zI(K%$kNh&UhKID{RLTIHhU zO5xMj-5UpDf5c|bRAv()Z1TV*7@~hWD+e}IC<$E@-&Kp}oY0R|e6MpV=_M5Aa4l@) z+A&+7vhg>C2`u;uNT|cRzj?(`kJREr=;jZ6+|eU!(rnoU0@dROrshZGcyA49`3OH5 zxPo}%>hhsH?JD!(-qq&AeM==roll(1?o^3y%=EIOs@U@PAd(<|=$psBNT2%sbE4@7 SLoYkt)Sc}hIG0ur%>Muk`J1x< literal 0 HcmV?d00001 diff --git a/libprozilla/po/ro.po b/libprozilla/po/ro.po new file mode 100644 index 0000000..180f01c --- /dev/null +++ b/libprozilla/po/ro.po @@ -0,0 +1,775 @@ +# Romanian messages for libprozilla. +# Copyright (C) 2001 Free Software Foundation, Inc. +# Flower , 2001. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: libprozilla 0.0.1\n" +"POT-Creation-Date: 2001-08-18 04:26+0300\n" +"PO-Revision-Date: 2001-08-19 13:11+0300\n" +"Last-Translator: Flower \n" +"Language-Team: RTFS \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/connection.c:157 src/connection.c:247 +#, c-format +msgid "Unable to open file %s: %s!" +msgstr "Nu pot deschide fişierul %s: %s!" + +#: src/connection.c:179 src/connection.c:294 +msgid "write failed" +msgstr "scriere eşuată" + +#: src/connection.c:182 src/connection.c:297 +#, c-format +msgid "Unable to write to file %s: %s!" +msgstr "Nu pot scrie în fişierul %s: %s!" + +#: src/connection.c:205 src/connection.c:278 +msgid "connection timed out" +msgstr "timpul conexiunii a expirat" + +#: src/connection.c:216 src/connection.c:317 +#, c-format +msgid "download for this connection completed %s : %ld received" +msgstr "descărcarea pentru această conexiune s-a încheiat %s : %ld receptionaţi" + +#: src/connection.c:269 +msgid "Server Closed Connection Prematurely!" +msgstr "Serverul a închis prematur conexiunea!" + +#: src/connection.c:375 +#, c-format +msgid "orig start pos= %d\n" +msgstr "poz orig de pornire= %d\n" + +#: src/connection.c:406 +msgid "Idle" +msgstr "liber" + +#: src/connection.c:409 +msgid "Connecting" +msgstr "Conectare" + +#: src/connection.c:412 +msgid "Logging in" +msgstr "Autentificare" + +#: src/connection.c:415 +msgid "Downloading" +msgstr "Descărcare" + +#: src/connection.c:418 +msgid "Completed" +msgstr "Terminat" + +#: src/connection.c:421 +msgid "Login Denied" +msgstr "Login refuzat" + +#: src/connection.c:424 +msgid "Connect Refused" +msgstr "Conexiune refuzată" + +#: src/connection.c:427 +msgid "Remote Fatal" +msgstr "Eroare fatală la server" + +#: src/connection.c:430 +msgid "Local Fatal" +msgstr "Eroare locală fatală" + +#: src/connection.c:433 +msgid "Timed Out" +msgstr "Timp expirat" + +#: src/connection.c:435 +msgid "Max attempts reached" +msgstr "Numărul maxim de încercări a fost atins" + +#: src/connection.c:438 +msgid "Unkown Status!" +msgstr "Stare necunoscută" + +#: src/connection.c:520 src/misc.c:471 +msgid "Error: unsupported protocol" +msgstr "Eroare: protocol nesuportat" + +#: src/connection.c:542 +#, c-format +msgid "The server returned location is wrong: %s!" +msgstr "Locaţia returnată de server e greşită: %s!" + +#: src/connection.c:550 +#, c-format +msgid "Redirected to => %s" +msgstr "Redirectat la => %s" + +#: src/debug.c:60 src/download.c:636 src/download.c:1024 +#, c-format +msgid "unable to delete the file %s. Reason-: %s" +msgstr "nu pot şterge fişierul %s. Motivul-: %s" + +#: src/download.c:171 +#, c-format +msgid "Error while processing prior download of connection number %d" +msgstr "Eroare la procesarea dinaintea descărcării la conexiunea numarul %d" + +#: src/download.c:200 +msgid "Warning! Unable to create logfile!" +msgstr "Atenţie! Nu pot crea fişierul de log!" + +#: src/download.c:225 src/download.c:236 src/download.c:341 src/download.c:380 +#: src/download.c:399 src/download.c:421 src/download.c:460 src/download.c:479 +msgid "Error: Not enough system resources" +msgstr "Eroare: Nu sunt destule resurse sistem" + +#: src/download.c:240 +msgid "Error: Unsupported Protocol was specified" +msgstr "Eroare: A fost specificat un protocol nesuportat" + +#: src/download.c:244 +msgid "All threads created" +msgstr "Toate firele au fost create" + +#: src/download.c:321 +#, c-format +msgid "Connection %d, had a local fatal error: %s .Aborting download. " +msgstr "În conexiunea %d, a apărut o eroare locală fatală: %s. Descărcarea abandonată. " + +#: src/download.c:337 +msgid "All logins rejected!.Retrying connection" +msgstr "Toate login-urile refuzate! Reîncerc conectarea" + +#: src/download.c:376 src/download.c:395 src/download.c:456 src/download.c:475 +msgid "Relaunching download" +msgstr "Relansez descărcarea" + +#: src/download.c:417 +msgid "All connections attempts have been rejected!.Retrying connection" +msgstr "Toate încercările de conectare au fost refuzate! Reîncerc conectarea" + +#: src/download.c:698 +#, c-format +msgid "Unable to allocate %d bytes to recreate files" +msgstr "Nu pot aloca %d bytes pentru a recrea fişierul" + +#: src/download.c:716 +#, c-format +msgid "Error: unable to open the file %s for writing-: %s\n" +msgstr "Eroare: nu pot deschide fişierul %s pentru scriere-: %s\n" + +#: src/download.c:735 +#, c-format +msgid "Error: Unable to open the file %s for reading-: %s\n" +msgstr "Eroare: Nu pot deschide fişierul %s pentru citire-: %s\n" + +#: src/download.c:773 +#, c-format +msgid "Unable to delete the file %s before exiting. Reason-: %s" +msgstr "Nu pot şterge fişierul %s înainte de ieşire. Motiv-: %s" + +#: src/download.c:780 +#, c-format +msgid "Error:A write error occured while writing to %s -: %s\n" +msgstr "Eroare: O eroare de scriere a apărut în timp ce scriam în %s-: %s\n" + +#: src/download.c:795 +#, c-format +msgid "Successfully Wrote %s \n" +msgstr "Am scris %s\n" + +#: src/ftp.c:106 +#, c-format +msgid "Message = %s" +msgstr "Mesaj = %s" + +#: src/ftp.c:126 +#, c-format +msgid "Error checking for FTP data: %s" +msgstr "Eroare la verificarea datelor FTP: %s" + +#: src/ftp.c:143 +#, c-format +msgid "Error receiving FTP data: %s" +msgstr "Eroare la recepţionarea datelor FTP: %s" + +#: src/ftp.c:167 +#, c-format +msgid "Sending: %s" +msgstr "Trimit: %s" + +#: src/ftp.c:172 +#, c-format +msgid "Error sending FTP data: %s" +msgstr "Eroare la trimiterea datelor FTP: %s" + +#: src/ftp.c:213 +#, c-format +msgid "Received: %s" +msgstr "Am primit: %s" + +#: src/ftp.c:344 +#, c-format +msgid "FTP PASV Header = %s" +msgstr "Headerul FTP PASV = %s" + +#. Unknown error code. +#: src/ftp.c:759 +#, c-format +msgid "Unknown code %d retuned during FTP login" +msgstr "Cod necunoscut %d primit în timpul autentificării FTP" + +#: src/ftp.c:811 src/ftp.c:831 src/http-retr.c:69 src/http-retr.c:84 +#: src/http.c:562 src/http.c:577 +#, c-format +msgid "Connecting to %s" +msgstr "Conectare la %s" + +#: src/ftp.c:822 src/ftp.c:840 +#, c-format +msgid "Error while connecting to %s" +msgstr "Eroare în timpul conectării la" + +#: src/ftp.c:827 src/ftp.c:844 +#, c-format +msgid "Connected to %s" +msgstr "Conectat la %s" + +#: src/ftp.c:870 +#, c-format +msgid "Logging in as user %s with password %s" +msgstr "Autentificare ca utilizator %s cu parola %s" + +#: src/ftp.c:882 +msgid "Logged in successfully" +msgstr "Autentificare reuşită" + +#: src/ftp.c:902 +#, c-format +msgid "CWD failed to change to directory '%s'" +msgstr "CWD a eşuat să schimbe directorul '%s'" + +#: src/ftp.c:911 +msgid "CWD not needed" +msgstr "Nu e nevoie de CWD" + +#: src/ftp.c:918 +msgid "REST failed" +msgstr "REST eşuat" + +#: src/ftp.c:923 +msgid "REST ok" +msgstr "REST ok" + +#: src/ftp.c:1003 +#, c-format +msgid "Error receiving FTP transfer data: %s" +msgstr "Eroare la recepţionarea datelor de transfer FTP: %s" + +#: src/ftp.c:1008 +#, c-format +msgid "String received after the LIST command = %s" +msgstr "String recepţionat după comanda LIST = %s" + +#: src/ftp.c:1026 +msgid "" +"Unable to parse the line the FTP server returned:please report URL to " +"kalum@delrom.ro " +msgstr "Nu pot parsa linia pe care a returnat-o serverul FTP: vă rugăm " +"raportaţi URL-ul la prozilla-users@delrom.ro" + +#: src/ftp.c:1053 +msgid "Server doesn't seem to support PASV" +msgstr "Serverul nu pare să suporte PASV" + +#: src/ftp.c:1129 +#, c-format +msgid "Retrying attempt %d in %d seconds" +msgstr "Reîncercarea numarul %d în %d secunde" + +#: src/ftp.c:1148 src/http.c:734 +msgid "Seccessfully got info" +msgstr "Informaţiile au fost obţinute" + +#: src/ftp.c:1156 src/http.c:746 +msgid "File not found!" +msgstr "Fişier negăsit!" + +#: src/ftp-retr.c:321 src/ftp.c:1175 src/http-retr.c:333 src/http.c:765 +#, c-format +msgid "I have tried %d attempt(s) and have failed, aborting" +msgstr "Am făcut %d încercări şi am eşuat, abandonez" + +#: src/ftpparse.c:194 +#, c-format +msgid "MULTINET Size: %d\n" +msgstr "Mărimea MULTINET: %d\n" + +#: src/ftpparse.c:235 +#, c-format +msgid "BINLS size: %d\n" +msgstr "Mărimea BINLS: %d\n" + +#: src/ftp-retr.c:125 +#, c-format +msgid "Logging in as user %s with password %s." +msgstr "Autentificare ca utilizator %s cu parola %s." + +#: src/ftp-retr.c:165 +#, c-format +msgid "CWD failed to change to directory '%s'." +msgstr "CWD a eşuat să schimbe directorul '%s'." + +#: src/ftp-retr.c:171 +msgid "CWD ok." +msgstr "CWD ok" + +#: src/ftp-retr.c:175 +msgid "CWD not needed." +msgstr "Nu e nevoie de CWD." + +#: src/ftp-retr.c:196 +msgid "" +"I have a bug in my code!!, check remote_starpos and resume_support values" +msgstr "" +"Am o eroare în cod!!, verificaţi valorile pentru remote_starpos şi resume_support" + +#: src/ftp-retr.c:206 +msgid "RETR failed" +msgstr "RETR eşuat" + +#: src/ftp-retr.c:261 +#, c-format +msgid "Retrying..Attempt %d in %d seconds" +msgstr "Reîncerc... Încercarea %d în %d secunde" + +#: src/ftp-retr.c:273 src/http-retr.c:286 +msgid "Error while attemting to process download file " +msgstr "Eroare la încercarea de a procesa fişierul descărcat " + +#: src/ftp-retr.c:304 src/http-retr.c:313 +msgid "Seccessfully got download" +msgstr "Descărcare reuşită" + +#: src/ftp-retr.c:310 +msgid "Error occured in connection..." +msgstr "A apărut o eroare în conexiune..." + +#: src/getopt.c:741 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: opţiunea `%s' e ambiguă\n" + +#: src/getopt.c:769 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: opţiunea `--%s' nu permite argument\n" + +#: src/getopt.c:776 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: opţiunea `%s%s' nu permite argument\n" + +#: src/getopt.c:792 src/getopt.c:995 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: opţiunea `%s' necesită argument\n" + +#. +#. * --option +#. +#: src/getopt.c:825 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: opţiune nerecunoscută `--%s'\n" + +#. +#. * +option or -option +#. +#: src/getopt.c:831 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: opţiune nerecunoscută `%c%s'\n" + +#. +#. * 1003.2 specifies the format of this message. +#. +#: src/getopt.c:863 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opţiune ilegală -- %c\n" + +#: src/getopt.c:865 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opţiune eronată -- %c\n" + +#: src/getopt.c:902 src/getopt.c:1051 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opţiunea necesită argument -- %c\n" + +#: src/getopt.c:961 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: opţiunea `-W %s' e ambiguă\n" + +#: src/getopt.c:981 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: opţiunea `-W %s' nu permite argument\n" + +#: src/getopt.c:1118 +msgid "digits occur in two different argv-elements.\n" +msgstr "apar cifre în două elemente argv diferite.\n" + +#: src/getopt.c:1124 +msgid "option a\n" +msgstr "opţiunea a\n" + +#: src/getopt.c:1128 +msgid "option b\n" +msgstr "opţiunea b\n" + +#: src/getopt.c:1132 +#, c-format +msgid "option c with value `%s'\n" +msgstr "opţiunea c cu valoarea `'%s'\n" + +#: src/getopt.c:1139 +#, c-format +msgid "?? getopt returned character code 0%o ??\n" +msgstr "?? getopt a întors cudul caracter 0%o ??\n" + +#: src/getopt.c:1145 +msgid "non-option ARGV-elements: " +msgstr "elemente ARGV care nu­s opţiuni: " + +#: src/http.c:376 +msgid "Failed writing HTTP request" +msgstr "Scrierea cererii HTTP a eşuat" + +#: src/http.c:397 +#, c-format +msgid "Header = %s" +msgstr "Header = %s" + +#: src/http.c:401 +msgid "End of file while parsing headers" +msgstr "Sfărşitul fişierul la parsarea headerului" + +#: src/http.c:412 +msgid "Read error in headers" +msgstr "Eroare de citire în headere" + +#. Store the descriptive response. +#. Malformed request. +#: src/http.c:438 +msgid "UNKNOWN" +msgstr "NECUNOSCUT" + +#: src/http.c:440 +msgid "(no description)" +msgstr "(fără descriere)" + +#: src/http-retr.c:77 src/http-retr.c:91 src/http-retr.c:395 src/http.c:571 +#: src/http.c:583 src/http.c:801 +#, c-format +msgid "Error connecting to %s" +msgstr "Eroare de conectare la %s" + +#: src/http-retr.c:119 src/http-retr.c:422 src/http.c:611 src/http.c:828 +#, c-format +msgid "Authenticating as user %s password %s" +msgstr "Autentificare ca utilizator %s cu parola %s" + +#: src/http-retr.c:120 src/http-retr.c:423 src/http.c:612 src/http.c:829 +#, c-format +msgid "Authentification string=%s" +msgstr "Stringul de autentificare=%s" + +#: src/http-retr.c:198 src/http-retr.c:478 src/http.c:682 +msgid "Sending HTTP request" +msgstr "Trimit cererea HTTP" + +#: src/http-retr.c:274 src/http.c:717 +#, c-format +msgid "Retrying...Attempt %d in %d seconds" +msgstr "Reîncerc... Încercarea a %s-a în %d secunde" + +#: src/http-retr.c:306 +msgid "Will be hanled in main " +msgstr "Va fi tratat în main " + +#: src/logfile.c:49 +#, c-format +msgid "Error opening file %s for writing: %s" +msgstr "Eroare la deschiderea fişierului %s pentru scriere: %s" + +#: src/logfile.c:65 src/logfile.c:75 src/logfile.c:93 src/logfile.c:104 +#: src/logfile.c:115 +#, c-format +msgid "Error writing to file %s: %s" +msgstr "Eroare la scrierea în fişierul %s: %s" + +#: src/logfile.c:168 +msgid "logfile doesn't exist" +msgstr "Fişierul de log nu există" + +#: src/logfile.c:198 +#, c-format +msgid "Error opening file %s for reading: %s" +msgstr "Eroare la deschiderea pentru citire a fişierului %s : %s" + +#: src/logfile.c:232 src/logfile.c:244 src/logfile.c:256 +#, c-format +msgid "Error reading from file %s: %s" +msgstr "Eroare la citirea din fişierul %s: %s" + +#: src/misc.c:48 +#, c-format +msgid "Failed to malloc() %lu bytes." +msgstr "malloc() pentru %lu bytes a eşuat." + +#: src/misc.c:63 +#, c-format +msgid "Failed to realloc() %lu bytes." +msgstr "realloc() pentru %lu bytes a eşuat." + +#: src/misc.c:85 +msgid "Not enough memory to continue: strdup() failed." +msgstr "Nu este destulă memorie pentru a continua: strdup() a eşuat." + +#: src/misc.c:304 +msgid "Warning: Unable to delay" +msgstr "Atenţie: aşteptarea nu e posibilă" + +#: src/misc.c:326 +msgid "Unable to lookup hostname" +msgstr "Nu se poate rezolva numele" + +#: src/misc.c:328 +msgid "Unable to create socket" +msgstr "Nu pot crea socket-ul" + +#: src/misc.c:330 +msgid "Error occured while connecting" +msgstr "A apărut o eroare la conectare" + +#: src/misc.c:332 +msgid "The cconnection attempt was refused" +msgstr "Încercarea de conectare a fost refuzată" + +#: src/misc.c:334 +msgid "Error while accepting the connection" +msgstr "Eroare la acceptarea conexiunii" + +#: src/misc.c:336 +msgid "Error while Binding socket" +msgstr "Eroare la conectarea socket-ului" + +#: src/misc.c:338 +msgid "Error while listening" +msgstr "Eroare la ascultare" + +#: src/misc.c:340 +msgid "The connection was reset/closed by the peer" +msgstr "Conexiunea a fost resetată/închisă de partener" + +#: src/misc.c:342 +msgid "The URL Protocol was unknown" +msgstr "Protocolul URL a fost necunoscut" + +#: src/misc.c:344 +msgid "The port specified in the URL is not valid!" +msgstr "Portul specificat in URL nu este valid!" + +#: src/misc.c:346 +msgid "The Hostname specified in the URL is not valid!" +msgstr "Numele de host specificat in URL nu este valid!" + +#: src/misc.c:348 +msgid "The Pattern specified in the URL does not look valid!" +msgstr "Paternul specificat în URL nu pare valid!" + +#: src/misc.c:350 +msgid "End of file reached in HTTP connection" +msgstr "Sfărşit de fişier în conexiunea HTTP" + +#: src/misc.c:352 +msgid "Error occured in HTTP data transfer" +msgstr "Eroare la transferul datelor HTTP" + +#: src/misc.c:354 +msgid "Authentification is required to access this resource" +msgstr "Este nevoie de autentificare pentru accesarea acestei resurse" + +#: src/misc.c:356 +msgid "Failed to Authenticate with host!" +msgstr "A eşuat autentificarea la server!" + +#: src/misc.c:358 +msgid "The URL was not found on the host!" +msgstr "URL-ul nu a fost găsit în host!" + +#: src/misc.c:360 +msgid "The host disallowed the login attempt" +msgstr "Gazda nu a permis încercarea de logare" + +#: src/misc.c:362 +msgid "The PORT request was rejected by the server" +msgstr "Cererea de PORT a fost respinsă de server" + +#: src/misc.c:364 +msgid "The object file/dir was not found on the host!" +msgstr "Obiectul fişier/director nu a fost găsit pe server!" + +#: src/misc.c:366 +msgid "The TYPE specified in not known by the FTP server!" +msgstr "Tipul specificat de TYPE nu e cunoscut de serverul de FTP!" + +#: src/misc.c:368 +msgid "The command is not known by the FTP server!" +msgstr "Comanda nu este cunoscută de serverul de FTP!" + +#: src/misc.c:370 +msgid "The SIZE command failed" +msgstr "Comanda SIZE a eşuat" + +#: src/misc.c:372 +msgid "Error occured in FTP data transfer" +msgstr "A apărut o eroare la transferul datelor FTP" + +#: src/misc.c:374 +msgid "The REST command failed" +msgstr "Comanda REST a eşuat" + +#: src/misc.c:376 +msgid "The peer did not allow access" +msgstr "Partenerul nu permite accesul" + +#: src/misc.c:378 src/misc.c:380 +msgid "The host rejected the password" +msgstr "Serverul nu acceptă parola" + +#: src/misc.c:382 +msgid "The PASV (passive mode) was not supported the host" +msgstr "PASV (mod pasiv) nu este suportat de server" + +#: src/misc.c:384 +msgid "The host does not support PASV (passive mode) transfers" +msgstr "Serverul nu suportă transferuri PASV (mod pasiv)" + +#: src/misc.c:386 +msgid "The connection attempt was refused" +msgstr "Încercarea de conectare a fost refuzată" + +#: src/misc.c:388 +msgid "Failed to (CWD)change to the directory" +msgstr "A eşuat (CWD) schimbarea directorului" + +#: src/misc.c:392 +msgid "" +"The host said the requested service was unavailable and closed the control " +"connection" +msgstr "" +"Serverul a spus că serviciul solocitat nu este disponibil şi a închis" +"conexiunea de control" + +#: src/misc.c:394 +msgid "getsockname failed!" +msgstr "getsockname a eşuat!" + +#: src/misc.c:399 +msgid "" +"The server, while acting as a gateway or proxy, received an invalid response " +"from the upstream server it accessed in attempting to fulfill the request" +msgstr "" +"Serverul, lucrând ca gateway sau ca proxy, a primit un răspuns invalid " +"de la serverul de legatură pe care l­a accesat ca să îndeplinească cererea" + +#: src/misc.c:404 +msgid "" +"The server is currently unable to handle the request due to a temporary " +"overloading or maintenance of the server." +msgstr "" +"Serverul nu poate să rezolve cererea acum datorită unei supraîncarcări " +"temporare sau a unor activităţi de întreţinere." + +#: src/misc.c:409 +msgid "" +"The server, while acting as a gateway or proxy, received an invalid response " +"from the upstream server it accessed in attempting to fulfill the request." +msgstr "" +"Serverul, lucrănd ca gateway sau ca proxy, a primit un răspuns invalid " +"de la serverul de legătură pe care l­a accesat ca să îndeplinească cererea." + +#: src/misc.c:414 +msgid "" +"The server encountered an unexpected condition which prevented it from " +"fulfilling the request." +msgstr "" +"Serverul a întălnit o stare necunoscută care l­a împiedicat să " +"îndeplinească cererea." + +#: src/misc.c:419 +msgid "" +"The server does not support the functionality required to fulfill the " +"request." +msgstr "" +"Serverul nu suportă funcţionalitatea cerută pentru a îndeplini " +"cererea." + +#: src/misc.c:422 +msgid "Error while opening file" +msgstr "Eroare la deschiderea fişierului" + +#: src/misc.c:424 +msgid "Error while writing to file" +msgstr "Eroare la scrierea în fişier" + +#: src/misc.c:427 +msgid "The Download was aborted" +msgstr "Descărcarea a fost abandonată" + +#: src/misc.c:429 +msgid "The Download encountered a local fatal error" +msgstr "Descărcarea a întălnit o eroare locală fatală" + +#: src/misc.c:431 +msgid "Error: Resuming this connection is not possible" +msgstr "Eroare: Continuarea acestei conexiuni nu e posibilă" + +#: src/misc.c:433 +msgid "Error while reading data from socket" +msgstr "Eroare la citirea datelor din socket" + +#: src/misc.c:435 +msgid "Error while writing data to socket" +msgstr "Eroare la scrierea datelor în socket" + +#: src/misc.c:437 +msgid "Error while Proxying" +msgstr "Eroare de proxy" + +#: src/misc.c:439 +msgid "The location is a directory" +msgstr "Locaţia este un director" + +#: src/misc.c:442 +msgid "Unknown/Unsupported error code" +msgstr "Cor de eroare necunoscut/nesuportat" + +#: src/netrc.c:215 +#, c-format +msgid "%s:%d: warning: found \"%s\" before any host names\n" +msgstr "%s:%d: atenţie: am găsit \"%s\" înainte de orice nume de host\n" + +#: src/netrc.c:243 +#, c-format +msgid "%s:%d: warning: unknown token \"%s\"\n" +msgstr "%s:%d: atenţie: element necunoscut \"%s\"\n" diff --git a/libprozilla/po/stamp-cat-id b/libprozilla/po/stamp-cat-id new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/libprozilla/po/stamp-cat-id @@ -0,0 +1 @@ +timestamp diff --git a/libprozilla/src/CVS/Entries b/libprozilla/src/CVS/Entries new file mode 100644 index 0000000..411c0e1 --- /dev/null +++ b/libprozilla/src/CVS/Entries @@ -0,0 +1,39 @@ +/connect.h/1.17/Thu Sep 27 21:25:30 2001// +/debug.c/1.20/Thu Sep 27 21:25:26 2001// +/debug.h/1.14/Thu Sep 27 21:25:30 2001// +/ftp-retr.h/1.6/Thu Sep 27 21:25:30 2001// +/ftp.c/1.43/Thu Sep 27 21:25:26 2001// +/ftp.h/1.33/Thu Sep 27 21:25:30 2001// +/ftpparse.c/1.11/Thu Sep 27 21:25:26 2001// +/ftpparse.h/1.11/Thu Sep 27 21:25:30 2001// +/ftpsearch.h/1.3/Thu Sep 27 21:25:30 2001// +/getopt.c/1.3/Thu Sep 27 21:25:26 2001// +/getopt.h/1.2/Thu Sep 27 21:25:30 2001// +/http-retr.c/1.18/Thu Sep 27 21:25:26 2001// +/http-retr.h/1.5/Thu Sep 27 21:25:30 2001// +/http.h/1.11/Thu Sep 27 21:25:30 2001// +/logfile.h/1.5/Thu Sep 27 21:25:30 2001// +/misc.c/1.31/Thu Sep 27 21:25:26 2001// +/misc.h/1.25/Thu Sep 27 21:25:30 2001// +/netrc.c/1.17/Thu Sep 27 21:25:26 2001// +/netrc.h/1.11/Thu Sep 27 21:25:30 2001// +/test.c/1.30/Thu Sep 27 22:49:01 2001// +/url.h/1.20/Thu Sep 27 21:25:30 2001// +/connect.c/1.23/Thu Sep 27 22:52:04 2001// +/ftp-retr.c/1.17/Thu Sep 27 22:52:04 2001// +/main.c/1.40/Thu Sep 27 22:52:05 2001// +/ping.h/1.3/Thu Sep 27 21:25:30 2001// +/logfile.c/1.11/Sat Sep 29 04:58:54 2001// +/connection.h/1.33/Sun Sep 30 23:13:50 2001// +/download.c/1.33/Sun Sep 30 23:13:50 2001// +/download.h/1.25/Sun Sep 30 23:13:50 2001// +/Makefile.am/1.23/Mon Oct 1 08:30:42 2001// +/ftpsearch.c/1.11/Thu Oct 4 14:58:30 2001// +/Makefile.in/1.24/Fri Oct 26 12:13:20 2001// +/connection.c/1.42/Sat Oct 27 11:24:40 2001// +/http.c/1.20/Sat Oct 27 11:24:40 2001// +/ping.c/1.7/Mon Oct 15 10:06:39 2001// +/prozilla.h/1.57/Sat Oct 27 11:24:40 2001// +/url.c/1.23/Sat Oct 27 11:24:40 2001// +/common.h/1.7/Sat Oct 27 23:20:24 2001// +D diff --git a/libprozilla/src/CVS/Repository b/libprozilla/src/CVS/Repository new file mode 100644 index 0000000..e7267e9 --- /dev/null +++ b/libprozilla/src/CVS/Repository @@ -0,0 +1 @@ +libprozilla/src diff --git a/libprozilla/src/CVS/Root b/libprozilla/src/CVS/Root new file mode 100644 index 0000000..0e741fc --- /dev/null +++ b/libprozilla/src/CVS/Root @@ -0,0 +1 @@ +:pserver:kalum@cvs.delrom.ro:/home/cvsroot diff --git a/libprozilla/src/Makefile.am b/libprozilla/src/Makefile.am new file mode 100644 index 0000000..0eb7e71 --- /dev/null +++ b/libprozilla/src/Makefile.am @@ -0,0 +1,40 @@ +#------------------------------------------------------------------------------ +# Process this file with automake to produce Makefile.in. +#------------------------------------------------------------------------------ + +lib_LTLIBRARIES = libprozilla.la + +libprozilla_la_SOURCES = \ +common.h \ +connect.c connect.h \ +connection.c connection.h \ +debug.c debug.h \ +download.c download.h \ +ftp.c ftp.h \ +ftpparse.c ftpparse.h \ +getopt.c getopt.h \ +main.c \ +misc.c misc.h \ +netrc.c netrc.h \ +prozilla.h \ +url.c url.h\ +http.c http.h\ +http-retr.c http-retr.h\ +ftp-retr.c ftp-retr.h\ +logfile.c logfile.h\ +ftpsearch.c ftpsearch.h\ +ping.c ping.h + +# 0:0:0 +# 0 -> interface version, changes whenever you change the API +# 0 -> changes whenever you make a revision of an interface no +# API changes... +# 0 -> changes whenever you change the API but keep it backwards +# compatible (have not removed a function from the API, for +# example...) +libprozilla_la_LDFLAGS = -version-info 1:0:1 + +includedir = $(prefix)/include +include_HEADERS = prozilla.h netrc.h +CPPFLAGS = -DLOCALEDIR=\"$(datadir)/locale\" -ggdb +LIBS = @LIBS@ $(THREAD_LIBS) diff --git a/libprozilla/src/Makefile.in b/libprozilla/src/Makefile.in new file mode 100644 index 0000000..9ce7adb --- /dev/null +++ b/libprozilla/src/Makefile.in @@ -0,0 +1,525 @@ +# Makefile.in generated by automake 1.7 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +#------------------------------------------------------------------------------ +# Process this file with automake to produce Makefile.in. +#------------------------------------------------------------------------------ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = -DLOCALEDIR=\"$(datadir)/locale\" -ggdb +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ $(THREAD_LIBS) +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POFILES = @POFILES@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +THREAD_LIBS = @THREAD_LIBS@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ + +includedir = $(prefix)/include +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +lib_LTLIBRARIES = libprozilla.la + +libprozilla_la_SOURCES = \ +common.h \ +connect.c connect.h \ +connection.c connection.h \ +debug.c debug.h \ +download.c download.h \ +ftp.c ftp.h \ +ftpparse.c ftpparse.h \ +getopt.c getopt.h \ +main.c \ +misc.c misc.h \ +netrc.c netrc.h \ +prozilla.h \ +url.c url.h\ +http.c http.h\ +http-retr.c http-retr.h\ +ftp-retr.c ftp-retr.h\ +logfile.c logfile.h\ +ftpsearch.c ftpsearch.h\ +ping.c ping.h + + +# 0:0:0 +# 0 -> interface version, changes whenever you change the API +# 0 -> changes whenever you make a revision of an interface no +# API changes... +# 0 -> changes whenever you change the API but keep it backwards +# compatible (have not removed a function from the API, for +# example...) +libprozilla_la_LDFLAGS = -version-info 1:0:1 +include_HEADERS = prozilla.h netrc.h +subdir = src +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LTLIBRARIES = $(lib_LTLIBRARIES) + +libprozilla_la_LIBADD = +am_libprozilla_la_OBJECTS = connect.lo connection.lo debug.lo \ + download.lo ftp.lo ftpparse.lo getopt.lo main.lo misc.lo \ + netrc.lo url.lo http.lo http-retr.lo ftp-retr.lo logfile.lo \ + ftpsearch.lo ping.lo +libprozilla_la_OBJECTS = $(am_libprozilla_la_OBJECTS) + +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/connect.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/connection.Plo ./$(DEPDIR)/debug.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/download.Plo ./$(DEPDIR)/ftp-retr.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/ftp.Plo ./$(DEPDIR)/ftpparse.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/ftpsearch.Plo ./$(DEPDIR)/getopt.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/http-retr.Plo ./$(DEPDIR)/http.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/logfile.Plo ./$(DEPDIR)/main.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/misc.Plo ./$(DEPDIR)/netrc.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/ping.Plo ./$(DEPDIR)/url.Plo +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(libprozilla_la_SOURCES) +HEADERS = $(include_HEADERS) + +DIST_COMMON = $(include_HEADERS) Makefile.am Makefile.in +SOURCES = $(libprozilla_la_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libLTLIBRARIES_INSTALL = $(INSTALL) +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libdir) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \ + $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \ + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libprozilla.la: $(libprozilla_la_OBJECTS) $(libprozilla_la_DEPENDENCIES) + $(LINK) -rpath $(libdir) $(libprozilla_la_LDFLAGS) $(libprozilla_la_OBJECTS) $(libprozilla_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/connect.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/connection.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/download.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftp-retr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpparse.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpsearch.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http-retr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/http.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logfile.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netrc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ping.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/url.Plo@am__quote@ + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'`; \ +@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'` + +.c.lo: +@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +includeHEADERS_INSTALL = $(INSTALL_HEADER) +install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(includedir) + @list='$(include_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(includeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(includedir)/$$f"; \ + $(includeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(includedir)/$$f; \ + done + +uninstall-includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(include_HEADERS)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(includedir)/$$f"; \ + rm -f $(DESTDIR)$(includedir)/$$f; \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-includeHEADERS + +install-exec-am: install-libLTLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-includeHEADERS uninstall-info-am \ + uninstall-libLTLIBRARIES + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-depend distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-includeHEADERS \ + install-info install-info-am install-libLTLIBRARIES install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-includeHEADERS uninstall-info-am \ + uninstall-libLTLIBRARIES + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libprozilla/src/common.h b/libprozilla/src/common.h new file mode 100644 index 0000000..1cfedd1 --- /dev/null +++ b/libprozilla/src/common.h @@ -0,0 +1,170 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* Common #includes and #defines. */ + +/* $Id: common.h,v 1.7 2001/10/27 23:20:24 kalum Exp $ */ + + +#ifndef COMMON_H +#define COMMON_H + + +#if HAVE_CONFIG_H +# include +#endif + +#if HAVE_STDIO_H +# include +#endif + +#if STDC_HEADERS +# if HAVE_STDLIB_H +# include +# endif +# include +#endif + +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#else +# if HAVE_STRINGS_H +# include +# endif +#endif + +#if HAVE_UNISTD_H +# include +#endif + +#if HAVE_CTYPE_H +# include +#endif + +#if HAVE_ERRNO_H +# include +#endif + +#if HAVE_SYS_TYPES_H +# include +#endif + +#if HAVE_FCNTL_H +# include +#endif + +#if HAVE_SYS_SOCKET_H +# include +#endif + +#if HAVE_NETINET_IN_H +# include +#endif + +#if HAVE_ARPA_INET_H +# include +#endif + +#if HAVE_NETDB_H +# include +#endif + +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + +#if HAVE_SYS_STAT_H +# include +#endif + +#if HAVE_ASSERT_H +# include +#endif + +#if HAVE_PWD_H +# include +#endif + +#ifdef HAVE_LIMITS_H +#include +#endif + +#if HAVE_PTHREAD_H +# include +#endif + +/* If we don't have vsnprintf() try to use __vsnprintf(). */ +#if !defined(HAVE_VSNPRINTF) && defined(HAVE___VSNPRINTF) +# undef vsnprintf +# define vsnprintf __vsnprintf +# define HAVE_VSNPRINTF +#endif + +/* If we don't have snprintf() try to use __snprintf(). */ +#if !defined(HAVE_SNPRINTF) && defined(HAVE___SNPRINTF) +# undef snprintf +# define snprintf __snprintf +# define HAVE_SNPRINTF +#endif + + +typedef int boolean; + + +#ifndef FALSE +# define FALSE (0) +#endif + +#ifndef TRUE +# define TRUE (!FALSE) +#endif + +#ifndef NO +# define NO FALSE +#endif + +#ifndef YES +# define YES TRUE +#endif + +#ifdef HAVE_LOCALE_H +#include +#endif + +/* Gettext */ +#include +#define _(String) dgettext (PACKAGE, String) +#define gettext_noop(String) (String) +#ifndef HAVE_GNOME +#define N_(String) gettext_noop (String) +#endif +/* Gettext */ + + +#endif /* COMMON_H */ diff --git a/libprozilla/src/connect.c b/libprozilla/src/connect.c new file mode 100644 index 0000000..471f9d3 --- /dev/null +++ b/libprozilla/src/connect.c @@ -0,0 +1,337 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* Connection routines. */ + +/* $Id: connect.c,v 1.23 2001/09/27 22:52:04 kalum Exp $ */ + + +#include "common.h" +#include "misc.h" +#include "debug.h" +#include "connect.h" + + + +/****************************************************************************** + Connect to the specified server. +******************************************************************************/ +uerr_t connect_to_server(int *sock, const char *name, int port, + struct timeval *tout) +{ + unsigned int portnum; + int status, noblock, flags; + struct sockaddr_in server; + struct hostent *hp, hostbuf; + extern int h_errno; + /* int opt; */ + char *tmphstbuf; + struct timeval timeout; + size_t hstbuflen = 2048; + + assert(name != NULL); + + tmphstbuf = kmalloc(hstbuflen); + portnum = port; + memset((void *) &server, 0, sizeof(server)); + memcpy(&timeout, tout, sizeof(timeout)); + + + hp = k_gethostname(name, &hostbuf, &tmphstbuf, &hstbuflen); + + if (hp == NULL) + return HOSTERR; + + memcpy((void *) &server.sin_addr, hp->h_addr, hp->h_length); + server.sin_family = hp->h_addrtype; + server.sin_port = htons(portnum); + + /* Create a socket. */ + if ((*sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 1) + { + kfree(tmphstbuf); + return CONSOCKERR; + } + + /* Experimental. */ + flags = fcntl(*sock, F_GETFL, 0); + if (flags != -1) + noblock = fcntl(*sock, F_SETFL, flags | O_NONBLOCK); + else + noblock = -1; + + status = connect(*sock, (struct sockaddr *) &server, sizeof(server)); + + if ((status == -1) && (noblock != -1) && (errno == EINPROGRESS)) + { + fd_set writefd; + + FD_ZERO(&writefd); + FD_SET(*sock, &writefd); + + status = select((*sock + 1), NULL, &writefd, NULL, &timeout); + + /* Do we need to retry if the err is EINTR? */ + + if (status > 0) + { + socklen_t arglen = sizeof(int); + + if (getsockopt(*sock, SOL_SOCKET, SO_ERROR, &status, &arglen) < 0) + status = errno; + + if (status != 0) + errno = status, status = -1; + + if (errno == EINPROGRESS) + errno = ETIMEDOUT; + } else if (status == 0) + errno = ETIMEDOUT, status = -1; + } + + if (status < 0) + { + close(*sock); + + if (errno == ECONNREFUSED) + { + kfree(tmphstbuf); + return CONREFUSED; + } else + { + kfree(tmphstbuf); + return CONERROR; + } + } else + { + flags = fcntl(*sock, F_GETFL, 0); + + if (flags != -1) + fcntl(*sock, F_SETFL, flags & ~O_NONBLOCK); + } + + /* setsockopt(*sock, SOL_SOCKET, SO_KEEPALIVE, (char *)&opt, + (int) sizeof(opt)); */ + + kfree(tmphstbuf); + + return NOCONERROR; +} + +/****************************************************************************** + ... +******************************************************************************/ +uerr_t bind_socket(int *sockfd) +{ + struct sockaddr_in serv_addr; + + /* Open a TCP socket (an Internet stream socket). */ + if ((*sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) + return CONSOCKERR; + + /* Fill in the structure fields for binding. */ + memset((void *) &serv_addr, 0, sizeof(serv_addr)); + serv_addr.sin_family = AF_INET; + serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); + serv_addr.sin_port = htons(0); /* Let the system choose. */ + + /* Bind the address to the socket. */ + if (bind(*sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) + { + perror("bind"); + close(*sockfd); + return BINDERR; + } + + /* Allow only one server. */ + if (listen(*sockfd, 1) < 0) + { + perror("listen"); + close(*sockfd); + return LISTENERR; + } + + return BINDOK; +} + +/****************************************************************************** + ... +******************************************************************************/ +int select_fd(int fd, struct timeval *timeout, int writep) +{ + fd_set fds, exceptfds; + struct timeval to; + + FD_ZERO(&fds); + FD_SET(fd, &fds); + FD_ZERO(&exceptfds); + FD_SET(fd, &exceptfds); + memcpy(&to, timeout, sizeof(struct timeval)); + + return (select(fd + 1, writep ? NULL : &fds, writep ? &fds : NULL, + &exceptfds, &to)); +} + +/****************************************************************************** + Receive size bytes from sock with a time delay. +******************************************************************************/ +int krecv(int sock, char *buffer, int size, int flags, + struct timeval *timeout) +{ + int ret, arglen; + + arglen = sizeof(int); + + assert(size >= 0); + + do + { + if (timeout) + { + do + { + ret = select_fd(sock, timeout, 0); + } + while ((ret == -1) && (errno == EINTR)); + + + if (ret <= 0) + { + /* proz_debug("Error after select res=%d errno=%d.", ret, errno); */ + + /* Set errno to ETIMEDOUT on timeout. */ + if (ret == 0) + errno = ETIMEDOUT; + + return -1; + } + } + + ret = recv(sock, buffer, size, flags); + } + while ((ret == -1) && (errno == EINTR)); + + return ret; +} + +/****************************************************************************** + Send size bytes to sock with a time delay. +******************************************************************************/ +int ksend(int sock, char *buffer, int size, int flags, + struct timeval *timeout) +{ + int ret = 0; + + /* write() may write less than size bytes, thus the outward loop + keeps trying it until all was written, or an error occurred. The + inner loop is reserved for the usual EINTR f*kage, and the + innermost loop deals with the same during select(). */ + + while (size != 0) + { + do + { + if (timeout) + { + do + { + ret = select_fd(sock, timeout, 1); + } + while ((ret == -1) && (errno == EINTR)); + + if (ret <= 0) + { + /* Set errno to ETIMEDOUT on timeout. */ + if (ret == 0) + errno = ETIMEDOUT; + return -1; + } + } + ret = send(sock, buffer, size, flags); + } + while ((ret == -1) && (errno == EINTR)); + + if (ret <= 0) + break; + + buffer += ret; + size -= ret; + } + return ret; +} + +/****************************************************************************** + Get host data by hostname. +******************************************************************************/ +struct hostent *k_gethostname(const char *host, struct hostent *hostbuf, + char **tmphstbuf, size_t * hstbuflen) +{ + struct hostent *hp; + int herr, res; + + if (*hstbuflen == 0) + { + *hstbuflen = 2048; + *tmphstbuf = kmalloc(*hstbuflen); + } +#ifdef HAVE_FUNC_GETHOSTBYNAME_R_6 + while ((res = gethostbyname_r(host, hostbuf, *tmphstbuf, *hstbuflen, &hp, + &herr)) && (errno == ERANGE)) +#endif +#ifdef HAVE_FUNC_GETHOSTBYNAME_R_5 + while ((NULL == (hp = gethostbyname_r(host, hostbuf, *tmphstbuf, + *hstbuflen, &herr))) + && (errno == ERANGE)) +#endif + { + /* Enlarge the buffer. */ + *hstbuflen *= 2; + *tmphstbuf = krealloc(*tmphstbuf, *hstbuflen); + } + + if (res != 0) + return NULL; + + return hp; +} + +/****************************************************************************** + Accept a connection. +******************************************************************************/ +uerr_t accept_connection(int listen_sock, int *data_sock) +{ + struct sockaddr_in cli_addr; + socklen_t clilen = sizeof(cli_addr); + int sockfd; + + sockfd = accept(listen_sock, (struct sockaddr *) &cli_addr, &clilen); + if (sockfd < 0) + { + perror("accept"); + return ACCEPTERR; + } + + *data_sock = sockfd; + + /* Now we can free the listen socket since it is not needed... + accept() returned the new socket... */ + close(listen_sock); + + return ACCEPTOK; +} diff --git a/libprozilla/src/connect.h b/libprozilla/src/connect.h new file mode 100644 index 0000000..8724257 --- /dev/null +++ b/libprozilla/src/connect.h @@ -0,0 +1,57 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* Connection routines. */ + +/* $Id: connect.h,v 1.17 2001/05/09 22:58:00 kalum Exp $ */ + + +#ifndef CONNECT_H +#define CONNECT_H + + +#include "common.h" +#include "prozilla.h" + + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + + uerr_t connect_to_server(int *sock, const char *name, int port, + struct timeval *timeout); + + uerr_t bind_socket(int *sockfd); + + int select_fd(int fd, struct timeval *timeout, int writep); + + int krecv(int sock, char *buffer, int size, int flags, + struct timeval *timeout); + int ksend(int sock, char *buffer, int size, int flags, + struct timeval *timeout); + + struct hostent *k_gethostname(const char *host, struct hostent *hostbuf, + char **tmphstbuf, size_t * hstbuflen); + + uerr_t accept_connection(int listen_sock, int *data_sock); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* CONNECT_H */ diff --git a/libprozilla/src/connection.c b/libprozilla/src/connection.c new file mode 100644 index 0000000..20c5033 --- /dev/null +++ b/libprozilla/src/connection.c @@ -0,0 +1,710 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* Several connection-related routines. */ + +/* $Id: connection.c,v 1.42 2001/10/27 11:24:40 kalum Exp $ */ + +#include "common.h" + +#include "prozilla.h" +#include "connection.h" +#include "misc.h" +#include "connect.h" +#include "ftp.h" +#include "http.h" +#include "debug.h" + + +/****************************************************************************** + ... +******************************************************************************/ +void init_response(connection_t * connection) +{ + connection->serv_ret_lines = 0; +} + +/****************************************************************************** + This will free up the serv_ret_lines array if necessary, in order to prepare + it for the storage of the servers response. +******************************************************************************/ +void done_with_response(connection_t * connection) +{ + response_line *p, *p1; + + /* Return if the array is not allocated. */ + if (connection->serv_ret_lines == 0) + return; + + p1 = connection->serv_ret_lines; + + do + { + p = p1; + p1 = p->next; + kfree(p); + } + while (p1 != 0); + + connection->serv_ret_lines = 0; +} + +/****************************************************************************** + Initialises the connection and sets it with values from the runtime struct. +******************************************************************************/ + +connection_t * proz_connection_init(urlinfo *url,pthread_mutex_t * mutex) +{ + + connection_t * connection=kmalloc(sizeof(connection_t)); + memset(connection, 0, sizeof(connection_t)); + + /* memcpy(&connection->u, url, sizeof(urlinfo));*/ + if(url) + memcpy(&connection->u, + proz_copy_url(url), + sizeof(urlinfo)); + + /* Copy the proxy structs. */ + if (libprozrtinfo.ftp_proxy) + { + connection->ftp_proxy = kmalloc(sizeof(proxy_info)); + memcpy(connection->ftp_proxy, libprozrtinfo.ftp_proxy, + sizeof(proxy_info)); + /* + connection->use_ftp_proxy = libprozrtinfo.use_ftp_proxy; + */ + } + + if (libprozrtinfo.http_proxy) + { + connection->http_proxy = kmalloc(sizeof(proxy_info)); + memcpy(connection->http_proxy, libprozrtinfo.http_proxy, + sizeof(proxy_info)); + /* + connection->use_http_proxy = libprozrtinfo.use_http_proxy; + */ + } + + connection->use_netrc = libprozrtinfo.use_netrc; + + connection->retry = TRUE; + connection->ftp_use_pasv = libprozrtinfo.ftp_use_pasv; + connection->http_no_cache = libprozrtinfo.http_no_cache; + + connection->user_agent = strdup(DEFAULT_USER_AGENT); + connection->file_mode = strdup("wb"); + /*NOTE: default of unlimited attempts */ + connection->max_attempts = 0; + connection->attempts = 0; + /* Initialise all with default timeouts */ + memcpy(&connection->xfer_timeout, &libprozrtinfo.conn_timeout, + sizeof(connection->xfer_timeout)); + memcpy(&connection->ctrl_timeout, &libprozrtinfo.conn_timeout, + sizeof(connection->ctrl_timeout)); + memcpy(&connection->conn_timeout, &libprozrtinfo.conn_timeout, + sizeof(connection->conn_timeout)); + memcpy(&connection->retry_delay, &libprozrtinfo.conn_retry_delay, + sizeof(&connection->retry_delay)); + connection->max_attempts = libprozrtinfo.max_attempts; + + connection->rate_bps = 0; + /* Unlimited bandwith (0) */ + connection->max_allowed_bps = 0; + pthread_cond_init(&connection->connecting_cond, NULL); + connection->status_change_mutex = mutex; + if (connection->status_change_mutex != 0) + { + pthread_mutex_init(connection->status_change_mutex, NULL); + } + pthread_mutex_init(&connection->access_mutex, NULL); + + return connection; +} + +/* Locks the connections mutex befoer chaging state. */ +void connection_change_status(connection_t * connection, dl_status status) +{ + if (connection->status_change_mutex != 0) + { + pthread_mutex_lock(connection->status_change_mutex); + connection->status = status; + pthread_mutex_unlock(connection->status_change_mutex); + } +} + + +/* this will open connection->localfile and read from connection->data_sock + (which should be already setup) till a EOF is reached or + the server closes the connection, in which case there is no way to know + whether we got the complete file. +*/ + +uerr_t connection_retr_fsize_not_known(connection_t * connection, + char *read_buffer, + int read_buffer_size) +{ + long bytes_read; + + connection_change_status(connection, DOWNLOADING); + gettimeofday(&connection->time_begin, NULL); + + do + { + bytes_read = + krecv(connection->data_sock, read_buffer, read_buffer_size, 0, + &connection->xfer_timeout); + if (bytes_read > 0) + { + if (write_data_with_lock(connection, read_buffer, sizeof(char), bytes_read) < bytes_read) + { + proz_debug(_("write failed")); + connection_show_message(connection, + _ + ("Unable to write to file %s: %s!"), + connection->localfile, strerror(errno)); + connection_change_status(connection, LOCALFATAL); + return FWRITEERR; + } + pthread_mutex_lock(&connection->access_mutex); + connection->remote_bytes_received += bytes_read; + pthread_mutex_unlock(&connection->access_mutex); + + /*TODO: caclculate and throttle connections speed here */ + /*DONE: */ + connection_calc_ratebps(connection); + connection_throttle_bps(connection); + } + } + while (bytes_read > 0); + + if (bytes_read == -1) + { + if (errno == ETIMEDOUT) + { + proz_debug(_("connection timed out")); + connection_change_status(connection, TIMEDOUT); + return READERR; + } + connection_change_status(connection, REMOTEFATAL); + return READERR; + } + + connection_change_status(connection, COMPLETED); + + connection_show_message(connection, + _("download for this connection completed" + "%s : %ld received"), connection->localfile, + connection->remote_bytes_received); + return FILEGETOK; +} + + +/* This will open connection->localfile and read from connection->data_sock + (which should be already setup) till the requested number of bytes are read. + Now since we explicitly know how much bytes to get we can do so, and is the server + closes the connection prematurely we know that has hapenned (because it hasn't supplied + the required number of bytes) and return a READERR. +*/ +uerr_t connection_retr_fsize_known(connection_t * connection, + char *read_buffer, int read_buffer_size) +{ + long bytes_read; + long bytes_to_get; + + pthread_mutex_lock(&connection->access_mutex); + bytes_to_get = connection->remote_endpos - connection->remote_startpos; + pthread_mutex_unlock(&connection->access_mutex); + + connection_change_status(connection, DOWNLOADING); + gettimeofday(&connection->time_begin, NULL); + + while (bytes_to_get > 0) + { + bytes_read = + krecv(connection->data_sock, read_buffer, + bytes_to_get > + read_buffer_size ? read_buffer_size : bytes_to_get, 0, + &connection->xfer_timeout); + + if (bytes_read == 0 && bytes_to_get > 0) + { + connection_show_message(connection, + _("Server Closed Connection Prematurely!")); + connection_change_status(connection, REMOTEFATAL); + return READERR; + } + + if (bytes_read == -1) + { + if (errno == ETIMEDOUT) + { + proz_debug(_("connection timed out")); + connection_change_status(connection, TIMEDOUT); + return READERR; + } + connection_change_status(connection, REMOTEFATAL); + return READERR; + } + + bytes_to_get -= bytes_read; + + if (bytes_read > 0) + { + + if (write_data_with_lock(connection, read_buffer, sizeof(char), bytes_read) < bytes_read) + { + + proz_debug(_("write failed")); + connection_show_message(connection, + _ + ("Unable to write to file %s: %s!"), + connection->localfile, strerror(errno)); + connection_change_status(connection, LOCALFATAL); + return FWRITEERR; + } + pthread_mutex_lock(&connection->access_mutex); + connection->remote_bytes_received += bytes_read; + pthread_mutex_unlock(&connection->access_mutex); + + /*TODO: caclculate and throttle connections speed here */ + /*DONE: */ + connection_calc_ratebps(connection); + connection_throttle_bps(connection); + } + } + + connection_change_status(connection, COMPLETED); + + connection_show_message(connection, + _("download for this connection completed" + "%s : %ld received"), connection->localfile, + connection->remote_bytes_received); + return FILEGETOK; +} + + +/* This function modifies a single connections download start and + end info it returns 1 on sucess and -1 on error. +*/ + + +int connection_load_resume_info(connection_t * connection) +{ + + + if(connection->remote_startpos-connection->orig_remote_startpos!=connection->remote_bytes_received) + connection->remote_startpos +=connection->remote_bytes_received; + + return 1; +} + +dl_status proz_connection_get_status(connection_t * connection) +{ + dl_status status; + pthread_mutex_lock(connection->status_change_mutex); + status = connection->status; + pthread_mutex_unlock(connection->status_change_mutex); + return status; +} + + +/*This will return a textual representation of the status of a conenction. */ +char *proz_connection_get_status_string(connection_t * connection) +{ + dl_status status; + pthread_mutex_lock(connection->status_change_mutex); + status = connection->status; + pthread_mutex_unlock(connection->status_change_mutex); + + switch (connection->status) + { + + case IDLE: + return (_("Idle")); + + case CONNECTING: + return (_("Connecting")); + + case LOGGININ: + return (_("Logging in")); + + case DOWNLOADING: + return (_("Downloading")); + break; + case COMPLETED: + return (_("Completed")); + + case LOGINFAIL: + return (_("Login Denied")); + + case CONREJECT: + return (_("Connect Refused")); + + case REMOTEFATAL: + return (_("Remote Fatal")); + + case LOCALFATAL: + return (_("Local Fatal")); + + case TIMEDOUT: + return (_("Timed Out")); + case MAXTRYS: + return (_("Max attempts reached")); + + default: + return (_("Unkown Status!")); + } +} + + +pthread_mutex_t connection_msg_mutex = PTHREAD_MUTEX_INITIALIZER; + +/*calls the msg_proc function if not null */ +void connection_show_message(connection_t * connection, const char *format, + ...) +{ + va_list args; + char message[MAX_MSG_SIZE + 1]; + + pthread_mutex_lock(&connection_msg_mutex); + va_start(args, format); + vsnprintf(message, MAX_MSG_SIZE, format, args); + va_end(args); + if (connection->msg_proc) + connection->msg_proc(message, connection->cb_data); + + /*FIXME: Remove this later */ + printf("%s\n", message); + pthread_mutex_unlock(&connection_msg_mutex); +} + + +/* Returns the total number of bytes that have been saved to the file*/ +long proz_connection_get_total_bytes_got(connection_t * connection) +{ + long ret; + + pthread_mutex_lock(&connection->access_mutex); + ret = connection->remote_bytes_received; + pthread_mutex_unlock(&connection->access_mutex); + + return ret; + +} + +/***************************************************************************** +Returns the total number of bytes that has being got from the server +by this connection. +******************************************************************************/ +long proz_connection_get_total_remote_bytes_got(connection_t * connection) +{ + long ret; + pthread_mutex_lock(&connection->access_mutex); + ret = (connection->remote_bytes_received + - (connection->remote_startpos-connection->orig_remote_startpos)); + pthread_mutex_unlock(&connection->access_mutex); + + return ret; +} + +void proz_get_url_info_loop(connection_t * connection, pthread_t *thread) +{ + assert(connection); + assert(thread); + connection->running = TRUE; + pthread_create(thread, NULL, + (void *(*)(void *)) get_url_info_loop, + (void *) connection); +} + +/************************************************************************ +This Fucntion will retreive info about the given url in the connection, +handling conditions like redirection from http to ftp etc + +*************************************************************************/ +void get_url_info_loop(connection_t * connection) +{ + + pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + + /*TODO Should we try to make it broadcast a condition to the other threads? */ + pthread_mutex_lock(&connection->access_mutex); + connection->running = TRUE; + pthread_mutex_unlock(&connection->access_mutex); + + do + { + switch (connection->u.proto) + { + case URLHTTP: + connection->err = http_get_url_info_loop(connection); + break; + case URLFTP: + connection->err = ftp_get_url_info_loop(connection); + break; + default: + proz_die(_("Error: unsupported protocol")); + } + + if (connection->err == NEWLOCATION) + { + char *constructed_newloc; + char *referer; + referer=kstrdup(connection->u.url); + /*DONE : handle relative urls too */ + constructed_newloc = + uri_merge(connection->u.url, connection->hs.newloc); + + proz_debug("Redirected to %s, merged URL = %s", + connection->hs.newloc, constructed_newloc); + + proz_free_url(&connection->u, 0); + connection->err = + proz_parse_url(constructed_newloc, &connection->u, 0); + + + if (connection->err != URLOK) + { + connection_show_message(connection, + _ + ("The server returned location is wrong: %s!"), + constructed_newloc); + pthread_mutex_lock(&connection->access_mutex); + connection->running = FALSE; + pthread_mutex_unlock(&connection->access_mutex); + kfree(constructed_newloc); + connection->err = HERR; + return; + } else + connection_show_message(connection, _("Redirected to => %s"), + constructed_newloc); + connection->u.referer=referer; + kfree(constructed_newloc); + connection->err = NEWLOCATION; + } + + } + while (connection->err == NEWLOCATION); + + return; +} + + +void proz_connection_set_msg_proc(connection_t * connection, + message_proc msg_proc, void *cb_data) +{ + assert(connection != NULL); + + + connection->msg_proc = msg_proc; + connection->cb_data = cb_data; +} + + + +void connection_calc_ratebps(connection_t * connection) +{ + struct timeval tv_cur; + struct timeval tv_diff; + float diff_us; + + pthread_mutex_lock(&connection->access_mutex); + + if (connection->time_begin.tv_sec == 0 + && connection->time_begin.tv_usec == 0) + { + + connection->rate_bps = 0; + pthread_mutex_unlock(&connection->access_mutex); + return; + } else + { + gettimeofday(&tv_cur, NULL); + proz_timeval_subtract(&tv_diff, &tv_cur, &(connection->time_begin)); + diff_us = ((float) tv_diff.tv_sec * 10e5) + tv_diff.tv_usec; + + if (diff_us == 0) + { + pthread_mutex_unlock(&connection->access_mutex); + return; + } + connection->rate_bps = + ((float) (connection->remote_bytes_received + - (connection->remote_startpos-connection->orig_remote_startpos)) * 10e5 / diff_us); + } + pthread_mutex_unlock(&connection->access_mutex); + return; +} + + +void connection_throttle_bps(connection_t * connection) +{ + + struct timeval tv_cur; + struct timeval tv_diff; + float diff_us; + float wtime; + struct timeval tv_delay; + float con_timeout_usecs; + + pthread_mutex_lock(&connection->access_mutex); + + con_timeout_usecs = + (connection->conn_timeout.tv_sec * 10e5) + + connection->conn_timeout.tv_usec; + + if (connection->rate_bps == 0 || connection->max_allowed_bps == 0) + { + pthread_mutex_unlock(&connection->access_mutex); + return; + } + + if (connection->time_begin.tv_sec == 0 + && connection->time_begin.tv_usec == 0) + { + pthread_mutex_unlock(&connection->access_mutex); + return; + } + + + gettimeofday(&tv_cur, NULL); + proz_timeval_subtract(&tv_diff, &tv_cur, &(connection->time_begin)); + diff_us = ((float) tv_diff.tv_sec * 10e5) + tv_diff.tv_usec; + + if (diff_us == 0) + { + pthread_mutex_unlock(&connection->access_mutex); + return; + } + + + wtime = + 10e5 * connection->remote_bytes_received / + connection->max_allowed_bps; + + pthread_mutex_unlock(&connection->access_mutex); + + memset(&tv_delay, 0, sizeof(tv_delay)); + + if (wtime > diff_us) + { + /*too fast have to delay */ + + if ((wtime - diff_us) > con_timeout_usecs) /* problem here */ + { + /*If we were to delay for wtime-diff_us we would cause a connection + timeout, so rather than doing that shall we delay for a bit lesser + than the time for the timeout, like say 1 second less + */ + const int limit_time_us = 2 * 10e5; + + /* Will the connection timeout - limit_time_us be less or equal to 0? + If so no point in delaing beacuse the connection wold timeout + */ + + if ((con_timeout_usecs - limit_time_us) <= 0) + { + proz_debug + ("Cant throttle: Connection would timeout if done so, please try increasing the timeout value"); + return; + } + + tv_delay.tv_usec = con_timeout_usecs - limit_time_us; + /* message + ("Cant throttle fully : Connection would timeout if done so, please try increasing the timeout value"); */ + + proz_debug("delaymaxlimit %ld sec\n", tv_delay.tv_usec); + } else + { + tv_delay.tv_usec = (wtime - diff_us); +//#warning "comment out the following line before releasing the code base" + proz_debug("sleeping %f secs\n", (wtime - diff_us) / 10e5); + } + + tv_delay.tv_sec = tv_delay.tv_usec / 1000000; + tv_delay.tv_usec = tv_delay.tv_usec % 1000000; + + if (select(0, (fd_set *) 0, (fd_set *) 0, (fd_set *) 0, &tv_delay) < 0) + { + proz_debug("Unable to throttle Bandwith\n"); + } + + } +} + + +boolean proz_connection_running(connection_t * connection) +{ + boolean running; + pthread_mutex_lock(&connection->access_mutex); + running = connection->running; + pthread_mutex_unlock(&connection->access_mutex); + return running; +} + +void proz_connection_set_url(connection_t * connection, urlinfo *url) +{ + assert(url); + memcpy(&connection->u, + proz_copy_url(url), + sizeof(urlinfo)); +} + +void proz_connection_free_connection(connection_t * connection, + boolean complete) +{ + assert(connection); + /*TODO what about szBuffer..also have to free the URL u */ + + if (connection->localfile) + kfree(connection->localfile); + if (connection->file_mode) + kfree(connection->file_mode); + if (connection->http_proxy) + kfree(connection->http_proxy); + if (connection->ftp_proxy) + kfree(connection->ftp_proxy); + + if (connection->user_agent) + kfree(connection->user_agent); + + /* free the serv_ret_lines array */ + if (connection->serv_ret_lines != 0) + { + done_with_response(connection); + } + + if (complete == TRUE) + kfree(connection); +} + + +size_t write_data_with_lock(connection_t * connection, const void *ptr, size_t size, size_t nmemb) +{ + size_t ret; + flockfile(connection->fp); + /*Seek appropriately......*/ + + ret=fseek(connection->fp, connection->local_startpos+connection->remote_bytes_received, SEEK_SET); + ret=fwrite( ptr, size, nmemb, connection->fp); + + funlockfile(connection->fp); + return ret; +} diff --git a/libprozilla/src/connection.h b/libprozilla/src/connection.h new file mode 100644 index 0000000..434b419 --- /dev/null +++ b/libprozilla/src/connection.h @@ -0,0 +1,63 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* Several connection-related routines. */ + +/* $Id: connection.h,v 1.33 2001/09/30 23:13:50 kalum Exp $ */ + + +#ifndef CONNECTION_H +#define CONNECTION_H + + +#include "common.h" +#include "prozilla.h" +#include "url.h" + + +#ifdef __cplusplus +extern "C" { +#endif + + void init_response(connection_t * connection); + void done_with_response(connection_t * connection); + void connection_change_status(connection_t * connection, + dl_status status); + + + uerr_t connection_retr_fsize_not_known(connection_t * connection, + char *read_buffer, + int read_buffer_size); + + uerr_t connection_retr_fsize_known(connection_t * connection, + char *read_buffer, + int read_buffer_size); + int connection_load_resume_info(connection_t * connection); + + void connection_show_message(connection_t * connection, + const char *format, ...); + void connection_calc_ratebps(connection_t * connection); + void connection_throttle_bps(connection_t * connection); + void get_url_info_loop(connection_t * connection); + size_t write_data_with_lock(connection_t *connection, const void *ptr, size_t size, size_t nmemb); + +#ifdef __cplusplus +} +#endif +#endif /* CONNECTION_H */ diff --git a/libprozilla/src/debug.c b/libprozilla/src/debug.c new file mode 100644 index 0000000..faa152b --- /dev/null +++ b/libprozilla/src/debug.c @@ -0,0 +1,113 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* Debugging routines. */ + +/* $Id: debug.c,v 1.20 2001/08/17 21:53:39 kalum Exp $ */ + + +#include "common.h" +#include "misc.h" +#include "prozilla.h" +#include "debug.h" + + +static pthread_mutex_t debug_mutex = PTHREAD_MUTEX_INITIALIZER; + + +/****************************************************************************** +Initialises the debug system, deletes any prior debug.log file if present +******************************************************************************/ +void debug_init() +{ + proz_debug_delete_log(); + return; +} + + +void proz_debug_delete_log() +{ + + char logfile_name[PATH_MAX]; + snprintf(logfile_name, PATH_MAX, "%s/debug.log", libprozrtinfo.log_dir); + + + if (unlink(logfile_name) == -1) + { + /* + * if the file is not present the continue silently + */ + if (errno == ENOENT) + return; + else + { + proz_debug(_("unable to delete the file %s. Reason-: %s"), + strerror(errno)); + } + } +} + +/****************************************************************************** + Write a message to the debug-file. +******************************************************************************/ +void proz_debug(const char *format, ...) +{ + FILE *fp; + va_list args; + char message[MAX_MSG_SIZE + 1 + 1]; + + char logfile_name[PATH_MAX]; + snprintf(logfile_name, PATH_MAX, "%s/debug.log", libprozrtinfo.log_dir); + + + pthread_mutex_lock(&debug_mutex); + + if (libprozrtinfo.debug_mode == TRUE) + { + va_start(args, format); + vsnprintf((char *) &message, MAX_MSG_SIZE, format, args); + va_end(args); + + /* Remove all newlines from the end of the string. */ + while ((message[strlen(message) - 1] == '\r') + || (message[strlen(message) - 1] == '\n')) + message[strlen(message) - 1] = '\0'; + + /* Append a newline. */ + message[strlen(message) + 1] = '\0'; + message[strlen(message)] = '\n'; + + if (!(fp = fopen(logfile_name, "at"))) + { + pthread_mutex_unlock(&debug_mutex); + return; + } + + if (fwrite(message, 1, strlen(message), fp) != strlen(message)) + { + pthread_mutex_unlock(&debug_mutex); + fclose(fp); + return; + } + + fclose(fp); + } + + pthread_mutex_unlock(&debug_mutex); +} diff --git a/libprozilla/src/debug.h b/libprozilla/src/debug.h new file mode 100644 index 0000000..7dcbb2a --- /dev/null +++ b/libprozilla/src/debug.h @@ -0,0 +1,33 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* Debugging routines. */ + +/* $Id: debug.h,v 1.14 2001/07/11 23:19:41 kalum Exp $ */ + + +#ifndef DEBUG_H +#define DEBUG_H + + +#include "common.h" + +void debug_init(); + +#endif /* DEBUG_H */ diff --git a/libprozilla/src/download.c b/libprozilla/src/download.c new file mode 100644 index 0000000..6a1bf39 --- /dev/null +++ b/libprozilla/src/download.c @@ -0,0 +1,2213 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* Download routines. */ + +/* $Id: download.c,v 1.33 2001/09/30 23:13:50 kalum Exp $ */ + + +#include "common.h" +#include "download.h" +#include "ftp-retr.h" +#include "http-retr.h" +#include "logfile.h" +#include "debug.h" +#include "ftpsearch.h" + +/*This will delete the joining file if the download is cancelled */ +void cleanup_joining_thread(void *cdata); + +/****************************************************************************** + Initialize the download. +******************************************************************************/ +download_t *proz_download_init(urlinfo * u) +{ + +/* pthread_mutexattr_t attr; */ + download_t *download = kmalloc(sizeof(download_t)); + + /* attr.__mutexkind = PTHREAD_MUTEX_RECURSIVE_NP; */ + + memset(download, 0, sizeof(download_t)); + + /*FIXME pthread_mutex_init(&download->status_change_mutex, &attr); */ + + pthread_mutex_init(&download->status_change_mutex, NULL); + pthread_mutex_init(&download->access_mutex, NULL); + + memcpy(&download->u, u, sizeof(urlinfo)); + + download->dl_dir = kmalloc(PATH_MAX); + download->output_dir = kmalloc(PATH_MAX); + download->log_dir = kmalloc(PATH_MAX); + strcpy(download->dl_dir, libprozrtinfo.dl_dir); + strcpy(download->output_dir, libprozrtinfo.output_dir); + strcpy(download->log_dir, libprozrtinfo.log_dir); + download->resume_mode = FALSE; + download->max_simul_connections = 0; + + download->max_allowed_bps = libprozrtinfo.max_bps_per_dl; + download->file_build_msg = (char *) kmalloc(MAX_MSG_SIZE + 1); + download->using_ftpsearch = FALSE; + + return download; +} + +/****************************************************************************** + This will setup a download based on the connection info, and will attempt + to setup req_connections, but it might not be possible if we dont know the + file size, returns the number of connections allocated. +******************************************************************************/ +int proz_download_setup_connections_no_ftpsearch(download_t * download, + connection_t * connection, + int req_connections) +{ + int num_connections, i; + long bytes_per_connection; + long bytes_left; + FILE *fp; + char *out_file; + struct stat stat_buf; + + download->main_file_size = connection->main_file_size; + download->resume_support = connection->resume_support; + + if (download->main_file_size == -1) + { + num_connections = 1; + bytes_per_connection = -1; + bytes_left = -1; + + } else + { + if (connection->resume_support == FALSE) + num_connections = 1; + else + num_connections = req_connections; + + bytes_per_connection = connection->main_file_size / num_connections; + bytes_left = connection->main_file_size % num_connections; + } + + download->pconnections = kmalloc(sizeof(connection_t *) * num_connections); + download->num_connections = num_connections; + + + + + out_file=kmalloc(PATH_MAX); + snprintf(out_file, PATH_MAX, "%s/%s.prozilla", + download->dl_dir, connection->u.file); + + + //First see if the file exists then we dont create a new one else we do + + if (stat(out_file, &stat_buf) == -1) + { + /* the call failed */ + /* if the error is due to the file not been present then there is no + need to do anything..just continue, otherwise return error (-1) + */ + if (errno == ENOENT) + { + //File not exists so create it + if (! + (fp = + fopen(out_file, "w+"))) + { + download_show_message(download, + _ + ("Unable to open file %s: %s!"), + out_file, strerror(errno)); + return -1; + } + + } + else + return -1; + } + else + { + //TODO: File exists : if it doesnt match file size warna boput it... + if (! + (fp = + fopen(out_file, "r+"))) + { + download_show_message(download, + _ + ("Unable to open file %s: %s!"), + out_file, strerror(errno)); + return -1; + } + + } + + + //TRY setting the offset; + if (download->main_file_size != -1) + { + + if(fseek(fp, download->main_file_size, SEEK_SET)!=0) + return -1; + } + + /*Make sure all writes go directly to the file */ + setvbuf(fp, NULL, _IONBF, 0); + + for (i = 0; i < num_connections; i++) + { + download->pconnections[i]=proz_connection_init(&download->u, + &download->status_change_mutex); + + /*Copy somethings we need from the original connection */ + download->resume_support = download->pconnections[i]->resume_support = + connection->resume_support; + memcpy(&download->pconnections[i]->hs, &connection->hs, + sizeof(http_stat_t)); + + + download->pconnections[i]->localfile = kmalloc(PATH_MAX); + strcpy(out_file, download->pconnections[i]->localfile); + + + download->pconnections[i]->fp=fp; + + download->pconnections[i]->retry = TRUE; + + if (connection->main_file_size == -1) + { + download->pconnections[i]->main_file_size = -1; + download->pconnections[i]->remote_startpos = 0; + download->pconnections[i]->orig_remote_startpos = 0; + download->pconnections[i]->remote_endpos = -1; + + + download->pconnections[i]->local_startpos = 0; + } else + { + download->pconnections[i]->main_file_size = connection->main_file_size; + download->pconnections[i]->orig_remote_startpos = download->pconnections[i]->remote_startpos = i * bytes_per_connection; + download->pconnections[i]->remote_endpos = + i * bytes_per_connection + bytes_per_connection; + + //Changing things here..... + download->pconnections[i]->local_startpos = download->pconnections[i]->remote_startpos; + } + + + + /*Set the connections message to be download->msg_proc calback */ + proz_connection_set_msg_proc(download->pconnections[i], + download->msg_proc, download->cb_data); + } + + /* Add the remaining bytes to the last connection */ + + download->pconnections[--i]->remote_endpos += bytes_left; + download->using_ftpsearch = FALSE; + + + /*NOTE: Should we check for previously started downloads here and adjust + the local_startpos, accordingly or check for resumes later in another function + which is called after this? + */ + + return num_connections; +} + + +/* This will for each connection setup the local_startpos and file write mode if any prior download exists returns 1 on success, and -1 on a error.*/ +int proz_download_load_resume_info(download_t * download) +{ + int i; + int ret = 1; + logfile lf; + if(proz_log_read_logfile(&lf, download, TRUE)==1) + proz_debug("sucessfully loaded resume info"); + + + for (i = 0; i < download->num_connections; i++) + { + + if(download->pconnections[i]->remote_endpos - download->pconnections[i]->remote_startpos == download->pconnections[i]->remote_bytes_received) + { + + connection_change_status(download->pconnections[i], COMPLETED); + continue; + } + + download->pconnections[i]->remote_startpos +=download->pconnections[i]->remote_bytes_received; + + + } + + download->resume_mode = TRUE; + return ret; +} + +/* This will create the threads and start the downloads, + if resume is true it will load the resume info too if the download supports it +*/ + +void proz_download_start_downloads(download_t * download, + boolean resume_mode) +{ + + int i; + + if (resume_mode) + { + /*Does this download suport resume? */ + if (download->resume_support == TRUE) + proz_download_load_resume_info(download); + } +else + { + /*Create the log file */ + if (log_create_logfile + (download->num_connections, download->main_file_size, + download->u.url, download) != 1) + { + download_show_message(download, + _("Warning! Unable to create logfile!")); + } +} + + /* Allocate number of threads */ + download->threads = + (pthread_t *) kmalloc(sizeof(pthread_t) * download->num_connections); + + /*Create them */ + for (i = 0; i < download->num_connections; i++) + { + switch (download->pconnections[i]->u.proto) + { + case URLHTTP: + /* http_loop(&download->connections[i]); */ + if (pthread_create(&download->threads[i], NULL, + (void *) &http_loop, + (void *) (download->pconnections[i])) != 0) + + proz_die(_("Error: Not enough system resources")); + + break; + case URLFTP: + + /* ftp_loop(&download->connections[i]); */ + + + if (pthread_create(&download->threads[i], NULL, + (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + + break; + default: + proz_die(_("Error: Unsupported Protocol was specified")); + } + } + + download_show_message(download, _("All threads created")); +} + +void proz_download_stop_downloads(download_t * download) +{ + int i; + /*Stop the threads */ + + for (i = 0; i < download->num_connections; i++) + { + pthread_cancel(download->threads[i]); + pthread_join(download->threads[i], NULL); + } +} + +/* returns one of DLINPROGRESS, DLERR, DLDONE, DLREMOTEFATAL, DLLOCALFATAL*/ +uerr_t proz_download_handle_threads(download_t * download) +{ + + + //Create logfile everytime this is callaed + log_create_logfile(download->num_connections, download->main_file_size,download->u.url, download); + + if (download->using_ftpsearch == TRUE) + return download_handle_threads_ftpsearch(download); + else + return download_handle_threads_no_ftpsearch(download); +} + +/* returns one of DLINPROGRESS, DLERR, DLDONE, DLREMOTEFATAL, DLLOCALFATAL*/ +uerr_t download_handle_threads_no_ftpsearch(download_t * download) +{ + int i; + + for (i = 0; i < download->num_connections; i++) + { + /*Set the DL start time if it is not done so */ + pthread_mutex_lock(download->pconnections[i]->status_change_mutex); + if (download->pconnections[i]->status == DOWNLOADING + && download->start_time.tv_sec == 0 + && download->start_time.tv_usec == 0) + { + gettimeofday(&download->start_time, NULL); + } + pthread_mutex_unlock(download->pconnections[i]->status_change_mutex); + } + + + /*If all the connections are completed then end them, and return complete */ + if ((proz_download_all_dls_status(download, COMPLETED)) == TRUE) + { + char * out_filename; + char * orig_filename; + download_show_message(download, + "All the conenctions have retreived the file" + "..waiting for them to end"); + proz_download_wait_till_all_end(download); + download_show_message(download, "All the threads have being ended."); + + /*Close and rename file to original */ + flockfile(download->pconnections[0]->fp); + fclose(download->pconnections[0]->fp); + funlockfile(download->pconnections[0]->fp); + + out_filename=kmalloc(PATH_MAX); + orig_filename=kmalloc(PATH_MAX); + + snprintf(orig_filename, PATH_MAX, "%s/%s", + download->dl_dir, download->pconnections[0]->u.file); + snprintf(out_filename, PATH_MAX, "%s/%s.prozilla", + download->dl_dir, download->pconnections[0]->u.file); + if(rename(out_filename, orig_filename)==-1) + { + download_show_message(download, "Error While attempting to rename the file: %s", strerror(errno)); + } + + download_show_message(download, "Successfully renamed file"); + /*Delete the logfile as we dont need it now */ + if(proz_log_delete_logfile(download)!=1) + download_show_message(download, "Error: Unable to delete the logfile: %s", strerror(errno)); + + return DLDONE; + } + + /*TODO handle restartable connections */ + for (i = 0; i < download->num_connections; i++) + { + dl_status status; + uerr_t connection_err; + + pthread_mutex_lock(download->pconnections[i]->status_change_mutex); + status = download->pconnections[i]->status; + pthread_mutex_unlock(download->pconnections[i]->status_change_mutex); + + pthread_mutex_lock(&download->pconnections[i]->access_mutex); + connection_err = download->pconnections[i]->err; + pthread_mutex_unlock(&download->pconnections[i]->access_mutex); + + + switch (status) + { + case MAXTRYS: + break; + + case REMOTEFATAL: + /* handle the CANTRESUME err code */ + + if (connection_err == CANTRESUME) + { + /*Terminate the connections */ + proz_download_stop_downloads(download); + /*FIXME Do we delete any downloaded portions here ? */ + return CANTRESUME; + } else /*Handle the file not being found on the server */ + if (connection_err == FTPNSFOD || connection_err == HTTPNSFOD) + { + if (proz_download_all_dls_filensfod(download) == TRUE) + { + download_show_message(download, + _ + ("The file was not found in all the connections!")); + /*Terminate the connections */ + proz_download_stop_downloads(download); + return DLREMOTEFATAL; + } else + { + download_show_message(download, _("Relaunching download")); + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + if (pthread_create + (&download->threads[i], NULL, (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + + } + } else /*Handle the file not being found on the server */ + if (connection_err == FTPCWDFAIL) + { + if (proz_download_all_dls_ftpcwdfail(download) == TRUE) + { + download_show_message(download, + _ + ("Failed to change to the working directory on all the connections!")); + /*Terminate the connections */ + proz_download_stop_downloads(download); + return DLREMOTEFATAL; + } else + { + download_show_message(download, _("Relaunching download")); + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + if (pthread_create + (&download->threads[i], NULL, (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + } + } + + break; + + case LOCALFATAL: + proz_download_stop_downloads(download); + download_show_message(download, + _ + ("Connection %d, had a local fatal error: %s .Aborting download. "), + i, + proz_strerror(download->pconnections[i]->err)); + return DLLOCALFATAL; + break; + + case LOGINFAIL: + /* + * First check if the ftp server did not allow any thread + * to login at all, then retry the curent thread + */ + if (proz_download_all_dls_status(download, LOGINFAIL) == TRUE) + { + download_show_message(download, + _ + ("All logins rejected! Retrying connection")); + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + + if (pthread_create + (&download->threads[i], NULL, (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + + break; + } else + { + + /* + * Ok so at least there is one download whos login has not been rejected, + * so lets see if it has completed, if so we can relaunch this connection, + * as the commonest reason for a ftp login being rejected is because, the + * ftp server has a limit on the number of logins permitted from the same + * IP address. + */ + + /* + * Query the number of threads that are downloading + * if it is zero then relaunch this connection + */ + int dling_conns_count = + download_query_conns_status_count(download, DOWNLOADING, NULL); + + if (dling_conns_count > download->max_simul_connections) + { + download->max_simul_connections = dling_conns_count; + break; + } + + + if (dling_conns_count == 0 + && + (download_query_conns_status_count(download, CONNECTING, NULL) + == 0) + && (download_query_conns_status_count(download, LOGGININ, NULL) + == 0)) + { + + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + pthread_mutex_lock(&download->status_change_mutex); + download_show_message(download, _("Relaunching download")); + if (pthread_create(&download->threads[i], NULL, + (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + pthread_cond_wait(&download->pconnections[i]->connecting_cond, + &download->status_change_mutex); + pthread_mutex_unlock(&download->status_change_mutex); + } else + if (dling_conns_count < download->max_simul_connections + && + (download_query_conns_status_count + (download, CONNECTING, NULL) == 0) + && + (download_query_conns_status_count + (download, LOGGININ, NULL) == 0)) + { + + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + pthread_mutex_lock(&download->status_change_mutex); + download_show_message(download, _("Relaunching download")); + if (pthread_create(&download->threads[i], NULL, + (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + pthread_cond_wait(&download->pconnections[i]->connecting_cond, + &download->status_change_mutex); + pthread_mutex_unlock(&download->status_change_mutex); + } + + } + break; + + case CONREJECT: + /* + * First check if the ftp server did not allow any thread + * to login at all, then retry the curent thread + */ + if (proz_download_all_dls_status(download, CONREJECT) == TRUE) + { + download_show_message(download, + _ + ("All connections attempts have been rejected! Retrying connection")); + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + + if (pthread_create + (&download->threads[i], NULL, (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + + break; + } else + { + /* + * Ok so at least there is one download whos connections attempt has not been rejected, + * so lets see if it has completed, if so we can relaunch this connection, + * as the commonest reason for a ftp login being rejected is because, the + * ftp server has a limit on the number of logins permitted from the same + * IP address. + */ + + /* + * Query the number of threads that are downloading + * if it is zero then relaunch this connection + */ + int dling_conns_count = + download_query_conns_status_count(download, DOWNLOADING, NULL); + + if (dling_conns_count > download->max_simul_connections) + { + download->max_simul_connections = dling_conns_count; + break; + } + + + if (dling_conns_count == 0 + && + (download_query_conns_status_count(download, CONNECTING, NULL) + == 0) + && (download_query_conns_status_count(download, LOGGININ, NULL) + == 0)) + { + + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + pthread_mutex_lock(&download->status_change_mutex); + download_show_message(download, _("Relaunching download")); + if (pthread_create(&download->threads[i], NULL, + (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + pthread_cond_wait(&download->pconnections[i]->connecting_cond, + &download->status_change_mutex); + pthread_mutex_unlock(&download->status_change_mutex); + } else + if (dling_conns_count < download->max_simul_connections + && + (download_query_conns_status_count + (download, CONNECTING, NULL) == 0) + && + (download_query_conns_status_count + (download, LOGGININ, NULL) == 0)) + { + + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + pthread_mutex_lock(&download->status_change_mutex); + download_show_message(download, _("Relaunching download")); + if (pthread_create(&download->threads[i], NULL, + (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + pthread_cond_wait(&download->pconnections[i]->connecting_cond, + &download->status_change_mutex); + pthread_mutex_unlock(&download->status_change_mutex); + } + + } + break; + + default: + break; + } + } + + /*bandwith throttling */ + download_calc_throttle_factor(download); + return DLINPROGRESS; +} + +pthread_mutex_t download_msg_mutex = PTHREAD_MUTEX_INITIALIZER; + +/*calls the msg_proc function if not null */ +void download_show_message(download_t * download, const char *format, ...) +{ + va_list args; + char message[MAX_MSG_SIZE + 1]; + + pthread_mutex_lock(&download_msg_mutex); + va_start(args, format); + vsnprintf(message, MAX_MSG_SIZE, format, args); + va_end(args); + if (download->msg_proc) + download->msg_proc(message, download->cb_data); + + /*FIXME: Remove this later */ + printf("%s\n", message); + pthread_mutex_unlock(&download_msg_mutex); +} + + + +/*This will return a pointer to the connection requested. */ + +connection_t *proz_download_get_connection(download_t * download, + int number) +{ + assert(number >= 0 && number < download->num_connections); + return (download->pconnections[number]); + +} + + + +/*Returns the total number of bytes got.*/ +long proz_download_get_total_bytes_got(download_t * download) +{ + long total_bytes_got = 0; + int i; + + + for (i = 0; i < download->num_connections; i++) + { + total_bytes_got += + proz_connection_get_total_bytes_got(download->pconnections[i]); + } + return total_bytes_got; +} + + +/*Returns 1 if a previous download exits, 0 if not, and -1 on error */ +int proz_download_prev_download_exists(download_t * download) +{ + /* Currently if a logfile exists it assumes that a previous uncompleted + download exists + */ + + return proz_log_logfile_exists(download); +} + + +/*Returns the download speed in bytes per second */ +float proz_download_get_average_speed(download_t * download) +{ + float speed; + struct timeval cur_time; + struct timeval diff_time; + long total_remote_bytes_got = + proz_download_get_total_remote_bytes_got(download); + + + /*Has the download has been started.... */ + if (download->start_time.tv_sec > 0 || download->start_time.tv_usec > 0) + { + gettimeofday(&cur_time, NULL); + /*Get the diff. */ + proz_timeval_subtract(&diff_time, &cur_time, &download->start_time); + + if (diff_time.tv_sec > 0 || diff_time.tv_usec > 0) + { + speed = (float) total_remote_bytes_got / ((float) diff_time.tv_sec + + ((float) diff_time. + tv_usec / 10e5)); + } else + speed = 0; + } else + speed = 0; /*The DL hasnt started yet */ + + return speed; + +} + + +/* This can be called to erase the portions of the main file + that have been got. +*/ +int proz_download_delete_dl_file(download_t * download) +{ + char *out_file; + out_file=kmalloc(PATH_MAX); + snprintf(out_file, PATH_MAX, "%s/%s.prozilla", + download->dl_dir, download->u.file); + + if (unlink(out_file) == -1) + { + /* + * if the file is not present no need for a error message ;-) + */ + if (errno == ENOENT) + { + return 1; + } + else + { + download_show_message(download, + _ + ("unable to delete the file %s. Reason-: %s"), + out_file, strerror(errno)); + return -1; + } + } + + + return 1; +} + + +/*This will wait till all the downloaded threads are not running */ +void proz_download_wait_till_all_end(download_t * download) +{ + int i; + /*Wait till the end of all the threads */ + + for (i = 0; i < download->num_connections; i++) + { + pthread_join(download->threads[i], NULL); + } +} + + +/*Creates the joining thread */ +void proz_download_join_downloads(download_t * download) +{ + download->building = TRUE; + pthread_create(&download->join_thread, NULL, + (void *(*)(void *)) download_join_downloads, + (void *) download); +} + + +/*This function will call download_join_downloads with a handler to join the downloaded files*/ +void download_join_downloads(download_t * download) +{ + pthread_cleanup_push(cleanup_joining_thread, (void *) download); + join_downloads(download); + pthread_cleanup_pop(0); +} + +/*This function will join the downloaded files*/ +void join_downloads(download_t * download) +{ + + pthread_mutex_lock(&download->access_mutex); + download->building = 0; + pthread_mutex_unlock(&download->access_mutex); + return; +} + + + +/***************************************************************************** +Returns the total number of bytes that has being got from the server +by the all the connections managed by this download +******************************************************************************/ +long proz_download_get_total_remote_bytes_got(download_t * download) +{ + + long total_bytes_recv = 0; + int i; + + for (i = 0; i < download->num_connections; i++) + { + + total_bytes_recv += + proz_connection_get_total_remote_bytes_got(download-> + pconnections[i]); + } + return total_bytes_recv; +} + + + +/*If all the downlaods status is equal to status ,returns TRUE */ +int proz_download_all_dls_status(download_t * download, dl_status status) +{ + int i; + pthread_mutex_lock(&download->status_change_mutex); + for (i = 0; i < download->num_connections; i++) + { + if (download->pconnections[i]->status != status) + { + pthread_mutex_unlock(&download->status_change_mutex); + return FALSE; + } + } + + pthread_mutex_unlock(&download->status_change_mutex); + return TRUE; +} + + + + +boolean proz_download_all_dls_filensfod(download_t * download) +{ + int i; + uerr_t err; + /*Lock mutex */ + + for (i = 0; i < download->num_connections; i++) + { + pthread_mutex_lock(&download->pconnections[i]->access_mutex); + err = download->pconnections[i]->err; + pthread_mutex_unlock(&download->pconnections[i]->access_mutex); + if (err != FTPNSFOD && err != HTTPNSFOD) + { + return FALSE; + } + } + + + return TRUE; +} + + +boolean proz_download_all_dls_ftpcwdfail(download_t * download) +{ + int i; + uerr_t err; + /*Lock mutex */ + + for (i = 0; i < download->num_connections; i++) + { + pthread_mutex_lock(&download->pconnections[i]->access_mutex); + err = download->pconnections[i]->err; + pthread_mutex_unlock(&download->pconnections[i]->access_mutex); + if (err != FTPNSFOD && err != FTPCWDFAIL) + { + return FALSE; + } + } + + + return TRUE; +} + + +/*If all the downlaods conections err status is equal to in_err (ie all encountered the same error) ,returns TRUE */ + +boolean proz_download_all_dls_err(download_t * download, uerr_t in_err) +{ + int i; + uerr_t err; + /*Lock mutex */ + + for (i = 0; i < download->num_connections; i++) + { + pthread_mutex_lock(&download->pconnections[i]->access_mutex); + err = download->pconnections[i]->err; + pthread_mutex_unlock(&download->pconnections[i]->access_mutex); + if (err !=in_err) + { + return FALSE; + } + } + + return TRUE; +} + +/* Returns the number of connections whose status is status ie (connecting to the server specified), + if server is NULL then it returns the total number of connections that are having the status which is equal the to the status specified */ +int download_query_conns_status_count(download_t * download, + dl_status status, char *server) +{ + int i; + int count = 0; + pthread_mutex_lock(&download->status_change_mutex); + + for (i = 0; i < download->num_connections; i++) + { + if (download->pconnections[i]->status == status) + { + if (server == NULL + || (strcasecmp(server, download->pconnections[i]->u.host) == 0)) + count++; + } + } + + pthread_mutex_unlock(&download->status_change_mutex); + return count; +} + + + + +void proz_download_set_msg_proc(download_t * download, + message_proc msg_proc, void *cb_data) +{ + assert(download != NULL); + + + download->msg_proc = msg_proc; + download->cb_data = cb_data; +} + +/*Returns the number of seconds left remaining in the download, +if it cannot be calculated say if the file size of not known, it returns -1 +*/ +long proz_download_get_est_time_left(download_t * download) +{ + + long secs_left; + float average_speed; + long total_remote_bytes_got; + + if (download->main_file_size == -1) + return -1; + + total_remote_bytes_got = proz_download_get_total_bytes_got(download); + + average_speed = proz_download_get_average_speed(download); + if (average_speed == 0) + return -1; + + return secs_left = + (long) ((download->main_file_size - + total_remote_bytes_got) / average_speed); + +} + + +void proz_download_free_download(download_t * download, boolean complete) +{ + + assert(download); + /*TODO free the URL */ + + if (download->dl_dir) + kfree(download->dl_dir); + if (download->output_dir) + kfree(download->output_dir); + + if (download->log_dir) + kfree(download->log_dir); + + if (download->file_build_msg) + kfree(download->file_build_msg); + if (download->threads) + kfree(download->threads); + + /*Now handle the freeing of the connections */ + + if (download->num_connections > 0 && download->pconnections) + { + int i; + for (i = 0; i < download->num_connections; i++) + { + proz_connection_free_connection(download->pconnections[i], 0); + } + kfree(download->pconnections); + } + + if (complete == TRUE) + kfree(download); +} + + +/*This will delete the joining file if the downlaod is cancelled */ +void cleanup_joining_thread(void *cdata) +{ + download_t *download = (download_t *) cdata; + char out_file_name[PATH_MAX]; + + proz_debug("in cleanup_joining_thread\n"); + snprintf(out_file_name, PATH_MAX, "%s/%s", download->output_dir, + download->u.file); + + if (unlink(out_file_name) == -1) + { + /* + * if the file is not present the continue silently + */ + if (errno != ENOENT) + proz_debug(_("unable to delete the file %s. Reason-: %s"), + out_file_name, strerror(errno)); + } + return; +} + + + +void download_calc_throttle_factor(download_t * download) +{ + int i; + int num_slow_cons = 0; + long t_slow_rates = 0; + long limit_high_cons_rate; + long avg_rate; + + int num_dl_cons = + download_query_conns_status_count(download, DOWNLOADING, NULL); + + if (num_dl_cons == 0) + return; + + avg_rate = download->max_allowed_bps / num_dl_cons; + + if (download->max_allowed_bps == 0) + { + for (i = 0; i < download->num_connections; i++) + { + pthread_mutex_lock(&(download->pconnections[i]->access_mutex)); + download->pconnections[i]->max_allowed_bps = 0; + pthread_mutex_unlock(&(download->pconnections[i]->access_mutex)); + } + return; + } + + /*MAKE IR USE THE NUMBER OF ACTIVE DOWNLOAdING CONENCTIONS: Done */ + + for (i = 0; i < download->num_connections; i++) + { + pthread_mutex_lock(&(download->pconnections[i]->access_mutex)); + if ((proz_connection_get_status(download->pconnections[i]) == + DOWNLOADING) && download->pconnections[i]->rate_bps < avg_rate) + { + t_slow_rates += download->pconnections[i]->rate_bps; + num_slow_cons++; + } + pthread_mutex_unlock(&(download->pconnections[i]->access_mutex)); + } + + + /*fixme mutex to preven this conenctions */ + if (num_slow_cons > num_dl_cons) + num_dl_cons = num_slow_cons; + + + /*If all the connections are slower then no need to do anything */ + + if (num_slow_cons == num_dl_cons) + { + for (i = 0; i < download->num_connections; i++) + { + pthread_mutex_lock(&(download->pconnections[i]->access_mutex)); + download->pconnections[i]->max_allowed_bps = 0; + pthread_mutex_unlock(&(download->pconnections[i]->access_mutex)); + } + return; + } + + + limit_high_cons_rate = + (download->max_allowed_bps - t_slow_rates) / (num_dl_cons - + num_slow_cons); + + /* + proz_debug("total slow connections = %ld", num_slow_cons); + proz_debug("total slow rates = %ld", t_slow_rates); + proz_debug("limit_high_cons_rate = %ld", limit_high_cons_rate); + */ + + for (i = 0; i < download->num_connections; i++) + { + pthread_mutex_lock(&(download->pconnections[i]->access_mutex)); + if ((proz_connection_get_status(download->pconnections[i]) == + DOWNLOADING) && download->pconnections[i]->rate_bps >= avg_rate) + { + download->pconnections[i]->max_allowed_bps = limit_high_cons_rate; + } + pthread_mutex_unlock(&(download->pconnections[i]->access_mutex)); + } +} + + +/*This function will check if the target output file, +ie: the file that we are going to rebuild to exists. +Returns, + 1= file exists + 0 = file does not exists + -1 = error, ie cant have permissions to stat the file etc etc +*/ + +int proz_download_target_exist(download_t * download) +{ + + char out_file_name[PATH_MAX]; + struct stat st_buf; + int ret; + + snprintf(out_file_name, PATH_MAX, "%s/%s", download->output_dir, + download->u.file); + + ret = stat(out_file_name, &st_buf); + if (ret == -1) + { + if (errno == ENONET) + return 0; + else + return -1; + } + + /*File was statable so it exists */ + return 1; + +} + + +/*This function will delete the target output file, +Returns, + 1= sucessfully delted the file + 0 = file does not exist + -1 = error, ie cant have permissions to delete the file etc etc +*/ + +int proz_download_delete_target(download_t * download) +{ + + char out_file_name[PATH_MAX]; + int ret; + + snprintf(out_file_name, PATH_MAX, "%s/%s", download->output_dir, + download->u.file); + + ret = remove(out_file_name); + if (ret == -1) + { + if (errno == ENONET) + return 0; + else + return -1; + } + + /*File was statable so it exists */ + return 1; + +} + + + +/* returns one of DLINPROGRESS, DLERR, DLDONE, DLREMOTEFATAL, DLLOCALFATAL*/ +uerr_t download_handle_threads_ftpsearch(download_t * download) +{ + int i; + + for (i = 0; i < download->num_connections; i++) + { + /*Set the DL start time if it is not done so */ + pthread_mutex_lock(download->pconnections[i]->status_change_mutex); + if (download->pconnections[i]->status == DOWNLOADING + && download->start_time.tv_sec == 0 + && download->start_time.tv_usec == 0) + { + gettimeofday(&download->start_time, NULL); + } + pthread_mutex_unlock(download->pconnections[i]->status_change_mutex); + } + + + /*If all the connections are completed then end them, and return complete */ + if ((proz_download_all_dls_status(download, COMPLETED)) == TRUE) + { + char * out_filename; + char * orig_filename; + + download_show_message(download, + "All the conenctions have retreived the file" + "..waiting for them to end"); + proz_download_wait_till_all_end(download); + download_show_message(download, "All the threads have being ended."); + /*Close and rename file to original */ + flockfile(download->pconnections[0]->fp); + fclose(download->pconnections[0]->fp); + funlockfile(download->pconnections[0]->fp); + + out_filename=kmalloc(PATH_MAX); + orig_filename=kmalloc(PATH_MAX); + + snprintf(orig_filename, PATH_MAX, "%s/%s", + download->dl_dir, download->pconnections[0]->u.file); + snprintf(out_filename, PATH_MAX, "%s/%s.prozilla", + download->dl_dir, download->pconnections[0]->u.file); + if(rename(out_filename, orig_filename)==-1) + { + download_show_message(download, "Error While attempting to rename the file: %s", strerror(errno)); + } + + download_show_message(download, "Successfully renamed file"); + /*Delete the logfile as we dont need it now */ + if(proz_log_delete_logfile(download)!=1) + download_show_message(download, "Error: Unable to delete the logfile: %s", strerror(errno)); + return DLDONE; + } + + /*TODO handle restartable connections */ + for (i = 0; i < download->num_connections; i++) + { + dl_status status; + uerr_t connection_err; + pthread_mutex_lock(download->pconnections[i]->status_change_mutex); + status = download->pconnections[i]->status; + pthread_mutex_unlock(download->pconnections[i]->status_change_mutex); + + pthread_mutex_lock(&download->pconnections[i]->access_mutex); + connection_err = download->pconnections[i]->err; + pthread_mutex_unlock(&download->pconnections[i]->access_mutex); + + + switch (status) + { + case MAXTRYS: + break; + + case REMOTEFATAL: + /* handle the CANTRESUME err code */ + + if (connection_err == CANTRESUME) + { + /*Terminate the connections */ + proz_download_stop_downloads(download); + /*FIXME Do we delete any downloaded portions here ? */ + return CANTRESUME; + } else /*Handle the file not being found on the server */ + if (connection_err == FTPNSFOD || connection_err == HTTPNSFOD) + { + if (proz_download_all_dls_filensfod(download) == TRUE) + { + download_show_message(download, + _ + ("The file was not found in all the connections!")); + /*Terminate the connections */ + proz_download_stop_downloads(download); + return DLREMOTEFATAL; + } else + { + + /*Now we have to be careful */ + int server_pos, cur_path_pos; + + server_pos = + ftpsearch_get_server_position(download->ftps_info, + download->pconnections[i]->u. + host); + cur_path_pos = + ftpsearch_get_path_position(download->ftps_info, + download->pconnections[i]->u.host, + download->pconnections[i]->u.dir); + assert(cur_path_pos != -1); + + proz_debug("Server pos = %d, cur_path_pos=%d", server_pos, + cur_path_pos); + /*mark path as not valid */ + download->ftps_info->mirrors[server_pos].paths[cur_path_pos]. + valid = FALSE; + + /*See if more paths are avail */ ; + if (cur_path_pos < + (download->ftps_info->mirrors[server_pos].num_paths - 1)) + { + char *url_buf; + + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + /*additional paths avail to try */ + + download_show_message(download, + _ + ("Trying additional paths available on this server")); + proz_debug("Trying path %s", + download->ftps_info->mirrors[server_pos]. + paths[cur_path_pos + 1]); + + url_buf = + malloc(strlen + (download->ftps_info->mirrors[server_pos]. + server_name) + + strlen(download->ftps_info->mirrors[server_pos]. + paths[cur_path_pos + 1].path) + + strlen(download->pconnections[i]->u.file) + 11 + 1); + + sprintf(url_buf, "ftp://%s/%s/%s", + download->ftps_info->mirrors[server_pos].server_name, + download->ftps_info->mirrors[server_pos]. + paths[cur_path_pos + 1].path, + download->pconnections[i]->u.file); + + proz_debug("Target url for relaunching is %s", url_buf); + /*FIXME */ + proz_parse_url(url_buf, &download->pconnections[i]->u, 0); + free(url_buf); + + /*Relaunch thread */ + if (pthread_create + (&download->threads[i], NULL, (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + } else + { + int j, usable_server; + /*download_show_message(download, + _ + ("No additional paths on this server available, so will try to switch to another server")); */ + /*Find any server that is downloading or completed and use it */ + + usable_server = -1; + + pthread_mutex_lock(&download->status_change_mutex); + for (j = 0; j < download->num_connections; j++) + { + if (download->pconnections[j]->status == DOWNLOADING || + download->pconnections[j]->status == COMPLETED) + { + usable_server = j; + } + } + pthread_mutex_unlock(&download->status_change_mutex); + + if (usable_server != -1) + { + /*We have a server which is DLING */ + download_show_message(download, + _ + ("No additional paths on this server available, so will switch to another server")); + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + + /*copy url and relaunch */ + proz_free_url(&download->pconnections[i]->u, 0); + memcpy(&download->pconnections[i]->u, + proz_copy_url(&download-> + pconnections[usable_server]->u), + sizeof(urlinfo)); + proz_debug + ("Found server %s which is downloading will relaunch based on it", + download->pconnections[usable_server]->u.host); + + /*Relaunch thread */ + if (pthread_create + (&download->threads[i], NULL, (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + + } else + { + /*Shit! no servers are downloading so what shall we do? we shall do nothing and wait for one connectection at least to start downloading */ + + } + } + } + } else /*Handle the file not being found on the server */ + if (connection_err == FTPCWDFAIL) + { + if (proz_download_all_dls_ftpcwdfail(download) == TRUE) + { + download_show_message(download, + _ + ("Failed to change to the working directory on all the connections!")); + /*Terminate the connections */ + proz_download_stop_downloads(download); + return DLREMOTEFATAL; + } else + { + + /*Now we have to be careful */ + int server_pos, cur_path_pos; + + server_pos = + ftpsearch_get_server_position(download->ftps_info, + download->pconnections[i]->u. + host); + assert(server_pos != -1); + cur_path_pos = + ftpsearch_get_path_position(download->ftps_info, + download->pconnections[i]->u.host, + download->pconnections[i]->u.dir); + assert(cur_path_pos != -1); + + proz_debug("Server pos = %d, cur_path_pos=%d", server_pos, + cur_path_pos); + + /*mark path as not valid */ + download->ftps_info->mirrors[server_pos].paths[cur_path_pos]. + valid = FALSE; + /*See if more paths are avail */ ; + if (cur_path_pos < + (download->ftps_info->mirrors[server_pos].num_paths - 1)) + { + char *url_buf; + + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + /*additional paths avail to try */ + + download_show_message(download, + _ + ("Trying additional paths available on this server")); + proz_debug("Trying path %s", + download->ftps_info->mirrors[server_pos]. + paths[cur_path_pos + 1]); + + url_buf = + malloc(strlen + (download->ftps_info->mirrors[server_pos]. + server_name) + + strlen(download->ftps_info->mirrors[server_pos]. + paths[cur_path_pos + 1].path) + + strlen(download->pconnections[i]->u.file) + 11 + 1); + + sprintf(url_buf, "ftp://%s/%s/%s", + download->ftps_info->mirrors[server_pos].server_name, + download->ftps_info->mirrors[server_pos]. + paths[cur_path_pos + 1].path, + download->pconnections[i]->u.file); + + proz_debug("Target url for relaunching is %s", url_buf); + /*FIXME */ + proz_parse_url(url_buf, &download->pconnections[i]->u, 0); + free(url_buf); + + /*Relaunch thread */ + if (pthread_create + (&download->threads[i], NULL, (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + } else + { + int j, usable_server; + /* download_show_message(download, _("No additional paths on this server available, so will try to switch to another server")); */ + + proz_debug + ("No additional paths on this server available, so will try to switch to another server"); + /*Find any server that is downloading or completed and use it */ + + usable_server = -1; + + pthread_mutex_lock(&download->status_change_mutex); + for (j = 0; j < download->num_connections; j++) + { + if (download->pconnections[j]->status == DOWNLOADING || + download->pconnections[j]->status == COMPLETED) + { + usable_server = j; + } + } + pthread_mutex_unlock(&download->status_change_mutex); + + if (usable_server != -1) + { + /*We have a server which is DLING */ + download_show_message(download, + _ + ("No additional paths on this server available, so will switch to another server")); + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + + /*copy url and relaunch */ + proz_free_url(&download->pconnections[i]->u, 0); + memcpy(&download->pconnections[i]->u, + proz_copy_url(&download-> + pconnections[usable_server]->u), + sizeof(urlinfo)); + + proz_debug + ("Found server %s which is downloading will relaunch based on it", + download->pconnections[usable_server]->u.host); + + /*Relaunch thread */ + if (pthread_create + (&download->threads[i], NULL, (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + + } else + { + /*Shit! no servers are downloading so what shall we do? we shall do nothing and wait for one connectection at least to start downloading */ + + } + } + } + } else if (connection_err == FTPRESTFAIL) + { + /*Handle the server not supporting REST */ + if (proz_download_all_dls_err(download, FTPRESTFAIL) == TRUE) + { + download_show_message(download, + _ + ("The server(s) do not support REST on all the connections!")); + /*Terminate the connections */ + proz_download_stop_downloads(download); + return DLREMOTEFATAL; + } else + { + + /*Now we have to be careful */ + int server_pos; + + server_pos = + ftpsearch_get_server_position(download->ftps_info, + download->pconnections[i]->u. + host); + + proz_debug("Server pos = %d", server_pos); + /*mark server as not supporting resume */ + download->ftps_info->mirrors[server_pos].resume_supported = + FALSE; + + { + int j, usable_server; + + /*Find any server that is downloading or completed and use it instead */ + + usable_server = -1; + + pthread_mutex_lock(&download->status_change_mutex); + for (j = 0; j < download->num_connections; j++) + { + if (download->pconnections[j]->status == DOWNLOADING || + download->pconnections[j]->status == COMPLETED) + { + usable_server = j; + } + } + pthread_mutex_unlock(&download->status_change_mutex); + + if (usable_server != -1) + { + /*We have a server which is DLING */ + download_show_message(download, + _ + ("This server does not support resuming downloads, so will switch to another server")); + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + + /*copy url and relaunch */ + proz_free_url(&download->pconnections[i]->u, 0); + memcpy(&download->pconnections[i]->u, + proz_copy_url(&download-> + pconnections[usable_server]->u), + sizeof(urlinfo)); + proz_debug + ("Found server %s which is downloading will relaunch based on it", + download->pconnections[usable_server]->u.host); + + /*Relaunch thread */ + if (pthread_create + (&download->threads[i], NULL, (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + + } else + { + /*Shit! no servers are downloading so what shall we do? we shall do nothing and wait for one connectection at least to start downloading */ + + } + } + } + } + + break; + + case LOCALFATAL: + proz_download_stop_downloads(download); + download_show_message(download, + _ + ("Connection %d, had a local fatal error: %s .Aborting download. "), + i, + proz_strerror(download->pconnections[i]->err)); + return DLLOCALFATAL; + break; + + case LOGINFAIL: + /* + * First check if the ftp server did not allow any thread + * to login at all, then retry the curent thread + */ + if (proz_download_all_dls_status(download, LOGINFAIL) == TRUE) + { + download_show_message(download, + _ + ("All logins rejected! Retrying connection")); + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + + if (pthread_create + (&download->threads[i], NULL, (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + + break; + } else + { + + int j, usable_server; + + /*Find any server that is downloading or completed and use it instead */ + + usable_server = -1; + + pthread_mutex_lock(&download->status_change_mutex); + for (j = 0; j < download->num_connections; j++) + { + if ((download->pconnections[j]->status == DOWNLOADING || + download->pconnections[j]->status == COMPLETED) && j!=i) + { + usable_server = j; + } + } + pthread_mutex_unlock(&download->status_change_mutex); + + if (usable_server != -1) + { + /*We have a server which is DLING */ + download_show_message(download, + _ + ("This server has rejected the login attempt, so will switch to another server")); + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + + /*copy url and relaunch */ + proz_free_url(&download->pconnections[i]->u, 0); + memcpy(&download->pconnections[i]->u, + proz_copy_url(&download-> + pconnections[usable_server]->u), + sizeof(urlinfo)); + proz_debug + ("Found server %s which is downloading will relaunch based on it", + download->pconnections[usable_server]->u.host); + + /*Relaunch thread */ + if (pthread_create + (&download->threads[i], NULL, (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + + } else + { + + /* + * Ok so at least there is one download whos login has not been rejected, + * so lets see if it has completed, if so we can relaunch this connection, + * as the commonest reason for a ftp login being rejected is because, the + * ftp server has a limit on the number of logins permitted from the same + * IP address. + */ + + /* + * Query the number of threads that are downloading + * if it is zero then relaunch this connection + */ + int server_pos; + int dling_conns_count = + download_query_conns_status_count(download, DOWNLOADING, + download-> + pconnections[i]->u.host); + + server_pos = + ftpsearch_get_server_position(download->ftps_info, + download->pconnections[i]->u.host); + + if (dling_conns_count > + download->ftps_info->mirrors[server_pos].max_simul_connections) + { + download->ftps_info->mirrors[server_pos].max_simul_connections = + dling_conns_count; + break; + } + + + if (dling_conns_count == 0 + && + (download_query_conns_status_count + (download, CONNECTING, download->pconnections[i]->u.host) == 0) + && + (download_query_conns_status_count + (download, LOGGININ, download->pconnections[i]->u.host) == 0)) + { + + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + pthread_mutex_lock(&download->status_change_mutex); + download_show_message(download, _("Relaunching download")); + if (pthread_create(&download->threads[i], NULL, + (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + pthread_cond_wait(&download->pconnections[i]->connecting_cond, + &download->status_change_mutex); + pthread_mutex_unlock(&download->status_change_mutex); + } else + if (dling_conns_count < + download->ftps_info->mirrors[server_pos]. + max_simul_connections + && + (download_query_conns_status_count + (download, CONNECTING, + download->pconnections[i]->u.host) == 0) + && + (download_query_conns_status_count + (download, LOGGININ, + download->pconnections[i]->u.host) == 0)) + { + + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + pthread_mutex_lock(&download->status_change_mutex); + download_show_message(download, _("Relaunching download")); + if (pthread_create(&download->threads[i], NULL, + (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + pthread_cond_wait(&download->pconnections[i]->connecting_cond, + &download->status_change_mutex); + pthread_mutex_unlock(&download->status_change_mutex); + } + } + } + break; + + case CONREJECT: + /* + * First check if the ftp server did not allow any thread + * to login at all, then retry the curent thread + */ + if (proz_download_all_dls_status(download, CONREJECT) == TRUE) + { + download_show_message(download, + _ + ("All connections attempts have been rejected! Retrying connection")); + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + + if (pthread_create + (&download->threads[i], NULL, (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + + break; + } else + { + + int j, usable_server; + + /*Find any server that is downloading or completed and use it instead */ + + usable_server = -1; + + pthread_mutex_lock(&download->status_change_mutex); + for (j = 0; j < download->num_connections; j++) + { + if ((download->pconnections[j]->status == DOWNLOADING || + download->pconnections[j]->status == COMPLETED) && j!=i) + { + usable_server = j; + } + } + pthread_mutex_unlock(&download->status_change_mutex); + + if (usable_server != -1) + { + /*We have a server which is DLING */ + download_show_message(download, + _ + ("This server has rejected the connection attempt, so will switch to another server")); + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + + /*copy url and relaunch */ + proz_free_url(&download->pconnections[i]->u, 0); + memcpy(&download->pconnections[i]->u, + proz_copy_url(&download-> + pconnections[usable_server]->u), + sizeof(urlinfo)); + proz_debug + ("Found server %s which is downloading will relaunch based on it", + download->pconnections[usable_server]->u.host); + + /*Relaunch thread */ + if (pthread_create + (&download->threads[i], NULL, (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + + } else + { + /* + * Ok so at least there is one download whos connections attempt has not been rejected, + * so lets see if it has completed, if so we can relaunch this connection, + * as the commonest reason for a ftp login being rejected is because, the + * ftp server has a limit on the number of logins permitted from the same + * IP address. + */ + + /* + * Query the number of threads that are downloading + * if it is zero then relaunch this connection + */ + int server_pos; + int dling_conns_count = + download_query_conns_status_count(download, DOWNLOADING, + download-> + pconnections[i]->u.host); + server_pos = + ftpsearch_get_server_position(download->ftps_info, + download->pconnections[i]->u.host); + + + if (dling_conns_count > + download->ftps_info->mirrors[server_pos].max_simul_connections) + { + download->ftps_info->mirrors[server_pos].max_simul_connections = + dling_conns_count; + break; + } + + + if (dling_conns_count == 0 + && + (download_query_conns_status_count + (download, CONNECTING, download->pconnections[i]->u.host) == 0) + && + (download_query_conns_status_count + (download, LOGGININ, download->pconnections[i]->u.host) == 0)) + { + + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + pthread_mutex_lock(&download->status_change_mutex); + download_show_message(download, _("Relaunching download")); + if (pthread_create(&download->threads[i], NULL, + (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + pthread_cond_wait(&download->pconnections[i]->connecting_cond, + &download->status_change_mutex); + pthread_mutex_unlock(&download->status_change_mutex); + } else + if (dling_conns_count < + download->ftps_info->mirrors[server_pos]. + max_simul_connections + && + (download_query_conns_status_count + (download, CONNECTING, + download->pconnections[i]->u.host) == 0) + && + (download_query_conns_status_count + (download, LOGGININ, + download->pconnections[i]->u.host) == 0)) + { + + /* Make sure this thread has terminated */ + pthread_join(download->threads[i], NULL); + pthread_mutex_lock(&download->status_change_mutex); + download_show_message(download, _("Relaunching download")); + if (pthread_create(&download->threads[i], NULL, + (void *) &ftp_loop, + (void *) (download->pconnections[i])) != 0) + proz_die(_("Error: Not enough system resources")); + pthread_cond_wait(&download->pconnections[i]->connecting_cond, + &download->status_change_mutex); + pthread_mutex_unlock(&download->status_change_mutex); + } + } + } + break; + + default: + break; + } + } + + /*bandwith throttling */ + download_calc_throttle_factor(download); + return DLINPROGRESS; +} + + + +/****************************************************************************** + This will setup a download based on the connection info and the ftpsearch results. +******************************************************************************/ +int proz_download_setup_connections_ftpsearch(download_t * download, + connection_t * connection, + ftps_request_t * request, + int req_connections) +{ + int num_connections, i, num_usable_mirrors = 0; + long bytes_per_connection; + long bytes_left; + FILE *fp; + char *out_file; + struct stat stat_buf; + /*TODO Check for log file and use same number of threads */ + + download->main_file_size = connection->main_file_size; + + download->ftps_info = request; + num_connections = req_connections; + /*Are there any mirrors that are working? */ + /**/ + if (request->num_mirrors > 0 + && request->mirrors[0].status == RESPONSEOK) + { + /*We should get the info and allocate here */ + download->resume_support = TRUE; + + + bytes_per_connection = connection->main_file_size / num_connections; + bytes_left = connection->main_file_size % num_connections; + + /* Get the number of mirros that are within 200% ping speed of the fastest */ + for (i = 0; i < request->num_mirrors; i++) + { + if ((request->mirrors[i].status == RESPONSEOK) && + (request->mirrors[i].milli_secs <= + (request->mirrors[0].milli_secs + + ((request->mirrors[0].milli_secs * 100) / 100)))) + num_usable_mirrors++; + } + + proz_debug("usable mirrors = %d", num_usable_mirrors); + proz_debug("num_connections = %d", num_connections); + download->pconnections = + kmalloc(sizeof(connection_t*) * num_connections); + download->num_connections = num_connections; + + for (i = 0; i < num_connections; i++) + { + urlinfo *url = malloc(sizeof(urlinfo)); + char *url_buf; + + if (i < num_usable_mirrors) + { + url_buf = + malloc(strlen(request->mirrors[i].server_name) + + strlen(request->mirrors[i].paths[0].path) + + strlen(connection->u.file) + 11 + 1); + + sprintf(url_buf, "ftp://%s/%s/%s", request->mirrors[i].server_name, + request->mirrors[i].paths[0].path, connection->u.file); + + proz_debug("Target url is %s", url_buf); + /*FIXME */ + proz_parse_url(url_buf, url, 0); + free(url_buf); + + download->pconnections[i]=proz_connection_init(url, + &download->status_change_mutex); + + } else + { + int extra_mirror = 0; + /*FIXME improve allocation algorithm in this part */ + + url_buf = + malloc(strlen(request->mirrors[extra_mirror].server_name) + + strlen(request->mirrors[extra_mirror].paths[0].path) + + strlen(connection->u.file) + 11 + 1); + + sprintf(url_buf, "ftp://%s/%s/%s", + request->mirrors[extra_mirror].server_name, + request->mirrors[extra_mirror].paths[0].path, + connection->u.file); + + proz_debug("Target url is %s", url_buf); + /*FIXME */ + proz_parse_url(url_buf, url, 0); + free(url_buf); + + download->pconnections[i]=proz_connection_init(url, + &download->status_change_mutex); + } + + + download->resume_support = download->pconnections[i]->resume_support = + TRUE; + memcpy(&download->pconnections[i]->hs, &connection->hs, + sizeof(http_stat_t)); + + + out_file=kmalloc(PATH_MAX); + snprintf(out_file, PATH_MAX, "%s/%s.prozilla", + download->dl_dir, connection->u.file); + + + //First see if the file exists then we dont create a new one else we do + + if (stat(out_file, &stat_buf) == -1) + { + /* the call failed */ + /* if the error is due to the file not been present then there is no + need to do anything..just continue, otherwise return error (-1) + */ + if (errno == ENOENT) + { + //File not exists so create it + if (! + (fp = + fopen(out_file, "w+"))) + { + download_show_message(download, + _ + ("Unable to open file %s: %s!"), + out_file, strerror(errno)); + return -1; + } + + } + else + return -1; + } + else + { + //TODO: File exists : so stat it and if it doesnt match file size warna boput it... + if (! + (fp = + fopen(out_file, "r+"))) + { + download_show_message(download, + _ + ("Unable to open file %s: %s!"), + out_file, strerror(errno)); + return -1; + } + + } + + + //TRY setting the offset; + if (download->main_file_size != -1) + { + + if(fseek(fp, download->main_file_size, SEEK_SET)!=0) + return -1; + } + + /*Make sure all writes go directly to the file */ + setvbuf(fp, NULL, _IONBF, 0); + + + + download->pconnections[i]->localfile = kmalloc(PATH_MAX); + strcpy(out_file, download->pconnections[i]->localfile); + download->pconnections[i]->fp=fp; + + + download->pconnections[i]->retry = TRUE; + + download->pconnections[i]->main_file_size = connection->main_file_size; + download->pconnections[i]->orig_remote_startpos = download->pconnections[i]->remote_startpos = i * bytes_per_connection; + download->pconnections[i]->remote_endpos = + i * bytes_per_connection + bytes_per_connection; + + //Changing things here..... + download->pconnections[i]->local_startpos = download->pconnections[i]->remote_startpos; + + + /*Set the connections message to be download->msg_proc calback */ + proz_connection_set_msg_proc(download->pconnections[i], + download->msg_proc, download->cb_data); + } + + /* Add the remaining bytes to the last connection */ + download->pconnections[--i]->remote_endpos += bytes_left; + } else + { + proz_debug("No mirrors, which were up are found"); + download->using_ftpsearch = FALSE; + return proz_download_setup_connections_no_ftpsearch(download, + connection, + req_connections); + } + + download->using_ftpsearch = TRUE; + return num_connections; +} + + +uerr_t proz_download_get_join_status(download_t *download) +{ + + int building_status; + pthread_mutex_lock(&download->access_mutex); + building_status = download->building; + pthread_mutex_unlock(&download->access_mutex); + + switch(building_status) + { + case 1: + return JOININPROGRESS; + case 0: + return JOINDONE; + case -1: + return JOINERR; + default: + proz_die("Bad building falg in download structure"); + } + +} + + +float proz_download_get_file_build_percentage(download_t *download) +{ + + float percent_done; + pthread_mutex_lock(&download->access_mutex); + percent_done =100; + pthread_mutex_unlock(&download->access_mutex); + return percent_done; +} + +void proz_download_cancel_joining_thread(download_t * download) +{ + pthread_cancel(download->join_thread); + pthread_join(download->join_thread, NULL); +} + +void proz_download_wait_till_end_joining_thread(download_t * download) +{ + pthread_join(download->join_thread, NULL); +} + diff --git a/libprozilla/src/download.h b/libprozilla/src/download.h new file mode 100644 index 0000000..9687a06 --- /dev/null +++ b/libprozilla/src/download.h @@ -0,0 +1,51 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* Download routines. */ + +/* $Id: download.h,v 1.25 2001/09/30 23:13:50 kalum Exp $ */ + + +#ifndef DOWNLOAD_H +#define DOWNLOAD_H + + +#include "common.h" +#include "prozilla.h" +#include "connection.h" + + +#ifdef __cplusplus +extern "C" { +#endif + + void download_show_message(download_t * download, const char *format, + ...); + int download_query_conns_status_count(download_t * download, + dl_status status, char *server); + + void download_join_downloads(download_t * download); + void join_downloads(download_t * download); + void download_calc_throttle_factor(download_t * download); + uerr_t download_handle_threads_ftpsearch(download_t * download); + uerr_t download_handle_threads_no_ftpsearch(download_t * download); +#ifdef __cplusplus +} +#endif +#endif /* DOWNLOAD_H */ diff --git a/libprozilla/src/ftp-retr.c b/libprozilla/src/ftp-retr.c new file mode 100644 index 0000000..06add41 --- /dev/null +++ b/libprozilla/src/ftp-retr.c @@ -0,0 +1,338 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* $Id: ftp-retr.c,v 1.17 2001/09/27 22:52:04 kalum Exp $ */ + + +#include "common.h" +#include "prozilla.h" +#include "connect.h" +#include "misc.h" +#include "url.h" +#include "netrc.h" +#include "debug.h" +#include "ftp.h" +#include "ftp-retr.h" + + +/* Will download a portion of/or the full file from the connection->url. + */ + +uerr_t proz_ftp_get_file(connection_t * connection) +{ + uerr_t err; + char *user, *passwd; + netrc_entry *netrc_ent; + boolean passive_mode; + char buffer[HTTP_BUFFER_SIZE]; + + + /* we want it to terminate immediately */ + + pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + + assert(connection->localfile != NULL); + assert(connection->file_mode != NULL); + + /*clear the socks */ + connection->ctrl_sock = 0; + connection->data_sock = 0; + connection->listen_sock = 0; + + /* if there is nothing to download then return */ + if (connection->status == COMPLETED) + { + gettimeofday(&connection->time_begin, NULL); + return FTPOK; + } + + init_response(connection); + + pthread_mutex_lock(connection->status_change_mutex); + connection->status = CONNECTING; + /* connection_change_status(connection, CONNECTING); */ + pthread_cond_broadcast(&connection->connecting_cond); + pthread_mutex_unlock(connection->status_change_mutex); + + /* if we have to use a HTTP proxy call the routine which is defined in http-retr.c and just return. + */ + if (ftp_use_proxy(connection) + && connection->ftp_proxy->type == HTTPPROXY) + { + err = ftp_get_file_from_http_proxy(connection); + return err; + } + + if (ftp_use_proxy(connection)) + { + /* Connect to the proxy server here. */ + err = ftp_connect_to_server(connection, + connection->ftp_proxy->proxy_url.host, + connection->ftp_proxy->proxy_url.port); + } else + { + err = ftp_connect_to_server(connection, connection->u.host, + connection->u.port); + } + + if (err == FTPCONREFUSED) + { + connection_change_status(connection, CONREJECT); + close_sock(&connection->ctrl_sock); + return err; + } + if (err != FTPOK) + { + connection_change_status(connection, REMOTEFATAL); + return err; + } + + done_with_response(connection); + + user = connection->u.user; + passwd = connection->u.passwd; + + /* Use .netrc if asked to do so. */ + if (connection->use_netrc == TRUE) + { + netrc_ent = search_netrc(libprozrtinfo.netrc_list, connection->u.host); + + if (netrc_ent != NULL) + { + user = netrc_ent->account; + passwd = netrc_ent->password; + } + } + + user = user ? user : libprozrtinfo.ftp_default_user; + passwd = passwd ? passwd : libprozrtinfo.ftp_default_passwd; + proz_debug(_("Logging in as user %s with password %s"), user, passwd); + + connection_change_status(connection, LOGGININ); + + init_response(connection); + err = ftp_login(connection, user, passwd); + if (err != FTPOK) + { + if (err == FTPLOGREFUSED) + { + connection_change_status(connection, LOGINFAIL); + } else + { + connection_change_status(connection, REMOTEFATAL); + } + close_sock(&connection->ctrl_sock); + return err; + } + done_with_response(connection); + + + init_response(connection); + err = ftp_binary(connection); + if (err != FTPOK) + { + connection_change_status(connection, REMOTEFATAL); + close_sock(&connection->ctrl_sock); + return err; + } + done_with_response(connection); + + /* Do we need to CWD? */ + if (*connection->u.dir) + { + init_response(connection); + + err = ftp_cwd(connection, connection->u.dir); + if (err != FTPOK) + { + connection_change_status(connection, REMOTEFATAL); + proz_debug(_("CWD failed to change to directory '%s'"), + connection->u.dir); + close_sock(&connection->ctrl_sock); + return err; + } else + { + proz_debug(_("CWD ok")); + done_with_response(connection); + } + } else + proz_debug(_("CWD not needed")); + + err = ftp_setup_data_sock_1(connection, &passive_mode); + if (err != FTPOK) + { + connection_change_status(connection, REMOTEFATAL); + close_sock(&connection->ctrl_sock); + return err; + } + + /* do we need to REST */ + if (connection->remote_startpos > 0 + && connection->resume_support == TRUE) + { + err = ftp_rest(connection, connection->remote_startpos); + } + if (err != FTPOK) + { + if (err == FTPRESTFAIL) + proz_debug + (_ + ("I have a bug in my code!!, check remote_starpos and resume_support values")); + + connection_change_status(connection, REMOTEFATAL); + close_sock(&connection->ctrl_sock); + return err; + } + + err = ftp_retr(connection, connection->u.file); + if (err != FTPOK) + { + proz_debug(_("RETR failed")); + close_sock(&connection->ctrl_sock); + connection_change_status(connection, REMOTEFATAL); + return err; + } + + err = ftp_setup_data_sock_2(connection, &passive_mode); + if (err != FTPOK) + { + return err; + } + + /* which routine to call */ + if (connection->main_file_size == -1) + err = + connection_retr_fsize_not_known(connection, buffer, + sizeof(buffer)); + else + err = connection_retr_fsize_known(connection, buffer, sizeof(buffer)); + + close_sock(&connection->data_sock); + close_sock(&connection->ctrl_sock); + if (err == FILEGETOK) + return FTPOK; + + else + return err; +} + + +/* A genuine loop ;) It willed be called by the main thread, and +this will handle all possible errors itself, retrying until the number +of maximum tries for the connection is realised or a error occurs which +needs to be passed upwards for handling, such as LOGINFAIL +*/ + +uerr_t ftp_loop(connection_t * connection) +{ + boolean retrying_from_loop = FALSE; + + assert(connection->max_attempts >= 0); + assert(connection->attempts >= 0); + + pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + + do + { + if (connection->attempts > 0) + { + + if (retrying_from_loop == TRUE) + { + connection_show_message(connection, + _("Retrying...Attempt %d in %d seconds"), + connection->attempts, + connection->retry_delay.tv_sec); + delay_ms(connection->retry_delay.tv_sec * 1000); + } + + if (connection->resume_support == TRUE) + { + if (connection_load_resume_info(connection) == -1) + { + connection_show_message(connection, + _ + ("Error while attemting to process download file ")); + } + } else + { + /*If we cant resume then reset the connections bytesreceived to 0 */ + connection->remote_bytes_received = 0; + } + } + + + /*Push the handler which will cleanup any sockets that are left open */ + pthread_cleanup_push(cleanup_socks, (void *) connection); + + + connection->err = proz_ftp_get_file(connection); + /*pop the handler */ + pthread_cleanup_pop(0); + + connection->attempts++; + + /*Should the error be handled at this level ? */ + if (!ftp_loop_handle_error(connection->err)) + { + return connection->err; /*If not return and the main thread will handle it */ + } + + + + switch (connection->err) + { + case FTPOK: + connection_show_message(connection, _("Successfully got download")); + return connection->err; + break; + + default: + connection_show_message(connection, + _("Error occured in connection...")); + break; + } + retrying_from_loop = TRUE; + } + while ((connection->attempts < connection->max_attempts) + || connection->max_attempts == 0); + + + connection_show_message(connection, + _ + ("I have tried %d attempt(s) and have failed, aborting"), + connection->attempts); + return connection->err; +} + +/*Return true if it is a error which can be handled within the ftp_loop, +or false if it should be passed upwards so that the main download thread can +restart it when necessary after processing other threads status too */ +boolean ftp_loop_handle_error(uerr_t err) +{ + + proz_debug("Error encountered in ftp_loop is %d", err); + if (err == FTPNSFOD || err == FTPLOGREFUSED || err == FTPCONREFUSED + || err == FWRITEERR || err == FOPENERR || err == FTPCWDFAIL + || err == FTPRESTFAIL) + return FALSE; + else + return TRUE; + +} diff --git a/libprozilla/src/ftp-retr.h b/libprozilla/src/ftp-retr.h new file mode 100644 index 0000000..faef39f --- /dev/null +++ b/libprozilla/src/ftp-retr.h @@ -0,0 +1,40 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* $Id: ftp-retr.h,v 1.6 2001/06/25 12:30:55 kalum Exp $ */ + +#ifndef FTP_RETR_H +#define FTP_RETR_H + +#include "common.h" +#include "connection.h" + +#ifdef __cplusplus +extern "C" { +#endif + + uerr_t proz_ftp_get_file(connection_t * connection); + uerr_t ftp_loop(connection_t * connection); + boolean ftp_loop_handle_error(uerr_t err); + uerr_t ftp_get_file_from_http_proxy(connection_t * connection); + +#ifdef __cplusplus +} +#endif +#endif /* FTP_RETR_H */ diff --git a/libprozilla/src/ftp.c b/libprozilla/src/ftp.c new file mode 100644 index 0000000..6d1f42a --- /dev/null +++ b/libprozilla/src/ftp.c @@ -0,0 +1,1194 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* FTP support. */ + +/* $Id: ftp.c,v 1.43 2001/09/23 01:39:15 kalum Exp $ */ + + +#include "common.h" +#include "prozilla.h" +#include "connect.h" +#include "misc.h" +#include "url.h" +#include "netrc.h" +#include "debug.h" +#include "ftpparse.h" +#include "ftp.h" + +/* #define UNIMPLEMENTED_CMD(a) ((a == 500) || (a == 502) || (a == 504)) */ + +#define BUFFER_SIZE 2048 + + +/****************************************************************************** + Return the numeric response of the FTP server by reading the first three + characters in the buffer. +******************************************************************************/ +static int ftp_get_return(const char *ftp_buffer) +{ + char code[4]; + strncpy(code, ftp_buffer, 3); + code[3] = '\0'; + return atoi(code); +} + +/****************************************************************************** + ... +******************************************************************************/ +static uerr_t ftp_get_reply(connection_t * connection) +{ + int cont = 0; + int code; + response_line *srl; + + /* FIXME Make the line variable dynamically allocated. */ + /* Allocate the space in the buffer for the request. */ + + char szBuffer[BUFFER_SIZE]; + char *strtok_saveptr = (char *) alloca(FTP_BUFFER_SIZE); + + memset(szBuffer, 0, FTP_BUFFER_SIZE); + + if (ftp_get_line(connection, szBuffer) != FTPOK) + return FTPERR; + + if (!isdigit(*szBuffer)) + return FTPERR; + + if (*szBuffer == '\0') + return FTPERR; + + code = ftp_get_return(szBuffer); + + if (szBuffer[3] == '-') + cont = 1; + else + cont = 0; + + (void) strtok_r(szBuffer, "\r\n", &strtok_saveptr); + + srl = connection->serv_ret_lines = kmalloc(sizeof(response_line)); + srl->line = kstrdup(szBuffer); + srl->next = 0; + + /* Add the first line to the struct. */ + + while (cont) + { + if (ftp_get_line(connection, szBuffer) != FTPOK) + return FTPERR; + + /* Server closed the connection. */ + if (*szBuffer == '\0') + return FTPERR; + + if ((ftp_get_return(szBuffer) == code) && (szBuffer[3] == ' ')) + cont = 0; + + (void) strtok_r(szBuffer, "\r\n", &strtok_saveptr); + proz_debug(_("Message = %s"), szBuffer); + srl->next = kmalloc(sizeof(response_line)); + srl = srl->next; + srl->line = kstrdup(szBuffer); + srl->next = 0; + } + + return FTPOK; +} + +/****************************************************************************** + ... +******************************************************************************/ +int ftp_check_msg(connection_t * connection, int len) +{ + int ret; + + if ((ret = krecv(connection->ctrl_sock, connection->szBuffer, len, + MSG_PEEK, &connection->ctrl_timeout)) == -1) + { + proz_debug(_("Error checking for FTP data: %s"), strerror(errno)); + return ret; + } + + return ret; +} + +/****************************************************************************** + ... +******************************************************************************/ +int ftp_read_msg(connection_t * connection, int len) +{ + int ret; + + if ((ret = krecv(connection->ctrl_sock, connection->szBuffer, len, 0, + &connection->ctrl_timeout)) == -1) + { + proz_debug(_("Error receiving FTP data: %s"), strerror(errno)); + return ret; + } + + return ret; +} + +/****************************************************************************** + ... +******************************************************************************/ +uerr_t ftp_send_msg(connection_t * connection, const char *format, ...) +{ + longstring command; + va_list args; + + va_start(args, format); +#ifdef HAVE_VSNPRINTF + vsnprintf(command, sizeof(command) - 1, format, args); + command[sizeof(command) - 1] = '\0'; +#else + vsprintf(command, format, args); +#endif + va_end(args); + + proz_debug(_("Sending: %s"), command); + + if ((ksend(connection->ctrl_sock, command, strlen(command), 0, + &connection->ctrl_timeout)) == -1) + { + proz_debug(_("Error sending FTP data: %s"), strerror(errno)); + return WRITEERR; + } + + return FTPOK; +} + +/****************************************************************************** + ... +******************************************************************************/ +uerr_t ftp_get_line(connection_t * connection, char *line) +{ + int iLen, iBuffLen = 0, ret = 0; + char *szptr = line, ch; + + connection->szBuffer = &ch; + + while ((iBuffLen < BUFFER_SIZE) + && ((ret = ftp_check_msg(connection, 1)) > 0)) + { + /* Now get the full string. */ + iLen = ftp_read_msg(connection, 1); + + if (iLen != 1) + return FTPERR; + + iBuffLen += iLen; + *szptr = ch; + szptr += iLen; + + if (ch == '\n') + break; /* We have a line -> return. */ + } + + /* Check for error returned in ftp_check_msg(). */ + if (ret == -1) + return FTPERR; + + /* FIXME Is this correct? Debug! */ + *(szptr + 1) = '\0'; + + proz_debug(_("Received: %s"), line); + + return FTPOK; +} + +/****************************************************************************** + ... +******************************************************************************/ +uerr_t ftp_ascii(connection_t * connection) +{ + uerr_t err; + + err = ftp_send_msg(connection, "TYPE A\r\n"); + if (err != FTPOK) + return err; + + err = ftp_get_reply(connection); + if (err != FTPOK) + return err; + + if (connection->serv_ret_lines->line[0] != '2') + return FTPUNKNOWNTYPE; + + return FTPOK; +} + +/****************************************************************************** + ... +******************************************************************************/ +uerr_t ftp_binary(connection_t * connection) +{ + uerr_t err; + + err = ftp_send_msg(connection, "TYPE I\r\n"); + if (err != FTPOK) + return err; + + err = ftp_get_reply(connection); + if (err != FTPOK) + return err; + + if (connection->serv_ret_lines->line[0] != '2') + return FTPUNKNOWNTYPE; + + return FTPOK; +} + +/****************************************************************************** + ... +******************************************************************************/ +uerr_t ftp_port(connection_t * connection, const char *command) +{ + uerr_t err; + + err = ftp_send_msg(connection, command); + if (err != FTPOK) + return err; + + err = ftp_get_reply(connection); + if (err != FTPOK) + return err; + + if (connection->serv_ret_lines->line[0] != '2') + return FTPPORTERR; + + return FTPOK; +} + +/****************************************************************************** + ... +******************************************************************************/ +uerr_t ftp_list(connection_t * connection, const char *file) +{ + uerr_t err; + + err = ftp_send_msg(connection, "LIST %s\r\n", file); + if (err != FTPOK) + return err; + + err = ftp_get_reply(connection); + if (err != FTPOK) + return err; + + if (connection->serv_ret_lines->line[0] == '5') + return FTPNSFOD; + + if (connection->serv_ret_lines->line[0] != '1') + return FTPERR; + + return FTPOK; +} + +/****************************************************************************** + ... +******************************************************************************/ +uerr_t ftp_retr(connection_t * connection, const char *file) +{ + uerr_t err; + + err = ftp_send_msg(connection, "RETR %s\r\n", file); + if (err != FTPOK) + return err; + + err = ftp_get_reply(connection); + if (err != FTPOK) + return err; + + if (connection->serv_ret_lines->line[0] == '5') + return FTPNSFOD; + + if (connection->serv_ret_lines->line[0] != '1') + return FTPERR; + + return FTPOK; +} + +/****************************************************************************** + ... +******************************************************************************/ +uerr_t ftp_pasv(connection_t * connection, unsigned char *addr) +{ + uerr_t err; + unsigned char *p; + int i; + + err = ftp_send_msg(connection, "PASV\r\n"); + if (err != FTPOK) + return err; + + err = ftp_get_reply(connection); + + proz_debug(_("FTP PASV Header = %s"), connection->serv_ret_lines->line); + + if (err != FTPOK) + return err; + + if (connection->serv_ret_lines->line[0] != '2') + return FTPNOPASV; + + /* Parse it. */ + p = (unsigned char *) connection->serv_ret_lines->line; + for (p += 4; *p && !isdigit(*p); p++); + + if (!*p) + return FTPINVPASV; + + for (i = 0; i < 6; i++) + { + addr[i] = 0; + for (; isdigit(*p); p++) + addr[i] = (*p - '0') + 10 * addr[i]; + + if (*p == ',') + p++; + else if (i < 5) + { + return FTPINVPASV; + } + } + + return FTPOK; +} + +/****************************************************************************** + ... +******************************************************************************/ +uerr_t ftp_rest(connection_t * connection, long bytes) +{ + uerr_t err; + + err = ftp_send_msg(connection, "REST %ld\r\n", bytes); + if (err != FTPOK) + return err; + + err = ftp_get_reply(connection); + if (err != FTPOK) + return err; + + if (connection->serv_ret_lines->line[0] != '3') + return FTPRESTFAIL; + + return FTPOK; +} + +/****************************************************************************** + ... +******************************************************************************/ +uerr_t ftp_cwd(connection_t * connection, const char *dir) +{ + uerr_t err; + + err = ftp_send_msg(connection, "CWD %s\r\n", dir); + if (err != FTPOK) + return err; + + err = ftp_get_reply(connection); + if (err != FTPOK) + return err; + + if (connection->serv_ret_lines->line[0] == '5') + { + /* Is it due to the file being not found? */ + if (strstr(connection->serv_ret_lines->line, "o such file") + || strstr(connection->serv_ret_lines->line, "o Such File") + || strstr(connection->serv_ret_lines->line, "ot found") + || strstr(connection->serv_ret_lines->line, "ot Found")) + return FTPNSFOD; + } + + if (connection->serv_ret_lines->line[0] != '2') + return FTPCWDFAIL; + + return FTPOK; +} + +/****************************************************************************** + Returns the current working directory in dir. +******************************************************************************/ +uerr_t ftp_pwd(connection_t * connection, const char *dir) +{ + uerr_t err; + char *r, *l; + char szBuffer[FTP_BUFFER_SIZE]; + + err = ftp_send_msg(connection, "PWD\r\n"); + if (err != FTPOK) + return err; + + err = ftp_get_reply(connection); + if (err != FTPOK) + return err; + + if (connection->serv_ret_lines->line[0] == '5') + return FTPPWDERR; + + if (connection->serv_ret_lines->line[0] != '2') + return FTPPWDFAIL; + + if ((r = strrchr(connection->serv_ret_lines->line, '"')) != NULL) + { + l = strchr(connection->serv_ret_lines->line, '"'); + if ((l != NULL) && (l != r)) + { + *r = '\0'; + ++l; + strcpy(dir, l); + *r = '"'; + } + } else + { + if ((r = strchr(connection->serv_ret_lines->line, ' ')) != NULL) + { + *r = '\0'; + strcpy(dir, szBuffer); + *r = ' '; + } + } + + return FTPOK; +} + +/****************************************************************************** + Returns the size of the file in size, on error size will be -1. +******************************************************************************/ +uerr_t ftp_size(connection_t * connection, const char *file, long *size) +{ + uerr_t err; + + *size = -1; + + err = ftp_send_msg(connection, "SIZE %s\r\n", file); + if (err != FTPOK) + return err; + + err = ftp_get_reply(connection); + if (err != FTPOK) + return err; + + /* Now lets figure out what happened. */ + if (connection->serv_ret_lines->line[0] == '2') + { + sscanf(connection->serv_ret_lines->line + 3, "%ld", size); + return FTPOK; + } else if (connection->serv_ret_lines->line[0] == '5') /* An error occured. */ + { + /* Is it due to the file being not found? */ + if (strstr(connection->serv_ret_lines->line, "o such file") + || strstr(connection->serv_ret_lines->line, "o Such File") + || strstr(connection->serv_ret_lines->line, "ot found") + || strstr(connection->serv_ret_lines->line, "ot Found")) + return FTPNSFOD; + } + + return FTPSIZEFAIL; +} + +/****************************************************************************** + Connect to the given FTP server. +******************************************************************************/ +uerr_t ftp_connect_to_server(connection_t * connection, const char *name, + int port) +{ + uerr_t err; + + err = connect_to_server(&(connection->ctrl_sock), name, port, + &connection->conn_timeout); + if (err != NOCONERROR) + return err; + + err = ftp_get_reply(connection); + if (err != FTPOK) + return err; + + if (connection->serv_ret_lines->line[0] != '2') + return FTPCONREFUSED; + + return FTPOK; +} + +/****************************************************************************** + This function will call bind() to return a bound socket then the FTP server + will be connected with a port request and asked to connect. +******************************************************************************/ +uerr_t ftp_get_listen_socket(connection_t * connection, int *listen_sock) +{ + /* Get a fixed value. */ + char command[MAX_MSG_SIZE]; + int sockfd; + socklen_t len; + struct sockaddr_in TempAddr; + char *port, *ipaddr; + struct sockaddr_in serv_addr; + uerr_t err; + + + if (bind_socket(&sockfd) != BINDOK) + return LISTENERR; + + len = sizeof(serv_addr); + if (getsockname(sockfd, (struct sockaddr *) &serv_addr, &len) < 0) + { + perror("getsockname"); + close(sockfd); + return CONPORTERR; + } + + + /* Get hosts info. */ + len = sizeof(TempAddr); + + if (getsockname(connection->ctrl_sock, (struct sockaddr *) &TempAddr, + &len) < 0) + { + perror("getsockname"); + close(sockfd); + return CONPORTERR; + } + + ipaddr = (char *) &TempAddr.sin_addr; + + port = (char *) &serv_addr.sin_port; + +#define UC(b) (((int)b)&0xff) + + sprintf(command, "PORT %d,%d,%d,%d,%d,%d\r\n", UC(ipaddr[0]), + UC(ipaddr[1]), UC(ipaddr[2]), UC(ipaddr[3]), UC(port[0]), + UC(port[1])); + + err = ftp_port(connection, command); + if (err != FTPOK) + return err; + + *listen_sock = sockfd; + + return FTPOK; +} + +/****************************************************************************** + ... +******************************************************************************/ +uerr_t ftp_login(connection_t * connection, const char *username, + const char *passwd) +{ + uerr_t err = FTPERR; + int ret_code = 220; + boolean logged_in = FALSE; + + while (1) + { + switch (ret_code) + { + case 220: + /* IDEA: Lets add the proxy support here. */ + + if (!ftp_use_proxy(connection)) + { + /* No proxy just direct connection. */ + err = ftp_send_msg(connection, "USER %s\r\n", username); + } else + { + switch (connection->ftp_proxy->type) + { + case USERatSITE: + err = ftp_send_msg(connection, "USER %s@%s:%d\r\n", username, + connection->u.host, connection->u.port); + break; + case USERatPROXYUSERatSITE: + err = ftp_send_msg(connection, "USER %s@%s@%s:%d\r\n", username, + connection->ftp_proxy->username, + connection->u.host, connection->u.port); + break; + case USERatSITE_PROXYUSER: + err = ftp_send_msg(connection, "USER %s:%d@%s %s\r\n", username, + connection->u.host, connection->u.port, + connection->ftp_proxy->username); + break; + case PROXYUSERatSITE: + err = ftp_send_msg(connection, "USER %s@%s:%d\r\n", + connection->ftp_proxy->username, + connection->u.host, connection->u.port); + break; + default: + /* Something else, just send PROXY USER. */ + err = ftp_send_msg(connection, "USER %s\r\n", + connection->ftp_proxy->username); + break; + } + } + + if (err != FTPOK) + return err; + + err = ftp_get_reply(connection); + if (err != FTPOK) + return err; + + break; + + + case 230: /* Fallthrough. */ + case 231: /* Fallthrough. */ + case 202: + + logged_in = TRUE; + + if (!ftp_use_proxy(connection)) + return FTPOK; /* Logged in succesfully. */ + + switch (connection->ftp_proxy->type) + { + case LOGINthenUSERatSITE: + err = ftp_send_msg(connection, "USER %s@%s:%d\r\n", username, + connection->u.host, connection->u.port); + break; + case OPENSITE: + err = + ftp_send_msg(connection, "OPEN %s:%d\r\n", connection->u.host, + connection->u.port); + break; + case SITESITE: + err = + ftp_send_msg(connection, "SITE %s:%d\r\n", connection->u.host, + connection->u.port); + break; + case PROXYUSERatSITE: + err = ftp_send_msg(connection, "USER %s\r\n", username); + break; + default: + /* TODO What is the default here? */ + return FTPOK; + break; + } + + if (err != FTPOK) + return err; + + err = ftp_get_reply(connection); + if (err != FTPOK) + return err; + + break; + + + /* Handle 421 services not available. */ + case 421: + return FTPSERVCLOSEDATLOGIN; + break; + + + /* User name is all right, need password. */ + case 331: + if (!ftp_use_proxy(connection)) + { + /* No proxy just direct connection. */ + err = ftp_send_msg(connection, "PASS %s\r\n", passwd); + } else + { + switch (connection->ftp_proxy->type) + { + case USERatSITE: + err = ftp_send_msg(connection, "PASS %s\r\n", passwd); + break; + case USERatPROXYUSERatSITE: + err = ftp_send_msg(connection, "PASS %s@%s\r\n", passwd, + connection->ftp_proxy->passwd); + break; + case USERatSITE_PROXYUSER: + err = ftp_send_msg(connection, "PASS %s\r\n", passwd); + break; + case PROXYUSERatSITE: + err = ftp_send_msg(connection, "PASS %s\r\n", + connection->ftp_proxy->passwd); + break; + default: + /* Something else we dont know about. */ + err = ftp_send_msg(connection, "PASS %s\r\n", + connection->ftp_proxy->passwd); + break; + } + } + + if (err != FTPOK) + return err; + + err = ftp_get_reply(connection); + if (err != FTPOK) + return err; + + break; + + + /* 5xx series of commands indicate error. */ + case 530: + return FTPLOGREFUSED; + break; + + + case 501: /* Fallthrough. */ + case 503: /* Fallthrough. */ + case 550: + return FTPERR; + break; + + + default: + /* Unknown error code. */ + proz_debug(_("Unknown code %d retuned during FTP login"), ret_code); + return FTPERR; + break; + } + + ret_code = ftp_get_return(connection->serv_ret_lines->line); + done_with_response(connection); + } + + if (err != FTPOK) + return err; + + return FTPOK; +} + +/****************************************************************************** + ... +******************************************************************************/ +boolean ftp_use_proxy(connection_t * connection) +{ + return (connection->ftp_proxy && connection->ftp_proxy->use_proxy && + connection->ftp_proxy->proxy_url.url) ? TRUE : FALSE; +} + +/****************************************************************************** + Gets info about the url (connection->u) from the FTP server, and fills in + info like whether the server supports resume, the file size etc. +******************************************************************************/ +uerr_t proz_ftp_get_url_info(connection_t * connection) +{ + uerr_t err; + char *user, *passwd, *tmp; + netrc_entry *netrc_ent; + boolean passive_mode; + longstring buffer; + int size_rt; + + /* if we have to use a HTTP proxy call the routine which is defined in http.c + and just return. + */ + if (ftp_use_proxy(connection) + && connection->ftp_proxy->type == HTTPPROXY) + { + err = ftp_get_url_info_from_http_proxy(connection); + return err; + } + + + init_response(connection); + + if (ftp_use_proxy(connection)) + { + connection_show_message(connection, _("Connecting to %s"), + connection->ftp_proxy->proxy_url.host); + + /* Connect to the proxy server here. */ + err = ftp_connect_to_server(connection, + connection->ftp_proxy->proxy_url.host, + connection->ftp_proxy->proxy_url.port); + + if (err != FTPOK) + { + connection_show_message(connection, + _("Error while connecting to %s"), + connection->ftp_proxy->proxy_url.host); + return err; + } + + connection_show_message(connection, _("Connected to %s"), + connection->ftp_proxy->proxy_url.host); + } else + { + connection_show_message(connection, _("Connecting to %s"), + connection->u.host); + + err = ftp_connect_to_server(connection, connection->u.host, + connection->u.port); + + if (err != FTPOK) + { + connection_show_message(connection, + _("Error while connecting to %s"), + connection->u.host);; + return err; + } + connection_show_message(connection, _("Connected to %s"), + connection->u.host); + } + + + + done_with_response(connection); + + user = connection->u.user; + passwd = connection->u.passwd; + + /* Use .netrc if asked to do so. */ + if (connection->use_netrc == TRUE) + { + netrc_ent = search_netrc(libprozrtinfo.netrc_list, connection->u.host); + + if (netrc_ent != NULL) + { + user = netrc_ent->account; + passwd = netrc_ent->password; + } + } + + user = user ? user : libprozrtinfo.ftp_default_user; + passwd = passwd ? passwd : libprozrtinfo.ftp_default_passwd; + + if (strcmp(user, "anonymous") == 0) + connection_show_message(connection, + _("Logging in as user %s with password %s"), + user, passwd); + else + { + int pwd_len = strlen(passwd); + char *tmp_pwd = (char *) kmalloc(pwd_len + 1); + memset(tmp_pwd, 'x', pwd_len); + tmp_pwd[pwd_len] = 0; + connection_show_message(connection, + _("Logging in as user %s with password %s"), + user, tmp_pwd); + kfree(tmp_pwd); + } + + init_response(connection); + err = ftp_login(connection, user, passwd); + if (err != FTPOK) + { + close_sock(&connection->ctrl_sock); + return err; + } + done_with_response(connection); + + connection_show_message(connection, _("Logged in successfully")); + + init_response(connection); + err = ftp_binary(connection); + if (err != FTPOK) + { + close_sock(&connection->ctrl_sock); + return err; + } + done_with_response(connection); + + /* Do we need to CWD? */ + if (*connection->u.dir) + { + init_response(connection); + + err = ftp_cwd(connection, connection->u.dir); + if (err != FTPOK) + { + connection_show_message(connection, + _("CWD failed to change to directory '%s'"), + connection->u.dir); + close_sock(&connection->ctrl_sock); + return err; + } else + { + done_with_response(connection); + } + } else + connection_show_message(connection, _("CWD not needed")); + + init_response(connection); + err = ftp_rest(connection, 0); + if (err != FTPOK) + { + connection->resume_support = FALSE; + connection_show_message(connection, _("REST failed")); + /* NOTE: removed return err; */ + } else + { + connection->resume_support = TRUE; + connection_show_message(connection, _("REST ok")); + } + done_with_response(connection); + + /* Lets see whether the URL really is a file. */ + init_response(connection); + err = ftp_cwd(connection, connection->u.file); + if (err == FTPOK) + { + /* So connection->u.file is a directory and not a file. */ + connection->file_type = DIRECTORY; + return FTPOK; + } else + { + + /* FIXME: The statement below is strictly not true, it could be a symlink + but for the moment lets leave this as it is, later we will perform a + LIST command and detect whether it is a symlink. */ + connection->file_type = REGULAR_FILE; + } + + done_with_response(connection); + + init_response(connection); + err = + ftp_size(connection, connection->u.file, + &connection->main_file_size); + + if ((err == FTPOK) || (err == FTPNSFOD) || (err != FTPSIZEFAIL)) + { + close_sock(&connection->ctrl_sock); + return err; + } + + done_with_response(connection); + + /* The server did not support the SIZE command, so lets try to get the + file size through the LIST command. */ + + err = ftp_setup_data_sock_1(connection, &passive_mode); + if (err != FTPOK) + { + close_sock(&connection->ctrl_sock); + return err; + } + + + init_response(connection); + err = ftp_ascii(connection); + if (err != FTPOK) + { + close_sock(&connection->ctrl_sock); + return err; + } + done_with_response(connection); + + init_response(connection); + err = ftp_list(connection, connection->u.file); + if (err != FTPOK) + { + close_sock(&connection->ctrl_sock); + return err; + } + done_with_response(connection); + + err = ftp_setup_data_sock_2(connection, &passive_mode); + if (err != FTPOK) + { + close_sock(&connection->ctrl_sock); + return err; + } + + + /* Now read the data to the buffer. */ + /* TODO Create a buffer which dynamically resizes itself as we add data. */ + + if (krecv(connection->data_sock, buffer, sizeof(buffer), 0, + &connection->xfer_timeout) == -1) + { + connection_show_message(connection, + _("Error receiving FTP transfer data: %s"), + strerror(errno)); + return FTPERR; + } + + proz_debug(_("String received after the LIST command = %s"), buffer); + + while ((tmp = strrchr(buffer, '\n')) || (tmp = strrchr(buffer, '\r'))) + { + *tmp = 0; + }; + + close_sock(&connection->data_sock); + close_sock(&connection->ctrl_sock); + + size_rt = size_returner(buffer, strlen(buffer)); + if (size_rt == FTPPARSENOTEXIST) + { + return FTPNSFOD; + } else if (size_rt == FTPPARSEFAIL) + { + connection_show_message(connection, + _ + ("Unable to parse the line the FTP server returned:please report URL to kalum@delrom.ro ")); + } + + connection->main_file_size = size_rt; + + return FTPOK; +} + +/****************************************************************************** + This will be the first step in setting up a data sock, it will try + PASV or PORT. +******************************************************************************/ +uerr_t ftp_setup_data_sock_1(connection_t * connection, + boolean * passive_mode) +{ + uerr_t err; + + /* If enabled lets try PASV. */ + if (connection->ftp_use_pasv == TRUE) + { + init_response(connection); + err = ftp_pasv(connection, connection->pasv_addr); + + /* If the error is due to the server not supporting PASV then set the + flag and lets try PORT. */ + if ((err == FTPNOPASV) || (err == FTPINVPASV)) + { + proz_debug(_("Server doesn't seem to support PASV")); + *passive_mode = FALSE; + } else if (err == FTPOK) /* Server supports PASV. */ + { + char dhost[256]; + unsigned short dport; + + sprintf(dhost, "%d.%d.%d.%d", connection->pasv_addr[0], + connection->pasv_addr[1], connection->pasv_addr[2], + connection->pasv_addr[3]); + + dport = (connection->pasv_addr[4] << 8) + connection->pasv_addr[5]; + + err = connect_to_server(&connection->data_sock, dhost, dport, + &connection->xfer_timeout); + if (err != NOCONERROR) + return err; + + /* Everything seems to be ok. */ + *passive_mode = TRUE; + } else + return err; + + done_with_response(connection); + } else + *passive_mode = FALSE; /* Ok... Since PASV is not to be used. */ + + if (*passive_mode == FALSE) + { + /* Obtain a listen socket. */ + err = ftp_get_listen_socket(connection, &connection->listen_sock); + if (err != FTPOK) + return err; + } + + return FTPOK; +} + +/****************************************************************************** + This will be the second step in setting up a data sock, if passive mode is + FALSE, it will call accept_connection(). +******************************************************************************/ +uerr_t ftp_setup_data_sock_2(connection_t * connection, + boolean * passive_mode) +{ + uerr_t err; + + if (*passive_mode == FALSE) /* We have to accept the connection. */ + { + err = + accept_connection(connection->listen_sock, &connection->data_sock); + if (err != ACCEPTOK) + return err; + } + + return FTPOK; +} + + + +/*Loops for connection->attempts */ +uerr_t ftp_get_url_info_loop(connection_t * connection) +{ + pthread_mutex_lock(&connection->access_mutex); + connection->running = TRUE; + pthread_mutex_unlock(&connection->access_mutex); + + assert(connection->attempts >= 0); + + + do + { + if (connection->attempts > 0 && connection->err != NEWLOCATION) + { + + connection_show_message(connection, + _("Retrying attempt %d in %d seconds"), + connection->attempts, + connection->retry_delay.tv_sec); + delay_ms(connection->retry_delay.tv_sec * 1000); + + } + + /*Push the handler which will cleanup any sockets that are left open */ + pthread_cleanup_push(cleanup_socks, (void *) connection); + + connection->err = proz_ftp_get_url_info(connection); + /*pop the handler */ + pthread_cleanup_pop(0); + + connection->attempts++; + + switch (connection->err) + { + case FTPOK: + connection_show_message(connection, _("Successfully got info")); + pthread_mutex_lock(&connection->access_mutex); + connection->running = FALSE; + pthread_mutex_unlock(&connection->access_mutex); + return connection->err; + break; + + case FTPNSFOD: + connection_show_message(connection, _("File not found!")); + pthread_mutex_lock(&connection->access_mutex); + connection->running = FALSE; + pthread_mutex_unlock(&connection->access_mutex); + return connection->err; + break; + + default: + connection_show_message(connection, proz_strerror(connection->err)); + break; + } + + } + while ((connection->attempts < connection->max_attempts) + || connection->max_attempts == 0); + + + connection_show_message(connection, + _ + ("I have tried %d attempt(s) and have failed, aborting"), + connection->attempts); + pthread_mutex_lock(&connection->access_mutex); + connection->running = FALSE; + pthread_mutex_unlock(&connection->access_mutex); + return connection->err; +} diff --git a/libprozilla/src/ftp.h b/libprozilla/src/ftp.h new file mode 100644 index 0000000..ad6ca2c --- /dev/null +++ b/libprozilla/src/ftp.h @@ -0,0 +1,77 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* FTP support. */ + +/* $Id: ftp.h,v 1.33 2001/07/11 23:19:41 kalum Exp $ */ + + +#ifndef FTP_H +#define FTP_H + + +#include "common.h" +#include "url.h" +#include "connection.h" + +#ifdef __cplusplus +extern "C" { +#endif + + int ftp_check_msg(connection_t * connection, int len); + int ftp_read_msg(connection_t * connection, int len); + uerr_t ftp_send_msg(connection_t * connection, const char *format, ...); + + uerr_t ftp_get_line(connection_t * connection, char *line); + + uerr_t ftp_ascii(connection_t * connection); + uerr_t ftp_binary(connection_t * connection); + uerr_t ftp_port(connection_t * connection, const char *command); + uerr_t ftp_list(connection_t * connection, const char *file); + uerr_t ftp_retr(connection_t * connection, const char *file); + uerr_t ftp_pasv(connection_t * connection, unsigned char *addr); + uerr_t ftp_rest(connection_t * connection, long bytes); + uerr_t ftp_cwd(connection_t * connection, const char *dir); + uerr_t ftp_pwd(connection_t * connection, const char *dir); + uerr_t ftp_size(connection_t * connection, const char *file, long *size); + + uerr_t ftp_connect_to_server(connection_t * connection, const char *name, + int port); + + uerr_t ftp_get_listen_socket(connection_t * connection, + int *listen_sock); + + uerr_t ftp_login(connection_t * connection, const char *username, + const char *passwd); + + boolean ftp_use_proxy(connection_t * connection); + + uerr_t proz_ftp_get_url_info(connection_t * connection); + + uerr_t ftp_setup_data_sock_1(connection_t * connection, + boolean * passive_mode); + uerr_t ftp_setup_data_sock_2(connection_t * connection, + boolean * passive_mode); + uerr_t ftp_get_url_info_loop(connection_t * connection); + + uerr_t ftp_get_url_info_from_http_proxy(connection_t * connection); +#ifdef __cplusplus +} +#endif +#endif /* FTP_H */ diff --git a/libprozilla/src/ftpparse.c b/libprozilla/src/ftpparse.c new file mode 100644 index 0000000..976dcd9 --- /dev/null +++ b/libprozilla/src/ftpparse.c @@ -0,0 +1,238 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* FTP LIST command parsing code. */ + +/* $Id: ftpparse.c,v 1.11 2001/06/21 23:26:17 kalum Exp $ */ + + +#include "common.h" +#include "ftpparse.h" + + +char *month[] = { + NULL, "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", + "Oct", + "Nov", "Dec" +}; + + +/* Grendel: I added a STANDALONE def to this, I didn't delete this main() func, + because we should have these examples so that others can modify this code */ +#ifdef STANDALONE + +int main(void) +{ + const char *binls_example = + "-rw-r--r-- 1 root root 3102 Dec 4 21:08 test.c"; + + const char *eplf_example = "+8388621.44468,m839956783,r,s10376, test.c "; + + const char *msftp_example = + "---------- 1 owner group 1803128 Jul 10 10:18 ls-lR.Z"; + + const char *doswftpd_example = + "-rwxrwxrwx 1 noone nogroup 322 Aug 19 1996 message.ftp"; + + const char *netware_example = + "d [R----F--] supervisor 512 Jan 16 18:53 login"; + + const char *netpres_example = + "-------r-- 326 1391972 1392298 Nov 22 1995 MegaPhone.sit"; + + const char *multinet_example = + "00README.TXT;1 2 30-DEC-1996 17:44 [SYSTEM] (RWED,RWED,RE,RE)"; + + const char *multinet2_example = + "CII-MANUAL.TEX;1 213/216 29-JAN-1996 03:33:12 [ANONYMOU,ANONYMOUS] (RWED,RWED,,)"; + + int size; + + /* Get size and return it. */ + size = size_returner(binls_example, strlen(binls_example)); + size = size_returner(eplf_example, strlen(eplf_example)); + size = size_returner(msftp_example, strlen(msftp_example)); + size = size_returner(doswftpd_example, strlen(doswftpd_example)); + size = size_returner(netware_example, strlen(netware_example)); + size = size_returner(netpres_example, strlen(netpres_example)); + size = size_returner(multinet_example, strlen(multinet_example)); + size = size_returner(multinet2_example, strlen(multinet2_example)); + + exit(EXIT_SUCCESS); +} + +#endif /* STANDALONE. */ + + +/****************************************************************************** + ... +******************************************************************************/ +int size_returner(char *buf, int len) +{ + + + + /* + Grendel: If len == 2 or len ==0 then it could be no info present, or empty name in EPLF + */ + if (len == 0 || len == 2) + return FTPPARSENOTEXIST; + + + + if (len == 2) + + + /* Determine the format used by the server. */ + + if (is_eplf(buf, len)) + return eplf_extract_size(buf, len); + + if (is_multinet(buf, len)) + return multinet_extract_size(buf, len); + + if (is_binls(buf, len)) + return binls_extract_size(buf, len); + + /* I think it is best to keep it modular and easily updatable whenever we + need to. E.g.: + if (is_newformat(buf,len)) + return newformat_extract_size(buf, len); */ + + return FTPPARSEFAIL; /* Unknown format :-(, please mail the URL. */ +} + +/****************************************************************************** + EPLF stuff. +******************************************************************************/ +boolean is_eplf(char *buf, int len) +{ + /* Specifications were taken from http://cr.py.to/eplf.html. */ + + if (*buf == '+') + if (buf[len - 2] == 15 /* ^O */ && buf[len - 1] == 12 /* ^L */ ) + return YES; + + return NO; +} + +/****************************************************************************** + ... +******************************************************************************/ +int eplf_extract_size(char *buf, int len) +{ + int size; + + while (*buf++ != 's') + ; + + for (size = 0; isdigit(*buf); buf++) + size = 10 * size + (*buf - '0'); + + printf("EPLF\tSize: %5d\n", size); + + return size; /* Return EPLF size. */ +} + +/****************************************************************************** + MULTINET stuff. +******************************************************************************/ +boolean is_multinet(char *buf, int len) +{ + /* The multinet format looks like this: + - ';' after the filename. + - A digit, some space, a digit. + - Can contain a '/' before size. + - A date string like [D]D-MMM-JJJJ. */ + if ((buf = strchr(buf, ';')) != NULL) + if (((buf = strchr(buf, '-')) != NULL) && (*(buf + 4) == '-')) + return YES; + + return NO; +} + +/****************************************************************************** + ... +******************************************************************************/ +int multinet_extract_size(char *buf, int len) +{ + int size = 0; + char *pos = NULL; + + pos = strchr(buf, ';'); /* Skip file name. */ + pos = strchr(pos, '-'); /* Go to date string DD-. */ + pos--; + + while (isdigit(*pos)) /* Skip days maybe 1 or 2 digits. */ + pos--; + + while (isspace(*pos)) + pos--; + + while (isdigit(*pos)) + pos--; + + while (isdigit(*++pos)) + size = 10 * size + (*pos - '0'); + + printf(_("MULTINET Size: %d\n"), size); + + return size; +} + +/****************************************************************************** + BINLS stuff. +******************************************************************************/ +boolean is_binls(char *buf, int len) +{ + int i; + + for (i = 1; i <= 12; i++) + if (strstr(buf, month[i]) != NULL) + return YES; + + return NO; +} + +/****************************************************************************** + ... +******************************************************************************/ +int binls_extract_size(char *buf, int len) +{ + int i; + int size = 0; + char *pos = NULL; + + for (i = 1; i <= 12; i++) + if ((pos = strstr(buf, month[i])) != NULL) + break; + + while (isspace(*--pos)) + ; + + while (isdigit(*pos)) + pos--; + + while (isdigit(*++pos)) + size = 10 * size + (*pos - '0'); + + printf(_("BINLS size: %d\n"), size); + + return size; +} diff --git a/libprozilla/src/ftpparse.h b/libprozilla/src/ftpparse.h new file mode 100644 index 0000000..3de686d --- /dev/null +++ b/libprozilla/src/ftpparse.h @@ -0,0 +1,52 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* FTP LIST command parsing code. */ + +/* $Id: ftpparse.h,v 1.11 2001/06/16 22:58:01 kalum Exp $ */ + + +#ifndef FTPPARSE_H +#define FTPPARSE_H + + +#include "common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define FTPPARSEFAIL -1 +#define FTPPARSENOTEXIST -2 + + int size_returner(char *buf, int len); + + boolean is_eplf(char *buf, int len); + int eplf_extract_size(char *buf, int len); + + boolean is_multinet(char *buf, int len); + int multinet_extract_size(char *buf, int len); + + boolean is_binls(char *buf, int len); + int binls_extract_size(char *buf, int len); + +#ifdef __cplusplus +} +#endif +#endif /* FTPPARSE_H */ diff --git a/libprozilla/src/ftpsearch.c b/libprozilla/src/ftpsearch.c new file mode 100644 index 0000000..d050b4d --- /dev/null +++ b/libprozilla/src/ftpsearch.c @@ -0,0 +1,1104 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +#include "common.h" +#include "prozilla.h" +#include "misc.h" +#include "connect.h" +#include "debug.h" +#include "http.h" +#include "ftpsearch.h" + + +urlinfo *prepare_lycos_url(ftps_request_t * request, char *ftps_loc, + int num_req_mirrors); +urlinfo *prepare_filesearching_url(ftps_request_t * request, char *ftps_loc, + int num_req_mirrors); + +uerr_t parse_lycos_html_mirror_list(ftps_request_t * request, char *p); +uerr_t parse_filesearching_html_mirror_list(ftps_request_t * request, char *p); + +uerr_t get_mirror_info(connection_t * connection, char **ret_buf); + +uerr_t parse_html_mirror_list(ftps_request_t * request, char *p); +char *get_string_ahref(char *buf, char *out); +char *find_ahref(char *buf); +char *find_end(char *buf); +char *find_closed_a(char *buf); +char *get_string_ahref(char *buf, char *out); +char *grow_buffer(char *buf_start, char *cur_pos, int *buf_len, + int data_len); +uerr_t get_complete_mirror_list(ftps_request_t * request); +ftp_mirror_t *reprocess_mirror_list(ftp_mirror_t * mirrors, + int *num_servers); + + +ftps_request_t * proz_ftps_request_init( + urlinfo * requested_url, long file_size, + char *ftps_loc, + ftpsearch_server_type_t server_type, + int num_req_mirrors) +{ + urlinfo *url; + ftps_request_t * request; + + assert(requested_url); + assert(requested_url->file); + + request=kmalloc(sizeof(ftps_request_t)); + memset(request, 0, sizeof(ftps_request_t)); + request->file_name = strdup(requested_url->file); + request->requested_url = proz_copy_url(requested_url); + request->file_size = file_size; + request->server_type = server_type; + pthread_mutex_init(&request->access_mutex, 0); + + switch (server_type) + { + case LYCOS: + url = prepare_lycos_url(request, ftps_loc, num_req_mirrors); + if (url == 0) + proz_die("Bad URl specification"); + + /*NOTE pasing zero as the status change mutes as we dont need it here */ + request->connection=proz_connection_init(url,0); + + + break; + case FILESEARCH_RU: + url = prepare_filesearching_url(request, ftps_loc, num_req_mirrors); + if (url == 0) + proz_die("Bad URl specification"); + + /*NOTE pasing zero as the status change mutes as we dont need it here */ + request->connection=proz_connection_init(url,0); + break; + default: + proz_debug("Unsupported FTP search server type"); + proz_die("Unsupported FTP search server type"); + } + + return request; +} + + +urlinfo *prepare_lycos_url(ftps_request_t * request, char *ftps_loc, + int num_req_mirrors) +{ + urlinfo *url; + uerr_t err; + char *lycos_url_buf; + int lycos_url_len = strlen(ftps_loc) + + strlen + ("?form=advanced&query=%s&doit=Search&type=Exact+search&hits=%d&matches=&hitsprmatch=&limdom=&limpath=&limsize1=%d&limsize2=%d&limtime1=&limtime2=&f1=Host&f2=Path&f3=Size&f4=-&f5=-&f6=-&header=none&sort=none&trlen=20"); + + + assert(request->file_name); + + url = (urlinfo *) kmalloc(sizeof(urlinfo)); + + /* Okay lets now construct the URL we want to do lycos */ + lycos_url_buf = + (char *) kmalloc(lycos_url_len + strlen(request->file_name) + 300); + + sprintf(lycos_url_buf, + "%s?form=advanced&query=%s&doit=Search&type=Exact+search&hits=%d&matches=&hitsprmatch=&limdom=&limpath=&limsize1=%ld&limsize2=%ld&f1=Host&f2=Path&f3=Size&f4=-&f5=-&f6=-&header=none&sort=none&trlen=20", + ftps_loc, request->file_name, num_req_mirrors, + request->file_size, request->file_size); + + /* Debugging purposes */ + /*sprintf(lycos_url_buf,"localhost/search.html"); */ + + + proz_debug("ftpsearch url= %s\n", lycos_url_buf); + + err = proz_parse_url(lycos_url_buf, url, 0); + + if (err != URLOK) + return 0; + else + return url; +} + + + +urlinfo *prepare_filesearching_url(ftps_request_t * request, char *ftps_loc, + int num_req_mirrors) +{ + urlinfo *url; + uerr_t err; + char *filesearching_url_buf; + int filesearching_url_len = strlen(ftps_loc) + + strlen + ("?q=ddd-3.3.tar.bz2&l=en&t=f&e=on&m=20&o=n&s=on&s1=4811576&s2=4811576&d=&p=&p2=&x=10&y=14"); + + + assert(request->file_name); + + url = (urlinfo *) kmalloc(sizeof(urlinfo)); + + /* Okay lets now construct the URL we want to do lycos */ + filesearching_url_buf = + (char *) kmalloc(filesearching_url_len + strlen(request->file_name) + 300); + + sprintf(filesearching_url_buf, + "%s?q=%s&l=en&t=f&e=on&m=%d&o=n&s=on&s1=%ld&s2=%ld&d=&p=&p2=&x=10&y=14", + ftps_loc, request->file_name, num_req_mirrors, + request->file_size, request->file_size); + + /* Debugging purposes */ + /* sprintf(filesearching_url_buf,"localhost/fs.html"); */ + + + proz_debug("ftpsearch url= %s\n", filesearching_url_buf); + + err = proz_parse_url(filesearching_url_buf, url, 0); + + if (err != URLOK) + return 0; + else + return url; +} + + + +uerr_t parse_html_mirror_list(ftps_request_t * request, char *p) +{ + + switch (request->server_type) + { + case LYCOS: + return parse_lycos_html_mirror_list(request, p); + break; + case FILESEARCH_RU: + return parse_filesearching_html_mirror_list(request, p); + break; + default: + proz_debug("Unsupported FTP search server type"); + proz_die("Unsupported FTP search server type"); + } + return MIRPARSEFAIL; +} + +uerr_t parse_lycos_html_mirror_list(ftps_request_t * request, char *p) +{ + + struct ftp_mirror **pmirrors = &request->mirrors; + int *num_servers = &request->num_mirrors; + char *p1, *p2, *i = 0, *j; + ftp_mirror_t *ftp_mirrors; + int k, num_ah = 0, num_pre = 0; + char buf[1024]; + + + if (strstr(p, "No hits") != 0) + { + *num_servers = 0; + return MIRINFOK; + } + +/*Check the number of PRE tags */ + p1 = p; + while (((p1 = strstr(p1, "
")) != NULL) && p1)
+  {
+    num_pre++;
+    p1 += 5;
+  }
+
+  proz_debug("Number of PRE tags found = %d\n", num_pre);
+
+  if (num_pre == 1)
+  {
+
+    if ((i = strstr(p, "
")) == NULL)
+    {
+      proz_debug("nomatches found");
+      return MIRPARSEFAIL;
+    }
+
+    proz_debug("match at %d found", i - p);
+
+    if ((j = strstr(p, "
")) == NULL) + { + proz_debug("nomatches found"); + return MIRPARSEFAIL; + } + } else + { + /*search for the reported hits text */ + char *rep_hits; + int prior_pres = 0; + + if ((rep_hits = strstr(p, "reported hits")) == NULL) + { + proz_debug("no reported hits found"); + return MIRPARSEFAIL; + } + + /* Okay so we got the position after the results, lets see how many PRE tags were there before it */ + + p1 = p; + while (((p1 = strstr(p1, "
")) < rep_hits) && p1)
+    {
+      prior_pres++;
+      p1 += 5;
+    }
+    /* now get the location of the PRE before the output */
+
+    p1 = p;
+    i = 0;
+    while (prior_pres--)
+    {
+      p1 = strstr(p1, "
");
+      p1 += 5;
+    }
+    i = p1 - 5;
+
+    /*now find the 
tag which is after the results */ + j = strstr(i, "
"); + + if (j == NULL) + { + proz_debug("The expected
tag was not found!\n"); + return MIRPARSEFAIL; + } + } + + p1 = kmalloc((j - i - 5) + 100); + strncpy(p1, i + 5, j - i - 5); + + proz_debug("\nstring len= %ld", strlen(p1)); + p1[j - i - 5 + 1] = 0; + + p2 = p1; + + while ((i = strstr(p1, "requested_url->proto == URLFTP) + { + memset(&(ftp_mirrors[k]), 0, sizeof(ftp_mirror_t)); + ftp_mirrors[k].server_name = kstrdup(request->requested_url->host); + + ftp_mirrors[k].paths = kmalloc(sizeof(mirror_path_t)); + ftp_mirrors[k].num_paths = 1; + + if (*(request->requested_url->dir)) + ftp_mirrors[k].paths[0].path = kstrdup(request->requested_url->dir); + else + ftp_mirrors[k].paths[0].path = kstrdup(""); + + ftp_mirrors[k].file_name = kstrdup(request->requested_url->file); + *num_servers += 1; + } + + proz_debug("%d servers found\n", *num_servers); + + for (k = 0; k < *num_servers; k++) + { + + ftp_mirrors[k].full_name = + (char *) kmalloc(strlen(ftp_mirrors[k].server_name) + + strlen(ftp_mirrors[k].paths[0].path) + + strlen(ftp_mirrors[k].file_name) + 13); + sprintf(ftp_mirrors[k].full_name, "%s%s:21/%s%s%s", "ftp://", + ftp_mirrors[k].server_name, ftp_mirrors[k].paths[0].path, "/", + ftp_mirrors[k].file_name); + + proz_debug("%s\n", ftp_mirrors[k].full_name); + } + + + *pmirrors = reprocess_mirror_list(ftp_mirrors, num_servers); + /* *pmirrors = ftp_mirrors; */ + return MIRINFOK; +} + + +uerr_t parse_filesearching_html_mirror_list(ftps_request_t * request, char *p) +{ + + struct ftp_mirror **pmirrors = &request->mirrors; + int *num_servers = &request->num_mirrors; + char *p1, *p2, *i = 0, *j; + ftp_mirror_t *ftp_mirrors; + int k, num_ah = 0, num_pre = 0; + char buf[1024]; + + + if (strstr(p, "not found") != 0) + { + *num_servers = 0; + return MIRINFOK; + } + +/*Check the number of PRE tags */ + p1 = p; + while (((p1 = strstr(p1, "")) == NULL) + { + proz_debug("nomatches found"); + return MIRPARSEFAIL; + } + + proz_debug("match at %d found", i - p); + + if ((j = strstr(p, "")) == NULL) + { + proz_debug("nomatches found"); + return MIRPARSEFAIL; + } + } else + { + /*search for the reported hits text */ + char *rep_hits; + int prior_pres = 0; + + if ((rep_hits = strstr(p, "reported hits")) == NULL) + { + proz_debug("no reported hits found"); + return MIRPARSEFAIL; + } + + /* Okay so we got the position after the results, lets see how many PRE tags were there before it */ + + p1 = p; + while (((p1 = strstr(p1, ""); + p1 += 5; + } + i = p1 - 5; + + /*now find the tag which is after the results */ + j = strstr(i, ""); + + if (j == NULL) + { + proz_debug("The expected tag was not found!\n"); + return MIRPARSEFAIL; + } + } + + p1 = kmalloc((j - i - 16) + 100); + strncpy(p1, i + 16, j - i - 16); + + proz_debug("\nstring len= %ld", strlen(p1)); + proz_debug("\nstring value= %s", p1); + + p1[j - i - 16 + 1] = 0; + + p2 = p1; + + while ((i = strstr(p1, "requested_url->proto == URLFTP) + { + memset(&(ftp_mirrors[k]), 0, sizeof(ftp_mirror_t)); + ftp_mirrors[k].server_name = kstrdup(request->requested_url->host); + + ftp_mirrors[k].paths = kmalloc(sizeof(mirror_path_t)); + ftp_mirrors[k].num_paths = 1; + + if (*(request->requested_url->dir)) + ftp_mirrors[k].paths[0].path = kstrdup(request->requested_url->dir); + else + ftp_mirrors[k].paths[0].path = kstrdup(""); + + ftp_mirrors[k].file_name = kstrdup(request->requested_url->file); + *num_servers += 1; + } + + proz_debug("%d servers found\n", *num_servers); + + for (k = 0; k < *num_servers; k++) + { + + ftp_mirrors[k].full_name = + (char *) kmalloc(strlen(ftp_mirrors[k].server_name) + + strlen(ftp_mirrors[k].paths[0].path) + + strlen(ftp_mirrors[k].file_name) + 13); + sprintf(ftp_mirrors[k].full_name, "%s%s:21/%s%s%s", "ftp://", + ftp_mirrors[k].server_name, ftp_mirrors[k].paths[0].path, "/", + ftp_mirrors[k].file_name); + + proz_debug("%s\n", ftp_mirrors[k].full_name); + } + + + *pmirrors = reprocess_mirror_list(ftp_mirrors, num_servers); + /* *pmirrors = ftp_mirrors; */ + return MIRINFOK; +} + + +uerr_t get_mirror_info(connection_t * connection, char **ret_buf) +{ + uerr_t err; + int remote_port_len; + char *user, *passwd, *www_auth = NULL, *proxy_auth = NULL, *location = + NULL, *referer = NULL, *pragma_no_cache = NULL; + char *request, *remote_port; + netrc_entry *netrc_ent; + char buffer[HTTP_BUFFER_SIZE]; + /*The http stats that were returned after the call with GET */ + http_stat_t hs_after_get; + + char *p, *p1, *p2; + int p_len, ret, total; + + /* we want it to terminate immediately */ + pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + + + /*clear the socks */ + connection->data_sock = 0; + memset(&hs_after_get, 0, sizeof(hs_after_get)); + + + connection_change_status(connection, CONNECTING); + + if (http_use_proxy(connection)) + { + connection_show_message(connection, _("Connecting to %s"), + connection->http_proxy->proxy_url.host); + err = connect_to_server(&connection->data_sock, + connection->http_proxy->proxy_url.host, + connection->http_proxy->proxy_url.port, + &connection->xfer_timeout); + if (err != NOCONERROR) + { + proz_debug(_("Error connecting to %s"), + connection->http_proxy->proxy_url.host); + connection_change_status(connection, REMOTEFATAL); + return err; + } + } else + { + connection_show_message(connection, _("Connecting to %s"), + connection->u.host); + + err = connect_to_server(&connection->data_sock, connection->u.host, + connection->u.port, &connection->xfer_timeout); + if (err != NOCONERROR) + { + proz_debug(_("Error connecting to %s"), connection->u.host); + connection_change_status(connection, REMOTEFATAL); + return err; + } + } + + user = connection->u.user; + passwd = connection->u.passwd; + + /* Use .netrc if asked to do so. */ + if (connection->use_netrc == TRUE) + { + netrc_ent = search_netrc(libprozrtinfo.netrc_list, connection->u.host); + + if (netrc_ent != NULL) + { + user = netrc_ent->account; + passwd = netrc_ent->password; + } + } + + user = user ? user : ""; + passwd = passwd ? passwd : ""; + + if (strlen(user) || strlen(passwd)) + { + /* Construct the necessary header. */ + www_auth = get_basic_auth_str(user, passwd, "Authorization"); + proz_debug(_("Authenticating as user %s password %s"), user, passwd); + proz_debug(_("Authentification string=%s"), www_auth); + } else + www_auth = 0; + + if (http_use_proxy(connection)) + { + if (strlen(connection->http_proxy->username) + || strlen(connection->http_proxy->passwd)) + proxy_auth = + get_basic_auth_str(connection->http_proxy->username, + connection->http_proxy->passwd, + "Proxy-Authorization"); + } + + if (connection->u.port == 80) + { + remote_port = NULL; + remote_port_len = 0; + } else + { + remote_port = (char *) alloca(64); + remote_port_len = sprintf(remote_port, ":%d", connection->u.port); + } + + if (connection->u.referer) + { + referer = (char *) alloca(13 + strlen(connection->u.referer)); + sprintf(referer, "Referer: %s\r\n", connection->u.referer); + } + + /* If we go through a proxy the request for the URL is different */ + if (http_use_proxy(connection)) + { + location = (char *) alloca(strlen(connection->u.url) + 1); + strcpy(location, connection->u.url); + } else + { + location = (char *) alloca(strlen(connection->u.path) + 1); + strcpy(location, connection->u.path); + } + + /*Use no-cache directive for proxy servers, yes by default here as we dont want ftpsearch rsults which can change soon to be cached */ + if (http_use_proxy(connection)) + { + pragma_no_cache = (char *) alloca(21); + sprintf(pragma_no_cache, "Pragma: no-cache\r\n"); + } + + request = (char *) alloca(strlen(location) + + strlen(connection->user_agent) + + strlen(connection->u.host) + remote_port_len + + (referer ? strlen(referer) : 0) + + (www_auth ? strlen(www_auth) : 0) + + (proxy_auth ? strlen(proxy_auth) : 0) + + 64 + + + (pragma_no_cache ? strlen(pragma_no_cache) : + 0)); + + /* TODO Add referrer tag. */ + sprintf(request, + "GET %s HTTP/1.0\r\nUser-Agent: %s\r\nHost: %s%s\r\nAccept: */*\r\n%s%s%s%s\r\n", + location, connection->user_agent, connection->u.host, + remote_port ? remote_port : "", + referer ? referer : "", + www_auth ? www_auth : "", proxy_auth ? proxy_auth : "", + pragma_no_cache ? pragma_no_cache : ""); + + proz_debug("HTTP request = %s", request); + + connection_show_message(connection, _("Sending HTTP request")); + err = http_fetch_headers(connection, &hs_after_get, request); + + /* What hapenned ? */ + if (err != HOK) + { + /*Check if we authenticated using any user or password and if we + were kicked out, if so return HAUTHFAIL */ + if (err == HAUTHREQ && (strlen(user) || strlen(passwd))) + err = HAUTHFAIL; + /* + * a error occured druing the process + */ + close_sock(&connection->data_sock); + connection_change_status(connection, REMOTEFATAL); + return err; + } + + + /* Ok start fetching the data */ + p1 = p = (char *) kmalloc(HTTP_BUFFER_SIZE + 1); + p_len = HTTP_BUFFER_SIZE + 1; + total = 0; + + + do + { + + ret = + krecv(connection->data_sock, buffer, sizeof(buffer), 0, + &connection->xfer_timeout); + if (ret > 0) + { + p2 = grow_buffer(p, p1, &p_len, ret); + memcpy(p2 + (p1 - p), buffer, ret); + p1 = (p1 - p) + ret + p2; + p = p2; + } + total += ret; + } + while (ret > 0); + + if (ret == -1) + { + if (errno == ETIMEDOUT) + { + close(connection->data_sock); + return READERR; + } + close(connection->data_sock); + return READERR; + } + + p[total] = 0; + *ret_buf = p; + + + close_sock(&connection->data_sock); + return HOK; +} + + + +char *find_ahref(char *buf) +{ + + return (strcasestr(buf, "")); +} + +char *find_closed_a(char *buf) +{ + return (strcasestr(buf, "= 0); + assert(data_len <= INIT_SIZE); + + if (bytes_left < data_len + 1) + { + /* time to realloc the buffer buffer */ + p = krealloc(buf_start, *buf_len + INIT_SIZE); + *buf_len += INIT_SIZE; + return p; + } else + { + return buf_start; + } +} + + + +void proz_get_complete_mirror_list(ftps_request_t * request) +{ + request->info_running = TRUE; + /* get_complete_mirror_list(request); */ + + if (pthread_create(&request->info_thread, NULL, + (void *) &get_complete_mirror_list, + (void *) request) != 0) + proz_die(_("Error: Not enough system resources")); + + + +} + + +void proz_cancel_mirror_list_request(ftps_request_t * request) +{ + request->info_running = FALSE; + pthread_cancel(request->info_thread); + pthread_join(request->info_thread,0); +} + +uerr_t get_complete_mirror_list(ftps_request_t * request) +{ + char *data_buf; + + pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + + do + { + pthread_mutex_lock(&request->access_mutex); + request->info_running = TRUE; + pthread_mutex_unlock(&request->access_mutex); + + pthread_cleanup_push(cleanup_socks, (void *) request->connection); + request->err = get_mirror_info(request->connection, &data_buf); + pthread_cleanup_pop(0); + + if (request->err == NEWLOCATION) + { + char *constructed_newloc; + /*DONE : handle relative urls too */ + constructed_newloc = + uri_merge(request->connection->u.url, + request->connection->hs.newloc); + + proz_debug("Redirected to %s, merged URL = %s", + request->connection->hs.newloc, constructed_newloc); + + proz_free_url(&request->connection->u, 0); + request->err = + proz_parse_url(constructed_newloc, &request->connection->u, 0); + + + if (request->err != URLOK) + { + connection_show_message(request->connection, + _ + ("The server returned location is wrong: %s!"), + constructed_newloc); + pthread_mutex_lock(&request->connection->access_mutex); + request->info_running = FALSE; + pthread_mutex_unlock(&request->connection->access_mutex); + kfree(constructed_newloc); + pthread_mutex_lock(&request->access_mutex); + request->info_running = FALSE; + pthread_mutex_unlock(&request->access_mutex); + return (request->err = HERR); + } else + connection_show_message(request->connection, + _("Redirected to => %s"), + constructed_newloc); + + kfree(constructed_newloc); + request->err = NEWLOCATION; + } + } + while (request->err == NEWLOCATION); + + /*TODO handle and process the redirection here */ + if (request->err != HOK) + { + pthread_mutex_lock(&request->access_mutex); + request->info_running = FALSE; + pthread_mutex_unlock(&request->access_mutex); + return request->err; + } + + request->err = parse_html_mirror_list(request, data_buf); + /*TODO see if can give further info */ + pthread_mutex_lock(&request->access_mutex); + request->info_running = FALSE; + pthread_mutex_unlock(&request->access_mutex); + return request->err; + +} + + +boolean proz_request_info_running(ftps_request_t * request) +{ + boolean ret; + pthread_mutex_lock(&request->access_mutex); + ret = request->info_running; + pthread_mutex_unlock(&request->access_mutex); + return ret; +} + +boolean proz_request_mass_ping_running(ftps_request_t * request) +{ + boolean ret; + pthread_mutex_lock(&request->access_mutex); + ret = request->mass_ping_running; + pthread_mutex_unlock(&request->access_mutex); + return ret; +} + + + +ftp_mirror_t *reprocess_mirror_list(ftp_mirror_t * mirrors, + int *num_servers) +{ + + ftp_mirror_t *ftp_mirrors; + int i, j; + int num_new_servers = 0; + + ftp_mirrors = + (ftp_mirror_t *) kmalloc(sizeof(ftp_mirror_t) * ((*num_servers))); + + for (i = 0; i < *num_servers; i++) + { + if (mirrors[i].copied != 1) + { + num_new_servers++; + memset(ftp_mirrors + num_new_servers - 1, 0, sizeof(ftp_mirror_t)); + memcpy(ftp_mirrors + num_new_servers - 1, mirrors + i, + sizeof(ftp_mirror_t)); + + /*For the moment assume that all the mirrors support resume */ + ftp_mirrors[num_new_servers - 1].resume_supported=TRUE; + + for (j = i + 1; j < *num_servers; j++) + { + if ((strcasecmp + (mirrors[i].server_name, + mirrors[j].server_name) == 0) && mirrors[j].copied != 1) + { + /*found a match */ + ftp_mirrors[num_new_servers - 1].num_paths++; + ftp_mirrors[num_new_servers - 1].paths = + krealloc(ftp_mirrors[num_new_servers - 1].paths, + (sizeof(mirror_path_t) * + ftp_mirrors[num_new_servers - 1].num_paths)); + + // ftp_mirrors[num_new_servers-1].paths = krealloc(ftp_mirrors[num_new_servers-1].paths,ftp_mirrors[num_new_servers-1].num_paths ); + + ftp_mirrors[num_new_servers - + 1].paths[ftp_mirrors[num_new_servers - 1].num_paths - + 1].path = strdup(mirrors[j].paths[0].path); + + ftp_mirrors[num_new_servers - + 1].paths[ftp_mirrors[num_new_servers - 1].num_paths - + 1].valid = TRUE; + + mirrors[j].copied = 1; + } + } + } + } + + *num_servers = num_new_servers; + + + proz_debug("Displaying the reparsed list \n"); + for (i = 0; i < num_new_servers; i++) + { + proz_debug("%s\n", ftp_mirrors[i].full_name); + for (j = 0; j < ftp_mirrors[i].num_paths; j++) + proz_debug("\t%s\n", ftp_mirrors[i].paths[j].path); + } + proz_debug("End display reparsed list\n"); + /*TODO free the mirros struct which we will not use now */ + return ftp_mirrors; +} + + + +/*fixme do something about this, move to a better file rather than main.c */ + +int compare_two_servers(const void *a, const void *b) +{ + const ftp_mirror_t *ma = (const ftp_mirror_t *) a; + const ftp_mirror_t *mb = (const ftp_mirror_t *) b; + + int milli_sec_a; + int milli_sec_b; + + if (ma->status != RESPONSEOK && (mb->status != RESPONSEOK)) + return 1000000; + + + milli_sec_a = ma->milli_secs; + + if (ma->status != RESPONSEOK) + { + milli_sec_a = 1000000; + } + + + milli_sec_b = mb->milli_secs; + + if (mb->status != RESPONSEOK) + { + milli_sec_b = 1000000; + } + + + return (milli_sec_a - milli_sec_b); +} + + +void proz_sort_mirror_list(ftp_mirror_t * mirrors, int num_servers) +{ + int i; + qsort(mirrors, num_servers, sizeof(ftp_mirror_t), compare_two_servers); + for (i = 0; i < num_servers; i++) + proz_debug("Mirror = %s, time =%d", mirrors[i].server_name, + mirrors[i].milli_secs); +} + + + + +int ftpsearch_get_server_position(ftps_request_t * request, char *server) +{ + int i; + for (i = 0; i < request->num_mirrors; i++) + { + + if (strcmp(request->mirrors[i].server_name, server) == 0) + return i; + } + return -1; +} + + +int ftpsearch_get_path_position(ftps_request_t * request, char *server, + char *path) +{ + int i, pos; + + pos = ftpsearch_get_server_position(request, server); + assert(pos != -1); + + proz_debug("num avail paths %d", request->mirrors[pos].num_paths); + + for (i = 0; i < request->mirrors[pos].num_paths; i++) + { + proz_debug("avail path is %s", request->mirrors[pos].paths[i].path); + proz_debug("path to check is %s", path); + if (strcmp(request->mirrors[pos].paths[i].path, path) == 0) + return i; + + } + return -1; + +} diff --git a/libprozilla/src/ftpsearch.h b/libprozilla/src/ftpsearch.h new file mode 100644 index 0000000..02c4c54 --- /dev/null +++ b/libprozilla/src/ftpsearch.h @@ -0,0 +1,29 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + + +#ifndef FTPSEARCH_H +#define FTPSEARCH_H + + +int ftpsearch_get_server_position(ftps_request_t * request, char *server); +int ftpsearch_get_path_position(ftps_request_t * request, char *server, + char *path); + +#endif diff --git a/libprozilla/src/getopt.c b/libprozilla/src/getopt.c new file mode 100644 index 0000000..6abedc3 --- /dev/null +++ b/libprozilla/src/getopt.c @@ -0,0 +1,1156 @@ +/* Getopt for GNU. + NOTE: getopt is now part of the C library, so if you don't know what + "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu + before changing it! + + Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 + Free Software Foundation, Inc. + + NOTE: The canonical source of this file is maintained with the GNU C Library. + Bugs can be reported to bug-glibc@prep.ai.mit.edu. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +/* This tells Alpha OSF/1 not to define a getopt prototype in . + Ditto for AIX 3.2 and . */ +#ifndef _NO_PROTO +#define _NO_PROTO +#endif + +#ifdef HAVE_CONFIG_H +#include +#endif + +#if !defined (__STDC__) || !__STDC__ +/* This is a separate conditional since some stdc systems + reject `defined (const)'. */ +#ifndef const +#define const +#endif +#endif + +#include + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#define GETOPT_INTERFACE_VERSION 2 +#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2 +#include +#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION +#define ELIDE_CODE +#endif +#endif + +#ifndef ELIDE_CODE + + +/* This needs to come after some library #include + to get __GNU_LIBRARY__ defined. */ +#ifdef __GNU_LIBRARY__ +/* Don't include stdlib.h for non-GNU C libraries because some of them + contain conflicting prototypes for getopt. */ +#include +#include +#endif /* + * GNU C library. + */ + +#ifdef VMS +#include +#if HAVE_STRING_H - 0 +#include +#endif +#endif + +#ifndef _ +/* This is for other GNU distributions with internationalized messages. + When compiling libc, the _ macro is predefined. */ +#ifdef HAVE_LIBINTL_H +# include +# define _(msgid) gettext (msgid) +#else +# define _(msgid) (msgid) +#endif +#endif + +/* This version of `getopt' appears to the caller like standard Unix `getopt' + but it behaves differently for the user, since it allows the user + to intersperse the options with the other arguments. + + As `getopt' works, it permutes the elements of ARGV so that, + when it is done, all the options precede everything else. Thus + all application programs are extended to handle flexible argument order. + + Setting the environment variable POSIXLY_CORRECT disables permutation. + Then the behavior is completely standard. + + GNU application programs can use a third alternative mode in which + they can distinguish the relative order of options and other arguments. */ + +#include "getopt.h" + +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + +char *optarg = NULL; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns -1, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +/* 1003.2 says this must be 1 before any call. */ +int optind = 1; + +/* Formerly, initialization of getopt depended on optind==0, which + causes problems with re-calling getopt as programs generally don't + know that. */ + +int __getopt_initialized = 0; + +/* The next char to be scanned in the option-element + in which the last option character we returned was found. + This allows us to pick up the scan where we left off. + + If this is zero, or a null string, it means resume the scan + by advancing to the next ARGV-element. */ + +static char *nextchar; + +/* Callers store zero here to inhibit the error message + for unrecognized options. */ + +int opterr = 1; + +/* Set to an option character which was unrecognized. + This must be initialized on some systems to avoid linking in the + system's own getopt implementation. */ + +int optopt = '?'; + +/* Describe how to deal with options that follow non-option ARGV-elements. + + If the caller did not specify anything, + the default is REQUIRE_ORDER if the environment variable + POSIXLY_CORRECT is defined, PERMUTE otherwise. + + REQUIRE_ORDER means don't recognize them as options; + stop option processing when the first non-option is seen. + This is what Unix does. + This mode of operation is selected by either setting the environment + variable POSIXLY_CORRECT, or using `+' as the first character + of the list of option characters. + + PERMUTE is the default. We permute the contents of ARGV as we scan, + so that eventually all the non-options are at the end. This allows options + to be given in any order, even with programs that were not written to + expect this. + + RETURN_IN_ORDER is an option available to programs that were written + to expect options and other ARGV-elements in any order and that care about + the ordering of the two. We describe each non-option ARGV-element + as if it were the argument of an option with character code 1. + Using `-' as the first character of the list of option characters + selects this mode of operation. + + The special argument `--' forces an end of option-scanning regardless + of the value of `ordering'. In the case of RETURN_IN_ORDER, only + `--' can cause `getopt' to return -1 with `optind' != ARGC. */ + +static enum { + REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER +} ordering; + +/* Value of POSIXLY_CORRECT environment variable. */ +static char *posixly_correct; + +#ifdef __GNU_LIBRARY__ +/* We want to avoid inclusion of string.h with non-GNU libraries + because there are many ways it can cause trouble. + On some systems, it contains special magic macros that don't work + in GCC. */ +#include +#define my_index strchr +#else + +/* Avoid depending on library functions or files + whose names are inconsistent. */ + +char *getenv(); + +static char *my_index(str, chr) +const char *str; +int chr; +{ + while (*str) + { + if (*str == chr) + return (char *) str; + str++; + } + return 0; +} + +/* If using GCC, we can safely declare strlen this way. + If not using GCC, it is ok not to declare it. */ +#ifdef __GNUC__ +/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. + That was relevant to code that was here before. */ +#if !defined (__STDC__) || !__STDC__ +/* gcc with -traditional declares the built-in strlen to return int, + and has done so at least since version 2.4.5. -- rms. */ +extern int strlen(const char *); +#endif /* + * not __STDC__ + */ +#endif /* + * __GNUC__ + */ + +#endif /* + * not __GNU_LIBRARY__ + */ + +/* Handle permutation of arguments. */ + +/* Describe the part of ARGV that contains non-options that have + been skipped. `first_nonopt' is the index in ARGV of the first of them; + `last_nonopt' is the index after the last of them. */ + +static int first_nonopt; +static int last_nonopt; + +#ifdef _LIBC +/* Bash 2.0 gives us an environment variable containing flags + indicating ARGV elements that should not be considered arguments. */ + +/* Defined in getopt_init.c */ +extern char *__getopt_nonoption_flags; + +static int nonoption_flags_max_len; +static int nonoption_flags_len; + +static int original_argc; +static char *const *original_argv; + +/* Make sure the environment variable bash 2.0 puts in the environment + is valid for the getopt call we must make sure that the ARGV passed + to getopt is that one passed to the process. */ +static void + __attribute__ ((unused)) +store_args_and_env(int argc, char *const *argv) +{ + /* + * XXX This is no good solution. We should rather copy the args so + * that we can compare them later. But we must not use malloc(3). + */ + original_argc = argc; + original_argv = argv; +} + +# ifdef text_set_element +text_set_element(__libc_subinit, store_args_and_env); +# endif /* + * text_set_element + */ + +# define SWAP_FLAGS(ch1, ch2) \ + if (nonoption_flags_len > 0) \ + { \ + char __tmp = __getopt_nonoption_flags[ch1]; \ + __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ + __getopt_nonoption_flags[ch2] = __tmp; \ + } +#else /* + * !_LIBC + */ +# define SWAP_FLAGS(ch1, ch2) +#endif /* + * _LIBC + */ + +/* Exchange two adjacent subsequences of ARGV. + One subsequence is elements [first_nonopt,last_nonopt) + which contains all the non-options that have been skipped so far. + The other is elements [last_nonopt,optind), which contains all + the options processed since those non-options were skipped. + + `first_nonopt' and `last_nonopt' are relocated so that they describe + the new indices of the non-options in ARGV after they are moved. */ + +#if defined (__STDC__) && __STDC__ +static void exchange(char **); +#endif + +static void exchange(argv) +char **argv; +{ + int bottom = first_nonopt; + int middle = last_nonopt; + int top = optind; + char *tem; + + /* + * Exchange the shorter segment with the far end of the longer segment. + * That puts the shorter segment into the right place. + * It leaves the longer segment in the right place overall, + * but it consists of two parts that need to be swapped next. + */ + +#ifdef _LIBC + /* + * First make sure the handling of the `__getopt_nonoption_flags' + * string can work normally. Our top argument must be in the range + * of the string. + */ + if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) + { + /* + * We must extend the array. The user plays games with us and + * presents new arguments. + */ + char *new_str = malloc(top + 1); + if (new_str == NULL) + nonoption_flags_len = nonoption_flags_max_len = 0; + else + { + memset(__mempcpy(new_str, __getopt_nonoption_flags, + nonoption_flags_max_len), + '\0', top + 1 - nonoption_flags_max_len); + nonoption_flags_max_len = top + 1; + __getopt_nonoption_flags = new_str; + } + } +#endif + + while (top > middle && middle > bottom) + { + if (top - middle > middle - bottom) + { + /* + * Bottom segment is the short one. + */ + int len = middle - bottom; + register int i; + + /* + * Swap it with the top part of the top segment. + */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[top - (middle - bottom) + i]; + argv[top - (middle - bottom) + i] = tem; + SWAP_FLAGS(bottom + i, top - (middle - bottom) + i); + } + /* + * Exclude the moved bottom segment from further swapping. + */ + top -= len; + } else + { + /* + * Top segment is the short one. + */ + int len = top - middle; + register int i; + + /* + * Swap it with the bottom part of the bottom segment. + */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[middle + i]; + argv[middle + i] = tem; + SWAP_FLAGS(bottom + i, middle + i); + } + /* + * Exclude the moved top segment from further swapping. + */ + bottom += len; + } + } + + /* + * Update records for the slots the non-options now occupy. + */ + + first_nonopt += (optind - last_nonopt); + last_nonopt = optind; +} + +/* Initialize the internal data when the first call is made. */ + +#if defined (__STDC__) && __STDC__ +static const char *_getopt_initialize(int, char *const *, const char *); +#endif +static const char *_getopt_initialize(argc, argv, optstring) +int argc; +char *const *argv; +const char *optstring; +{ + /* + * Start processing options with ARGV-element 1 (since ARGV-element 0 + * is the program name); the sequence of previously skipped + * non-option ARGV-elements is empty. + */ + + first_nonopt = last_nonopt = optind; + + nextchar = NULL; + + posixly_correct = getenv("POSIXLY_CORRECT"); + + /* + * Determine how to handle the ordering of options and nonoptions. + */ + + if (optstring[0] == '-') + { + ordering = RETURN_IN_ORDER; + ++optstring; + } else if (optstring[0] == '+') + { + ordering = REQUIRE_ORDER; + ++optstring; + } else if (posixly_correct != NULL) + ordering = REQUIRE_ORDER; + else + ordering = PERMUTE; + +#ifdef _LIBC + if (posixly_correct == NULL + && argc == original_argc && argv == original_argv) + { + if (nonoption_flags_max_len == 0) + { + if (__getopt_nonoption_flags == NULL + || __getopt_nonoption_flags[0] == '\0') + nonoption_flags_max_len = -1; + else + { + const char *orig_str = __getopt_nonoption_flags; + int len = nonoption_flags_max_len = strlen(orig_str); + if (nonoption_flags_max_len < argc) + nonoption_flags_max_len = argc; + __getopt_nonoption_flags = + (char *) malloc(nonoption_flags_max_len); + if (__getopt_nonoption_flags == NULL) + nonoption_flags_max_len = -1; + else + memset(__mempcpy + (__getopt_nonoption_flags, orig_str, len), '\0', + nonoption_flags_max_len - len); + } + } + nonoption_flags_len = nonoption_flags_max_len; + } else + nonoption_flags_len = 0; +#endif + + return optstring; +} + +/* Scan elements of ARGV (whose length is ARGC) for option characters + given in OPTSTRING. + + If an element of ARGV starts with '-', and is not exactly "-" or "--", + then it is an option element. The characters of this element + (aside from the initial '-') are option characters. If `getopt' + is called repeatedly, it returns successively each of the option characters + from each of the option elements. + + If `getopt' finds another option character, it returns that character, + updating `optind' and `nextchar' so that the next call to `getopt' can + resume the scan with the following option character or ARGV-element. + + If there are no more option characters, `getopt' returns -1. + Then `optind' is the index in ARGV of the first ARGV-element + that is not an option. (The ARGV-elements have been permuted + so that those that are not options now come last.) + + OPTSTRING is a string containing the legitimate option characters. + If an option character is seen that is not listed in OPTSTRING, + return '?' after printing an error message. If you set `opterr' to + zero, the error message is suppressed but we still return '?'. + + If a char in OPTSTRING is followed by a colon, that means it wants an arg, + so the following text in the same ARGV-element, or the text of the following + ARGV-element, is returned in `optarg'. Two colons mean an option that + wants an optional arg; if there is text in the current ARGV-element, + it is returned in `optarg', otherwise `optarg' is set to zero. + + If OPTSTRING starts with `-' or `+', it requests different methods of + handling the non-option ARGV-elements. + See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. + + Long-named options begin with `--' instead of `-'. + Their names may be abbreviated as long as the abbreviation is unique + or is an exact match for some defined option. If they have an + argument, it follows the option name in the same ARGV-element, separated + from the option name by a `=', or else the in next ARGV-element. + When `getopt' finds a long-named option, it returns 0 if that option's + `flag' field is nonzero, the value of the option's `val' field + if the `flag' field is zero. + + The elements of ARGV aren't really const, because we permute them. + But we pretend they're const in the prototype to be compatible + with other systems. + + LONGOPTS is a vector of `struct option' terminated by an + element containing a name which is zero. + + LONGIND returns the index in LONGOPT of the long-named option found. + It is only valid when a long-named option has been found by the most + recent call. + + If LONG_ONLY is nonzero, '-' as well as '--' can introduce + long-named options. */ + +int _getopt_internal(argc, argv, optstring, longopts, longind, long_only) +int argc; +char *const *argv; +const char *optstring; +const struct option *longopts; +int *longind; +int long_only; +{ + optarg = NULL; + + if (optind == 0 || !__getopt_initialized) + { + if (optind == 0) + optind = 1; /* + * Don't scan ARGV[0], the program name. + */ + optstring = _getopt_initialize(argc, argv, optstring); + __getopt_initialized = 1; + } + + /* + * Test whether ARGV[optind] points to a non-option argument. + * Either it does not have option syntax, or there is an environment flag + * from the shell indicating it is not an option. The later information + * is only used when the used in the GNU libc. + */ +#ifdef _LIBC +#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ + || (optind < nonoption_flags_len \ + && __getopt_nonoption_flags[optind] == '1')) +#else +#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') +#endif + + if (nextchar == NULL || *nextchar == '\0') + { + /* + * Advance to the next ARGV-element. + */ + + /* + * Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been + * moved back by the user (who may also have changed the arguments). + */ + if (last_nonopt > optind) + last_nonopt = optind; + if (first_nonopt > optind) + first_nonopt = optind; + + if (ordering == PERMUTE) + { + /* + * If we have just processed some options following some non-options, + * exchange them so that the options come first. + */ + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange((char **) argv); + else if (last_nonopt != optind) + first_nonopt = optind; + + /* + * Skip any additional non-options + * and extend the range of non-options previously skipped. + */ + + while (optind < argc && NONOPTION_P) + optind++; + last_nonopt = optind; + } + + /* + * The special ARGV-element `--' means premature end of options. + * Skip it like a null option, + * then exchange with previous non-options as if it were an option, + * then skip everything else like a non-option. + */ + + if (optind != argc && !strcmp(argv[optind], "--")) + { + optind++; + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange((char **) argv); + else if (first_nonopt == last_nonopt) + first_nonopt = optind; + last_nonopt = argc; + + optind = argc; + } + + /* + * If we have done all the ARGV-elements, stop the scan + * and back over any non-options that we skipped and permuted. + */ + + if (optind == argc) + { + /* + * Set the next-arg-index to point at the non-options + * that we previously skipped, so the caller will digest them. + */ + if (first_nonopt != last_nonopt) + optind = first_nonopt; + return -1; + } + + /* + * If we have come to a non-option and did not permute it, + * either stop the scan or describe it to the caller and pass it by. + */ + + if (NONOPTION_P) + { + if (ordering == REQUIRE_ORDER) + return -1; + optarg = argv[optind++]; + return 1; + } + + /* + * We have found another option-ARGV-element. + * Skip the initial punctuation. + */ + + nextchar = (argv[optind] + 1 + + (longopts != NULL && argv[optind][1] == '-')); + } + + /* + * Decode the current option-ARGV-element. + */ + + /* + * Check whether the ARGV-element is a long option. + * + * If long_only and the ARGV-element has the form "-f", where f is + * a valid short option, don't consider it an abbreviated form of + * a long option that starts with f. Otherwise there would be no + * way to give the -f short option. + * + * On the other hand, if there's a long option "fubar" and + * the ARGV-element is "-fu", do consider that an abbreviation of + * the long option, just like "--fu", and not "-f" with arg "u". + * + * This distinction seems to be the most useful approach. + */ + + if (longopts != NULL + && (argv[optind][1] == '-' + || (long_only + && (argv[optind][2] + || !my_index(optstring, argv[optind][1]))))) + { + char *nameend; + const struct option *p; + const struct option *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = -1; + int option_index; + + for (nameend = nextchar; *nameend && *nameend != '='; nameend++) + /* + * Do nothing. + */ ; + + /* + * Test all long options for either exact match + * or abbreviated matches. + */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!strncmp(p->name, nextchar, nameend - nextchar)) + { + if ((unsigned int) (nameend - nextchar) + == (unsigned int) strlen(p->name)) + { + /* + * Exact match found. + */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } else if (pfound == NULL) + { + /* + * First nonexact match found. + */ + pfound = p; + indfound = option_index; + } else + /* + * Second or later nonexact match found. + */ + ambig = 1; + } + + if (ambig && !exact) + { + if (opterr) + fprintf(stderr, _("%s: option `%s' is ambiguous\n"), + argv[0], argv[optind]); + nextchar += strlen(nextchar); + optind++; + optopt = 0; + return '?'; + } + + if (pfound != NULL) + { + option_index = indfound; + optind++; + if (*nameend) + { + /* + * Don't test has_arg with >, because some C compilers don't + * allow it to be used on enums. + */ + if (pfound->has_arg) + optarg = nameend + 1; + else + { + if (opterr) + if (argv[optind - 1][1] == '-') + /* + * --option + */ + fprintf(stderr, + _("%s: option `--%s' doesn't allow an argument\n"), + argv[0], pfound->name); + else + /* + * +option or -option + */ + fprintf(stderr, + _("%s: option `%c%s' doesn't allow an argument\n"), + argv[0], argv[optind - 1][0], pfound->name); + + nextchar += strlen(nextchar); + + optopt = pfound->val; + return '?'; + } + } else if (pfound->has_arg == 1) + { + if (optind < argc) + optarg = argv[optind++]; + else + { + if (opterr) + fprintf(stderr, + _("%s: option `%s' requires an argument\n"), + argv[0], argv[optind - 1]); + nextchar += strlen(nextchar); + optopt = pfound->val; + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += strlen(nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + + /* + * Can't find it as a long option. If this is not getopt_long_only, + * or the option starts with '--' or is not a valid short + * option, then it's an error. + * Otherwise interpret it as a short option. + */ + if (!long_only || argv[optind][1] == '-' + || my_index(optstring, *nextchar) == NULL) + { + if (opterr) + { + if (argv[optind][1] == '-') + /* + * --option + */ + fprintf(stderr, _("%s: unrecognized option `--%s'\n"), + argv[0], nextchar); + else + /* + * +option or -option + */ + fprintf(stderr, _("%s: unrecognized option `%c%s'\n"), + argv[0], argv[optind][0], nextchar); + } + nextchar = (char *) ""; + optind++; + optopt = 0; + return '?'; + } + } + + /* + * Look at and handle the next short option-character. + */ + + { + char c = *nextchar++; + char *temp = my_index(optstring, c); + + /* + * Increment `optind' when we start to process its last character. + */ + if (*nextchar == '\0') + ++optind; + + if (temp == NULL || c == ':') + { + if (opterr) + { + if (posixly_correct) + /* + * 1003.2 specifies the format of this message. + */ + fprintf(stderr, _("%s: illegal option -- %c\n"), argv[0], c); + else + fprintf(stderr, _("%s: invalid option -- %c\n"), argv[0], c); + } + optopt = c; + return '?'; + } + /* + * Convenience. Treat POSIX -W foo same as long option --foo + */ + if (temp[0] == 'W' && temp[1] == ';') + { + char *nameend; + const struct option *p; + const struct option *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = 0; + int option_index; + + /* + * This is an option that requires an argument. + */ + if (*nextchar != '\0') + { + optarg = nextchar; + /* + * If we end this ARGV-element by taking the rest as an arg, + * we must advance to the next element now. + */ + optind++; + } else if (optind == argc) + { + if (opterr) + { + /* + * 1003.2 specifies the format of this message. + */ + fprintf(stderr, + _("%s: option requires an argument -- %c\n"), + argv[0], c); + } + optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + return c; + } else + /* + * We already incremented `optind' once; + * increment it again when taking next ARGV-elt as argument. + */ + optarg = argv[optind++]; + + /* + * optarg is now the argument, see if it's in the + * table of longopts. + */ + + for (nextchar = nameend = optarg; *nameend && *nameend != '='; + nameend++) + /* + * Do nothing. + */ ; + + /* + * Test all long options for either exact match + * or abbreviated matches. + */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!strncmp(p->name, nextchar, nameend - nextchar)) + { + if ((unsigned int) (nameend - nextchar) == strlen(p->name)) + { + /* + * Exact match found. + */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } else if (pfound == NULL) + { + /* + * First nonexact match found. + */ + pfound = p; + indfound = option_index; + } else + /* + * Second or later nonexact match found. + */ + ambig = 1; + } + if (ambig && !exact) + { + if (opterr) + fprintf(stderr, _("%s: option `-W %s' is ambiguous\n"), + argv[0], argv[optind]); + nextchar += strlen(nextchar); + optind++; + return '?'; + } + if (pfound != NULL) + { + option_index = indfound; + if (*nameend) + { + /* + * Don't test has_arg with >, because some C compilers don't + * allow it to be used on enums. + */ + if (pfound->has_arg) + optarg = nameend + 1; + else + { + if (opterr) + fprintf(stderr, _("\ +%s: option `-W %s' doesn't allow an argument\n"), argv[0], pfound->name); + + nextchar += strlen(nextchar); + return '?'; + } + } else if (pfound->has_arg == 1) + { + if (optind < argc) + optarg = argv[optind++]; + else + { + if (opterr) + fprintf(stderr, + _("%s: option `%s' requires an argument\n"), + argv[0], argv[optind - 1]); + nextchar += strlen(nextchar); + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += strlen(nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + nextchar = NULL; + return 'W'; /* + * Let the application handle it. + */ + } + if (temp[1] == ':') + { + if (temp[2] == ':') + { + /* + * This is an option that accepts an argument optionally. + */ + if (*nextchar != '\0') + { + optarg = nextchar; + optind++; + } else + optarg = NULL; + nextchar = NULL; + } else + { + /* + * This is an option that requires an argument. + */ + if (*nextchar != '\0') + { + optarg = nextchar; + /* + * If we end this ARGV-element by taking the rest as an arg, + * we must advance to the next element now. + */ + optind++; + } else if (optind == argc) + { + if (opterr) + { + /* + * 1003.2 specifies the format of this message. + */ + fprintf(stderr, + _("%s: option requires an argument -- %c\n"), + argv[0], c); + } + optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + } else + /* + * We already incremented `optind' once; + * increment it again when taking next ARGV-elt as argument. + */ + optarg = argv[optind++]; + nextchar = NULL; + } + } + return c; + } +} + +int getopt(argc, argv, optstring) +int argc; +char *const *argv; +const char *optstring; +{ + return _getopt_internal(argc, argv, optstring, + (const struct option *) 0, (int *) 0, 0); +} + +#endif /* + * Not ELIDE_CODE. + */ + +#ifdef TEST + +/* Compile with -DTEST to make an executable for use in testing + the above definition of `getopt'. */ + +int main(argc, argv) +int argc; +char **argv; +{ + int c; + int digit_optind = 0; + + while (1) + { + int this_option_optind = optind ? optind : 1; + + c = getopt(argc, argv, "abc:d:0123456789"); + if (c == -1) + break; + + switch (c) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (digit_optind != 0 && digit_optind != this_option_optind) + printf(_("digits occur in two different argv-elements.\n")); + digit_optind = this_option_optind; + printf("option %c\n", c); + break; + + case 'a': + printf(_("option a\n")); + break; + + case 'b': + printf(_("option b\n")); + break; + + case 'c': + printf(_("option c with value `%s'\n"), optarg); + break; + + case '?': + break; + + default: + printf(_("?? getopt returned character code 0%o ??\n"), c); + } + } + + if (optind < argc) + { + printf(_("non-option ARGV-elements: ")); + while (optind < argc) + printf("%s ", argv[optind++]); + printf("\n"); + } + + exit(0); +} + +#endif /* + * TEST + */ diff --git a/libprozilla/src/getopt.h b/libprozilla/src/getopt.h new file mode 100644 index 0000000..6eb4bd4 --- /dev/null +++ b/libprozilla/src/getopt.h @@ -0,0 +1,142 @@ +/* Declarations for getopt. + Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc. + + NOTE: The canonical source of this file is maintained with the GNU C Library. + Bugs can be reported to bug-glibc@prep.ai.mit.edu. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifndef _GETOPT_H +#define _GETOPT_H 1 + +#ifdef __cplusplus +extern "C" { +#endif +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + extern char *optarg; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns -1, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + + extern int optind; + +/* Callers store zero here to inhibit the error message `getopt' prints + for unrecognized options. */ + + extern int opterr; + +/* Set to an option character which was unrecognized. */ + + extern int optopt; + +/* Describe the long-named options requested by the application. + The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector + of `struct option' terminated by an element containing a name which is + zero. + + The field `has_arg' is: + no_argument (or 0) if the option does not take an argument, + required_argument (or 1) if the option requires an argument, + optional_argument (or 2) if the option takes an optional argument. + + If the field `flag' is not NULL, it points to a variable that is set + to the value given in the field `val' when the option is found, but + left unchanged if the option is not found. + + To have a long-named option do something other than set an `int' to + a compiled-in constant, such as set a value from `optarg', set the + option's `flag' field to zero and its `val' field to a nonzero + value (the equivalent single-letter option character, if there is + one). For long options that have a zero `flag' field, `getopt' + returns the contents of the `val' field. */ + + struct option { +#if defined (__STDC__) && __STDC__ + const char *name; +#else + char *name; +#endif + /* + * has_arg can't be an enum because some compilers complain about + * type mismatches in all the code that assumes it is an int. + */ + int has_arg; + int *flag; + int val; + }; + +/* Names for the values of the `has_arg' field of `struct option'. */ + +#define no_argument 0 +#define required_argument 1 +#define optional_argument 2 + +#if defined (__STDC__) && __STDC__ +#ifdef __GNU_LIBRARY__ +/* Many other libraries have conflicting prototypes for getopt, with + differences in the consts, in stdlib.h. To avoid compilation + errors, only prototype getopt for the GNU C library. */ + extern int getopt(int argc, char *const *argv, const char *shortopts); +#else /* + * not __GNU_LIBRARY__ + */ + extern int getopt(); +#endif /* + * __GNU_LIBRARY__ + */ + extern int getopt_long(int argc, char *const *argv, + const char *shortopts, + const struct option *longopts, int *longind); + extern int getopt_long_only(int argc, char *const *argv, + const char *shortopts, + const struct option *longopts, int *longind); + +/* Internal only. Users should not call this directly. */ + extern int _getopt_internal(int argc, char *const *argv, + const char *shortopts, + const struct option *longopts, + int *longind, int long_only); +#else /* + * not __STDC__ + */ + extern int getopt(); + extern int getopt_long(); + extern int getopt_long_only(); + + extern int _getopt_internal(); +#endif /* + * __STDC__ + */ + +#ifdef __cplusplus +} +#endif +#endif /* + * getopt.h + */ diff --git a/libprozilla/src/http-retr.c b/libprozilla/src/http-retr.c new file mode 100644 index 0000000..f73ca6e --- /dev/null +++ b/libprozilla/src/http-retr.c @@ -0,0 +1,526 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* $Id: http-retr.c,v 1.18 2001/09/23 01:39:16 kalum Exp $ */ + +#include "common.h" +#include "prozilla.h" +#include "connect.h" +#include "misc.h" +#include "url.h" +#include "netrc.h" +#include "debug.h" +#include "http.h" +#include "http-retr.h" + +/* Will download a portion of/or the full file from the connection->url. + */ +uerr_t proz_http_get_file(connection_t * connection) +{ + uerr_t err; + int remote_port_len; + char *user, *passwd, *www_auth = NULL, *proxy_auth = NULL, *range = + NULL, *location = NULL, *referer = NULL, *pragma_no_cache = NULL; + char *request, *remote_port; + netrc_entry *netrc_ent; + char buffer[HTTP_BUFFER_SIZE]; + /*The http stats that were returned after the call with GET */ + http_stat_t hs_after_get; + + /* we want it to terminate immediately */ + pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + + assert(connection->localfile != NULL); + assert(connection->file_mode != NULL); + + /*clear the socks */ + connection->data_sock = 0; + memset(&hs_after_get, 0, sizeof(hs_after_get)); + + /* if there is nothing to download then return */ + if (connection->status == COMPLETED) + { + pthread_mutex_lock(&connection->access_mutex); + gettimeofday(&connection->time_begin, NULL); + pthread_mutex_unlock(&connection->access_mutex); + return HOK; + } + + connection_change_status(connection, CONNECTING); + + if (http_use_proxy(connection)) + { + connection_show_message(connection, _("Connecting to %s"), + connection->http_proxy->proxy_url.host); + err = connect_to_server(&connection->data_sock, + connection->http_proxy->proxy_url.host, + connection->http_proxy->proxy_url.port, + &connection->xfer_timeout); + if (err != NOCONERROR) + { + proz_debug(_("Error connecting to %s"), + connection->http_proxy->proxy_url.host); + connection_change_status(connection, REMOTEFATAL); + return err; + } + } else + { + connection_show_message(connection, _("Connecting to %s"), + connection->u.host); + + err = connect_to_server(&connection->data_sock, connection->u.host, + connection->u.port, &connection->xfer_timeout); + if (err != NOCONERROR) + { + proz_debug(_("Error connecting to %s"), connection->u.host); + connection_change_status(connection, REMOTEFATAL); + return err; + } + } + + user = connection->u.user; + passwd = connection->u.passwd; + + /* Use .netrc if asked to do so. */ + if (connection->use_netrc == TRUE) + { + netrc_ent = search_netrc(libprozrtinfo.netrc_list, connection->u.host); + + if (netrc_ent != NULL) + { + user = netrc_ent->account; + passwd = netrc_ent->password; + } + } + + user = user ? user : ""; + passwd = passwd ? passwd : ""; + + if (strlen(user) || strlen(passwd)) + { + /* Construct the necessary header. */ + www_auth = get_basic_auth_str(user, passwd, "Authorization"); + proz_debug(_("Authenticating as user %s password %s"), user, passwd); + proz_debug(_("Authentification string=%s"), www_auth); + } else + www_auth = 0; + + if (http_use_proxy(connection)) + { + if (strlen(connection->http_proxy->username) + || strlen(connection->http_proxy->passwd)) + proxy_auth = + get_basic_auth_str(connection->http_proxy->username, + connection->http_proxy->passwd, + "Proxy-Authorization"); + } + + if (connection->u.port == 80) + { + remote_port = NULL; + remote_port_len = 0; + } else + { + remote_port = (char *) alloca(64); + remote_port_len = sprintf(remote_port, ":%d", connection->u.port); + } + + if (connection->hs.accept_ranges == 1) + { + range = (char *) alloca(18 + 64); + sprintf(range, "Range: bytes=%ld-\r\n", connection->remote_startpos); + } + + if (connection->u.referer) + { + referer = (char *) alloca(13 + strlen(connection->u.referer)); + sprintf(referer, "Referer: %s\r\n", connection->u.referer); + } + + /* If we go through a proxy the request for the URL is different */ + if (http_use_proxy(connection)) + { + location = (char *) alloca(strlen(connection->u.url) + 1); + strcpy(location, connection->u.url); + } else + { + location = (char *) alloca(strlen(connection->u.path) + 1); + strcpy(location, connection->u.path); + } + + /*Use no-cache directive for proxy servers? */ + if (http_use_proxy(connection) + && (connection->http_no_cache || connection->attempts > 0)) + { + pragma_no_cache = (char *) alloca(21); + sprintf(pragma_no_cache, "Pragma: no-cache\r\n"); + } + + request = (char *) alloca(strlen(location) + + strlen(connection->user_agent) + + strlen(connection->u.host) + remote_port_len + + (range ? strlen(range) : 0) + + (referer ? strlen(referer) : 0) + + (www_auth ? strlen(www_auth) : 0) + + (proxy_auth ? strlen(proxy_auth) : 0) + + 64 + + + (pragma_no_cache ? strlen(pragma_no_cache) : + 0)); + + /* TODO Add referrer tag. */ + sprintf(request, + "GET %s HTTP/1.0\r\nUser-Agent: %s\r\nHost: %s%s\r\nAccept: */*\r\n%s%s%s%s%s\r\n", + location, connection->user_agent, connection->u.host, + remote_port ? remote_port : "", range ? range : "", + referer ? referer : "", + www_auth ? www_auth : "", proxy_auth ? proxy_auth : "", + pragma_no_cache ? pragma_no_cache : ""); + + proz_debug("HTTP request = %s", request); + + connection_show_message(connection, _("Sending HTTP request")); + err = http_fetch_headers(connection, &hs_after_get, request); + +/* What hapenned ? */ + if (err != HOK) + { + /*Check if we authenticated using any user or password and if we + were kicked out, if so return HAUTHFAIL */ + if (err == HAUTHREQ && (strlen(user) || strlen(passwd))) + err = HAUTHFAIL; + /* + * a error occured druing the process + */ + close_sock(&connection->data_sock); + connection_change_status(connection, REMOTEFATAL); + return err; + } + + /*Check for the server lying about it being able to handle ranges */ + if (hs_after_get.contlen != -1) + { + if (connection->resume_support == TRUE) + { + if (hs_after_get.contlen != + connection->main_file_size - connection->remote_startpos) + { + proz_debug("Error contlen does not match the requested range!"); + close_sock(&connection->data_sock); + connection_change_status(connection, REMOTEFATAL); + return CANTRESUME; + } + } + } + +/* which routine to call */ + if (connection->main_file_size == -1) + err = + connection_retr_fsize_not_known(connection, buffer, + sizeof(buffer)); + else + err = connection_retr_fsize_known(connection, buffer, sizeof(buffer)); + + close_sock(&connection->data_sock); + + if (err == FILEGETOK) + return HOK; + else + return err; + +} + + + +/* A genuine loop ;) It willed be called by the main thread, and +this will handle all possible errors itself, retrying until the number +of maximum tries for the connection is realised +*/ + +uerr_t http_loop(connection_t * connection) +{ + boolean retrying_from_loop = FALSE; + assert(connection->max_attempts >= 0); + assert(connection->attempts >= 0); + + pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + + do + { + if (connection->attempts > 0) + { + + if (retrying_from_loop == TRUE) + { + connection_show_message(connection, + _("Retrying...Attempt %d in %d seconds"), + connection->attempts, + connection->retry_delay.tv_sec); + delay_ms(connection->retry_delay.tv_sec * 1000); + } + + if (connection->resume_support == TRUE) + { + if (connection_load_resume_info(connection) == -1) + { + connection_show_message(connection, + _ + ("Error while attemting to process download file ")); + } + } else + { + /*If we cant resume then reset the connections bytesreceived to 0 */ + connection->remote_bytes_received = 0; + } + } + + /*Push the handler which will cleanup any sockets that are left open */ + pthread_cleanup_push(cleanup_socks, (void *) connection); + connection->err = proz_http_get_file(connection); + /*pop the handler */ + pthread_cleanup_pop(0); + + connection->attempts++; + + /*Should the error be handled at this level ? */ + if (!http_loop_handle_error(connection->err)) + { + connection_show_message(connection, _("Will be handled in main ")); + return connection->err; /*If not return and the main thread will handle it */ + } + + switch (connection->err) + { + case HOK: + connection_show_message(connection, _("Successfully got download")); + return connection->err; + break; + + /*TODO : What should we do if the file is not found, well pass it up to the main routine */ + + default: + connection_show_message(connection, proz_strerror(connection->err)); + break; + } + + retrying_from_loop = TRUE; + + } + while ((connection->attempts < connection->max_attempts) + || connection->max_attempts == 0); + + + connection_show_message(connection, + _ + ("I have tried %d attempt(s) and have failed, aborting"), + connection->attempts); + + return connection->err; + +} + + +/*Return true if it is a error which can be handled within the htp_loop, +or false if it should be passed upwards so that the main download thread can +restart it when necessary after processing other threads status too */ +boolean http_loop_handle_error(uerr_t err) +{ + proz_debug("Error encountered in http_loop is %d", err); + if (err == HTTPNSFOD || err == FWRITEERR || err == FOPENERR + || err == CANTRESUME) + return FALSE; + else + return TRUE; +} + + +/* + I am writing a seperate function to handle FTP proxying through HTTP, I + MHO whoever thought of using HTTP to proxy FTP is a shithead, + its such a PITA ;) + */ +uerr_t ftp_get_file_from_http_proxy(connection_t * connection) +{ + + uerr_t err; + int remote_port_len; + char *user, *passwd, *www_auth = NULL, *proxy_auth = NULL, *range = + NULL, *pragma_no_cache = NULL; + + char *request, *remote_port; + netrc_entry *netrc_ent; + char buffer[HTTP_BUFFER_SIZE]; + /*The http stats that were returned after the call with GET */ + http_stat_t hs_after_get; + + /* we want it to terminate immediately */ + pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + + memset(&connection->hs, 0, sizeof(connection->hs)); + memset(&hs_after_get, 0, sizeof(hs_after_get)); + + /* if there is nothing to download then return */ + if (connection->status == COMPLETED) + { + pthread_mutex_lock(&connection->access_mutex); + gettimeofday(&connection->time_begin, NULL); + pthread_mutex_unlock(&connection->access_mutex); + return FTPOK; + } + + err = connect_to_server(&connection->data_sock, + connection->ftp_proxy->proxy_url.host, + connection->ftp_proxy->proxy_url.port, + &connection->xfer_timeout); + + if (err != NOCONERROR) + { + connection_show_message(connection, _("Error connecting to %s"), + connection->ftp_proxy->proxy_url.host); + return err; + } + + user = connection->u.user; + passwd = connection->u.passwd; + + /* Use .netrc if asked to do so. */ + if (connection->use_netrc == TRUE) + { + netrc_ent = search_netrc(libprozrtinfo.netrc_list, connection->u.host); + + if (netrc_ent != NULL) + { + user = netrc_ent->account; + passwd = netrc_ent->password; + } + } + + user = user ? user : ""; + passwd = passwd ? passwd : ""; + + if (strlen(user) || strlen(passwd)) + { + /* Construct the necessary header. */ + www_auth = get_basic_auth_str(user, passwd, "Authorization"); + proz_debug(_("Authenticating as user %s password %s"), user, passwd); + proz_debug(_("Authentification string=%s"), www_auth); + } else + www_auth = 0; + + if (strlen(connection->ftp_proxy->username) + || strlen(connection->ftp_proxy->passwd)) + proxy_auth = + get_basic_auth_str(connection->ftp_proxy->username, + connection->ftp_proxy->passwd, + "Proxy-Authorization"); + + remote_port = (char *) alloca(64); + remote_port_len = sprintf(remote_port, ":%d", connection->u.port); + + if (connection->hs.accept_ranges == 1) + { + range = (char *) alloca(18 + 64); + sprintf(range, "Range: bytes=%ld-\r\n", connection->remote_startpos); + } + + + /*Use no-cache directive for proxy servers? */ + if (http_use_proxy(connection) + && (connection->http_no_cache || connection->attempts > 0)) + { + pragma_no_cache = (char *) alloca(21); + sprintf(pragma_no_cache, "Pragma: no-cache\r\n"); + } + + + /*Referrer TAG should not be needed in FTP through HTTP proxy..right */ + + + request = (char *) alloca(strlen(connection->u.url) + + strlen(connection->user_agent) + + strlen(connection->u.host) + remote_port_len + + (range ? strlen(range) : 0) + + (www_auth ? strlen(www_auth) : 0) + + (proxy_auth ? strlen(proxy_auth) : 0) + + 64 + + + (pragma_no_cache ? strlen(pragma_no_cache) : + 0)); + + + /* TODO Add referrer tag. */ + sprintf(request, + "GET %s HTTP/1.0\r\nUser-Agent: %s\r\nHost: %s%s\r\nAccept: */*\r\n%s%s%s%s\r\n", + connection->u.url, connection->user_agent, connection->u.host, + remote_port ? remote_port : "", range ? range : "", + www_auth ? www_auth : "", proxy_auth ? proxy_auth : "", + pragma_no_cache ? pragma_no_cache : ""); + + proz_debug("HTTP request = %s", request); + + connection_show_message(connection, _("Sending HTTP request")); + err = http_fetch_headers(connection, &hs_after_get, request); + + + + if (err == HAUTHREQ) + { + connection_change_status(connection, LOGINFAIL); + return FTPLOGREFUSED; + } else if (err == HTTPNSFOD) + { + connection_change_status(connection, REMOTEFATAL); + return FTPNSFOD; + } else if (err != HOK) + { + connection_change_status(connection, REMOTEFATAL); + return FTPERR; + } + + /*Check for the server lying about it being able to handle ranges */ + if (hs_after_get.contlen != -1) + { + if (connection->resume_support == TRUE) + { + if (hs_after_get.contlen != + connection->main_file_size - connection->remote_startpos) + { + proz_debug("Error contlen does not match the requested range!"); + connection_change_status(connection, REMOTEFATAL); + return CANTRESUME; + } + } + } + +/* which routine to call */ + if (connection->main_file_size == -1) + err = + connection_retr_fsize_not_known(connection, buffer, + sizeof(buffer)); + else + err = connection_retr_fsize_known(connection, buffer, sizeof(buffer)); + + close_sock(&connection->data_sock); + + if (err == FILEGETOK) + return FTPOK; + else + return err; + +} diff --git a/libprozilla/src/http-retr.h b/libprozilla/src/http-retr.h new file mode 100644 index 0000000..34e4672 --- /dev/null +++ b/libprozilla/src/http-retr.h @@ -0,0 +1,39 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* $Id: http-retr.h,v 1.5 2001/06/25 12:30:56 kalum Exp $ */ + + +#ifndef HTTP_RETR_H +#define HTTP_RETR_H + +#include "common.h" +#include "connection.h" + +#ifdef __cplusplus +extern "C" { +#endif + + uerr_t proz_http_get_file(connection_t * connection); + uerr_t http_loop(connection_t * connection); + boolean http_loop_handle_error(uerr_t err); +#ifdef __cplusplus +} +#endif +#endif /* FTP_RETR_H */ diff --git a/libprozilla/src/http.c b/libprozilla/src/http.c new file mode 100644 index 0000000..60f3742 --- /dev/null +++ b/libprozilla/src/http.c @@ -0,0 +1,899 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* HTTP support. */ + +/* $Id: http.c,v 1.20 2001/10/27 11:24:40 kalum Exp $ */ + + +#include "common.h" +#include "prozilla.h" +#include "misc.h" +#include "connect.h" +#include "debug.h" +#include "http.h" + + +/* Some status code validation macros: */ +#define H_20X(x) (((x) >= 200) && ((x) < 300)) +#define H_PARTIAL(x) ((x) == HTTP_PARTIAL_CONTENTS) +#define H_REDIRECTED(x) (((x) == HTTP_MOVED_PERMANENTLY) || ((x) == HTTP_MOVED_TEMPORARILY)) + + +/* HTTP/1.0 status codes from RFC1945, given for reference. */ + +/* Successful 2xx. */ +#define HTTP_OK 200 +#define HTTP_CREATED 201 +#define HTTP_ACCEPTED 202 +#define HTTP_NO_CONTENT 204 +#define HTTP_PARTIAL_CONTENTS 206 + +/* Redirection 3xx. */ +#define HTTP_MULTIPLE_CHOICES 300 +#define HTTP_MOVED_PERMANENTLY 301 +#define HTTP_MOVED_TEMPORARILY 302 +#define HTTP_NOT_MODIFIED 304 + +/* Client error 4xx. */ +#define HTTP_BAD_REQUEST 400 +#define HTTP_UNAUTHORIZED 401 +#define HTTP_FORBIDDEN 403 +#define HTTP_NOT_FOUND 404 + +/* Server errors 5xx. */ +#define HTTP_INTERNAL 500 +#define HTTP_NOT_IMPLEMENTED 501 +#define HTTP_BAD_GATEWAY 502 +#define HTTP_UNAVAILABLE 503 +#define HTTP_GATEWAY_TIMEOUT 504 + +#define DYNAMIC_LINE_BUFFER 40 + + +/****************************************************************************** + ... +******************************************************************************/ +int buf_readchar(int fd, char *ret, struct timeval *timeout) +{ + int res; + + res = krecv(fd, ret, 1, 0, timeout); + + if (res <= 0) + return res; + + return 1; +} + +/****************************************************************************** + This is similar to buf_readchar(), only it doesn't move the buffer position. +******************************************************************************/ +int buf_peek(int fd, char *ret, struct timeval *timeout) +{ + int res; + + res = krecv(fd, ret, 1, MSG_PEEK, timeout); + + if (res <= 0) + return res; + + return 1; +} + +/****************************************************************************** + Function to fetch a header from socket/file descriptor fd. The header may be + of arbitrary length, since the function allocates as much memory as necessary + for the header to fit. Most errors are handled. + + The header may be terminated by LF or CRLF. If the character after LF is SP + or HT (horizontal tab), the header spans to another line (continuation + header), as per RFC2068. + + The trailing CRLF or LF are stripped from the header, and it is + zero-terminated. +******************************************************************************/ +uerr_t fetch_next_header(int fd, char **hdr, struct timeval * timeout) +{ + int i, bufsize, res; + char next; + + bufsize = DYNAMIC_LINE_BUFFER; + *hdr = kmalloc(bufsize); + + for (i = 0; 1; i++) + { + if (i > bufsize - 1) + *hdr = krealloc(*hdr, (bufsize <<= 1)); + + res = buf_readchar(fd, *hdr + i, timeout); + + if (res == 1) + { + if ((*hdr)[i] == '\n') + { + if (!(i == 0 || (i == 1 && (*hdr)[0] == '\r'))) + { + /* If the header is non-empty, we need to check if it continues on + to the other line. We do that by getting the next character + without actually downloading it (i.e. peeking it). */ + res = buf_peek(fd, &next, timeout); + + if (res == 0) + return HEOF; + else if (res == -1) + return HERR; + + /* If the next character is SP or HT, just continue. */ + if (next == '\t' || next == ' ') + continue; + } + + /* The header ends. */ + (*hdr)[i] = '\0'; + + /* Get rid of '\r'. */ + if (i > 0 && (*hdr)[i - 1] == '\r') + (*hdr)[i - 1] = '\0'; + + break; + } + } else if (res == 0) + return HEOF; + else + return HERR; + } + + return HOK; +} + +/****************************************************************************** + ... +******************************************************************************/ +int hparsestatline(const char *hdr, const char **rp) +{ + int mjr, mnr; /* HTTP major and minor version. */ + int statcode; /* HTTP status code. */ + const char *p; + + *rp = NULL; + /* The standard format of HTTP-Version is: HTTP/x.y, where x is major + version, and y is minor version. */ + if (strncmp(hdr, "HTTP/", 5) != 0) + return -1; + + hdr += 5; + p = hdr; + + for (mjr = 0; isdigit(*hdr); hdr++) + mjr = 10 * mjr + (*hdr - '0'); + + if (*hdr != '.' || p == hdr) + return -1; + + ++hdr; + p = hdr; + + for (mnr = 0; isdigit(*hdr); hdr++) + mnr = 10 * mnr + (*hdr - '0'); + + if (*hdr != ' ' || p == hdr) + return -1; + + /* Wget will accept only 1.0 and higher HTTP-versions. The value of minor + version can be safely ignored. */ + if (mjr < 1) + return -1; + + /* Skip the space. */ + ++hdr; + if (!(isdigit(*hdr) && isdigit(hdr[1]) && isdigit(hdr[2]))) + return -1; + + statcode = 100 * (*hdr - '0') + 10 * (hdr[1] - '0') + (hdr[2] - '0'); + /* RFC2068 requires a SPC here, even if there is no reason-phrase. As some + servers/CGI are (incorrectly) setup to drop the SPC, we'll be liberal + and allow the status line to end here. */ + if (hdr[3] != ' ') + { + if (!hdr[3]) + *rp = hdr + 3; + else + return -1; + } else + *rp = hdr + 4; + + return statcode; +} + +/****************************************************************************** + Skip LWS (linear white space), if present. Returns number of characters to + skip. +******************************************************************************/ +int hskip_lws(const char *hdr) +{ + int i; + + for (i = 0; + *hdr == ' ' || *hdr == '\t' || *hdr == '\r' || *hdr == '\n'; ++hdr) + ++i; + + return i; +} + +/****************************************************************************** + Return the content length of the document body, if this is Content-length + header, -1 otherwise. +******************************************************************************/ +long hgetlen(const char *hdr) +{ + const int l = 15; /* strlen("content-length:"). */ + long len; + + if (strncasecmp(hdr, "content-length:", l)) + return -1; + + hdr += (l + hskip_lws(hdr + l)); + if (!*hdr) + return -1; + + if (!isdigit(*hdr)) + return -1; + + for (len = 0; isdigit(*hdr); hdr++) + len = 10 * len + (*hdr - '0'); + + return len; +} + +/****************************************************************************** + Return the content-range in bytes, as returned by the server, if this is + Content-range header, -1 otherwise. +******************************************************************************/ +long hgetrange(const char *hdr) +{ + const int l = 14; /* strlen("content-range:"). */ + long len; + + if (strncasecmp(hdr, "content-range:", l)) + return -1; + + hdr += (l + hskip_lws(hdr + l)); + if (!*hdr) + return -1; + + /* Nutscape proxy server sends content-length without "bytes" specifier, + which is a breach of HTTP/1.1 draft. But heck, I must support it... */ + if (!strncasecmp(hdr, "bytes", 5)) + { + hdr += 5; + hdr += hskip_lws(hdr); + if (!*hdr) + return -1; + } + + if (!isdigit(*hdr)) + return -1; + + for (len = 0; isdigit(*hdr); hdr++) + len = 10 * len + (*hdr - '0'); + + return len; +} + +/****************************************************************************** + Returns a malloc-ed copy of the location of the document, if the string hdr + begins with LOCATION_H, or NULL. +******************************************************************************/ +char *hgetlocation(const char *hdr) +{ + const int l = 9; /* strlen("location:"). */ + + if (strncasecmp(hdr, "location:", l)) + return NULL; + + hdr += (l + hskip_lws(hdr + l)); + + return kstrdup(hdr); +} + +/****************************************************************************** + Returns a malloc-ed copy of the last-modified date of the document, if the + hdr begins with LASTMODIFIED_H. +******************************************************************************/ +char *hgetmodified(const char *hdr) +{ + const int l = 14; /* strlen("last-modified:"). */ + + if (strncasecmp(hdr, "last-modified:", l)) + return NULL; + + hdr += (l + hskip_lws(hdr + l)); + + return kstrdup(hdr); +} + +/****************************************************************************** + Returns 0 if the header is accept-ranges, and it contains the word "none", + -1 if there is no accept ranges, 1 is there is accept-ranges and it is not + none. +******************************************************************************/ +int hgetaccept_ranges(const char *hdr) +{ + const int l = 14; /* strlen("accept-ranges:"). */ + + if (strncasecmp(hdr, "accept-ranges:", l)) + return -1; + + hdr += (l + hskip_lws(hdr + l)); + + if (strstr(hdr, "none")) + return 0; + else + return 1; +} + +/****************************************************************************** + ... +******************************************************************************/ +uerr_t http_fetch_headers(connection_t * connection, http_stat_t * hs, + char *command) +{ + uerr_t err; + int num_written, hcount, statcode, all_length; + long contlen, contrange; + char *hdr, *type, *all_headers; + const char *error; + + hs->len = 0L; + hs->contlen = -1; + hs->accept_ranges = -1; + hs->res = -1; + hs->newloc = NULL; + hs->remote_time = NULL; + hs->error = NULL; + + num_written = ksend(connection->data_sock, command, strlen(command), 0, + &connection->xfer_timeout); + if (num_written != strlen(command)) + { + proz_debug(_("Failed writing HTTP request")); + return WRITEERR; + } + + all_headers = NULL; + all_length = 0; + contlen = contrange = -1; + statcode = -1; + type = NULL; + + /* Header-fetching loop. */ + hcount = 0; + + for (;;) + { + ++hcount; + + /* Get the header. */ + err = fetch_next_header(connection->data_sock, &hdr, + &connection->xfer_timeout); + + proz_debug(_("Header = %s"), hdr); + + if (err == HEOF) + { + proz_debug(_("End of file while parsing headers")); + + kfree(hdr); + if (type) + kfree(type); + if (all_headers) + kfree(all_headers); + + return HEOF; + } else if (err == HERR) + { + proz_debug(_("Read error in headers")); + + kfree(hdr); + if (type) + kfree(type); + if (all_headers) + kfree(all_headers); + + return HERR; + } + + /* Exit on empty header. */ + if (!*hdr) + { + kfree(hdr); + break; + } + + /* Check for errors documented in the first header. */ + if (hcount == 1) + { + statcode = hparsestatline(hdr, &error); + hs->statcode = statcode; + + /* Store the descriptive response. */ + if (statcode == -1) /* Malformed request. */ + hs->error = kstrdup(_("UNKNOWN")); + else if (!*error) + hs->error = kstrdup(_("(no description)")); + else + hs->error = kstrdup(error); + } + + if (contlen == -1) + { + contlen = hgetlen(hdr); + hs->contlen = contlen; + } + + /* If the server specified a new location then lets store it. */ + + if (!hs->newloc) + hs->newloc = hgetlocation(hdr); + + if (!hs->remote_time) + hs->remote_time = hgetmodified(hdr); + + if (hs->accept_ranges == -1) + hs->accept_ranges = hgetaccept_ranges(hdr); + + if (!hs->newloc) + hs->newloc = hgetlocation(hdr); + + kfree(hdr); + } + + if (H_20X(statcode)) + return HOK; + + if (H_REDIRECTED(statcode) || statcode == HTTP_MULTIPLE_CHOICES) + { + /* RFC2068 says that in case of the 300 (multiple choices) response, the + server can output a preferred URL through `Location' header; otherwise, + the request should be treated like GET. So, if the location is set, it + will be a redirection; otherwise, just proceed normally. */ + if (statcode == HTTP_MULTIPLE_CHOICES && !hs->newloc) + return HOK; + else + { + if (all_headers) + kfree(all_headers); + if (type) + kfree(type); + return NEWLOCATION; + } + } + + if (statcode == HTTP_UNAUTHORIZED) + return HAUTHREQ; + + if (statcode == HTTP_NOT_FOUND) + return HTTPNSFOD; + + if (statcode == HTTP_INTERNAL) + return INTERNALSERVERR; + + if (statcode == HTTP_NOT_IMPLEMENTED) + return UNKNOWNREQ; + + if (statcode == HTTP_BAD_GATEWAY) + return BADGATEWAY; + + if (statcode == HTTP_UNAVAILABLE) + return SERVICEUNAVAIL; + + if (statcode == HTTP_GATEWAY_TIMEOUT) + return GATEWAYTIMEOUT; + + return HERR; +} + +/****************************************************************************** + ... +******************************************************************************/ +char *get_basic_auth_str(char *user, char *passwd, char *auth_header) +{ + char *p1, *p2, *ret; + int len = strlen(user) + strlen(passwd) + 1; + int b64len = 4 * ((len + 2) / 3); + + p1 = kmalloc(len + 1); + sprintf(p1, "%s:%s", user, passwd); + p2 = kmalloc(b64len + 1); + + /* Encode username:passwd to base64. */ + base64_encode(p1, p2, len); + ret = kmalloc(strlen(auth_header) + b64len + 11); + sprintf(ret, "%s: Basic %s\r\n", auth_header, p2); + + kfree(p1); + kfree(p2); + + return ret; +} + +/****************************************************************************** + ... +******************************************************************************/ +boolean http_use_proxy(connection_t * connection) +{ + return (connection->http_proxy && connection->http_proxy->use_proxy + && connection->http_proxy->proxy_url.url) ? TRUE : FALSE; +} + +/****************************************************************************** + ... +******************************************************************************/ +uerr_t proz_http_get_url_info(connection_t * connection) +{ + uerr_t err; + int remote_port_len; + char *user, *passwd, *www_auth = NULL, *proxy_auth = NULL, + *referer = NULL, *location = NULL, *pragma_no_cache = NULL; + char *request, *remote_port; + netrc_entry *netrc_ent; + + memset(&connection->hs, 0, sizeof(connection->hs)); + + if (http_use_proxy(connection)) + { + connection_show_message(connection, _("Connecting to %s"), + connection->http_proxy->proxy_url.host); + + err = connect_to_server(&connection->data_sock, + connection->http_proxy->proxy_url.host, + connection->http_proxy->proxy_url.port, + &connection->xfer_timeout); + if (err != NOCONERROR) + { + connection_show_message(connection, _("Error connecting to %s"), + connection->http_proxy->proxy_url.host); + return err; + } + } else + { + connection_show_message(connection, _("Connecting to %s"), + connection->u.host); + err = connect_to_server(&connection->data_sock, connection->u.host, + connection->u.port, &connection->xfer_timeout); + if (err != NOCONERROR) + { + connection_show_message(connection, _("Error connecting to %s"), + connection->u.host); + return err; + } + } + + user = connection->u.user; + passwd = connection->u.passwd; + + /* Use .netrc if asked to do so. */ + if (connection->use_netrc == TRUE) + { + netrc_ent = search_netrc(libprozrtinfo.netrc_list, connection->u.host); + + if (netrc_ent != NULL) + { + user = netrc_ent->account; + passwd = netrc_ent->password; + } + } + + user = user ? user : ""; + passwd = passwd ? passwd : ""; + + if (strlen(user) || strlen(passwd)) + { + /* Construct the necessary header. */ + www_auth = get_basic_auth_str(user, passwd, "Authorization"); + proz_debug(_("Authenticating as user %s password %s"), user, passwd); + proz_debug(_("Authentification string=%s"), www_auth); + } else + www_auth = 0; + + if (http_use_proxy(connection)) + { + if (strlen(connection->http_proxy->username) + || strlen(connection->http_proxy->passwd)) + proxy_auth = + get_basic_auth_str(connection->http_proxy->username, + connection->http_proxy->passwd, + "Proxy-Authorization"); + } + + if (connection->u.port == 80) + { + remote_port = NULL; + remote_port_len = 0; + } else + { + remote_port = (char *) alloca(64); + remote_port_len = sprintf(remote_port, ":%d", connection->u.port); + } + + + if (connection->u.referer) + { + referer = (char *) alloca(13 + strlen(connection->u.referer)); + sprintf(referer, "Referer: %s\r\n", connection->u.referer); + } + + /* If we go through a proxy the request for the URL is different */ + if (http_use_proxy(connection)) + { + location = (char *) alloca(strlen(connection->u.url) + 1); + strcpy(location, connection->u.url); + } else + { + location = (char *) alloca(strlen(connection->u.path) + 1); + strcpy(location, connection->u.path); + } + + /*Use no-cache directive for proxy servers? */ + if (http_use_proxy(connection) + && (connection->http_no_cache || connection->attempts > 0)) + { + pragma_no_cache = (char *) alloca(21); + sprintf(pragma_no_cache, "Pragma: no-cache\r\n"); + } + + request = (char *) alloca(strlen(location) + + strlen(connection->user_agent) + + strlen(connection->u.host) + remote_port_len + + (referer ? strlen(referer) : 0) + + (www_auth ? strlen(www_auth) : 0) + + (proxy_auth ? strlen(proxy_auth) : 0) + 64 + + + (pragma_no_cache ? strlen(pragma_no_cache) : + 0)); + + sprintf(request, + "GET %s HTTP/1.0\r\nUser-Agent: %s\r\nHost: %s%s\r\nAccept: */*\r\n%s%s%s%s\r\n", + location, connection->user_agent, connection->u.host, + remote_port ? remote_port : "", + referer ? referer : "", + www_auth ? www_auth : "", proxy_auth ? proxy_auth : "", + pragma_no_cache ? pragma_no_cache : ""); + + proz_debug("HTTP request = %s", request); + + connection_show_message(connection, _("Sending HTTP request")); + err = http_fetch_headers(connection, &connection->hs, request); + + close_sock(&connection->data_sock); + + if (err == HOK) + { + connection->main_file_size = connection->hs.contlen; + if (connection->hs.accept_ranges == 1) + connection->resume_support = TRUE; + else if (connection->hs.accept_ranges == -1) + connection->resume_support = FALSE; + } + + + connection->file_type = REGULAR_FILE; + return err; +} + + +/*Loops for connection->attempts */ +uerr_t http_get_url_info_loop(connection_t * connection) +{ + + pthread_mutex_lock(&connection->access_mutex); + connection->running = TRUE; + pthread_mutex_unlock(&connection->access_mutex); + assert(connection->attempts >= 0); + + do + { + if (connection->attempts > 0 && connection->err != NEWLOCATION) + { + + connection_show_message(connection, + _("Retrying...Attempt %d in %d seconds"), + connection->attempts, + connection->retry_delay.tv_sec); + delay_ms(connection->retry_delay.tv_sec * 1000); + } + + /*Push the handler which will cleanup any sockets that are left open */ + pthread_cleanup_push(cleanup_socks, (void *) connection); + connection->err = proz_http_get_url_info(connection); + /*pop the handler */ + pthread_cleanup_pop(0); + + connection->attempts++; + + switch (connection->err) + { + case HOK: + connection_show_message(connection, _("Successfully got info")); + pthread_mutex_lock(&connection->access_mutex); + connection->running = FALSE; + pthread_mutex_unlock(&connection->access_mutex); + return connection->err; + break; + + case NEWLOCATION: + return connection->err; + break; + + case HTTPNSFOD: + connection_show_message(connection, _("File not found!")); + pthread_mutex_lock(&connection->access_mutex); + connection->running = FALSE; + pthread_mutex_unlock(&connection->access_mutex); + return connection->err; + break; + + default: + connection_show_message(connection, proz_strerror(connection->err)); + break; + } + + } + while ((connection->attempts < connection->max_attempts) + || connection->max_attempts == 0); + + + connection_show_message(connection, + _ + ("I have tried %d attempt(s) and have failed, aborting"), + connection->attempts); + pthread_mutex_lock(&connection->access_mutex); + connection->running = FALSE; + pthread_mutex_unlock(&connection->access_mutex); + return connection->err; +} + + + +/* + I am writing a seperate function to handle FTP proxying through HTTP, I + MHO whoever thought of using HTTP to proxy FTP is a shithead, + its such a PITA ;) + */ + +uerr_t ftp_get_url_info_from_http_proxy(connection_t * connection) +{ + + uerr_t err; + int remote_port_len; + char *user, *passwd, *www_auth = NULL, *proxy_auth = + NULL, *pragma_no_cache = NULL; + + char *request, *remote_port; + netrc_entry *netrc_ent; + + memset(&connection->hs, 0, sizeof(connection->hs)); + + err = connect_to_server(&connection->data_sock, + connection->ftp_proxy->proxy_url.host, + connection->ftp_proxy->proxy_url.port, + &connection->xfer_timeout); + + if (err != NOCONERROR) + { + connection_show_message(connection, _("Error connecting to %s"), + connection->ftp_proxy->proxy_url.host); + return err; + } + + user = connection->u.user; + passwd = connection->u.passwd; + + /* Use .netrc if asked to do so. */ + if (connection->use_netrc == TRUE) + { + netrc_ent = search_netrc(libprozrtinfo.netrc_list, connection->u.host); + + if (netrc_ent != NULL) + { + user = netrc_ent->account; + passwd = netrc_ent->password; + } + } + + user = user ? user : ""; + passwd = passwd ? passwd : ""; + + if (strlen(user) || strlen(passwd)) + { + /* Construct the necessary header. */ + www_auth = get_basic_auth_str(user, passwd, "Authorization"); + proz_debug(_("Authenticating as user %s password %s"), user, passwd); + proz_debug(_("Authentification string=%s"), www_auth); + } else + www_auth = 0; + + if (strlen(connection->ftp_proxy->username) + || strlen(connection->ftp_proxy->passwd)) + proxy_auth = + get_basic_auth_str(connection->ftp_proxy->username, + connection->ftp_proxy->passwd, + "Proxy-Authorization"); + + remote_port = (char *) alloca(64); + remote_port_len = sprintf(remote_port, ":%d", connection->u.port); + + if (http_use_proxy(connection) + && (connection->http_no_cache || connection->attempts > 0)) + { + pragma_no_cache = (char *) alloca(21); + sprintf(pragma_no_cache, "Pragma: no-cache\r\n"); + } + + /*Referrer TAG should not be needed in FTP through HTTP proxy..right */ + + + request = (char *) alloca(strlen(connection->u.url) + + strlen(connection->user_agent) + + strlen(connection->u.host) + remote_port_len + + (www_auth ? strlen(www_auth) : 0) + + (proxy_auth ? strlen(proxy_auth) : 0) + + 64 + + + (pragma_no_cache ? strlen(pragma_no_cache) : + 0)); + + sprintf(request, + "GET %s HTTP/1.0\r\nUser-Agent: %s\r\nHost: %s%s\r\nAccept: */*\r\n%s%s%s\r\n", + connection->u.url, connection->user_agent, connection->u.host, + remote_port, + www_auth ? www_auth : "", proxy_auth ? proxy_auth : "", + pragma_no_cache ? pragma_no_cache : ""); + + proz_debug("HTTP request = %s", request); + + + err = http_fetch_headers(connection, &connection->hs, request); + + close_sock(&connection->data_sock); + + /*Convert the error code to the equivalent FTP one if possible */ + + if (err == HOK) + { + connection->main_file_size = connection->hs.contlen; + if (connection->hs.accept_ranges == 1) + connection->resume_support = TRUE; + else if (connection->hs.accept_ranges == -1) + connection->resume_support = FALSE; + return FTPOK; + } + + + if (err == HAUTHREQ) + return FTPLOGREFUSED; + else if (err == HTTPNSFOD) + return FTPNSFOD; + + + /* connection->file_type = REGULAR_FILE; */ + return FTPERR; + +} diff --git a/libprozilla/src/http.h b/libprozilla/src/http.h new file mode 100644 index 0000000..6026ea1 --- /dev/null +++ b/libprozilla/src/http.h @@ -0,0 +1,60 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* HTTP support. */ + +/* $Id: http.h,v 1.11 2001/06/25 12:30:56 kalum Exp $ */ + + +#ifndef HTTP_H +#define HTTP_H + + +#include "common.h" +#include "url.h" +#include "connection.h" + +#ifdef __cplusplus +extern "C" { +#endif + + int buf_readchar(int fd, char *ret, struct timeval *timeout); + int buf_peek(int fd, char *ret, struct timeval *timeout); + uerr_t fetch_next_header(int fd, char **hdr, struct timeval *timeout); + + int hparsestatline(const char *hdr, const char **rp); + int hskip_lws(const char *hdr); + long hgetlen(const char *hdr); + long hgetrange(const char *hdr); + char *hgetlocation(const char *hdr); + char *hgetmodified(const char *hdr); + int hgetaccept_ranges(const char *hdr); + + uerr_t http_fetch_headers(connection_t * connection, http_stat_t * hs, + char *command); + + char *get_basic_auth_str(char *user, char *passwd, char *auth_header); + + boolean http_use_proxy(connection_t * connection); + uerr_t proz_http_get_url_info(connection_t * connection); + uerr_t http_get_url_info_loop(connection_t * connection); +#ifdef __cplusplus +} +#endif +#endif /* HTTP_H */ diff --git a/libprozilla/src/logfile.c b/libprozilla/src/logfile.c new file mode 100644 index 0000000..7b5bc45 --- /dev/null +++ b/libprozilla/src/logfile.c @@ -0,0 +1,331 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +#include "common.h" +#include "prozilla.h" +#include "misc.h" +#include "logfile.h" + +/*creates the log file and stores the info */ +/*If download is not NULL will store info about the downloads connection allocations to it too.*/ + +int log_create_logfile(int num_connections, int file_size, char *url, + download_t * download) +{ + char buffer[PATH_MAX]; + FILE *fp = NULL; + int i; + logfile lf; + + memset(&lf, 0, sizeof(lf)); + /* + * Compute the name of the logfile + */ + snprintf(buffer, PATH_MAX, "%s/%s%s.log", download->log_dir, + download->u.file, DEFAULT_FILE_EXT); + if (!(fp = fopen(buffer, "wb"))) + { + + /* + * fixme add the error displaing to the main function + */ + download_show_message(download, + _("Error opening file %s for writing: %s"), + buffer, strerror(errno)); + return -1; + } + + lf.num_connections = num_connections; + lf.version = 1000; + lf.got_info = download == NULL ? 1 : 0; + lf.file_size = file_size; + lf.url_len = strlen(url); + + /*Write the logfile header */ + + /* No of connections */ + if (fwrite(&lf, 1, sizeof(lf), fp) != sizeof(lf)) + { + download_show_message(download, _("Error writing to file %s: %s"), + buffer, strerror(errno)); + fclose(fp); + return -1; + } + + /* Now we write the url to it */ + + if (fwrite(url, 1, strlen(url), fp) != strlen(url)) + { + download_show_message(download, _("Error writing to file %s: %s"), + buffer, strerror(errno)); + fclose(fp); + return -1; + } + + /*Now we write each of the connections start and end positions to the file if download is not null */ + + if (download != NULL) + { + for (i = 0; i < download->num_connections; i++) + { + + pthread_mutex_lock(&download->pconnections[i]->access_mutex); + + if (fwrite + (&download->pconnections[i]->local_startpos, 1, + sizeof(download->pconnections[i]->local_startpos), + fp) != sizeof(download->pconnections[i]->local_startpos)) + { + + pthread_mutex_unlock(&download->pconnections[i]->access_mutex); + download_show_message(download, _("Error writing to file %s: %s"), + buffer, strerror(errno)); + fclose(fp); + return -1; + } + pthread_mutex_unlock(&download->pconnections[i]->access_mutex); + + + pthread_mutex_lock(&download->pconnections[i]->access_mutex); + if (fwrite + (&download->pconnections[i]->orig_remote_startpos, 1, + sizeof(download->pconnections[i]->orig_remote_startpos), + fp) != sizeof(download->pconnections[i]->orig_remote_startpos)) + { + + pthread_mutex_unlock(&download->pconnections[i]->access_mutex); + download_show_message(download, _("Error writing to file %s: %s"), + buffer, strerror(errno)); + fclose(fp); + return -1; + } + + pthread_mutex_unlock(&download->pconnections[i]->access_mutex); + + + pthread_mutex_lock(&download->pconnections[i]->access_mutex); + if (fwrite + (&download->pconnections[i]->remote_endpos, 1, + sizeof(download->pconnections[i]->remote_endpos), + fp) != sizeof(download->pconnections[i]->remote_endpos)) + { + pthread_mutex_unlock(&download->pconnections[i]->access_mutex); + download_show_message(download, _("Error writing to file %s: %s"), + buffer, strerror(errno)); + fclose(fp); + return -1; + } + pthread_mutex_unlock(&download->pconnections[i]->access_mutex); + + + pthread_mutex_lock(&download->pconnections[i]->access_mutex); + + if (fwrite + (&download->pconnections[i]->remote_bytes_received, 1, + sizeof(download->pconnections[i]->remote_bytes_received), + fp) != sizeof(download->pconnections[i]->remote_bytes_received)) + { + + pthread_mutex_unlock(&download->pconnections[i]->access_mutex); + download_show_message(download, _("Error writing to file %s: %s"), + buffer, strerror(errno)); + fclose(fp); + return -1; + } + pthread_mutex_unlock(&download->pconnections[i]->access_mutex); + + } + + } + + fclose(fp); + return 1; +} + +/* returns 1 if the logfile exists, 0 if it doesn't and -1 on error*/ +int proz_log_logfile_exists(download_t * download) +{ + char buffer[PATH_MAX]; + int ret; + struct stat st_buf; + + /* + * Compute the name of the logfile + */ + snprintf(buffer, PATH_MAX, "%s/%s%s.log", download->log_dir, + download->u.file, DEFAULT_FILE_EXT); + + ret = stat(buffer, &st_buf); + if (ret == -1) + { + if (errno == ENOENT) + return 0; + else + return -1; + } else + return 1; +} + +/* delete the log file */ +int proz_log_delete_logfile(download_t * download) +{ + char buffer[PATH_MAX]; + int ret; + + snprintf(buffer, PATH_MAX, "%s/%s%s.log", download->log_dir, + download->u.file, DEFAULT_FILE_EXT); + + ret = unlink(buffer); + if (ret == -1) + { + if (errno == ENOENT) + { + download_show_message(download, _("logfile doesn't exist")); + return 1; + } else + { + download_show_message(download, "Error: Unable to delete the logfile: %s", strerror(errno)); + return -1; + } + } + + return 1; +} + +/* Read the logfile into the logfile structure */ + +int proz_log_read_logfile(logfile * lf, download_t * download, + boolean load_con_info) +{ + char buffer[PATH_MAX]; + FILE *fp = NULL; + int i; + + /* + * Compute the name of the logfile + */ + snprintf(buffer, PATH_MAX, "%s/%s%s.log", download->log_dir, + download->u.file, DEFAULT_FILE_EXT); + + if (!(fp = fopen(buffer, "rb"))) + { + /* + * fixme add the error displaing to the main function + */ + download_show_message(download, + _("Error opening file %s for reading: %s"), + buffer, strerror(errno)); + return -1; + } + + + if (fread(lf, 1, sizeof(logfile), fp) != sizeof(logfile)) + { + fclose(fp); + return -1; + } + + lf->url = kmalloc(lf->url_len + 1); + + if (fread(lf->url, 1, lf->url_len, fp) != lf->url_len) + { + fclose(fp); + return -1; + } + + lf->url[lf->url_len] = 0; + + + if (load_con_info == TRUE) + { + for (i = 0; i < lf->num_connections; i++) + { + + + + proz_debug("value before= %d", download->pconnections[i]->local_startpos); + + if (fread + (&download->pconnections[i]->local_startpos, 1, + sizeof(download->pconnections[i]->local_startpos), + fp) != sizeof(download->pconnections[i]->local_startpos)) + { + download_show_message(download, + _("Error reading from file %s: %s"), buffer, + strerror(errno)); + fclose(fp); + return -1; + } + + proz_debug("value after= %d", download->pconnections[i]->local_startpos); + + proz_debug("remote_pos before= %d", download->pconnections[i]->orig_remote_startpos); + if (fread + (&download->pconnections[i]->orig_remote_startpos, 1, + sizeof(download->pconnections[i]->orig_remote_startpos), + fp) != sizeof(download->pconnections[i]->orig_remote_startpos)) + { + download_show_message(download, + _("Error reading from file %s: %s"), buffer, + strerror(errno)); + fclose(fp); + return -1; + } + + proz_debug("remote_pos after= %d", download->pconnections[i]->orig_remote_startpos); + + + proz_debug("remote_edndpos before= %d", download->pconnections[i]->remote_endpos); + if (fread + (&download->pconnections[i]->remote_endpos, 1, + sizeof(download->pconnections[i]->remote_endpos), + fp) != sizeof(download->pconnections[i]->remote_endpos)) + { + download_show_message(download, + _("Error reading from file %s: %s"), buffer, + strerror(errno)); + fclose(fp); + return -1; + } + + + proz_debug("remote_endpos after= %d", download->pconnections[i]->remote_endpos); + proz_debug("remote_bytes_received before= %d", download->pconnections[i]->remote_bytes_received); + if (fread + (&download->pconnections[i]->remote_bytes_received, 1, + sizeof(download->pconnections[i]->remote_bytes_received), + fp) != sizeof(download->pconnections[i]->remote_bytes_received)) + { + download_show_message(download, + _("Error reading from file %s: %s"), buffer, + strerror(errno)); + fclose(fp); + return -1; + } + + proz_debug("remote_bytes_received after= %d", download->pconnections[i]->remote_bytes_received); + + } + + } + + + fclose(fp); + return 1; +} diff --git a/libprozilla/src/logfile.h b/libprozilla/src/logfile.h new file mode 100644 index 0000000..582b0c5 --- /dev/null +++ b/libprozilla/src/logfile.h @@ -0,0 +1,41 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +#ifndef LOGFILE_H +#define LOGFILE_H + +#include "common.h" +#include "prozilla.h" +#include "download.h" + + +#ifdef __cplusplus +extern "C" { +#endif + + + int log_create_logfile(int num_connections, int file_size, char *url, + download_t * download); + + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/libprozilla/src/main.c b/libprozilla/src/main.c new file mode 100644 index 0000000..9edab94 --- /dev/null +++ b/libprozilla/src/main.c @@ -0,0 +1,227 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* The main file. */ + +/* $Id: main.c,v 1.40 2001/09/27 22:52:05 kalum Exp $ */ + + +#include "common.h" +#include "prozilla.h" +#include "misc.h" +#include "getopt.h" +#include "debug.h" + + + +static struct option long_opts[] = { + /* { name has_arg *flag val } */ + {"no-netrc", no_argument, NULL, 'n'}, + {"use-port", no_argument, NULL, 129}, + {"libdebug", no_argument, NULL, 130}, + {NULL, 0, NULL, 0} +}; + +libprozinfo libprozrtinfo; + + +/****************************************************************************** + Initialize the library. +******************************************************************************/ +int proz_init(int argc, char **argv) +{ + int c; + + /* Gettext stuff */ + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + memset(&libprozrtinfo, 0, sizeof(libprozrtinfo)); + libprozrtinfo.argc = argc; + libprozrtinfo.argv = argv; + libprozrtinfo.debug_mode = TRUE; + libprozrtinfo.ftp_use_pasv = TRUE; + libprozrtinfo.ftp_default_user = kstrdup(DEFAULT_FTP_USER); + libprozrtinfo.ftp_default_passwd = kstrdup(DEFAULT_FTP_PASSWD); + libprozrtinfo.use_netrc = TRUE; + libprozrtinfo.ftp_proxy = 0; + libprozrtinfo.http_proxy = 0; + /* 3 minutes should be enough for the default timeout */ + libprozrtinfo.conn_timeout.tv_sec = 120; + libprozrtinfo.conn_timeout.tv_usec = 0; + /* 15 secs for the default retry_delay */ + libprozrtinfo.conn_retry_delay.tv_sec = 15; + libprozrtinfo.conn_retry_delay.tv_usec = 0; + /*Default: try infinitely */ + libprozrtinfo.max_attempts = 0; + /*No no-cache directive is given */ + libprozrtinfo.http_no_cache = FALSE; + /*default is unlimited (0) bandwith */ + libprozrtinfo.max_bps_per_dl = 0; + + + /* Parse the options and set the relevant ones for the library. */ + while ((c = getopt_long(argc, argv, "", long_opts, NULL)) != EOF) + { + switch (c) + { + case 129: + libprozrtinfo.debug_mode = TRUE; + break; + default: + continue; + } + } + + /* TODO Get home directory and read .netrc. */ + + libprozrtinfo.home_dir = home_dir(); + + if (libprozrtinfo.home_dir != NULL) + { + char *netrc_file = kmalloc(strlen(libprozrtinfo.home_dir) + + strlen(".netrc") + 2); + + sprintf(netrc_file, "%s/%s", libprozrtinfo.home_dir, ".netrc"); + + libprozrtinfo.netrc_list = parse_netrc(netrc_file); + } + + libprozrtinfo.dl_dir = kstrdup("."); + libprozrtinfo.output_dir = kstrdup("."); + libprozrtinfo.log_dir = kstrdup("."); + debug_init(); + return 1; +} + +/****************************************************************************** + ... +******************************************************************************/ +void proz_shutdown(void) +{ + kfree(libprozrtinfo.http_proxy); + kfree(libprozrtinfo.ftp_proxy); + kfree(libprozrtinfo.dl_dir); + kfree(libprozrtinfo.output_dir); + kfree(libprozrtinfo.log_dir); +} + +/****************************************************************************** + Abort with an error message. +******************************************************************************/ +void proz_die(const char *format, ...) +{ + va_list args; + char message[MAX_MSG_SIZE + 1]; + + va_start(args, format); + vsnprintf(message, MAX_MSG_SIZE, format, args); + va_end(args); + + printf("%s\n", message); + proz_shutdown(); + + exit(EXIT_FAILURE); +} + +/****************************************************************************** + ... +******************************************************************************/ +void proz_set_http_proxy(proxy_info * proxy) +{ + if (libprozrtinfo.http_proxy) + kfree(libprozrtinfo.http_proxy); + libprozrtinfo.http_proxy = kmalloc(sizeof(proxy_info)); + memcpy(libprozrtinfo.http_proxy, proxy, sizeof(proxy_info)); +} + +/****************************************************************************** + ... +******************************************************************************/ +void proz_set_ftp_proxy(proxy_info * proxy) +{ + if (libprozrtinfo.ftp_proxy) + kfree(libprozrtinfo.ftp_proxy); + libprozrtinfo.ftp_proxy = kmalloc(sizeof(proxy_info)); + memcpy(libprozrtinfo.ftp_proxy, proxy, sizeof(proxy_info)); +} + +void proz_use_http_proxy(boolean use) +{ + if (libprozrtinfo.http_proxy) + libprozrtinfo.http_proxy->use_proxy = use; +} + +void proz_use_ftp_proxy(boolean use) +{ + if (libprozrtinfo.ftp_proxy) + libprozrtinfo.ftp_proxy->use_proxy = use; +} + +void proz_set_connection_timeout(struct timeval *timeout) +{ + libprozrtinfo.conn_timeout.tv_sec = timeout->tv_sec; + libprozrtinfo.conn_timeout.tv_usec = timeout->tv_usec; +} + + +void proz_set_connection_retry_delay(struct timeval *delay) +{ + libprozrtinfo.conn_retry_delay.tv_sec = delay->tv_sec; + libprozrtinfo.conn_retry_delay.tv_usec = delay->tv_usec; +} + + +void proz_set_download_dir(char *dir) +{ + assert(dir != NULL); + + if (libprozrtinfo.dl_dir) + kfree(libprozrtinfo.dl_dir); + + libprozrtinfo.dl_dir = kstrdup(dir); + +} + +void proz_set_logfile_dir(char *dir) +{ + assert(dir != NULL); + if (libprozrtinfo.log_dir) + kfree(libprozrtinfo.log_dir); + + libprozrtinfo.log_dir = kstrdup(dir); +} + +void proz_set_output_dir(char *dir) +{ + assert(dir != NULL); + + if (libprozrtinfo.output_dir) + kfree(libprozrtinfo.output_dir); + + libprozrtinfo.output_dir = kstrdup(dir); +} + + +char *proz_get_libprozilla_version() +{ + + return strdup(VERSION); +} diff --git a/libprozilla/src/misc.c b/libprozilla/src/misc.c new file mode 100644 index 0000000..8a15a3f --- /dev/null +++ b/libprozilla/src/misc.c @@ -0,0 +1,527 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* Miscellaneous routines. */ + +/* $Id: misc.c,v 1.31 2001/09/23 01:39:16 kalum Exp $ */ + + +#include "common.h" +#include "prozilla.h" +#include "misc.h" +#include "debug.h" + + +void cleanup_httpsocks(connection_t * connection); +void cleanup_ftpsocks(connection_t * connection); + +/****************************************************************************** + Allocates size bytes of memory. If size is 0 it returns NULL. If there is + not enough memory the program quits with an error message. +******************************************************************************/ +void *kmalloc(size_t size) +{ + void *ret; + + if (size == 0) + return NULL; + + ret = malloc(size); + + if (ret == NULL) + proz_die(_("Failed to malloc() %lu bytes."), size); + + return ret; +} + +/****************************************************************************** + A wrapper for realloc() which aborts if not enough memory is present. +******************************************************************************/ +void *krealloc(void *ptr, size_t new_size) +{ + void *ret; + + ret = realloc(ptr, new_size); + + if (!ret) + proz_die(_("Failed to realloc() %lu bytes."), new_size); + + return ret; +} + +/****************************************************************************** + A wrapper for free() which handles NULL pointers. +******************************************************************************/ +void kfree(void *ptr) +{ + if (ptr != NULL) + free(ptr); +} + +/****************************************************************************** + A wrapper for strdup() which aborts if not enough memory is present. +******************************************************************************/ +char *kstrdup(const char *str) +{ + char *ret = strdup(str); + + if (!ret) + proz_die(_("Not enough memory to continue: strdup() failed.")); + + return ret; +} + +/****************************************************************************** + Checks whether the specified string is a number or digit. +******************************************************************************/ +boolean is_number(const char *str) +{ + unsigned int i = 0; + + if (str[0] == '\0') + return FALSE; + + while (str[i] != '\0') + { + if (!isdigit(str[i])) + return FALSE; + i++; + } + return TRUE; +} + +/****************************************************************************** + How many digits are in a long integer? +******************************************************************************/ +int numdigit(long a) +{ + int res; + + for (res = 1; (a /= 10) != 0; res++) + ; + + return res; +} + +/****************************************************************************** + Copy the string formed by two pointers (one on the beginning, other on the + char after the last char) to a new, malloc()-ed location. 0-terminate it. +******************************************************************************/ +char *strdupdelim(const char *beg, const char *end) +{ + char *res; + + res = kmalloc(end - beg + 1); + memcpy(res, beg, end - beg); + res[end - beg] = '\0'; + return res; +} + +/****************************************************************************** + Print a long integer to the string buffer. The digits are first written in + reverse order (the least significant digit first), and are then reversed. +******************************************************************************/ +void prnum(char *where, long num) +{ + char *p; + int i = 0, l; + char c; + + if (num < 0) + { + *where++ = '-'; + num = -num; + } + + p = where; + + /* Print the digits to the string. */ + do + { + *p++ = num % 10 + '0'; + num /= 10; + } + while (num); + + /* And reverse them. */ + l = p - where - 1; + for (i = l / 2; i >= 0; i--) + { + c = where[i]; + where[i] = where[l - i]; + where[l - i] = c; + } + where[l + 1] = '\0'; +} + +/****************************************************************************** + Extracts a numurical argument from an option, when it has been specified for + example as -l=3 or -l3. Returns 1 on success or 0 on error (non numerical + argument etc). +******************************************************************************/ +int setargval(char *optstr, int *num) +{ + if (*optstr == '=') + { + if (is_number(optstr + 1)) + { + *num = atoi(optstr + 1); + return 1; + } else + return 0; + } else + { + if (is_number(optstr)) + { + *num = atoi(optstr); + return 1; + } else + return 0; + } + +} + +/****************************************************************************** + Encode the given string to base64 format and place it into store. store will + be 0-terminated, and must point to a writable buffer of at least + 1+BASE64_LENGTH(length) bytes. Note: Routine stolen from wget (grendel). +******************************************************************************/ +void base64_encode(const char *s, char *store, int length) +{ + /* Conversion table. */ + char tbl[64] = { + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', + 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', + 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', + 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', + 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', + 'w', 'x', 'y', 'z', '0', '1', '2', '3', + '4', '5', '6', '7', '8', '9', '+', '/' + }; + + int i; + unsigned char *p = (unsigned char *) store; + + /* Transform the 3x8 bits to 4x6 bits, as required by base64. */ + for (i = 0; i < length; i += 3) + { + *p++ = tbl[s[0] >> 2]; + *p++ = tbl[((s[0] & 3) << 4) + (s[1] >> 4)]; + *p++ = tbl[((s[1] & 0xf) << 2) + (s[2] >> 6)]; + *p++ = tbl[s[2] & 0x3f]; + s += 3; + } + + /* Pad the result if necessary... */ + if (i == length + 1) + *(p - 1) = '='; + else if (i == length + 2) + *(p - 1) = *(p - 2) = '='; + /* ...and zero-terminate it. */ + *p = '\0'; +} + +/****************************************************************************** + Return the user's home directory (strdup-ed), or NULL if none is found. +******************************************************************************/ +char *home_dir(void) +{ + char *home = getenv("HOME"); + + if (home == NULL) + { + /* If $HOME is not defined, try getting it from the passwd file. */ + struct passwd *pwd = getpwuid(getuid()); + if (!pwd || !pwd->pw_dir) + return NULL; + home = pwd->pw_dir; + } + + return home ? kstrdup(home) : NULL; +} + +/****************************************************************************** + Subtract the `struct timeval' values X and Y, storing the result in RESULT. + Return 1 if the difference is negative, otherwise 0. +******************************************************************************/ +int proz_timeval_subtract(struct timeval *result, struct timeval *x, + struct timeval *y) +{ + + /* Perform the carry for the later subtraction by updating Y. */ + if (x->tv_usec < y->tv_usec) + { + int nsec = (y->tv_usec - x->tv_usec) / 1000000 + 1; + y->tv_usec -= 1000000 * nsec; + y->tv_sec += nsec; + } + + if (x->tv_usec - y->tv_usec > 1000000) + { + int nsec = (x->tv_usec - y->tv_usec) / 1000000; + y->tv_usec += 1000000 * nsec; + y->tv_sec -= nsec; + } + + /* Compute the time remaining to wait. `tv_usec' is certainly positive. */ + result->tv_sec = x->tv_sec - y->tv_sec; + result->tv_usec = x->tv_usec - y->tv_usec; + + /* Return 1 if result is negative. */ + return x->tv_sec < y->tv_sec; +} + +/****************************************************************************** + Wait for 'ms' milliseconds. +******************************************************************************/ +void delay_ms(int ms) +{ + struct timeval tv_delay; + + memset(&tv_delay, 0, sizeof(tv_delay)); + + tv_delay.tv_sec = ms / 1000; + tv_delay.tv_usec = (ms * 1000) % 1000000; + + if (select(0, (fd_set *) 0, (fd_set *) 0, (fd_set *) 0, &tv_delay) < 0) + proz_debug(_("Warning: Unable to delay")); +} + + +/*Closes a socket and zeroes the socket before returning */ +int close_sock(int *sock) +{ + + int retval = close(*sock); + *sock = 0; + return retval; +} + +/*Returns a string representation of a prozilla errror */ + +char *proz_strerror(uerr_t error) +{ + + switch (error) + { + + case HOSTERR: + return _("Unable to lookup hostname"); + case CONSOCKERR: + return _("Unable to create socket"); + case CONERROR: + return _("Error occured while connecting"); + case CONREFUSED: + return _("The connection attempt was refused"); + case ACCEPTERR: + return _("Error while accepting the connection"); + case BINDERR: + return _("Error while Binding socket"); + case LISTENERR: + return _("Error while listening"); + case SERVERCLOSECONERR: + return _("The connection was reset/closed by the peer"); + case URLUNKNOWN: + return _("The URL Protocol was unknown"); + case URLBADPORT: + return _("The port specified in the URL is not valid!"); + case URLBADHOST: + return _("The Hostname specified in the URL is not valid!"); + case URLBADPATTERN: + return _("The Pattern specified in the URL does not look valid!"); + case HEOF: + return _("End of file reached in HTTP connection"); + case HERR: + return _("Error occured in HTTP data transfer"); + case HAUTHREQ: + return _("Authentification is required to access this resource"); + case HAUTHFAIL: + return _("Failed to Authenticate with host!"); + case HTTPNSFOD: + return _("The URL was not found on the host!"); + case FTPLOGREFUSED: + return _("The host disallowed the login attempt"); + case FTPPORTERR: + return _("The PORT request was rejected by the server"); + case FTPNSFOD: + return _("The object file/dir was not found on the host!"); + case FTPUNKNOWNTYPE: + return _("The TYPE specified in not known by the FTP server!"); + case FTPUNKNOWNCMD: + return _("The command is not known by the FTP server!"); + case FTPSIZEFAIL: + return _("The SIZE command failed"); + case FTPERR: + return _("Error occured in FTP data transfer"); + case FTPRESTFAIL: + return _("The REST command failed"); + case FTPACCDENIED: + return _("The peer did not allow access"); + case FTPPWDERR: + return _("The host rejected the password"); + case FTPPWDFAIL: + return _("The host rejected the password"); + case FTPINVPASV: + return _("The PASV (passive mode) was not supported the host"); + case FTPNOPASV: + return _("The host does not support PASV (passive mode) transfers"); + case FTPCONREFUSED: + return _("The connection attempt was refused"); + case FTPCWDFAIL: + return _("Failed to (CWD)change to the directory"); + case FTPSERVCLOSEDATLOGIN: + return + _ + ("The host said the requested service was unavailable and closed the control connection"); + case CONPORTERR: + return _("getsockname failed!"); + + case GATEWAYTIMEOUT: + return + _ + ("The server, while acting as a gateway or proxy, received an invalid response from the upstream server it accessed in attempting to fulfill the request"); + + case SERVICEUNAVAIL: + return + _ + ("The server is currently unable to handle the request due to a temporary overloading or maintenance of the server."); + + case BADGATEWAY: + return + _ + ("The server, while acting as a gateway or proxy, received an invalid response from the upstream server it accessed in attempting to fulfill the request"); + + case INTERNALSERVERR: + return + _ + ("The server encountered an unexpected condition which prevented it from fulfilling the request."); + + case UNKNOWNREQ: + return + _ + ("The server does not support the functionality required to fulfill the request."); + + case FOPENERR: + return _("Error while opening file"); + case FWRITEERR: + return _("Error while writing to file"); + + case DLABORTED: + return _("The Download was aborted"); + case DLLOCALFATAL: + return _("The Download encountered a local fatal error"); + case CANTRESUME: + return _("Error: Resuming this connection is not possible"); + case READERR: + return _("Error while reading data from socket"); + case WRITEERR: + return _("Error while writing data to socket"); + case PROXERR: + return _("Error while Proxying"); + case FILEISDIR: + return _("The location is a directory"); + + default: + return _("Unknown/Unsupported error code"); + } + +} + +/* Cleanup handler which will be popped and which will be called when the thread is cancelled, it make sure that there will be no sockets left open if the thread is cancelled prematurely +*/ +#include "ftp.h" + +void cleanup_socks(void *cdata) +{ + connection_t *connection = (connection_t *) cdata; + + switch (connection->u.proto) + { + case URLHTTP: + cleanup_httpsocks(connection); + break; + case URLFTP: + if (ftp_use_proxy(connection) + && connection->ftp_proxy->type == HTTPPROXY) + { + /* We have to cleanup the http socks instead + if we are going through a http proxy */ + cleanup_httpsocks(connection); + } else + cleanup_ftpsocks(connection); + break; + default: + proz_die(_("Error: unsupported protocol")); + } +} + + + +void cleanup_ftpsocks(connection_t * connection) +{ + int flags; + + proz_debug("in clean ftp sock\n"); + + + if (connection->data_sock > 0) + { + flags = fcntl(connection->data_sock, F_GETFD, 0); + if (flags == -1) + { + proz_debug("data sock invalid\n"); + } else + close_sock(&connection->data_sock); + } + + if (connection->ctrl_sock > 0) + { + flags = fcntl(connection->ctrl_sock, F_GETFD, 0); + if (flags == -1) + { + proz_debug("control sock invalid\n"); + } else + close_sock(&connection->ctrl_sock); + } + +} + + +void cleanup_httpsocks(connection_t * connection) +{ + int flags; + + proz_debug("in clean http sock\n"); + + if (connection->data_sock > 0) + { + flags = fcntl(connection->data_sock, F_GETFD, 0); + if (flags == -1) + { + proz_debug("sock invalid\n"); + } else + close(connection->data_sock); + } + +} + + + + diff --git a/libprozilla/src/misc.h b/libprozilla/src/misc.h new file mode 100644 index 0000000..cb9dfe7 --- /dev/null +++ b/libprozilla/src/misc.h @@ -0,0 +1,50 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* Miscellaneous routines. */ + +/* $Id: misc.h,v 1.25 2001/09/02 23:29:16 kalum Exp $ */ + + +#ifndef MISC_H +#define MISC_H + + +#include "common.h" +#include "prozilla.h" + +void *kmalloc(size_t size); +void kfree(void *ptr); +void *krealloc(void *ptr, size_t new_size); +char *kstrdup(const char *str); + +boolean is_number(const char *str); +int numdigit(long a); +char *strdupdelim(const char *beg, const char *end); +void prnum(char *where, long num); + +int setargval(char *optstr, int *num); +void base64_encode(const char *s, char *store, int length); +char *home_dir(void); + +void delay_ms(int ms); +int close_sock(int *sock); +void cleanup_socks(void *cdata); + +#endif /* MISC_H */ diff --git a/libprozilla/src/netrc.c b/libprozilla/src/netrc.c new file mode 100644 index 0000000..ea8bd39 --- /dev/null +++ b/libprozilla/src/netrc.c @@ -0,0 +1,293 @@ +/* netrc.c -- parse the .netrc file to get hosts, accounts, and passwords + + Gordon Matzigkeit , 1996 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +/* Slightly modified for libprozilla, by Grendel . */ + +/* $Id: netrc.c,v 1.17 2001/08/09 23:35:26 kalum Exp $ */ + + +#include "common.h" +#include "netrc.h" +#include "misc.h" + + +#define POPBUFSIZE BUFSIZ + +/****************************************************************************** + Maybe add NEWENTRY to the account information list, LIST. NEWENTRY is + set to a ready-to-use netrc_entry, in any event. +******************************************************************************/ +static void maybe_add_to_list(netrc_entry ** newentry, netrc_entry ** list) +{ + netrc_entry *a, *l; + a = *newentry; + l = *list; + + /* We need an account name in order to add the entry to the list. */ + if (a && !a->account) + { + /* Free any allocated space. */ + if (a->host) + kfree(a->host); + if (a->password) + kfree(a->password); + } else + { + if (a) + { + /* Add the current machine into our list. */ + a->next = l; + l = a; + } + + /* Allocate a new netrc_entry structure. */ + a = kmalloc(sizeof(netrc_entry)); + } + + /* Zero the structure, so that it is ready to use. */ + memset(a, 0, sizeof(*a)); + + /* Return the new pointers. */ + *newentry = a; + *list = l; + return; +} + +/****************************************************************************** + Parse FILE as a .netrc file (as described in ftp(1)), and return a list of + entries. NULL is returned if the file could not be parsed. +******************************************************************************/ +netrc_entry *parse_netrc(char *file) +{ + FILE *fp; + char buf[POPBUFSIZE + 1], *p, *tok; + const char *premature_token; + netrc_entry *current, *retval; + int ln; + + /* The latest token we've seen in the file. */ + enum { + tok_nothing, tok_account, tok_login, tok_macdef, tok_machine, + tok_password + } last_token = tok_nothing; + + current = retval = NULL; + + fp = fopen(file, "r"); + if (!fp) + { + /* Just return NULL if we can't open the file. */ + return NULL; + } + + /* Initialize the file data. */ + ln = 0; + premature_token = NULL; + + /* While there are lines in the file... */ + while (fgets(buf, POPBUFSIZE, fp)) + { + ln++; + + /* Strip trailing CRLF. */ + for (p = buf + strlen(buf) - 1; (p >= buf) && isspace((unsigned) *p); + p--) + *p = '\0'; + + /* Parse the line. */ + p = buf; + + /* If the line is empty... */ + if (!*p) + { + if (last_token == tok_macdef) + last_token = tok_nothing; /* End of macro. */ + else + continue; /* Otherwise ignore it. */ + } + + /* If we are defining macros, then skip parsing the line. */ + while (*p && last_token != tok_macdef) + { + char quote_char = 0; + char *pp; + + /* Skip any whitespace. */ + while (*p && isspace((unsigned) *p)) + p++; + + /* Discard end-of-line comments. */ + if (*p == '#') + break; + + tok = pp = p; + + /* Find the end of the token. */ + while (*p && (quote_char || !isspace((unsigned) *p))) + { + if (quote_char) + { + if (quote_char == *p) + { + quote_char = 0; + p++; + } else + { + *pp = *p; + p++; + pp++; + } + } else + { + if (*p == '"' || *p == '\'') + quote_char = *p; + else + { + *pp = *p; + pp++; + } + p++; + } + } + + /* Null-terminate the token, if it isn't already. */ + if (*p) + *p++ = '\0'; + *pp = 0; + + switch (last_token) + { + case tok_login: + if (current) + current->account = kstrdup(tok); + else + premature_token = "login"; + break; + + case tok_machine: + /* Start a new machine entry. */ + maybe_add_to_list(¤t, &retval); + current->host = kstrdup(tok); + break; + + case tok_password: + if (current) + current->password = kstrdup(tok); + else + premature_token = "password"; + break; + + /* We handle most of tok_macdef above. */ + case tok_macdef: + if (!current) + premature_token = "macdef"; + break; + + /* We don't handle the account keyword at all. */ + case tok_account: + if (!current) + premature_token = "account"; + break; + + /* We handle tok_nothing below this switch. */ + case tok_nothing: + break; + } + + if (premature_token) + { + fprintf(stderr, + _("%s:%d: warning: found \"%s\" before any host names\n"), + file, ln, premature_token); + premature_token = NULL; + } + + if (last_token != tok_nothing) + /* We got a value, so reset the token state. */ + last_token = tok_nothing; + else + { + /* Fetch the next token. */ + if (!strcmp(tok, "default")) + maybe_add_to_list(¤t, &retval); + else if (!strcmp(tok, "login")) + last_token = tok_login; + else if (!strcmp(tok, "user")) + last_token = tok_login; + else if (!strcmp(tok, "macdef")) + last_token = tok_macdef; + else if (!strcmp(tok, "machine")) + last_token = tok_machine; + else if (!strcmp(tok, "password")) + last_token = tok_password; + else if (!strcmp(tok, "passwd")) + last_token = tok_password; + else if (!strcmp(tok, "account")) + last_token = tok_account; + else + fprintf(stderr, _("%s:%d: warning: unknown token \"%s\"\n"), + file, ln, tok); + } + } + } + + fclose(fp); + + /* Finalize the last machine entry we found. */ + maybe_add_to_list(¤t, &retval); + kfree(current); + + /* Reverse the order of the list so that it appears in file order. */ + current = retval; + retval = NULL; + while (current) + { + netrc_entry *saved_reference; + + /* Change the direction of the pointers. */ + saved_reference = current->next; + current->next = retval; + + /* Advance to the next node. */ + retval = current; + current = saved_reference; + } + + return retval; +} + +/****************************************************************************** + Return the netrc entry from LIST corresponding to HOST. NULL is returned if + no such entry exists. +******************************************************************************/ +netrc_entry *search_netrc(netrc_entry * list, const char *host) +{ + /* Look for the HOST in LIST. */ + while (list) + { + if (!list->host) + break; /* We hit the default entry. */ + else if (!strcmp(list->host, host)) + break; /* We found a matching entry. */ + + list = list->next; + } + + /* Return the matching entry, or NULL. */ + return list; +} diff --git a/libprozilla/src/netrc.h b/libprozilla/src/netrc.h new file mode 100644 index 0000000..8766c06 --- /dev/null +++ b/libprozilla/src/netrc.h @@ -0,0 +1,66 @@ +/* netrc.h -- declarations for netrc.c + Copyright (C) 1996, Free Software Foundation, Inc. + Gordon Matzigkeit , 1996 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +/* $Id: netrc.h,v 1.11 2001/05/30 15:01:40 kalum Exp $ */ + + +#ifndef NETRC_H +#define NETRC_H + + +#include "common.h" + + +#undef __BEGIN_DECLS +#undef __END_DECLS + +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* Empty. */ +# define __END_DECLS /* Empty. */ +#endif + +#undef __P +#if defined (__STDC__) || defined (_AIX) || (defined (__mips) && defined (_SYSTYPE_SVR4)) || defined(WIN32) || defined(__cplusplus) +# define __P(protos) protos +#else +# define __P(protos) () +#endif + +/* The structure used to return account information from the .netrc. */ +typedef struct _netrc_entry { + /* The exact host name given in the .netrc, NULL if default. */ + char *host; + + /* The name of the account. */ + char *account; + + /* Password for the account (NULL, if none). */ + char *password; + + /* Pointer to the next entry in the list. */ + struct _netrc_entry *next; +} netrc_entry; + +__BEGIN_DECLS netrc_entry *parse_netrc __P((char *file)); +netrc_entry *search_netrc __P((netrc_entry * list, const char *host)); + +__END_DECLS +#endif /* NETRC_H */ diff --git a/libprozilla/src/ping.c b/libprozilla/src/ping.c new file mode 100644 index 0000000..e5b7e7e --- /dev/null +++ b/libprozilla/src/ping.c @@ -0,0 +1,318 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + + + +#include "common.h" +#include "prozilla.h" +#include "connect.h" +#include "misc.h" +#include "url.h" +#include "netrc.h" +#include "debug.h" +#include "ping.h" + + + +#define TCP_PING_PACKSIZE 3 + +uerr_t tcp_ping(ping_t * ping_data) +{ + unsigned int portnum; + int status, noblock, flags; + struct sockaddr_in server; + struct hostent *hp, hostbuf; + extern int h_errno; + /* int opt; */ + char *tmphstbuf; + size_t hstbuflen = 2048; + struct timeval start_time; + struct timeval end_time; + char ping_buf[TCP_PING_PACKSIZE]; + int bytes_read; + int standard_ping_milli_secs; + + assert(ping_data->host); + tmphstbuf = kmalloc(hstbuflen); + portnum = ping_data->port; + memset((void *) &server, 0, sizeof(server)); + + hp = k_gethostname(ping_data->host, &hostbuf, &tmphstbuf, &hstbuflen); + + if (hp == NULL) + return ping_data->err = HOSTERR; + + memcpy((void *) &server.sin_addr, hp->h_addr, hp->h_length); + server.sin_family = hp->h_addrtype; + server.sin_port = htons(portnum); + + /* Create a socket. */ + if ((ping_data->sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 1) + { + kfree(tmphstbuf); + return ping_data->err = CONSOCKERR; + } + + /* Experimental. */ + flags = fcntl(ping_data->sock, F_GETFL, 0); + if (flags != -1) + noblock = fcntl(ping_data->sock, F_SETFL, flags | O_NONBLOCK); + else + noblock = -1; + + /* get start time */ + gettimeofday(&start_time, 0); + + status = + connect(ping_data->sock, (struct sockaddr *) &server, + sizeof(server)); + + if ((status == -1) && (noblock != -1) && (errno == EINPROGRESS)) + { + fd_set writefd; + + FD_ZERO(&writefd); + FD_SET(ping_data->sock, &writefd); + + status = + select((ping_data->sock + 1), NULL, &writefd, NULL, + &ping_data->timeout); + + /* Do we need to retry if the err is EINTR? */ + + if (status > 0) + { + socklen_t arglen = sizeof(int); + + if (getsockopt + (ping_data->sock, SOL_SOCKET, SO_ERROR, &status, &arglen) < 0) + status = errno; + + if (status != 0) + errno = status, status = -1; + + if (errno == EINPROGRESS) + errno = ETIMEDOUT; + } else if (status == 0) + errno = ETIMEDOUT, status = -1; + } + + if (status < 0) + { + close_sock(&ping_data->sock); + + if (errno == ECONNREFUSED) + { + kfree(tmphstbuf); + return ping_data->err = CONREFUSED; + } else if (errno == ETIMEDOUT) + { + kfree(tmphstbuf); + return ping_data->err = PINGTIMEOUT; + } else + { + kfree(tmphstbuf); + return ping_data->err = CONERROR; + } + } else + { + flags = fcntl(ping_data->sock, F_GETFL, 0); + + if (flags != -1) + fcntl(ping_data->sock, F_SETFL, flags & ~O_NONBLOCK); + } + + /* setsockopt(*sock, SOL_SOCKET, SO_KEEPALIVE, (char *)&opt, + (int) sizeof(opt)); */ + + kfree(tmphstbuf); + + + /*So far so good connection established */ + + bytes_read = + krecv(ping_data->sock, ping_buf, TCP_PING_PACKSIZE, 0, + &ping_data->timeout); + close_sock(&ping_data->sock); + + proz_debug("bytes read = %d", bytes_read); + if (bytes_read == -1) + { + if (errno == ETIMEDOUT) + return ping_data->err = PINGTIMEOUT; + else + return ping_data->err = READERR; + } + + if (bytes_read == 0 || bytes_read < TCP_PING_PACKSIZE) + return ping_data->err = READERR; + + /* the end time */ + gettimeofday(&end_time, 0); + proz_timeval_subtract(&ping_data->ping_time, &end_time, &start_time); + + + /* standard_ping_milli_secs =(int)((((float)ping_data->ping_time.tv_usec/1000)+(((float)ping_data->ping_time.tv_sec)*1000))*3/(float)bytes_read); + + ping_data->ping_time.tv_sec=standard_ping_milli_secs/1000; + ping_data->ping_time.tv_usec=standard_ping_milli_secs%1000; + */ + + return ping_data->err = PINGOK; +} + + +void proz_mass_ping(ftps_request_t * request) +{ + + request->mass_ping_running = TRUE; + if (pthread_create(&request->mass_ping_thread, NULL, + (void *) &mass_ping, (void *) request) != 0) + proz_die(_("Error: Not enough system resources")); + +} + +void proz_cancel_mass_ping(ftps_request_t * request) +{ + /*TODO Rewrite so that this will terminate the pingin threads as well */ + request->mass_ping_running = FALSE; + pthread_cancel(request->mass_ping_thread); + pthread_join(request->mass_ping_thread,0); +} + +void mass_ping(ftps_request_t * request) +{ + int i, j, k = 0, num_iter, num_left, simul_pings; + pthread_t *ping_threads; + ping_t *ping_requests; + + + simul_pings = request->max_simul_pings; + + pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + ping_threads = (pthread_t *) kmalloc(sizeof(pthread_t) * simul_pings); + ping_requests = kmalloc(sizeof(ping_t) * request->num_mirrors); + + num_iter = request->num_mirrors / simul_pings; + num_left = request->num_mirrors % simul_pings; + proz_debug("Max simul pings=%d", simul_pings); + proz_debug("request->num_mirrors=%d", request->num_mirrors); + + pthread_mutex_lock(&request->access_mutex); + request->mass_ping_running = TRUE; + pthread_mutex_unlock(&request->access_mutex); + + + k = 0; + + for (i = 0; i < num_iter; i++) + { + for (j = 0; j < simul_pings; j++) + { + ping_t ping_request; + + memset(ping_requests + k, 0, sizeof(ping_request)); + /*FIXME */ + ping_requests[k].timeout.tv_sec = request->ping_timeout.tv_sec; + ping_requests[k].timeout.tv_usec = request->ping_timeout.tv_usec; + ping_requests[k].host = strdup(request->mirrors[k].server_name); + ping_requests[k].port = 21; + + if (pthread_create(&ping_threads[j], NULL, + (void *) &tcp_ping, + (void *) (ping_requests + k)) != 0) + proz_die("Error: Not enough system resources" + "to create thread!\n"); + k++; + } + + k -= simul_pings; + + for (j = 0; j < simul_pings; j++) + { + /*Wait till the end of each thread. */ + pthread_join(ping_threads[j], NULL); + if (ping_requests[k].err == PINGOK) + { + pthread_mutex_lock(&request->access_mutex); + request->mirrors[k].milli_secs = + (ping_requests[k].ping_time.tv_sec * 1000) + + (ping_requests[k].ping_time.tv_usec / 1000); + request->mirrors[k].status = RESPONSEOK; + pthread_mutex_unlock(&request->access_mutex); + } else + { + pthread_mutex_lock(&request->access_mutex); + request->mirrors[k].status = NORESPONSE; + pthread_mutex_unlock(&request->access_mutex); + } + k++; + } + } + + + for (j = 0; j < num_left; j++) + { + ping_t ping_request; + + memset(ping_requests + k, 0, sizeof(ping_request)); + /*FIXME */ + ping_requests[k].timeout.tv_sec = request->ping_timeout.tv_sec; + ping_requests[k].timeout.tv_usec = 0; + ping_requests[k].host = strdup(request->mirrors[k].server_name); + ping_requests[k].port = 21; + + if (pthread_create(&ping_threads[j], NULL, + (void *) &tcp_ping, + (void *) (&ping_requests[k])) != 0) + proz_die("Error: Not enough system resources" "to create thread!\n"); + + k++; + } + + k -= num_left; + + for (j = 0; j < num_left; j++) + { + /*Wait till the end of each thread. */ + pthread_join(ping_threads[j], NULL); + + /*Wait till the end of each thread. */ + pthread_join(ping_threads[j], NULL); + if (ping_requests[k].err == PINGOK) + { + pthread_mutex_lock(&request->access_mutex); + request->mirrors[k].milli_secs = + (ping_requests[k].ping_time.tv_sec * 1000) + + (ping_requests[k].ping_time.tv_usec / 1000); + request->mirrors[k].status = RESPONSEOK; + pthread_mutex_unlock(&request->access_mutex); + } else + { + pthread_mutex_lock(&request->access_mutex); + request->mirrors[k].status = NORESPONSE; + pthread_mutex_unlock(&request->access_mutex); + } + k++; + } + + pthread_mutex_lock(&request->access_mutex); + request->mass_ping_running = FALSE; + pthread_mutex_unlock(&request->access_mutex); +} diff --git a/libprozilla/src/ping.h b/libprozilla/src/ping.h new file mode 100644 index 0000000..5cc9863 --- /dev/null +++ b/libprozilla/src/ping.h @@ -0,0 +1,31 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + + +#ifndef PING_H +#define PING_H + + +#include "common.h" +#include "prozilla.h" + +uerr_t tcp_ping(ping_t * ping_info); +void mass_ping(ftps_request_t * request); + +#endif diff --git a/libprozilla/src/prozilla.h b/libprozilla/src/prozilla.h new file mode 100644 index 0000000..018d73e --- /dev/null +++ b/libprozilla/src/prozilla.h @@ -0,0 +1,569 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* Main include-file. */ + +/* $Id: prozilla.h,v 1.57 2001/10/27 11:24:40 kalum Exp $ */ + + +#ifndef PROZILLA_H +#define PROZILLA_H + +#include +#include +#include +#include "netrc.h" + +#ifdef __cplusplus +extern "C" { +#endif + + typedef enum { + /*Connect establishment related values */ + NOCONERROR, HOSTERR, CONSOCKERR, CONERROR, + CONREFUSED, ACCEPTERR, ACCEPTOK, BINDERR, BINDOK, LISTENERR, LISTENOK, + SERVERCLOSECONERR, CONPORTERR, + + /* URL handling related value */ + URLOK, URLHTTP, URLFTP, URLFILE, URLUNKNOWN, URLBADPORT, + URLBADHOST, URLBADPATTERN, + + /* HTTP related values */ + NEWLOCATION, HOK, HEOF, HERR, HAUTHREQ, HAUTHFAIL, + HTTPNSFOD, + + /*FTP related value */ + FTPOK, FTPLOGINC, FTPLOGREFUSED, FTPPORTERR, + FTPNSFOD, FTPRETROK, FTPUNKNOWNTYPE, FTPUNKNOWNCMD, FTPSIZEFAIL, + FTPERR, FTPRESTFAIL, FTPACCDENIED, + FTPPWDERR, + FTPINVPASV, FTPNOPASV, FTPCONREFUSED, FTPCWDFAIL, FTPPWDFAIL, + FTPSERVCLOSEDATLOGIN, + + /*Error values that can happen due to failed proxie request */ + GATEWAYTIMEOUT, SERVICEUNAVAIL, BADGATEWAY, INTERNALSERVERR, + UNKNOWNREQ, + + /*File handling related return values. */ + FOPENERR, FWRITEERR, + RETROK, + + /*Download related retrn values. */ + DLINPROGRESS, DLABORTED, DLDONE, CANTRESUME, DLLOCALFATAL, + DLREMOTEFATAL, + /*FTPSEARCH+ping related return values. */ + FTPSINPROGRESS, MASSPINGINPROGRESS, FTPSFAIL, MASSPINGDONE, + + /*PING related values */ + PINGOK, PINGTIMEOUT, + /*Misc Value */ + RETRFINISHED, READERR, + + PROXERR, WRITEERR, + FILEISDIR, + MIRINFOK, MIRPARSEOK, MIRPARSEFAIL, FILEGETOK, + /*Related to file joining */ + JOININPROGRESS, JOINDONE, JOINERR + } uerr_t; + + +#define FTP_BUFFER_SIZE 2048 +#define HTTP_BUFFER_SIZE 2048 +#define MAX_MSG_SIZE 2048 + +#define DEFAULT_FTP_PORT 21 +#define DEFAULT_HTTP_PORT 80 + +/* This is used when no password is found or specified. */ +#define DEFAULT_FTP_USER "anonymous" +#define DEFAULT_FTP_PASSWD "billg@hotmail.com" + +/* The D/L ed fragments will be saved to files with this extension. + * E.g.: gnu.jpg.prz0, gnu.jpg.prz1 etc... */ +#define DEFAULT_FILE_EXT ".prz" + +/* The extension for the log file created. */ +#define DEFAULT_LOG_EXT ".log" + +#define DEFAULT_USER_AGENT "Prozilla" + + typedef char longstring[1024]; + +/* Callback message function. */ + typedef void (*message_proc) (const char *msg, void *cb_data); + + +/* Structure containing info on a URL. */ + typedef struct _urlinfo { + char *url; /* Unchanged URL. */ + uerr_t proto; /* URL protocol. */ + char *host; /* Extracted hostname. */ + unsigned short port; + char ftp_type; + char *path, *dir, *file; /* Path, dir and file (properly decoded). */ + char *user, *passwd; /* For FTP. */ + + char *referer; /* The source from which the request + URI was obtained. */ + } urlinfo; + + typedef enum { + USERatSITE, + USERatPROXYUSERatSITE, + USERatSITE_PROXYUSER, + PROXYUSERatSITE, + LOGINthenUSERatSITE, + OPENSITE, + SITESITE, + HTTPPROXY, + FTPGATE, + WINGATE + } proxy_type; + + + typedef enum { + IDLE = 0, + CONNECTING, + LOGGININ, + DOWNLOADING, + COMPLETED, + LOGINFAIL, + CONREJECT, + REMOTEFATAL, + LOCALFATAL, + TIMEDOUT, + MAXTRYS + } dl_status; + + + typedef enum { + NOT_FOUND, + REGULAR_FILE, + DIRECTORY, + SYMBOLIC_LINK, + UNKNOWN + } file_type_t; + + + typedef struct { + long len; /* Received length. */ + long contlen; /* Expected length. */ + int res; /* The result of last read. */ + + /* -1 = Accept ranges not found. + 0 = Accepts range is none. + 1 = Accepts ranges. */ + int accept_ranges; + + char *newloc; /* New location (redirection). */ + char *remote_time; /* Remote time-stamp string. */ + char *error; /* Textual HTTP error. */ + int statcode; /* Status code. */ + } http_stat_t; + + typedef struct { + urlinfo proxy_url; + char *username; + char *passwd; + proxy_type type; + boolean use_proxy; + } proxy_info; + + typedef struct libprozinfo { + int argc; + char **argv; + boolean debug_mode; + + /* For netrc. */ + netrc_entry *netrc_list; + boolean use_netrc; + + char *home_dir; + char *ftp_default_user; + char *ftp_default_passwd; + char *dl_dir; + char *output_dir; + char *log_dir; + boolean ftp_use_pasv; + proxy_info *ftp_proxy; + proxy_info *http_proxy; + boolean http_no_cache; + /* the default timeout for all the connection types (ctrl, data etc) */ + struct timeval conn_timeout; + struct timeval conn_retry_delay; + int max_attempts; + long max_bps_per_dl; + } libprozinfo; + + extern libprozinfo libprozrtinfo; + + + typedef struct response_line { + char *line; + struct response_line *next; + } response_line; + + + typedef struct connection_t { + + /* struct which contains the parsed url info. It includes the remote file, + path,protocol etc. */ + urlinfo u; + + /* The error status of the connection. */ + uerr_t err; + + /* Proxy specific info. */ + + proxy_info *ftp_proxy; + proxy_info *http_proxy; + + /* Netrc. */ + boolean use_netrc; + + /* FTP specific info. */ + boolean ftp_use_pasv; + struct timeval xfer_timeout; + struct timeval conn_timeout; + struct timeval ctrl_timeout; + unsigned char pasv_addr[6]; + int ctrl_sock; + int data_sock; + int listen_sock; + + /* Additional info about what this URL is. */ + /* FIXME Should this be in the url_info struct? */ + file_type_t file_type; + + /* The lines that the server returned. */ + response_line *serv_ret_lines; + + /* Does the server support resume? */ + boolean resume_support; + + /* The file name to save the data to locally. */ + char *localfile; + + /* Pointer to file that we will be saving the data to locally. */ + FILE *fp; + + /* Tells whether to open the file for appending or for writing etc. + Used for adding resume support. */ + char *file_mode; + + /* FIXME Add an enum here to say whether run mode is resume or normal etc. + and remove the file mode. */ + + long remote_startpos; + long orig_remote_startpos; + long remote_endpos; + long remote_bytes_received; + + long main_file_size; + + /* The permanent base offset from the beginning of the file, put in + anticipation of making the threads download to a single file. */ + long local_base_offset; + + /* Indicates the startpos of the localfile. It is always 0 in normal mode + and can be any positive value in resume mode. */ + long local_startpos; + + // /* The start position at the beginning of the download. */ +/* long orig_local_startpos; */ + /* long bytes_xferred; */ + dl_status status; + char *szBuffer; + + /* Tells the download thread whether to abort the download or not. */ + boolean abort; + + /* Information about the connection's start and end time. */ + struct timeval time_begin; + struct timeval time_end; + + /* Info about whether to retry the thread or not. */ + boolean retry; + + /* The number of attempts to try to complete a connection. 0 means unlimited + connection attempts. */ + int max_attempts; + /* The number of attempts that this connection has been tried */ + int attempts; + + /* The time when to try to restart the connection. */ + struct timeval retry_delay; + + /* Each connection will acquire this mutex before changing state. */ + pthread_mutex_t *status_change_mutex; + /*This will be broadcast when the connection starts connecting */ + pthread_cond_t connecting_cond; + + /* User agent for HTTP. */ + char *user_agent; + + http_stat_t hs; + message_proc msg_proc; + /*additional callback data whcih is specified by the user + that is passed to msg_proc */ + void *cb_data; + /* Indicates whether a conenction is running or not */ + int running; + /*Mutex used to lock acesss to data in this struct + that is accesed/written by other threads */ + pthread_mutex_t access_mutex; + /*This indicates that we should use the pragma no-cache directive for http proxies */ + boolean http_no_cache; + /*The rate of this connection whcih is calcualted */ + long rate_bps; + /*We limit the connections speed to this */ + long max_allowed_bps; + } connection_t; + + + typedef enum { + UNTESTED = 0, RESPONSEOK, NORESPONSE, ERROR + } ftp_mirror_stat_t; + + typedef enum { + LYCOS, FILESEARCH_RU + } ftpsearch_server_type_t; + + + typedef struct { + char *path; + boolean valid; + } mirror_path_t; + + typedef struct ftp_mirror { + char *server_name; + mirror_path_t *paths; + char *file_name; + char *full_name; + char *file_size; + struct timeval tv; + int milli_secs; + int num_paths; + ftp_mirror_stat_t status; + int copied; + boolean resume_supported; + int max_simul_connections; + } ftp_mirror_t; + + typedef struct { + long file_size; + char *file_name; + connection_t *connection; + ftpsearch_server_type_t server_type; + ftp_mirror_t *mirrors; + int num_mirrors; + uerr_t err; + boolean info_running; + boolean mass_ping_running; + pthread_mutex_t access_mutex; + pthread_t info_thread; + pthread_t mass_ping_thread; + int max_simul_pings; + struct timeval ping_timeout; + urlinfo *requested_url; + } ftps_request_t; + + + typedef struct download_t { + urlinfo u; + char *dl_dir; + char *log_dir; + char *output_dir; + connection_t **pconnections; + pthread_t *threads; + pthread_mutex_t status_change_mutex; + int num_connections; + /* Optional will be called back with info about download. */ + message_proc msg_proc; + /*additional callback data which is specified by the user + that is passed to msg_proc */ + void *cb_data; + long main_file_size; + boolean resume_mode; + struct timeval start_time; + /*Does this DL support resume? */ + boolean resume_support; + /*This contains the building status, 1 = building,0 build finished, -1 error occured */ + int building; + /*This is the percentage of the file that is been built currently */ + float file_build_percentage; + int max_simul_connections; + /*Mutex used to lock acesss to data in this struct + that is accesed/written by other threads */ + pthread_mutex_t access_mutex; + /* The message that is returned when the file build process is finished + */ + char *file_build_msg; + /*Max mps for this download */ + long max_allowed_bps; + ftps_request_t *ftps_info; + boolean using_ftpsearch; + pthread_t join_thread; + } download_t; + + + typedef struct { + /* the number of connections that this download was started with */ + int num_connections; + /*I have added these newly */ + int version; /*The version of this logfile */ + /*Indicates whether we have got info about the files size, final URL etc */ + boolean got_info; + long file_size; + int url_len; /*The length in bytes of the url text stred in the log file */ + char *url; + int reserved[30]; + } logfile; + + + /*Structs for logfile handling */ + + + + typedef struct { + char *host; + int port; + struct timeval timeout; + struct timeval ping_time; + int sock; + uerr_t err; + } ping_t; + + +/*Functions for URL parsing */ + uerr_t proz_parse_url(const char *url, urlinfo * u, boolean strict); + urlinfo *proz_copy_url(urlinfo * u); + void proz_free_url(urlinfo * u, boolean complete); + +/*Functions that set values which will apply for all conenctions. */ + int proz_init(int argc, char **argv); + void proz_shutdown(void); + void proz_die(const char *message, ...); + + void proz_set_http_proxy(proxy_info * proxy); + void proz_set_ftp_proxy(proxy_info * proxy); + void proz_use_ftp_proxy(boolean use); + void proz_use_http_proxy(boolean use); + void proz_set_connection_timeout(struct timeval *timeout); + void proz_set_connection_retry_delay(struct timeval *delay); + void proz_set_download_dir(char *dir); + void proz_set_logfile_dir(char *dir); + void proz_set_output_dir(char *dir); + char *proz_get_libprozilla_version(); + + /*Functions for loggind debug messages */ + void proz_debug(const char *format, ...); + void proz_debug_delete_log(); + +/*Functions which are for handling a single connection. */ + connection_t * proz_connection_init(urlinfo * url, pthread_mutex_t * mutex); + void proz_connection_set_url(connection_t * connection, urlinfo *url); + + char *proz_connection_get_status_string(connection_t * connection); + long proz_connection_get_total_bytes_got(connection_t * connection); + void proz_get_url_info_loop(connection_t * connection, pthread_t *thread); + long proz_connection_get_total_remote_bytes_got(connection_t * + connection); + void proz_connection_set_msg_proc(connection_t * connection, + message_proc msg_proc, void *cb_data); + void proz_connection_free_connection(connection_t * connection, + boolean complete); + dl_status proz_connection_get_status(connection_t * connection); + boolean proz_connection_running(connection_t * connection); + +/*Functions which are for handling a download */ + download_t *proz_download_init(urlinfo * u); + int proz_download_setup_connections_no_ftpsearch(download_t * download, + connection_t * + connection, + int req_connections); + void proz_download_start_downloads(download_t * download, + boolean resume); + int proz_download_load_resume_info(download_t * download); + void proz_download_stop_downloads(download_t * download); + + boolean proz_download_all_dls_status(download_t * download, + dl_status status); + boolean proz_download_all_dls_err(download_t * download, uerr_t err); + + boolean proz_download_all_dls_filensfod(download_t * download); + boolean proz_download_all_dls_ftpcwdfail(download_t * download); + + + long proz_download_get_total_bytes_got(download_t * download); + uerr_t proz_download_handle_threads(download_t * download); + int proz_download_prev_download_exists(download_t * download); + float proz_download_get_average_speed(download_t * download); + int proz_download_delete_dl_file(download_t * download); + void proz_download_wait_till_all_end(download_t * download); + long proz_download_get_total_remote_bytes_got(download_t * download); + void proz_download_set_msg_proc(download_t * download, + message_proc msg_proc, void *cb_data); + long proz_download_get_est_time_left(download_t * download); + void proz_download_free_download(download_t * download, + boolean complete); + int proz_download_target_exist(download_t * download); + int proz_download_delete_target(download_t * download); + + /* Functions related to handling the logfile created for a download */ + int proz_log_read_logfile(logfile * lf, download_t * download, + boolean load_con_info); + int proz_log_delete_logfile(download_t * download); + int proz_log_logfile_exists(download_t * download); + char *proz_strerror(uerr_t error); + + /*Ftpsearch releated */ +ftps_request_t * proz_ftps_request_init( + urlinfo * requested_url, long file_size, + char *ftps_loc, + ftpsearch_server_type_t server_type, + int num_req_mirrors); + void proz_get_complete_mirror_list(ftps_request_t * request); + boolean proz_request_info_running(ftps_request_t * request); + boolean proz_request_mass_ping_running(ftps_request_t * request); + void proz_mass_ping(ftps_request_t * request); + void proz_sort_mirror_list(ftp_mirror_t * mirrors, int num_servers); + void proz_cancel_mirror_list_request(ftps_request_t * request); + + int proz_download_setup_connections_ftpsearch(download_t * download, + connection_t * connection, + ftps_request_t * request, + int req_connections); + void proz_cancel_mass_ping(ftps_request_t * request); + + /*Misc functions */ + int proz_timeval_subtract(struct timeval *result, struct timeval *x, + struct timeval *y); + + /*Funcs related to joining the downloaded file portions */ + void proz_download_join_downloads(download_t * download); + uerr_t proz_download_get_join_status(download_t *download); + float proz_download_get_file_build_percentage(download_t *download); + void proz_download_cancel_joining_thread(download_t * download); + void proz_download_wait_till_end_joining_thread(download_t * download); + +#ifdef __cplusplus +} +#endif +#endif /* PROZILLA_H */ diff --git a/libprozilla/src/test.c b/libprozilla/src/test.c new file mode 100644 index 0000000..9fc724e --- /dev/null +++ b/libprozilla/src/test.c @@ -0,0 +1,70 @@ +/****************************************************************************** + libprozilla - a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +/* A test program. */ + +/* $Id: test.c,v 1.30 2001/09/23 01:39:16 kalum Exp $ */ + + +#include "common.h" +#include "prozilla.h" +#include "connection.h" +#include "misc.h" +#include "connect.h" +#include "ftp.h" +#include "http.h" +#include "download.h" +#include "ftpsearch.h" +#include "ping.h" + + +/****************************************************************************** + The main function. +******************************************************************************/ +int main(int argc, char **argv) +{ + uerr_t err; + connection_t *connection; + ftps_request_t request; + struct timeval timeout, ping_time; + int i, j; + + proz_init(argc, argv); + libprozrtinfo.conn_timeout.tv_sec = 100; + + proz_prepare_ftps_request(&request, "ddd-3.3.tar.bz2", 4811576, + "http://ftpsearch.uniovi.es:8000/ftpsearch", + LYCOS, 40); + + proz_get_complete_mirror_list(&request); + + for (i = 0; i < request.num_mirrors; i++) + { + printf("%s\n", request.mirrors[i].server_name); + printf("\t%d\n", request.mirrors[i].num_paths); + for (j = 0; j < request.mirrors[i].num_paths; j++) + printf("\t\t%s\n", request.mirrors[i].paths[j].path); + } + timeout.tv_sec = 5; + timeout.tv_usec = 0; + + proz_shutdown(); + + exit(EXIT_SUCCESS); +} diff --git a/libprozilla/src/url.c b/libprozilla/src/url.c new file mode 100644 index 0000000..44604af --- /dev/null +++ b/libprozilla/src/url.c @@ -0,0 +1,1138 @@ +/* URL handling. + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +/* $Id: url.c,v 1.23 2001/10/27 11:24:40 kalum Exp $ */ + + +#include "common.h" +#include "prozilla.h" +#include "url.h" +#include "misc.h" + + +/* NULL-terminated list of strings to be recognized as prototypes (URL + schemes). Note that recognized doesn't mean supported -- only HTTP + and FTP are supported for now. + + However, a string that does not match anything in the list will be + considered a relative URL. Thus it's important that this list has + anything anyone could think of being legal. + + There are wild things here. :-) Take a look at + to see more + fun. */ + + +/* Is X "."? */ +#define DOTP(x) ((*(x) == '.') && (!*(x + 1))) +/* Is X ".."? */ +#define DDOTP(x) ((*(x) == '.') && (*(x + 1) == '.') && (!*(x + 2))) + + +char *protostrings[] = { + "cid:", + "clsid:", + "file:", + "finger:", + "ftp:", + "gopher:", + "hdl:", + "http:", + "https:", + "ilu:", + "ior:", + "irc:", + "java:", + "javascript:", + "lifn:", + "mailto:", + "mid:", + "news:", + "nntp:", + "path:", + "prospero:", + "rlogin:", + "service:", + "shttp:", + "snews:", + "stanf:", + "telnet:", + "tn3270:", + "wais:", + "whois++:", + NULL +}; + +/* TODO remove this stupid things... */ + + +/* Similar to former, but for supported protocols: */ +proto_t sup_protos[] = { + {"http://", URLHTTP, DEFAULT_HTTP_PORT}, + {"ftp://", URLFTP, DEFAULT_FTP_PORT} + /* { "file://", URLFILE, DEFAULT_FTP_PORT } */ +}; + +/* Support for encoding and decoding of URL strings. We determine + whether a character is unsafe through table lookup. This + code assumes ASCII character set and 8-bit chars. */ + +enum { + urlchr_reserved = 1, + urlchr_unsafe = 2 +}; + +#define R urlchr_reserved +#define U urlchr_unsafe +#define RU R|U + +#define urlchr_test(c, mask) (urlchr_table[(unsigned char)(c)] & (mask)) + +/* rfc1738 reserved chars. We don't use this yet; preservation of + reserved chars will be implemented when I integrate the new + `reencode_string' function. */ + +#define RESERVED_CHAR(c) urlchr_test(c, urlchr_reserved) + +/* Unsafe chars: + - anything <= 32; + - stuff from rfc1738 ("<>\"#%{}|\\^~[]`"); + - '@' and ':'; needed for encoding URL username and password. + - anything >= 127. */ + +#define UNSAFE_CHAR(c) urlchr_test(c, urlchr_unsafe) + +/* Convert the ASCII character X to a hex-digit. X should be between + '0' and '9', or between 'A' and 'F', or between 'a' and 'f'. The + result is a number between 0 and 15. If X is not a hexadecimal + digit character, the result is undefined. */ +#define XCHAR_TO_XDIGIT(x) \ + (((x) >= '0' && (x) <= '9') ? \ + ((x) - '0') : (toupper(x) - 'A' + 10)) + +/* The reverse of the above: convert a HEX digit in the [0, 15] range + to an ASCII character representing it. The A-F characters are + always in upper case. */ +#define XDIGIT_TO_XCHAR(x) (((x) < 10) ? ((x) + '0') : ((x) - 10 + 'A')) + +#define ARRAY_SIZE(array) (sizeof (array) / sizeof (*(array))) + +const static unsigned char urlchr_table[256] = { + U, U, U, U, U, U, U, U, /* NUL SOH STX ETX EOT ENQ ACK BEL */ + U, U, U, U, U, U, U, U, /* BS HT LF VT FF CR SO SI */ + U, U, U, U, U, U, U, U, /* DLE DC1 DC2 DC3 DC4 NAK SYN ETB */ + U, U, U, U, U, U, U, U, /* CAN EM SUB ESC FS GS RS US */ + U, 0, U, U, 0, U, R, 0, /* SP ! " # $ % & ' */ + 0, 0, 0, R, 0, 0, 0, R, /* ( ) * + , - . / */ + 0, 0, 0, 0, 0, 0, 0, 0, /* 0 1 2 3 4 5 6 7 */ + 0, 0, U, R, U, R, U, R, /* 8 9 : ; < = > ? */ + RU, 0, 0, 0, 0, 0, 0, 0, /* @ A B C D E F G */ + 0, 0, 0, 0, 0, 0, 0, 0, /* H I J K L M N O */ + 0, 0, 0, 0, 0, 0, 0, 0, /* P Q R S T U V W */ + 0, 0, 0, U, U, U, U, 0, /* X Y Z [ \ ] ^ _ */ + U, 0, 0, 0, 0, 0, 0, 0, /* ` a b c d e f g */ + 0, 0, 0, 0, 0, 0, 0, 0, /* h i j k l m n o */ + 0, 0, 0, 0, 0, 0, 0, 0, /* p q r s t u v w */ + 0, 0, 0, U, U, U, U, U, /* x y z { | } ~ DEL */ + + U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, + U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, + U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, + U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, + + U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, + U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, + U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, + U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, +}; + +/* Returns 1 if the URL begins with a protocol (supported or + unsupported), 0 otherwise. */ +int has_proto(const char *url) +{ + char **s; + + for (s = protostrings; *s; s++) + if (strncasecmp(url, *s, strlen(*s)) == 0) + return 1; + return 0; +} + +/* Skip the username and password, if present here. The function + should be called *not* with the complete URL, but with the part + right after the protocol. + + If no username and password are found, return 0. */ +int skip_uname(const char *url) +{ + const char *p; + const char *q = NULL; + for (p = url; *p && *p != '/'; p++) + if (*p == '@') + q = p; + /* If a `@' was found before the first occurrence of `/', skip + it. */ + if (q != NULL) + return q - url + 1; + else + return 0; +} + +/* Decodes the forms %xy in a URL to the character the hexadecimal + code of which is xy. xy are hexadecimal digits from + [0123456789ABCDEF] (case-insensitive). If x or y are not + hex-digits or `%' precedes `\0', the sequence is inserted + literally. */ + +void decode_string(char *s) +{ + char *t = s; /* t - tortoise */ + char *h = s; /* h - hare */ + + for (; *h; h++, t++) + { + if (*h != '%') +// if(1) + { + copychar: + *t = *h; + } else + { + /* Do nothing if '%' is not followed by two hex digits. */ + if (!*(h + 1) || !*(h + 2) + || !(isxdigit(*(h + 1)) && isxdigit(*(h + 2)))) + goto copychar; + *t = (XCHAR_TO_XDIGIT(*(h + 1)) << 4) + XCHAR_TO_XDIGIT(*(h + 2)); + h += 2; + } + } + *t = '\0'; +} + +/* Like encode_string, but return S if there are no unsafe chars. */ + +char *encode_string_maybe(const char *s) +{ + const char *p1; + char *p2, *newstr; + int newlen; + int addition = 0; + /*Changes Grendel: (*p1!='%') added */ + + + for (p1 = s; *p1; p1++) + if ((*p1!='%') && UNSAFE_CHAR(*p1)) + addition += 2; /* Two more characters (hex digits) */ + + if (!addition) + return (char *) s; + + newlen = (p1 - s) + addition; + newstr = (char *) kmalloc(newlen + 1); + + p1 = s; + p2 = newstr; + while (*p1) + { + // if (UNSAFE_CHAR(*p1)) +if ((*p1!='%') && UNSAFE_CHAR(*p1)) +/* if(0)*/ + { + const unsigned char c = *p1++; + *p2++ = '%'; + *p2++ = XDIGIT_TO_XCHAR(c >> 4); + *p2++ = XDIGIT_TO_XCHAR(c & 0xf); + } else + *p2++ = *p1++; + } + *p2 = '\0'; + assert(p2 - newstr == newlen); + + return newstr; +} + +/* Encode the unsafe characters (as determined by UNSAFE_CHAR) in a + given string, returning a malloc-ed %XX encoded string. */ + +char *encode_string(const char *s) +{ + char *encoded = encode_string_maybe(s); + + if (encoded != s) + return encoded; + else + return kstrdup(s); +} + +/* Encode unsafe characters in PTR to %xx. If such encoding is done, + the old value of PTR is freed and PTR is made to point to the newly + allocated storage. */ + +#define ENCODE(ptr) do { \ + char *e_new = encode_string_maybe (ptr); \ + if (e_new != ptr) \ + { \ + kfree (ptr); \ + ptr = e_new; \ + } \ +} while (0) + +/* Returns the protocol type if URL's protocol is supported, or + URLUNKNOWN if not. */ +uerr_t urlproto(const char *url) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(sup_protos); i++) + if (!strncasecmp(url, sup_protos[i].name, strlen(sup_protos[i].name))) + return sup_protos[i].ind; + for (i = 0; url[i] && url[i] != ':' && url[i] != '/'; i++); + if (url[i] == ':') + { + for (++i; url[i] && url[i] != '/'; i++) + if (!isdigit(url[i])) + return URLBADPORT; + if (url[i - 1] == ':') + return URLFTP; + else + return URLHTTP; + } else + return URLHTTP; +} + + +/* If PATH ends with `;type=X', return the character X. */ +char process_ftp_type(char *path) +{ + int len = strlen(path); + + if (len >= 7 && !memcmp(path + len - 7, ";type=", 6)) + { + path[len - 7] = '\0'; + return path[len - 1]; + } else + return '\0'; +} + +/* Canonicalize PATH, and return a new path. The new path differs from PATH + in that: + Multple `/'s are collapsed to a single `/'. + Leading `./'s and trailing `/.'s are removed. + Trailing `/'s are removed. + Non-leading `../'s and trailing `..'s are handled by removing + portions of the path. + + E.g. "a/b/c/./../d/.." will yield "a/b". This function originates + from GNU Bash. + + Changes for Wget: + Always use '/' as stub_char. + Don't check for local things using canon_stat. + Change the original string instead of strdup-ing. + React correctly when beginning with `./' and `../'. */ +void path_simplify(char *path) +{ + register int i, start, ddot; + char stub_char; + + if (!*path) + return; + + /*stub_char = (*path == '/') ? '/' : '.'; */ + stub_char = '/'; + + /* Addition: Remove all `./'-s preceding the string. If `../'-s + precede, put `/' in front and remove them too. */ + i = 0; + ddot = 0; + while (1) + { + if (path[i] == '.' && path[i + 1] == '/') + i += 2; + else if (path[i] == '.' && path[i + 1] == '.' && path[i + 2] == '/') + { + i += 3; + ddot = 1; + } else + break; + } + if (i) + strcpy(path, path + i - ddot); + + /* Replace single `.' or `..' with `/'. */ + if ((path[0] == '.' && path[1] == '\0') + || (path[0] == '.' && path[1] == '.' && path[2] == '\0')) + { + path[0] = stub_char; + path[1] = '\0'; + return; + } + /* Walk along PATH looking for things to compact. */ + i = 0; + while (1) + { + if (!path[i]) + break; + + while (path[i] && path[i] != '/') + i++; + + start = i++; + + /* If we didn't find any slashes, then there is nothing left to do. */ + if (!path[start]) + break; + + /* Handle multiple `/'s in a row. */ + while (path[i] == '/') + i++; + + if ((start + 1) != i) + { + strcpy(path + start + 1, path + i); + i = start + 1; + } + + /* Check for trailing `/'. */ + if (start && !path[i]) + { + zero_last: + path[--i] = '\0'; + break; + } + + /* Check for `../', `./' or trailing `.' by itself. */ + if (path[i] == '.') + { + /* Handle trailing `.' by itself. */ + if (!path[i + 1]) + goto zero_last; + + /* Handle `./'. */ + if (path[i + 1] == '/') + { + strcpy(path + i, path + i + 1); + i = (start < 0) ? 0 : start; + continue; + } + + /* Handle `../' or trailing `..' by itself. */ + if (path[i + 1] == '.' && (path[i + 2] == '/' || !path[i + 2])) + { + while (--start > -1 && path[start] != '/'); + strcpy(path + start + 1, path + i + 2); + i = (start < 0) ? 0 : start; + continue; + } + } /* path == '.' */ + } /* while */ + + if (!*path) + { + *path = stub_char; + path[1] = '\0'; + } +} + +/* Special versions of DOTP and DDOTP for parse_dir(). They work like + DOTP and DDOTP, but they also recognize `?' as end-of-string + delimiter. This is needed for correct handling of query + strings. */ + +#define PD_DOTP(x) ((*(x) == '.') && (!*((x) + 1) || *((x) + 1) == '?')) +#define PD_DDOTP(x) ((*(x) == '.') && (*(x) == '.') \ + && (!*((x) + 2) || *((x) + 2) == '?')) + +/* Like strlen(), but allow the URL to be ended with '?'. */ +int urlpath_length(const char *url) +{ + const char *q = strchr(url, '?'); + if (q) + return q - url; + return strlen(url); +} + +/* Build the directory and filename components of the path. Both + components are *separately* malloc-ed strings! It does not change + the contents of path. + + If the path ends with "." or "..", they are (correctly) counted as + directories. */ +void parse_dir(const char *path, char **dir, char **file) +{ + int i, l; + + l = urlpath_length(path); + for (i = l; i && path[i] != '/'; i--); + + if (!i && *path != '/') /* Just filename */ + { + if (PD_DOTP(path) || PD_DDOTP(path)) + { + *dir = strdupdelim(path, path + l); + *file = kstrdup(path + l); /* normally empty, but could + contain ?... */ + } else + { + *dir = kstrdup(""); /* This is required because of FTP */ + *file = kstrdup(path); + } + } else if (!i) /* /filename */ + { + if (PD_DOTP(path + 1) || PD_DDOTP(path + 1)) + { + *dir = strdupdelim(path, path + l); + *file = kstrdup(path + l); /* normally empty, but could + contain ?... */ + } else + { + *dir = kstrdup("/"); + *file = kstrdup(path + 1); + } + } else /* Nonempty directory with or without a filename */ + { + if (PD_DOTP(path + i + 1) || PD_DDOTP(path + i + 1)) + { + *dir = strdupdelim(path, path + l); + *file = kstrdup(path + l); /* normally empty, but could + contain ?... */ + } else + { + *dir = strdupdelim(path, path + i); + *file = kstrdup(path + i + 1); + } + } +} + +/* Skip the protocol part of the URL, e.g. `http://'. If no protocol + part is found, returns 0. */ +int skip_proto(const char *url) +{ + char **s; + int l; + + for (s = protostrings; *s; s++) + if (!strncasecmp(*s, url, strlen(*s))) + break; + if (!*s) + return 0; + l = strlen(*s); + /* HTTP and FTP protocols are expected to yield exact host names + (i.e. the `//' part must be skipped, too). */ + if (!strcmp(*s, "http:") || !strcmp(*s, "ftp:")) + l += 2; + return l; +} + +/* Find the optional username and password within the URL, as per + RFC1738. The returned user and passwd char pointers are + malloc-ed. */ +static uerr_t parse_uname(const char *url, char **user, char **passwd) +{ + int l; + const char *p, *q, *col; + char **where; + + *user = NULL; + *passwd = NULL; + + /* Look for the end of the protocol string. */ + l = skip_proto(url); + if (!l) + return URLUNKNOWN; + /* Add protocol offset. */ + url += l; + /* Is there an `@' character? */ + for (p = url; *p && *p != '/'; p++) + if (*p == '@') + break; + /* If not, return. */ + if (*p != '@') + return URLOK; + /* Else find the username and password. */ + for (p = q = col = url; *p && *p != '/'; p++) + { + if (*p == ':' && !*user) + { + *user = (char *) kmalloc(p - url + 1); + memcpy(*user, url, p - url); + (*user)[p - url] = '\0'; + col = p + 1; + } + if (*p == '@') + q = p; + } + /* Decide whether you have only the username or both. */ + where = *user ? passwd : user; + *where = (char *) kmalloc(q - col + 1); + memcpy(*where, col, q - col); + (*where)[q - col] = '\0'; + return URLOK; +} + +/* Return the URL as fine-formed string, with a proper protocol, optional port + number, directory and optional user/password. If `hide' is non-zero (as it + is when we're calling this on a URL we plan to print, but not when calling it + to canonicalize a URL for use within the program), password will be hidden. + The forbidden characters in the URL will be cleansed. */ +char *str_url(const urlinfo * u, int hide) +{ + char *res, *host, *user, *passwd, *proto_name, *dir, *file; + int i, l, ln, lu, lh, lp, lf, ld; + unsigned short proto_default_port; + + /* Look for the protocol name. */ + for (i = 0; i < ARRAY_SIZE(sup_protos); i++) + if (sup_protos[i].ind == u->proto) + break; + if (i == ARRAY_SIZE(sup_protos)) + return NULL; + proto_name = sup_protos[i].name; + proto_default_port = sup_protos[i].port; + host = encode_string(u->host); + dir = encode_string(u->dir); + file = encode_string(u->file); + user = passwd = NULL; + if (u->user) + user = encode_string(u->user); + if (u->passwd) + { + if (hide) + /* Don't output the password, or someone might see it over the user's + shoulder (or in saved wget output). Don't give away the number of + characters in the password, either, as we did in past versions of + this code, when we replaced the password characters with 'x's. */ + passwd = kstrdup(""); + else + passwd = encode_string(u->passwd); + } + if (u->proto == URLFTP && *dir == '/') + { + char *tmp = (char *) kmalloc(strlen(dir) + 3); + /*sprintf (tmp, "%%2F%s", dir + 1); */ + tmp[0] = '%'; + tmp[1] = '2'; + tmp[2] = 'F'; + strcpy(tmp + 3, dir + 1); + kfree(dir); + dir = tmp; + } + + ln = strlen(proto_name); + lu = user ? strlen(user) : 0; + lp = passwd ? strlen(passwd) : 0; + lh = strlen(host); + ld = strlen(dir); + lf = strlen(file); + res = (char *) kmalloc(ln + lu + lp + lh + ld + lf + 20); /* safe sex */ + /* sprintf (res, "%s%s%s%s%s%s:%d/%s%s%s", proto_name, + (user ? user : ""), (passwd ? ":" : ""), + (passwd ? passwd : ""), (user ? "@" : ""), + host, u->port, dir, *dir ? "/" : "", file); */ + l = 0; + memcpy(res, proto_name, ln); + l += ln; + if (user) + { + memcpy(res + l, user, lu); + l += lu; + if (passwd) + { + res[l++] = ':'; + memcpy(res + l, passwd, lp); + l += lp; + } + res[l++] = '@'; + } + memcpy(res + l, host, lh); + l += lh; + if (u->port != proto_default_port) + { + res[l++] = ':'; + + sprintf(res + l, "%ld", (long) u->port); + + l += numdigit(u->port); + } + res[l++] = '/'; + memcpy(res + l, dir, ld); + l += ld; + if (*dir) + res[l++] = '/'; + strcpy(res + l, file); + kfree(host); + kfree(dir); + kfree(file); + kfree(user); + kfree(passwd); + return res; +} + + +/* Extract the given URL of the form + (http:|ftp:)// (user (:password)?@)?hostname (:port)? (/path)? + 1. hostname (terminated with `/' or `:') + 2. port number (terminated with `/'), or chosen for the protocol + 3. dirname (everything after hostname) + Most errors are handled. No allocation is done, you must supply + pointers to allocated memory. + ...and a host of other stuff :-) + + - Recognizes hostname:dir/file for FTP and + hostname (:portnum)?/dir/file for HTTP. + - Parses the path to yield directory and file + - Parses the URL to yield the username and passwd (if present) + - Decodes the strings, in case they contain "forbidden" characters + - Writes the result to struct urlinfo + + If the argument STRICT is set, it recognizes only the canonical + form. */ +uerr_t proz_parse_url(const char *url, urlinfo * u, int strict) +{ + int i, l, abs_ftp; + int recognizable; /* Recognizable URL is the one where + the protocol name was explicitly + named, i.e. it wasn't deduced from + the URL format. */ + uerr_t type; + + memset(u, 0, sizeof(urlinfo)); + recognizable = has_proto(url); + if (strict && !recognizable) + return URLUNKNOWN; + for (i = 0, l = 0; i < ARRAY_SIZE(sup_protos); i++) + { + l = strlen(sup_protos[i].name); + if (!strncasecmp(sup_protos[i].name, url, l)) + break; + } + /* If protocol is recognizable, but unsupported, bail out, else + suppose unknown. */ + if (recognizable && i == ARRAY_SIZE(sup_protos)) + return URLUNKNOWN; + else if (i == ARRAY_SIZE(sup_protos)) + type = URLUNKNOWN; + else + u->proto = type = sup_protos[i].ind; + + if (type == URLUNKNOWN) + l = 0; + /* Allow a username and password to be specified (i.e. just skip + them for now). */ + if (recognizable) + l += skip_uname(url + l); + for (i = l; url[i] && url[i] != ':' && url[i] != '/'; i++); + if (i == l) + return URLBADHOST; + /* Get the hostname. */ + u->host = strdupdelim(url + l, url + i); + + /* Assume no port has been given. */ + u->port = 0; + if (url[i] == ':') + { + /* We have a colon delimiting the hostname. It could mean that + a port number is following it, or a directory. */ + if (isdigit(url[++i])) /* A port number */ + { + if (type == URLUNKNOWN) + u->proto = type = URLHTTP; + for (; url[i] && url[i] != '/'; i++) + if (isdigit(url[i])) + u->port = 10 * u->port + (url[i] - '0'); + else + return URLBADPORT; + if (!u->port) + return URLBADPORT; + } else if (type == URLUNKNOWN) /* or a directory */ + u->proto = type = URLFTP; + else /* or just a misformed port number */ + return URLBADPORT; + } else if (type == URLUNKNOWN) + u->proto = type = URLHTTP; + if (!u->port) + { + int ind; + for (ind = 0; ind < ARRAY_SIZE(sup_protos); ind++) + if (sup_protos[ind].ind == type) + break; + if (ind == ARRAY_SIZE(sup_protos)) + return URLUNKNOWN; + u->port = sup_protos[ind].port; + } + /* Some delimiter troubles... */ + if (url[i] == '/' && url[i - 1] != ':') + ++i; + if (type == URLHTTP) + while (url[i] && url[i] == '/') + ++i; + u->path = (char *) kmalloc(strlen(url + i) + 8); + strcpy(u->path, url + i); + if (type == URLFTP) + { + u->ftp_type = process_ftp_type(u->path); + /* #### We don't handle type `d' correctly yet. */ + if (!u->ftp_type || toupper(u->ftp_type) == 'D') + u->ftp_type = 'I'; + } + + + /* Parse the username and password (if existing). */ + parse_uname(url, &u->user, &u->passwd); + /* Decode the strings, as per RFC 1738. */ + decode_string(u->host); + // decode_string(u->path); + if (u->user) + decode_string(u->user); + if (u->passwd) + decode_string(u->passwd); + /* Parse the directory. */ + parse_dir(u->path, &u->dir, &u->file); + /* Simplify the directory. */ + path_simplify(u->dir); + /* Remove the leading `/' in HTTP. */ + if (type == URLHTTP && *u->dir == '/') + strcpy(u->dir, u->dir + 1); + /* Strip trailing `/'. */ + l = strlen(u->dir); + if (l > 1 && u->dir[l - 1] == '/') + u->dir[l - 1] = '\0'; + /* Re-create the path: */ + abs_ftp = (u->proto == URLFTP && *u->dir == '/'); + /* sprintf (u->path, "%s%s%s%s", abs_ftp ? "%2F": "/", + abs_ftp ? (u->dir + 1) : u->dir, *u->dir ? "/" : "", u->file); */ + strcpy(u->path, abs_ftp ? "%2F" : "/"); + strcat(u->path, abs_ftp ? (u->dir + 1) : u->dir); + strcat(u->path, *u->dir ? "/" : ""); + strcat(u->path, u->file); + ENCODE(u->path); + /* Create the clean URL. */ + u->url = str_url(u, 0); + return URLOK; +} + + + + + + + + + + + +/****************************************************************************** + This function constructs and returns a malloced copy of the relative link + from two pieces of information: local name of the referring file (s1) and + local name of the referred file (s2). + + So, if s1 is "jagor.srce.hr/index.html" and s2 is + "jagor.srce.hr/images/news.gif", new name should be "images/news.gif". + + Alternately, if the s1 is "fly.cc.fer.hr/ioccc/index.html", and s2 is + "fly.cc.fer.hr/images/fly.gif", new name should be "../images/fly.gif". + + Caveats: s1 should not begin with '/', unless s2 begins with '/' too. + s1 should not contain things like ".." and such -- + construct_relative("fly/ioccc/../index.html", "fly/images/fly.gif") + will fail. (workaround is to call path_simplify on s1). +******************************************************************************/ +char *construct_relative(const char *s1, const char *s2) +{ + int i, cnt, sepdirs1; + char *res; + + if (*s2 == '/') + return kstrdup(s2); + + /* s1 should *not* be absolute, if s2 wasn't. */ + assert(*s1 != '/'); + i = cnt = 0; + + /* Skip the directories common to both strings. */ + while (1) + { + for (; + s1[i] && s2[i] && s1[i] == s2[i] && s1[i] != '/' + && s2[i] != '/'; i++); + if (s1[i] == '/' && s2[i] == '/') + cnt = ++i; + else + break; + } + for (sepdirs1 = 0; s1[i]; i++) + if (s1[i] == '/') + ++sepdirs1; + + /* Now, construct the file as of: + - ../ repeated sepdirs1 time + - all the non-mutual directories of s2. */ + + res = kmalloc(3 * sepdirs1 + strlen(s2 + cnt) + 1); + for (i = 0; i < sepdirs1; i++) + memcpy(res + 3 * i, "../", 3); + strcpy(res + 3 * i, s2 + cnt); + return res; +} + +/****************************************************************************** + Add a URL to the list. +******************************************************************************/ +urlpos *add_url(urlpos * l, const char *url, const char *file) +{ + urlpos *t, *b; + + t = kmalloc(sizeof(urlpos)); + memset(t, 0, sizeof(*t)); + t->url = kstrdup(url); + t->local_name = kstrdup(file); + if (!l) + return t; + b = l; + while (l->next) + l = l->next; + l->next = t; + return b; +} + + +/*This will copy a url structure to another */ +void url_cpy(urlinfo * src, urlinfo * dest) +{ + + +} + + +/* Find the last occurrence of character C in the range [b, e), or + NULL, if none are present. This is almost completely equivalent to + { *e = '\0'; return strrchr(b); }, except that it doesn't change + the contents of the string. */ +const char *find_last_char(const char *b, const char *e, char c) +{ + for (; e > b; e--) + if (*e == c) + return e; + return NULL; +} + +/* Resolve the result of "linking" a base URI (BASE) to a + link-specified URI (LINK). + + Either of the URIs may be absolute or relative, complete with the + host name, or path only. This tries to behave "reasonably" in all + foreseeable cases. It employs little specific knowledge about + protocols or URL-specific stuff -- it just works on strings. + + The parameters LINKLENGTH is useful if LINK is not zero-terminated. + See uri_merge for a gentler interface to this functionality. + + #### This function should handle `./' and `../' so that the evil + path_simplify can go. */ +char *uri_merge_1(const char *base, const char *link, int linklength, + int no_proto) +{ + char *constr; + + if (no_proto) + { + const char *end = base + urlpath_length(base); + + if (*link != '/') + { + /* LINK is a relative URL: we need to replace everything + after last slash (possibly empty) with LINK. + + So, if BASE is "whatever/foo/bar", and LINK is "qux/xyzzy", + our result should be "whatever/foo/qux/xyzzy". */ + int need_explicit_slash = 0; + int span; + const char *start_insert; + const char *last_slash = find_last_char(base, end, '/'); + if (!last_slash) + { + /* No slash found at all. Append LINK to what we have, + but we'll need a slash as a separator. + + Example: if base == "foo" and link == "qux/xyzzy", then + we cannot just append link to base, because we'd get + "fooqux/xyzzy", whereas what we want is + "foo/qux/xyzzy". + + To make sure the / gets inserted, we set + need_explicit_slash to 1. We also set start_insert + to end + 1, so that the length calculations work out + correctly for one more (slash) character. Accessing + that character is fine, since it will be the + delimiter, '\0' or '?'. */ + /* example: "foo?..." */ + /* ^ ('?' gets changed to '/') */ + start_insert = end + 1; + need_explicit_slash = 1; + } else if (last_slash && last_slash != base + && *(last_slash - 1) == '/') + { + /* example: http://host" */ + /* ^ */ + start_insert = end + 1; + need_explicit_slash = 1; + } else + { + /* example: "whatever/foo/bar" */ + /* ^ */ + start_insert = last_slash + 1; + } + + span = start_insert - base; + constr = (char *) kmalloc(span + linklength + 1); + if (span) + memcpy(constr, base, span); + if (need_explicit_slash) + constr[span - 1] = '/'; + if (linklength) + memcpy(constr + span, link, linklength); + constr[span + linklength] = '\0'; + } else /* *link == `/' */ + { + /* LINK is an absolute path: we need to replace everything + after (and including) the FIRST slash with LINK. + + So, if BASE is "http://host/whatever/foo/bar", and LINK is + "/qux/xyzzy", our result should be + "http://host/qux/xyzzy". */ + int span; + const char *slash; + const char *start_insert = NULL; /* for gcc to shut up. */ + const char *pos = base; + int seen_slash_slash = 0; + /* We're looking for the first slash, but want to ignore + double slash. */ + again: + slash = memchr(pos, '/', end - pos); + if (slash && !seen_slash_slash) + if (*(slash + 1) == '/') + { + pos = slash + 2; + seen_slash_slash = 1; + goto again; + } + + /* At this point, SLASH is the location of the first / after + "//", or the first slash altogether. START_INSERT is the + pointer to the location where LINK will be inserted. When + examining the last two examples, keep in mind that LINK + begins with '/'. */ + + if (!slash && !seen_slash_slash) + /* example: "foo" */ + /* ^ */ + start_insert = base; + else if (!slash && seen_slash_slash) + /* example: "http://foo" */ + /* ^ */ + start_insert = end; + else if (slash && !seen_slash_slash) + /* example: "foo/bar" */ + /* ^ */ + start_insert = base; + else if (slash && seen_slash_slash) + /* example: "http://something/" */ + /* ^ */ + start_insert = slash; + + span = start_insert - base; + constr = (char *) kmalloc(span + linklength + 1); + if (span) + memcpy(constr, base, span); + if (linklength) + memcpy(constr + span, link, linklength); + constr[span + linklength] = '\0'; + } + } else /* !no_proto */ + { + constr = strdupdelim(link, link + linklength); + } + return constr; +} + +/* Merge BASE with LINK and return the resulting URI. This is an + interface to uri_merge_1 that assumes that LINK is a + zero-terminated string. */ +char *uri_merge(const char *base, const char *link) +{ + return uri_merge_1(base, link, strlen(link), !has_proto(link)); +} + +/****************************************************************************** + Perform a "deep" free of the urlinfo structure. The structure should have + been created with newurl, but need not have been used. If free_pointer + is non-0, free the pointer itself. +******************************************************************************/ +void proz_free_url(urlinfo * u, boolean complete) +{ + assert(u != NULL); + + if (u->url) + kfree(u->url); + if (u->host) + kfree(u->host); + if (u->path) + kfree(u->path); + if (u->file) + kfree(u->file); + if (u->dir) + kfree(u->dir); + if (u->user) + kfree(u->user); + if (u->passwd) + kfree(u->passwd); + if (u->referer) + kfree(u->referer); + if (complete) + kfree(u); +} + + + +urlinfo *proz_copy_url(urlinfo * u) +{ + urlinfo *dest_url; + + dest_url = (urlinfo *) kmalloc(sizeof(urlinfo)); + memset(dest_url, 0, sizeof(urlinfo)); + + if (u->url) + dest_url->url = kstrdup(u->url); + dest_url->proto = u->proto; + dest_url->port = u->port; + if (u->host) + dest_url->host = kstrdup(u->host); + if (u->path) + dest_url->path = kstrdup(u->path); + if (u->dir) + dest_url->dir = kstrdup(u->dir); + if (u->file) + dest_url->file = kstrdup(u->file); + if (u->user) + dest_url->user = kstrdup(u->user); + if (u->passwd) + dest_url->passwd = kstrdup(u->passwd); + if (u->referer) + dest_url->referer = kstrdup(u->referer); + + return dest_url; +} diff --git a/libprozilla/src/url.h b/libprozilla/src/url.h new file mode 100644 index 0000000..327323c --- /dev/null +++ b/libprozilla/src/url.h @@ -0,0 +1,74 @@ +/* Declarations for URL handling. + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +/* $Id: url.h,v 1.20 2001/08/17 21:53:39 kalum Exp $ */ + + +#ifndef URL_H +#define URL_H + + +#include "common.h" +#include "misc.h" +#include "prozilla.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Structure containing info on a protocol. */ + typedef struct proto { + char *name; + uerr_t ind; + unsigned short port; + } proto_t; + + enum uflags { + URELATIVE = 0x0001, /* Is URL relative? */ + UNOPROTO = 0x0002, /* Is URL without a protocol? */ + UABS2REL = 0x0004, /* Convert absolute to relative? */ + UREL2ABS = 0x0008 /* Convert relative to absolute? */ + }; + +/* A structure that defines the whereabouts of a URL, i.e. its + position in an HTML document, etc. */ + typedef struct _urlpos { + char *url; /* URL */ + char *local_name; /* Local file to which it was saved. */ + enum uflags flags; /* Various flags. */ + int pos, size; /* Rekative position in the buffer. */ + struct _urlpos *next; /* Next struct in list. */ + } urlpos; + + int + has_proto(const char *url); + int + skip_uname(const char *url); + void + parse_dir(const char *path, char **dir, char **file); + void + path_simplify(char *path); + char *uri_merge(const char *base, const char *link); + int + urlpath_length(const char *url); + int + skip_proto(const char *url); + char *str_url(const urlinfo * u, int hide); +#ifdef __cplusplus +} +#endif +#endif /* URL_H */ diff --git a/libprozilla/stamp-h b/libprozilla/stamp-h new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/libprozilla/stamp-h @@ -0,0 +1 @@ +timestamp diff --git a/libprozilla/stamp-h.in b/libprozilla/stamp-h.in new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/libprozilla/stamp-h.in @@ -0,0 +1 @@ +timestamp diff --git a/ltdl.m4 b/ltdl.m4 new file mode 100644 index 0000000..43ed9cd --- /dev/null +++ b/ltdl.m4 @@ -0,0 +1,395 @@ +## ltdl.m4 - Configure ltdl for the target system. -*-Shell-script-*- +## Copyright (C) 1999-2000 Free Software Foundation, Inc. +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +## +## As a special exception to the GNU General Public License, if you +## distribute this file as part of a program that contains a +## configuration script generated by Autoconf, you may include it under +## the same distribution terms that you use for the rest of that program. + +# serial 5 AC_LIB_LTDL + +# AC_WITH_LTDL +# ------------ +# Clients of libltdl can use this macro to allow the installer to +# choose between a shipped copy of the ltdl sources or a preinstalled +# version of the library. +AC_DEFUN([AC_WITH_LTDL], +[AC_REQUIRE([AC_LIB_LTDL]) +AC_SUBST([LIBLTDL]) +AC_SUBST([INCLTDL]) + +# Unless the user asks us to check, assume no installed ltdl exists. +use_installed_libltdl=no + +AC_ARG_WITH([included_ltdl], + [ --with-included-ltdl use the GNU ltdl sources included here]) + +if test "x$with_included_ltdl" != xyes; then + # We are not being forced to use the included libltdl sources, so + # decide whether there is a useful installed version we can use. + AC_CHECK_HEADER([ltdl.h], + [AC_CHECK_LIB([ltdl], [lt_dlcaller_register], + [with_included_ltdl=no], + [with_included_ltdl=yes]) + ]) +fi + +if test "x$enable_ltdl_install" != xyes; then + # If the user did not specify an installable libltdl, then default + # to a convenience lib. + AC_LIBLTDL_CONVENIENCE +fi + +if test "x$with_included_ltdl" = xno; then + # If the included ltdl is not to be used. then Use the + # preinstalled libltdl we found. + AC_DEFINE([HAVE_LTDL], 1, + [Define this if a modern libltdl is already installed]) + LIBLTDL=-lltdl +fi + +# Report our decision... +AC_MSG_CHECKING([whether to use included libltdl]) +AC_MSG_RESULT([$with_included_ltdl]) + +AC_CONFIG_SUBDIRS([libltdl]) +])# AC_WITH_LTDL + + +# AC_LIB_LTDL +# ----------- +# Perform all the checks necessary for compilation of the ltdl objects +# -- including compiler checks and header checks. +AC_DEFUN([AC_LIB_LTDL], +[AC_PREREQ(2.13) +AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AC_C_CONST]) +AC_REQUIRE([AC_HEADER_STDC]) +AC_REQUIRE([AC_HEADER_DIRENT]) +AC_REQUIRE([AC_LIBTOOL_HEADER_ASSERT]) +AC_REQUIRE([_LT_AC_CHECK_DLFCN]) +AC_REQUIRE([AC_LTDL_ENABLE_INSTALL]) +AC_REQUIRE([AC_LTDL_SHLIBEXT]) +AC_REQUIRE([AC_LTDL_SHLIBPATH]) +AC_REQUIRE([AC_LTDL_SYSSEARCHPATH]) +AC_REQUIRE([AC_LTDL_OBJDIR]) +AC_REQUIRE([AC_LTDL_DLPREOPEN]) +AC_REQUIRE([AC_LTDL_DLLIB]) +AC_REQUIRE([AC_LTDL_SYMBOL_USCORE]) +AC_REQUIRE([AC_LTDL_DLSYM_USCORE]) +AC_REQUIRE([AC_LTDL_SYS_DLOPEN_DEPLIBS]) +AC_REQUIRE([AC_LTDL_FUNC_ARGZ]) + +AC_CHECK_HEADERS([errno.h malloc.h memory.h stdlib.h stdio.h ctype.h unistd.h]) +AC_CHECK_HEADERS([dl.h sys/dl.h dld.h]) +AC_CHECK_HEADERS([string.h strings.h], break) + +AC_CHECK_FUNCS([strchr index], break) +AC_CHECK_FUNCS([strrchr rindex], break) +AC_CHECK_FUNCS([memcpy bcopy], break) +AC_CHECK_FUNCS([memmove strcmp]) + +])# AC_LIB_LTDL + +# AC_LTDL_ENABLE_INSTALL +# ---------------------- +AC_DEFUN([AC_LTDL_ENABLE_INSTALL], +[AC_ARG_ENABLE(ltdl-install, +[ --enable-ltdl-install install libltdl]) + +AM_CONDITIONAL(INSTALL_LTDL, test x"${enable_ltdl_install-no}" != xno) +AM_CONDITIONAL(CONVENIENCE_LTDL, test x"${enable_ltdl_convenience-no}" != xno) +])])# AC_LTDL_ENABLE_INSTALL + +# AC_LTDL_SYS_DLOPEN_DEPLIBS +# -------------------------- +AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_CACHE_CHECK([whether deplibs are loaded by dlopen], + libltdl_cv_sys_dlopen_deplibs, [dnl + # PORTME does your system automatically load deplibs for dlopen()? + libltdl_cv_sys_dlopen_deplibs=unknown + case "$host_os" in + hpux10*|hpux11*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + linux*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + netbsd*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + openbsd*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + solaris*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + esac +]) +if test "$libltdl_cv_sys_dlopen_deplibs" != yes; then + AC_DEFINE(LTDL_DLOPEN_DEPLIBS, 1, + [Define if the OS needs help to load dependent libraries for dlopen(). ]) +fi +])# AC_LTDL_SYS_DLOPEN_DEPLIBS + +# AC_LTDL_SHLIBEXT +# ---------------- +AC_DEFUN([AC_LTDL_SHLIBEXT], +[AC_REQUIRE([_LT_AC_LTCONFIG_HACK]) +AC_CACHE_CHECK([which extension is used for shared libraries], + libltdl_cv_shlibext, +[ac_last= + for ac_spec in $library_names_spec; do + ac_last="$ac_spec" + done + echo "$ac_last" | [sed 's/\[.*\]//;s/^[^.]*//;s/\$.*$//;s/\.$//'] > conftest +libltdl_cv_shlibext=`cat conftest` +rm -f conftest +]) +if test -n "$libltdl_cv_shlibext"; then + AC_DEFINE_UNQUOTED(LTDL_SHLIB_EXT, "$libltdl_cv_shlibext", + [Define to the extension used for shared libraries, say, ".so". ]) +fi +])# AC_LTDL_SHLIBEXT + +# AC_LTDL_SHLIBPATH +# ----------------- +AC_DEFUN([AC_LTDL_SHLIBPATH], +[AC_REQUIRE([_LT_AC_LTCONFIG_HACK]) +AC_CACHE_CHECK([which variable specifies run-time library path], + libltdl_cv_shlibpath_var, [libltdl_cv_shlibpath_var="$shlibpath_var"]) +if test -n "$libltdl_cv_shlibpath_var"; then + AC_DEFINE_UNQUOTED(LTDL_SHLIBPATH_VAR, "$libltdl_cv_shlibpath_var", + [Define to the name of the environment variable that determines the dynamic library search path. ]) +fi +])# AC_LTDL_SHLIBPATH + +# AC_LTDL_SYSSEARCHPATH +# --------------------- +AC_DEFUN([AC_LTDL_SYSSEARCHPATH], +[AC_REQUIRE([_LT_AC_LTCONFIG_HACK]) +AC_CACHE_CHECK([for the default library search path], + libltdl_cv_sys_search_path, [libltdl_cv_sys_search_path="$sys_lib_dlsearch_path_spec"]) +if test -n "$libltdl_cv_sys_search_path"; then + case "$host" in + *-*-mingw*) pathsep=";" ;; + *) pathsep=":" ;; + esac + sys_search_path= + for dir in $libltdl_cv_sys_search_path; do + if test -z "$sys_search_path"; then + sys_search_path="$dir" + else + sys_search_path="$sys_search_path$pathsep$dir" + fi + done + AC_DEFINE_UNQUOTED(LTDL_SYSSEARCHPATH, "$sys_search_path", + [Define to the system default library search path. ]) +fi +])# AC_LTDL_SYSSEARCHPATH + +# AC_LTDL_OBJDIR +# -------------- +AC_DEFUN([AC_LTDL_OBJDIR], +[AC_CACHE_CHECK([for objdir], + libltdl_cv_objdir, [libltdl_cv_objdir="$objdir" +if test -n "$objdir"; then + : +else + rm -f .libs 2>/dev/null + mkdir .libs 2>/dev/null + if test -d .libs; then + libltdl_cv_objdir=.libs + else + # MS-DOS does not allow filenames that begin with a dot. + libltdl_cv_objdir=_libs + fi +rmdir .libs 2>/dev/null +fi]) +AC_DEFINE_UNQUOTED(LTDL_OBJDIR, "$libltdl_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries. ]) +])# AC_LTDL_OBJDIR + +# AC_LTDL_DLPREOPEN +# ----------------- +AC_DEFUN([AC_LTDL_DLPREOPEN], +[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl +AC_CACHE_CHECK([whether libtool supports -dlopen/-dlpreopen], + libltdl_cv_preloaded_symbols, [dnl + if test -n "$global_symbol_pipe"; then + libltdl_cv_preloaded_symbols=yes + else + libltdl_cv_preloaded_symbols=no + fi +]) +if test x"$libltdl_cv_preloaded_symbols" = x"yes"; then + AC_DEFINE(HAVE_PRELOADED_SYMBOLS, 1, + [Define if libtool can extract symbol lists from object files. ]) +fi +])# AC_LTDL_DLPREOPEN + +# AC_LTDL_DLLIB +# ------------- +AC_DEFUN([AC_LTDL_DLLIB], +[LIBADD_DL= +AC_SUBST(LIBADD_DL) + +AC_CHECK_FUNC([shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.])], + [AC_CHECK_LIB([dld], [shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.]) + LIBADD_DL="$LIBADD_DL -ldld"], + [AC_CHECK_LIB([dl], [dlopen], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + LIBADD_DL="-ldl"], + [AC_TRY_LINK([#if HAVE_DLFCN_H +# include +#endif + ], + [dlopen(0, 0);], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.])], + [AC_CHECK_LIB([svld], [dlopen], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + LIBADD_DL="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [AC_DEFINE([HAVE_DLD], [1], + [Define if you have the GNU dld library.]) + LIBADD_DL="$LIBADD_DL -ldld" + ]) + ]) + ]) + ]) + ]) +]) + +if test "x$ac_cv_func_dlopen" = xyes || test "x$ac_cv_lib_dl_dlopen" = xyes; then + LIBS_SAVE="$LIBS" + LIBS="$LIBS $LIBADD_DL" + AC_CHECK_FUNCS(dlerror) + LIBS="$LIBS_SAVE" +fi +])# AC_LTDL_DLLIB + +# AC_LTDL_SYMBOL_USCORE +# --------------------- +AC_DEFUN([AC_LTDL_SYMBOL_USCORE], +[dnl does the compiler prefix global symbols with an underscore? +AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl +AC_MSG_CHECKING([for _ prefix in compiled symbols]) +AC_CACHE_VAL(ac_cv_sys_symbol_underscore, +[ac_cv_sys_symbol_underscore=no +cat > conftest.$ac_ext < $ac_nlist) && test -s "$ac_nlist"; then + # See whether the symbols have a leading underscore. + if egrep '^. _nm_test_func' "$ac_nlist" >/dev/null; then + ac_cv_sys_symbol_underscore=yes + else + if egrep '^. nm_test_func ' "$ac_nlist" >/dev/null; then + : + else + echo "configure: cannot find nm_test_func in $ac_nlist" >&AC_FD_CC + fi + fi + else + echo "configure: cannot run $global_symbol_pipe" >&AC_FD_CC + fi +else + echo "configure: failed program was:" >&AC_FD_CC + cat conftest.c >&AC_FD_CC +fi +rm -rf conftest* +]) +AC_MSG_RESULT($ac_cv_sys_symbol_underscore) +])# AC_LTDL_SYMBOL_USCORE + + +# AC_LTDL_DLSYM_USCORE +# -------------------- +AC_DEFUN([AC_LTDL_DLSYM_USCORE], +[AC_REQUIRE([AC_LTDL_SYMBOL_USCORE])dnl +if test x"$ac_cv_sys_symbol_underscore" = xyes; then + if test x"$ac_cv_func_dlopen" = xyes || + test x"$ac_cv_lib_dl_dlopen" = xyes ; then + AC_CACHE_CHECK([whether we have to add an underscore for dlsym], + libltdl_cv_need_uscore, [dnl + libltdl_cv_need_uscore=unknown + save_LIBS="$LIBS" + LIBS="$LIBS $LIBADD_DL" + _LT_AC_TRY_DLOPEN_SELF( + libltdl_cv_need_uscore=no, libltdl_cv_need_uscore=yes, + [], libltdl_cv_need_uscore=cross) + LIBS="$save_LIBS" + ]) + fi +fi + +if test x"$libltdl_cv_need_uscore" = xyes; then + AC_DEFINE(NEED_USCORE, 1, + [Define if dlsym() requires a leading underscore in symbol names. ]) +fi +])# AC_LTDL_DLSYM_USCORE + + +# AC_CHECK_TYPES(TYPES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], +# [INCLUDES]) +# --------------------------------------------------------------- +# This macro did not exist in Autoconf 2.13, which we do still support +ifdef([AC_CHECK_TYPES], [], +[define([AC_CHECK_TYPES], + [AC_CACHE_CHECK([for $1], ac_Type, + [AC_TRY_LINK([$4], + [if (($1 *) 0) + return 0; + if (sizeof ($1)) + return 0;], + [ac_Type=yes], + [ac_Type=no])]) + if test "x$ac_Type" = xyes; then + ifelse([$2], [], [:], [$2]) + else + ifelse([$3], [], [:], [$3]) + fi]) +])# AC_CHECK_TYPES + + +# AC_LTDL_FUNC_ARGZ +# ----------------- +AC_DEFUN([AC_LTDL_FUNC_ARGZ], +[AC_CHECK_HEADERS([argz.h]) + +AC_CHECK_TYPES([error_t], + [], + [AC_DEFINE([error_t], [int], + [Define to a type to use for \`error_t' if it is not otherwise available.])], + [#if HAVE_ARGZ_H +# include +#endif]) + +AC_CHECK_FUNCS([argz_append argz_create_sep argz_insert argz_next argz_stringify]) +])# AC_LTDL_FUNC_ARGZ diff --git a/ltmain.sh b/ltmain.sh new file mode 100644 index 0000000..7e0c9f4 --- /dev/null +++ b/ltmain.sh @@ -0,0 +1,5062 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" + +# Parse our command line options once, thoroughly. +while test $# -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + exit 0 + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 + exit 0 + ;; + + --debug) + echo "$progname: enabling shell trace mode" + set -x + ;; + + --dry-run | -n) + run=: + ;; + + --features) + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + exit 0 + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 +fi + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + case $nonopt in + *cc | *++ | gcc* | *-gcc* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + prev= + lastarg= + srcfile="$nonopt" + suppress_output= + + user_target=no + for arg + do + case $prev in + "") ;; + xcompiler) + # Aesthetically quote the previous argument. + prev= + lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + + case $arg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + + # Add the previous argument to base_compile. + if test -z "$base_compile"; then + base_compile="$lastarg" + else + base_compile="$base_compile $lastarg" + fi + continue + ;; + esac + + # Accept any command-line options. + case $arg in + -o) + if test "$user_target" != "no"; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit 1 + fi + user_target=next + ;; + + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + if test -z "$base_compile"; then + base_compile="$lastarg" + else + base_compile="$base_compile $lastarg" + fi + continue + ;; + esac + + case $user_target in + next) + # The next one is the -o target name + user_target=yes + continue + ;; + yes) + # We got the output file + user_target=set + libobj="$arg" + continue + ;; + esac + + # Accept the current argument as the source file. + lastarg="$srcfile" + srcfile="$arg" + + # Aesthetically quote the previous argument. + + # Backslashify any backslashes, double quotes, and dollar signs. + # These are the only characters that are still specially + # interpreted inside of double-quoted scrings. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $lastarg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + + # Add the previous argument to base_compile. + if test -z "$base_compile"; then + base_compile="$lastarg" + else + base_compile="$base_compile $lastarg" + fi + done + + case $user_target in + set) + ;; + no) + # Get the name of the library object. + libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + *) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit 1 + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSfmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit 1 + ;; + esac + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $libobj" + else + removelist="$libobj" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit 1" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit 1" 1 2 15 + else + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$0" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit 1 + fi + echo $srcfile > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + # All platforms use -DPIC, to notify preprocessed assembler code. + command="$base_compile $srcfile $pic_flag -DPIC" + else + # Don't build PIC code + command="$base_compile $srcfile" + fi + if test "$build_old_libs" = yes; then + lo_libobj="$libobj" + dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$libobj"; then + dir="$objdir" + else + dir="$dir/$objdir" + fi + libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` + + if test -d "$dir"; then + $show "$rm $libobj" + $run $rm $libobj + else + $show "$mkdir $dir" + $run $mkdir $dir + status=$? + if test $status -ne 0 && test ! -d $dir; then + exit $status + fi + fi + fi + if test "$compiler_o_lo" = yes; then + output_obj="$libobj" + command="$command -o $output_obj" + elif test "$compiler_c_o" = yes; then + output_obj="$obj" + command="$command -o $output_obj" + fi + + $run $rm "$output_obj" + $show "$command" + if $run eval "$command"; then : + else + test -n "$output_obj" && $run $rm $removelist + exit 1 + fi + + if test "$need_locks" = warn && + test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then + echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit 1 + fi + + # Just move the object if needed, then go on to compile the next one + if test x"$output_obj" != x"$libobj"; then + $show "$mv $output_obj $libobj" + if $run $mv $output_obj $libobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # If we have no pic_flag, then copy the object into place and finish. + if (test -z "$pic_flag" || test "$pic_mode" != default) && + test "$build_old_libs" = yes; then + # Rename the .lo from within objdir to obj + if test -f $obj; then + $show $rm $obj + $run $rm $obj + fi + + $show "$mv $libobj $obj" + if $run $mv $libobj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir="." + else + xdir="$xdir" + fi + baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"` + libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` + # Now arrange that obj and lo_libobj become the same file + $show "(cd $xdir && $LN_S $baseobj $libobj)" + if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + $run $rm "$lockfile" + fi + exit 0 + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Allow error messages only from the first compilation. + suppress_output=' >/dev/null 2>&1' + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $srcfile" + else + # All platforms use -DPIC, to notify preprocessed assembler code. + command="$base_compile $srcfile $pic_flag -DPIC" + fi + if test "$compiler_c_o" = yes; then + command="$command -o $obj" + output_obj="$obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + command="$command$suppress_output" + $run $rm "$output_obj" + $show "$command" + if $run eval "$command"; then : + else + $run $rm $removelist + exit 1 + fi + + if test "$need_locks" = warn && + test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then + echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit 1 + fi + + # Just move the object if needed + if test x"$output_obj" != x"$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Create an invalid libtool object if no PIC, so that we do not + # accidentally link it into a program. + if test "$build_libtool_libs" != yes; then + $show "echo timestamp > $libobj" + $run eval "echo timestamp > \$libobj" || exit $? + else + # Move the .lo from within objdir + $show "$mv $libobj $lo_libobj" + if $run $mv $libobj $lo_libobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + fi + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + $run $rm "$lockfile" + fi + + exit 0 + ;; + + # libtool link mode + link | relink) + modename="$modename: link" + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invokation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args="$nonopt" + compile_command="$nonopt" + finalize_command="$nonopt" + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + + avoid_version=no + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -all-static | -static) + if test "X$arg" = "X-all-static"; then + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + fi + build_libtool_libs=no + build_old_libs=yes + prefer_static_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test $# -gt 0; do + arg="$1" + shift + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit 1 + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit 1 + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n $prev + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit 1 + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | no/*-*-nonstopux*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + exit 1 + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-mingw* | *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -o) prev=output ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit 1 + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + + *.lo | *.$objext) + # A library or standard object. + if test "$prev" = dlfiles; then + # This file was specified with -dlopen. + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $arg" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` + prev= + else + case $arg in + *.lo) libobjs="$libobjs $arg" ;; + *) objs="$objs $arg" ;; + esac + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d $output_objdir; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + status=$? + if test $status -ne 0 && test ! -d $output_objdir; then + exit $status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit 1 + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test $linkmode = prog; then + # Determine which files to process + case $pass in + dlopen) + libs="$dlfiles" + save_deplibs="$deplibs" # Collect dlpreopened libraries + deplibs= + ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -l*) + if test $linkmode = oldlib && test $linkmode = obj; then + $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2 + continue + fi + if test $pass = conv; then + deplibs="$deplib $deplibs" + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + # Search the libtool library + lib="$searchdir/lib${name}.la" + if test -f "$lib"; then + found=yes + break + fi + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test $pass = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test $pass = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test $pass = scan; then + deplibs="$deplib $deplibs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test $pass = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test $pass = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + if test "$deplibs_check_method" != pass_all; then + echo + echo "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not used here." + else + echo + echo "*** Warning: Linking the shared library $output against the" + echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test $pass != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test $found = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib'" 1>&2 + exit 1 + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit 1 + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variable installed. + installed=yes + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test $linkmode = oldlib && test $linkmode = obj; }; then + # Add dl[pre]opened files of deplib + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test $pass = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit 1 + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test $linkmode != prog && test $linkmode != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit 1 + fi + continue + fi # $pass = conv + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit 1 + fi + + # This library was specified with -dlopen. + if test $pass = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit 1 + fi + if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. + dlprefiles="$dlprefiles $lib" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test $pass = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit 1 + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test $linkmode = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" + fi + continue + fi + + if test $linkmode = prog && test $pass != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test $linkalldeplibs = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + link_static=no # Whether the deplib will be linked statically + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + # Link against this shared library + + if test "$linkmode,$pass" = "prog,link" || + { test $linkmode = lib && test $hardcode_into_libs = yes; }; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + if test $linkmode = prog; then + # We need to hardcode the library path + if test -n "$shlibpath_var"; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $dir" ;; + esac + fi + fi + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + eval cmds=\"$extract_expsyms_cmds\" + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + eval cmds=\"$old_archive_from_expsyms_cmds\" + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n $old_archive_from_expsyms_cmds + + if test $linkmode = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit 1 + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test $linkmode = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test $linkmode = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + add="-l$name" + fi + + if test $linkmode = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test $linkmode = prog; then + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + + # Try to link the static library + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + echo "*** Warning: This system can not link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + convenience="$convenience $dir/$old_library" + old_convenience="$old_convenience $dir/$old_library" + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test $linkmode = lib; then + if test -n "$dependency_libs" && + { test $hardcode_into_libs != yes || test $build_old_libs = yes || + test $link_static = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test $link_all_deplibs != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="-L$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit 1 + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="-L$absdir" + fi + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$deplibs $path" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test $pass = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test $pass != dlopen; then + test $pass != scan && dependency_libs="$newdependency_libs" + if test $pass != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + *) + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + if test "$pass" = "conv" && + { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then + libs="$deplibs" # reset libs + deplibs= + fi + done # for pass + if test $linkmode = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit 1 + else + echo + echo "*** Warning: Linking the shared library $output against the non-libtool" + echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test $# -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + libext=al + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + current="$2" + revision="$3" + age="$4" + + # Check that each of the things are valid numbers. + case $current in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + case $revision in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + case $age in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + if test $age -gt $current; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + major=`expr $current - $age + 1` + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test $loop != 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test $loop != 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + verstring="0.0" + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring="" + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs. + $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" + $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + for path in $notinst_path; do + lib_search_path=`echo "$lib_search_path " | ${SED} -e 's% $path % %g'` + deplibs=`echo "$deplibs " | ${SED} -e 's% -L$path % %g'` + dependency_libs=`echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` + done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test $hardcode_into_libs != yes || test $build_old_libs = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd*) + # Do not include libc due to us having libc/libc_r. + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test $build_libtool_need_lc = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behaviour. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | egrep "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + echo "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + echo "*** with $libname but no candidates were found. (...for file magic test)" + else + echo "*** with $libname and none of the candidates passed a file format test" + echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name="`expr $a_deplib : '-l\(.*\)'`" + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check below in file_magic test + if eval echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | egrep "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + echo "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + echo "*** with $libname and none of the candidates passed a file format test" + echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | + grep . >/dev/null; then + echo + if test "X$deplibs_check_method" = "Xnone"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + echo "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test $allow_undefined = no; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test $hardcode_into_libs = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + test -z "$dlname" && dlname=$soname + + lib="$output_objdir/$realname" + for link + do + linknames="$linknames $link" + done + + # Ensure that we have .o objects for linkers which dislike .lo + # (e.g. aix) in case we are running --disable-static + for obj in $libobjs; do + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir="." + else + xdir="$xdir" + fi + baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` + if test ! -f $xdir/$oldobj; then + $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" + $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? + fi + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + eval cmds=\"$export_symbols_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` + done + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval cmds=\"$archive_expsym_cmds\" + else + save_deplibs="$deplibs" + for conv in $convenience; do + tmp_deplibs= + for test_deplib in $deplibs; do + if test "$test_deplib" != "$conv"; then + tmp_deplibs="$tmp_deplibs $test_deplib" + fi + done + deplibs="$tmp_deplibs" + done + eval cmds=\"$archive_cmds\" + deplibs="$save_deplibs" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + exit 0 + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit 1 + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` + done + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + eval cmds=\"$reload_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit 0 + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + $show "echo timestamp > $libobj" + $run eval "echo timestamp > $libobj" || exit $? + exit 0 + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + eval cmds=\"$reload_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + else + # Just create a symlink. + $show $rm $libobj + $run $rm $libobj + xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$libobj"; then + xdir="." + else + xdir="$xdir" + fi + baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` + oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` + $show "(cd $xdir && $LN_S $oldobj $baseobj)" + $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit 0 + ;; + + prog) + case $host in + *cygwin*) output=`echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + ;; + esac + ;; + esac + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$output.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + else + $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' + $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval 'echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DPIC";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit 1 + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test $need_relink = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit 0 + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $0 --fallback-echo"; then + case $0 in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; + *) qecho="$SHELL `pwd`/$0 --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) exeext=.exe ;; + *) exeext= ;; + esac + $rm $output + trap "$rm $output; exit 1" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit 1 + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 ${SED} + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # win32 systems need to use the prog path for dll + # lookup to work + *-*-cygwin* | *-*-pw32*) + $echo >> $output "\ + exec \$progdir/\$program \${1+\"\$@\"} +" + ;; + + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \$progdir\\\\\$program \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + # Export the path to the program. + PATH=\"\$progdir:\$PATH\" + export PATH + + exec \$program \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit 1 + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" + chmod +x $output + fi + exit 0 + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + # Add in members from convenience archives. + for xlib in $addlibs; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` + done + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + eval cmds=\"$old_archive_from_new_cmds\" + else + # Ensure that we have .o objects in place in case we decided + # not to build a shared library, and have fallen back to building + # static libs even though --disable-static was passed! + for oldobj in $oldobjs; do + if test ! -f $oldobj; then + xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$oldobj"; then + xdir="." + else + xdir="$xdir" + fi + baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` + obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` + $show "(cd $xdir && ${LN_S} $obj $baseobj)" + $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? + fi + done + + eval cmds=\"$old_archive_cmds\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit 1 + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit 1 + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit 1 + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test $need_relink = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit 0 + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg="$nonopt" + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest="$arg" + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) prev="-f" ;; + -g) prev="-g" ;; + -m) prev="-m" ;; + -o) prev="-o" ;; + -s) + stripme=" -s" + continue + ;; + -*) ;; + + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest="$arg" + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit 1 + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test $# -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + continue + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test $# -gt 0; then + # Delete the old symlinks, and create new ones. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + eval cmds=\"$postinstall_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit 0 + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | egrep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $wrapper ;; + *) . ./$wrapper ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit 1 + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $wrapper ;; + *) . ./$wrapper ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir="/tmp" + test -n "$TMPDIR" && tmpdir="$TMPDIR" + tmpdir="$tmpdir/libtool-$$" + if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : + else + $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 + continue + fi + file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyways + case $install_prog,$host in + /usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + eval cmds=\"$old_postinstall_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $0 --finish$current_libdirs' + else + exit 0 + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + eval cmds=\"$finish_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = ":" && exit 0 + + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + echo " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + echo "See any operating system documentation about shared libraries for" + echo "more information, such as the ld(1) and ld.so(8) manual pages." + echo "----------------------------------------------------------------------" + exit 0 + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit 1 + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit 1 + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved enviroment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit 0 + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + rmdirs= + + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$objdir" + else + objdir="$dir/$objdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test $mode = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test $mode = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + + if test $mode = uninstall; then + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + eval cmds=\"$postuninstall_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + if test $? != 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + eval cmds=\"$old_postuninstall_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + if test $? != 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + fi + fi + ;; + + *.lo) + if test "$build_old_libs" = yes; then + oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` + rmfiles="$rmfiles $dir/$oldobj" + fi + ;; + + *) + # Do a test to see if this is a libtool program. + if test $mode = clean && + (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$file + + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit 1 + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit 1 + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit 1 +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE." + exit 0 + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; +esac + +echo +$echo "Try \`$modename --help' for more information about other modes." + +exit 0 + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/man/Makefile.am b/man/Makefile.am new file mode 100644 index 0000000..12cdbb1 --- /dev/null +++ b/man/Makefile.am @@ -0,0 +1,2 @@ +man_MANS = prozgui.1 +EXTRA_DIST = $(man_MANS) diff --git a/man/Makefile.in b/man/Makefile.in new file mode 100644 index 0000000..37f750a --- /dev/null +++ b/man/Makefile.in @@ -0,0 +1,352 @@ +# Makefile.in generated by automake 1.7 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POFILES = @POFILES@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +THREAD_LIBS = @THREAD_LIBS@ +UNAME = @UNAME@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +subdirs = @subdirs@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +man_MANS = prozgui.1 +EXTRA_DIST = $(man_MANS) +subdir = man +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +NROFF = nroff +MANS = $(man_MANS) +DIST_COMMON = Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu man/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +man1dir = $(mandir)/man1 +install-man1: $(man1_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(man1dir) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ + done +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ + rm -f $(DESTDIR)$(man1dir)/$$inst; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(MANS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(man1dir) + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-man + +install-exec-am: + +install-info: install-info-am + +install-man: install-man1 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-man + +uninstall-man: uninstall-man1 + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-man1 install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am uninstall-man uninstall-man1 + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/man/prozgui.1 b/man/prozgui.1 new file mode 100644 index 0000000..5919f9f --- /dev/null +++ b/man/prozgui.1 @@ -0,0 +1,105 @@ +.TH PROGUI 1 "May 30, 2001" +.SH "NAME" +.LP +\fBProzGUI\fR \- a download accelerator for GNU/Linux FLTK-based +.SH "SYNTAX" +.B prozgui +.SH "DESCRIPTION" +\fBProzGUI\fP is a program that makes multiple connections and downloads +a file in multiple parts simultaneously thus enhancing the download speed +and downloading the file faster than a download with a single connection. +.PP +It fully supports resumng, error detection, handling and recovery. +.PP +.\"It is also able to do ftp searches for other possible sites that contain +.\"the same file, ping them for connection speeds and automatically download +.\"from the fastest site, or ask the user to choose one. +.\".PP +FTP passwords can be specified with the URL, or can be +obtained automatically from +.B "~/.netrc" +if it exists. +.SH "OPTIONS" +Options are configured in the "Preferences" dialog screen. +.SH "EXAMPLES" +.TP +.B prozgui +ProzGUI will connect to that server and download the file using the default +settings +.SH "FILES" +.TP +.B "~/.prozilla/prozconfig" +The user's configfile (Not to be edited by hand, and overwritten at runtime) +.TP +.B "~/.netrc" +A file which can be used to provide prozilla with hosts, accounts and +passwords +.SH "BUGS" +Please report bugs to +.SH "AUTHOR" +Kalum Somaratna +.PP +.B "Several contributions come from:" +.br +Richard Dawe +.br +Lourens Veen +.br +Flower +.br +Biscuit +.br +Hrvoje Niksic +.br +Silviu Marin-Caea +.br +Ralph Slooten +.br +Tse Chi Ming +.br +Gustavo Noronha Silva +.br +Calum Selkirk +.br +Seth Cohn +.br +Davy Durham +.br +Uwe Hermann +.br +Drew +.br +Andy Jeffries +.br +Guillermo Pereyra Irujo +.br +Michael Duelli +.br +Steven Hatfield +.br +Ralph Slooten +.br +Calin Damian +.br +David L. Matthews +.br +Pablo Iranzo Gómez +.br +Ruben Boer +.br +Krogg +.br +Emanuele Tatti +.br +.PP +.B "Manpage:" +.br +Ralph Slooten +.br +Flower +.br +Gustavo Noronha Silva +.br +Uwe Hermann +.SH "SEE ALSO" +\fIHomepage:\fR http://prozilla.genesys.ro/ diff --git a/missing b/missing new file mode 100755 index 0000000..6a37006 --- /dev/null +++ b/missing @@ -0,0 +1,336 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing 0.4 - GNU automake" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. + You can get \`$1Help2man' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then + # We have makeinfo, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + tar) + shift + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + fi + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequirements for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 diff --git a/mkinstalldirs b/mkinstalldirs new file mode 100755 index 0000000..50fff7f --- /dev/null +++ b/mkinstalldirs @@ -0,0 +1,40 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +# $Id: mkinstalldirs,v 1.1 2001/06/11 13:48:54 kalum Exp $ + +errstatus=0 + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# mkinstalldirs ends here diff --git a/po/CVS/Entries b/po/CVS/Entries new file mode 100644 index 0000000..3f415b9 --- /dev/null +++ b/po/CVS/Entries @@ -0,0 +1,9 @@ +/ChangeLog/1.1/Thu Jun 7 23:42:15 2001// +/POTFILES.in/1.1/Thu Jun 7 23:42:16 2001// +/cat-id-tbl.c/1.1/Thu Jun 7 23:42:17 2001// +/Makefile.in.in/1.1/Thu Jun 7 23:42:16 2001// +/stamp-cat-id/1.1/Wed Aug 8 09:57:25 2001// +/libprozilla.pot/1.14/Wed Aug 8 09:57:24 2001// +/pt_BR.gmo/1.2/Wed Aug 8 10:14:34 2001// +/pt_BR.po/1.2/Wed Aug 8 10:14:34 2001// +D diff --git a/po/CVS/Repository b/po/CVS/Repository new file mode 100644 index 0000000..4f73473 --- /dev/null +++ b/po/CVS/Repository @@ -0,0 +1 @@ +libprozilla/po diff --git a/po/CVS/Root b/po/CVS/Root new file mode 100644 index 0000000..0e741fc --- /dev/null +++ b/po/CVS/Root @@ -0,0 +1 @@ +:pserver:kalum@cvs.delrom.ro:/home/cvsroot diff --git a/po/ChangeLog b/po/ChangeLog new file mode 100644 index 0000000..d70e06a --- /dev/null +++ b/po/ChangeLog @@ -0,0 +1,4 @@ +2001-06-03 gettextize + + * Makefile.in.in: Upgrade to gettext-0.10.38. + diff --git a/po/Makefile.in.in b/po/Makefile.in.in new file mode 100644 index 0000000..111b40f --- /dev/null +++ b/po/Makefile.in.in @@ -0,0 +1,248 @@ +# Makefile for program source directory in GNU NLS utilities package. +# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper +# +# This file file be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datadir = $(prefix)/@DATADIRNAME@ +localedir = $(datadir)/locale +gnulocaledir = $(prefix)/share/locale +gettextsrcdir = $(prefix)/share/gettext/po +subdir = po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@ + +CC = @CC@ +GENCAT = @GENCAT@ +GMSGFMT = PATH=../src:$$PATH @GMSGFMT@ +MSGFMT = @MSGFMT@ +XGETTEXT = PATH=../src:$$PATH @XGETTEXT@ +MSGMERGE = PATH=../src:$$PATH msgmerge + +DEFS = @DEFS@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ + +INCLUDES = -I.. -I$(top_srcdir)/intl + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +SOURCES = cat-id-tbl.c +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ +stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES) + +POTFILES = \ + +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +INSTOBJEXT = @INSTOBJEXT@ + +.SUFFIXES: +.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat + +.c.o: + $(COMPILE) $< + +.po.pox: + $(MAKE) $(PACKAGE).pot + $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox + +.po.mo: + $(MSGFMT) -o $@ $< + +.po.gmo: + file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ + && rm -f $$file && $(GMSGFMT) -o $$file $< + +.po.cat: + sed -f ../intl/po2msg.sed < $< > $*.msg \ + && rm -f $@ && $(GENCAT) $@ $*.msg + + +all: all-@USE_NLS@ + +all-yes: cat-id-tbl.c $(CATALOGS) +all-no: + +$(srcdir)/$(PACKAGE).pot: $(POTFILES) + $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ + --add-comments --keyword=_ --keyword=N_ \ + --files-from=$(srcdir)/POTFILES.in \ + && test ! -f $(PACKAGE).po \ + || ( rm -f $(srcdir)/$(PACKAGE).pot \ + && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot ) + +$(srcdir)/cat-id-tbl.c: stamp-cat-id; @: +$(srcdir)/stamp-cat-id: $(PACKAGE).pot + rm -f cat-id-tbl.tmp + sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \ + | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp + if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \ + rm cat-id-tbl.tmp; \ + else \ + echo cat-id-tbl.c changed; \ + rm -f $(srcdir)/cat-id-tbl.c; \ + mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \ + fi + cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ +install-data-no: all +install-data-yes: all + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $(datadir); \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $(datadir); \ + fi + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + case "$$cat" in \ + *.gmo) destdir=$(gnulocaledir);; \ + *) destdir=$(localedir);; \ + esac; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + dir=$$destdir/$$lang/LC_MESSAGES; \ + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $$dir; \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \ + fi; \ + if test -r $$cat; then \ + $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ + echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \ + else \ + $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \ + fi; \ + if test -r $$cat.m; then \ + $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ + else \ + if test -r $(srcdir)/$$cat.m ; then \ + $(INSTALL_DATA) $(srcdir)/$$cat.m \ + $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ + else \ + true; \ + fi; \ + fi; \ + done + if test "$(PACKAGE)" = "gettext"; then \ + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $(gettextsrcdir); \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ + fi; \ + $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ + $(gettextsrcdir)/Makefile.in.in; \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ + rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ + rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ + rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ + done + rm -f $(gettextsrcdir)/po-Makefile.in.in + +check: all + +cat-id-tbl.o: ../intl/libgettext.h + +dvi info tags TAGS ID: + +mostlyclean: + rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f $(GMOFILES) + +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: update-po $(DISTFILES) + dists="$(DISTFILES)"; \ + for file in $$dists; do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir); \ + done + +update-po: Makefile + $(MAKE) $(PACKAGE).pot + PATH=`pwd`/../src:$$PATH; \ + cd $(srcdir); \ + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + mv $$lang.po $$lang.old.po; \ + echo "$$lang:"; \ + if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \ + rm -f $$lang.old.po; \ + else \ + echo "msgmerge for $$cat failed!"; \ + rm -f $$lang.po; \ + mv $$lang.old.po $$lang.po; \ + fi; \ + done + +POTFILES: POTFILES.in + ( if test 'x$(srcdir)' != 'x.'; then \ + posrcprefix='$(top_srcdir)/'; \ + else \ + posrcprefix="../"; \ + fi; \ + rm -f $@-t $@ \ + && (sed -e '/^#/d' -e '/^[ ]*$$/d' \ + -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \ + | sed -e '$$s/\\$$//') > $@-t \ + && chmod a-w $@-t \ + && mv $@-t $@ ) + +Makefile: Makefile.in.in ../config.status POTFILES + cd .. \ + && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ + $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 0000000..689064b --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,7 @@ +src/we.cxx +src/dl_win.cxx +src/download_win.cpp +src/init.cpp +src/main.cpp +src/options.cpp +src/prefs.cpp diff --git a/po/cat-id-tbl.c b/po/cat-id-tbl.c new file mode 100644 index 0000000..9b4339b --- /dev/null +++ b/po/cat-id-tbl.c @@ -0,0 +1,567 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2003-02-18 05:45+0600\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING\n" + +#: src/we.cxx:49 +msgid "USER@SITE" +msgstr "" + +#: src/we.cxx:50 +msgid "USER@ProxyUser@SITE" +msgstr "" + +#: src/we.cxx:51 +msgid "USER@SITE_PROXYUSER" +msgstr "" + +#: src/we.cxx:52 +msgid "ProxyUser@SITE" +msgstr "" + +#: src/we.cxx:53 +msgid "LOGIN_then_USER@SITE" +msgstr "" + +#: src/we.cxx:54 +msgid "OPENSITE" +msgstr "" + +#: src/we.cxx:55 +msgid "SITESITE" +msgstr "" + +#: src/we.cxx:56 +msgid "HTTP proxy" +msgstr "" + +#: src/we.cxx:81 +msgid "filesearching.com" +msgstr "" + +#: src/we.cxx:82 +msgid "ftpsearch.uniovie.es" +msgstr "" + +#: src/we.cxx:83 +msgid "ftpsearch.lycos.com" +msgstr "" + +#: src/we.cxx:93 +msgid "Prozilla Preferences Panel" +msgstr "" + +#: src/we.cxx:98 +msgid "General" +msgstr "" + +#: src/we.cxx:117 +msgid "Number of Threads:" +msgstr "" + +#: src/we.cxx:126 +msgid "Use PASV for FTP transfers (recommended)" +msgstr "" + +#: src/we.cxx:131 +msgid "" +"Ask the HTTP proxies not to cache requests between sessions (default is off)" +msgstr "" + +#: src/we.cxx:147 +msgid "Retry Delay (Sec):" +msgstr "" + +#: src/we.cxx:151 +msgid "Timeout Period (Sec):" +msgstr "" + +#: src/we.cxx:155 +msgid "Directory to download the files:" +msgstr "" + +#: src/we.cxx:159 +msgid "Limit bandwith usage PER download to (Kbps) (0 = unlimited):" +msgstr "" + +#: src/we.cxx:167 +msgid "Proxies" +msgstr "" + +#: src/we.cxx:175 src/we.cxx:202 +msgid "Hostname:" +msgstr "" + +#: src/we.cxx:180 src/we.cxx:207 +msgid "Port:" +msgstr "" + +#: src/we.cxx:186 +msgid "HTTP Proxy:" +msgstr "" + +#: src/we.cxx:191 src/we.cxx:213 +msgid "Username:" +msgstr "" + +#: src/we.cxx:196 src/we.cxx:218 +msgid "Password:" +msgstr "" + +#: src/we.cxx:224 +msgid "FTP Proxy:" +msgstr "" + +#: src/we.cxx:229 +msgid "FTP Proxy Type:" +msgstr "" + +#: src/we.cxx:236 +msgid "Use HTTP Proxy" +msgstr "" + +#: src/we.cxx:241 +msgid "Use FTP Proxy" +msgstr "" + +#: src/we.cxx:249 +msgid "Direct Connection to the Internet" +msgstr "" + +#: src/we.cxx:256 +msgid "Use proxies" +msgstr "" + +#: src/we.cxx:269 +msgid "FTP Search" +msgstr "" + +#: src/we.cxx:275 +msgid "Number of mirrors to request:" +msgstr "" + +#: src/we.cxx:288 +msgid "Ping Timeout (Sec):" +msgstr "" + +#: src/we.cxx:297 +msgid "Number of mirrors to ping at once:" +msgstr "" + +#: src/we.cxx:310 +msgid "Do FTPSearch automatically" +msgstr "" + +#: src/we.cxx:315 +msgid "FTPSearch Server to use:" +msgstr "" + +#: src/we.cxx:332 src/we.cxx:4253 src/we.cxx:4654 +msgid "OK" +msgstr "" + +#: src/dl_win.cxx:119 src/we.cxx:336 src/we.cxx:4670 +msgid "Cancel" +msgstr "" + +#: src/we.cxx:4241 +msgid "Prozilla Download Accelerator 2.0.5beta" +msgstr "" + +#: src/we.cxx:4247 +msgid "GUI Version 2.0.5beta" +msgstr "" + +#: src/we.cxx:4250 +msgid "libprozilla version 1.2.0" +msgstr "" + +#: src/we.cxx:4265 +msgid "Credits" +msgstr "" + +#: src/we.cxx:4274 +msgid "Kalum Somaratna - Main Programming" +msgstr "" + +#: src/we.cxx:4278 +msgid "Uwe Hermann - Additional Programming" +msgstr "" + +#: src/we.cxx:4281 +msgid "" +"Gustavo Noronha Silva (KoV) - libprozilla GNU gettext support, deb package " +"maintainer" +msgstr "" + +#: src/we.cxx:4286 +msgid "Ralph Slooten - Web Page Maintainer, RPM packager, testing" +msgstr "" + +#: src/we.cxx:4290 +msgid "" +"If you have contributed and arent listed, I apologise and please mail me " +" and I will correct it" +msgstr "" + +#: src/we.cxx:4295 +msgid "" +"Silviu Marin-Caea - (Our sysadmin) Donation of valuable bandwith and system " +"resources at genesys.ro, testing" +msgstr "" + +#: src/we.cxx:4300 +msgid "Pablo Iranzo Gómez - testing" +msgstr "" + +#: src/we.cxx:4304 +msgid "Krogg - The cool Prozilla logo" +msgstr "" + +#: src/we.cxx:4308 +msgid "David L. Matthews - testing" +msgstr "" + +#: src/we.cxx:4316 +msgid "Translations" +msgstr "" + +#: src/we.cxx:4324 +msgid "Ruben Boer - Dutch Translation" +msgstr "" + +#: src/we.cxx:4328 +msgid "Ralph Slooten- Dutch Translation" +msgstr "" + +#: src/we.cxx:4332 +msgid "Flower - Romanian Translation" +msgstr "" + +#: src/we.cxx:4336 +msgid "Gustavo Noronha Silva (KoV) - Portugese Translation" +msgstr "" + +#: src/we.cxx:4340 +msgid "Emanuele Tatti (Kreazy) - Itallian Translation" +msgstr "" + +#: src/we.cxx:4344 +msgid "Alberto Zanoni - Itallian Translation" +msgstr "" + +#: src/we.cxx:4348 +msgid "Eric Lassauge - French Translation" +msgstr "" + +#: src/we.cxx:4358 +msgid "Webpage - http://prozilla.genesys.ro/" +msgstr "" + +#: src/we.cxx:4652 +msgid "Please enter the URL" +msgstr "" + +#: src/we.cxx:4663 +msgid "Enter URL (CTRL+V to paste from clipboard)" +msgstr "" + +#: src/we.cxx:4674 +msgid "FTPSearch for mirrors (Experimental)" +msgstr "" + +#: src/dl_win.cxx:31 +msgid "Abort, Resume Later" +msgstr "" + +#: src/dl_win.cxx:36 src/download_win.cpp:403 +msgid "Pause" +msgstr "" + +#: src/dl_win.cxx:42 +msgid "Abort, No Resume Later" +msgstr "" + +#: src/dl_win.cxx:48 +msgid "URL:" +msgstr "" + +#: src/dl_win.cxx:87 +msgid "Estimated Time Left" +msgstr "" + +#: src/dl_win.cxx:115 +msgid "Creating file.............." +msgstr "" + +#: src/dl_win.cxx:154 src/dl_win.cxx:187 src/dl_win.cxx:225 +msgid "Attention!" +msgstr "" + +#: src/dl_win.cxx:158 +msgid "Ok" +msgstr "" + +#: src/dl_win.cxx:191 src/dl_win.cxx:229 +msgid "Yes" +msgstr "" + +#: src/dl_win.cxx:195 src/dl_win.cxx:233 +msgid "No" +msgstr "" + +#: src/download_win.cpp:44 +msgid "Are you Sure You want to quit?" +msgstr "" + +#: src/download_win.cpp:188 +msgid "Creating the thread that gets info about file.." +msgstr "" + +#: src/download_win.cpp:212 +msgid "I am unable to delete the target file!" +msgstr "" + +#: src/download_win.cpp:245 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections" +msgstr "" + +#: src/download_win.cpp:254 +msgid "" +"The previous download used a different number of connections than the " +"default! so I will use the previous number of threads" +msgstr "" + +#: src/download_win.cpp:274 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections to delete" +msgstr "" + +#: src/download_win.cpp:298 +#, c-format +msgid "The target file %s exists, would you like to overwrite it?" +msgstr "" + +#: src/download_win.cpp:326 +#, c-format +msgid "" +"Previous download of %s exists, would you like to resume it or overwrite it?" +msgstr "" + +#: src/download_win.cpp:330 +msgid "Resume" +msgstr "" + +#: src/download_win.cpp:331 +msgid "Overwrite" +msgstr "" + +#: src/download_win.cpp:361 +msgid "" +"There doesnt seem to be enough free space or a disk write failed when " +"attempting to create output file" +msgstr "" + +#: src/download_win.cpp:383 +msgid "RESUME supported" +msgstr "" + +#: src/download_win.cpp:391 +msgid "RESUME NOT supported" +msgstr "" + +#: src/download_win.cpp:457 +msgid "UnPause" +msgstr "" + +#: src/download_win.cpp:488 +msgid "waiting for thread to end" +msgstr "" + +#: src/download_win.cpp:490 +msgid "Thread ended" +msgstr "" + +#: src/download_win.cpp:498 +msgid "Got info succesfully" +msgstr "" + +#: src/download_win.cpp:501 +#, c-format +msgid "File Size = %ld Kb" +msgstr "" + +#: src/download_win.cpp:505 +msgid "File Size is UNKOWN" +msgstr "" + +#: src/download_win.cpp:546 +#, c-format +msgid "The URL %s doesnt exist!" +msgstr "" + +#: src/download_win.cpp:577 +msgid "No suitable mirrors were found, downloading from original server" +msgstr "" + +#: src/download_win.cpp:642 +#, c-format +msgid "Total Bytes received %ld Kb" +msgstr "" + +#: src/download_win.cpp:647 +#, c-format +msgid "Average Speed = %.3f Kb/sec" +msgstr "" + +#: src/download_win.cpp:656 +#, c-format +msgid "%d Seconds" +msgstr "" + +#: src/download_win.cpp:658 +#, c-format +msgid "%d Minutes %d Seconds" +msgstr "" + +#: src/download_win.cpp:661 +#, c-format +msgid "%d Hours %d minutes" +msgstr "" + +#. Wait till all are completed +#: src/download_win.cpp:683 +msgid "Waiting till all threads terminate" +msgstr "" + +#: src/download_win.cpp:688 +msgid "Got DL succesfully, now building file" +msgstr "" + +#: src/download_win.cpp:695 +#, c-format +msgid "Building file %s ....." +msgstr "" + +#: src/download_win.cpp:717 +msgid "" +"Error the server/proxy lied about resuming so I have to restart this from " +"the beginning!" +msgstr "" + +#: src/download_win.cpp:737 +#, c-format +msgid "" +"One connection of the download %s encountered a unrecoverable local error, " +"usually lack of free space, or a write to bad medium, or a problem with " +"permissions,so please fix this and retry" +msgstr "" + +#: src/download_win.cpp:754 +#, c-format +msgid "" +"A connection(s) of the download %s encountered a unrecoverable remote error, " +"usually the file not being present in the remote server, therefore the " +"download had to be aborted!" +msgstr "" + +#: src/download_win.cpp:801 src/download_win.cpp:828 +msgid "Close" +msgstr "" + +#: src/main.cpp:245 src/main.cpp:361 src/main.cpp:498 +#, c-format +msgid "%s does not seem to be a valid URL" +msgstr "" + +#: src/main.cpp:255 +#, c-format +msgid "%s is already in the list of downloads" +msgstr "" + +#: src/main.cpp:269 +#, c-format +msgid "%s is already running!" +msgstr "" + +#: src/main.cpp:278 src/main.cpp:368 +#, c-format +msgid "%s contains just a hostname, it does not contain a file to download!" +msgstr "" + +#: src/main.cpp:307 +msgid "&File" +msgstr "" + +#: src/main.cpp:308 +msgid "&New URL" +msgstr "" + +#: src/main.cpp:310 +msgid "&Preferences" +msgstr "" + +#: src/main.cpp:312 +msgid "&Quit" +msgstr "" + +#: src/main.cpp:314 +msgid "&Download" +msgstr "" + +#: src/main.cpp:315 +msgid "&Start" +msgstr "" + +#: src/main.cpp:316 +msgid "&Stop" +msgstr "" + +#: src/main.cpp:317 +msgid "&Remove from list" +msgstr "" + +#: src/main.cpp:319 +msgid "&Help" +msgstr "" + +#: src/main.cpp:320 +msgid "&About" +msgstr "" + +#: src/main.cpp:447 +msgid "Error: Invalid option\n" +msgstr "" + +#: src/main.cpp:452 +msgid "Prozilla - Download Accelerator" +msgstr "" + +#: src/options.cpp:130 +#, c-format +msgid "%s does not seem to be a valid directory" +msgstr "" + +#: src/options.cpp:153 +#, c-format +msgid "%s does not seem to be a valid HTTP proxy value" +msgstr "" + +#: src/options.cpp:181 +#, c-format +msgid "%s does not seem to be a valid FTP proxy value" +msgstr "" diff --git a/po/fr.gmo b/po/fr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..278cf7bfb434fe7a7b390b25c7a98b5952895714 GIT binary patch literal 10156 zcmcJUYiuRwS;ya`O`B|KOIunlh4AjSyK5&t-dmC;-c5GBws+TE+w0oLn`|jf=bSUg zXOcNHCv&mAE+B*iB9&4kpc3MymI^*ZKmipA5x!N8gedufs7fTtCLc%+?|tj%3|E`>81pRnGjHP$*XQpx=6&E7 z!1sfH4(s-LCwDk z>iuO<>rKG7gTGfke;(Y=?-xM}z7GBvc+WeHsevB`?*rFB?ek~BC&15xTHkj-$?HAu zGUnajK~VB~u*5UqkMR2^d=K~%sP$a~4}!0QKLoyu!5;uW z1YQQ80NJ|v5{T%`3*aH}t6&2DE2#B8`GbYLegQni?=OINg5LzsfUkgB&jBV^{|7;> z=Lzrya0}G<$LS=#oC5Xx3aIrrLGff8Tmqj1e-eBd{1EsiD0$vXXYJz=kSWaycoKXP zwBT=n(%WBwd}6)=O3z;hL+}kya%?cjr@>EyGvK#DRA!E|2(9BZf28jXP|u$MCC{G& zQI+{65RsZ+2gTPff|BFcK<(=rp!D=AD0#dcQb`Z@ftZR}1%DK*gQxE>CIYpuKZXq4 zny-Kw?`7~Y@SnkB;6WCD9DE$q`aT052LAxmyf1;Wk8gnD?JJZyyivZtlgWRV z-|qlF2|f>Yz9m5;V;VH{{(jV{oV5S(=0;!dlr;@{t%S>zYNMAUI1n9 z|5(01fbzBP`#|wvo110~H-~-^NK$c)W2eNeYry&2#*Z2c9&9^|U|GVH(@Gi(FeLVy|1bzbaz+VHU zmp4kh!xrm)C%DD)hd}M;k3g;S??LVV-$Cj91VT9regxF|cfkk2Uja4WSHYLTZ-H9R ziwIZieF@aQ`k?mlZBY7rAI7l^T5uAKz#8})M~&Gv-n7@$z1>JXPL*1Y|kRk897>rTw8E zXIIrT$*Q`vA6<$E+EaCj2f9#|yH@zSL3g% z?)n5zF4LxIn2h7}Pl58CS7@@m>Jo2{(4H(GJOKK%le9Z&kI@=5@n771EA1{?b%}?T zwx$OMTlPYnC#mJ88$@~Lr+T(r-0JDN-;AS{dpfvHEzdG9h*JAho@UmwojA=Ruj^0Q zAhWI5Pi+)uRWIJRgV48G%&YAvjJ?)=b1)tDOMSnqw+)}JTV5En?78}??IrQfRsGKW z+jYNC|K9pD%?5kGLPT2d7W8?Zw8C)Nh)zc@VZFUZ-rRGOf$Zc@Qi#b77qN zW-jqrblJzfAN(1hM94TB*7|1T2n6R;e?rCfnZO7YkZj7gym%xt> zI(73(91VXnh$1AmpSc-$1_2e`%*H*jY@b;`qHLYv>w!q?w=*MGx9VJ7{c6vj8U8MA z3!&+0DZX`Q;o5he7TwDiSUXN!Gef$Cot~dC2Yx!7H0NZ}>%p!sx`i#+Hu8u)Y^+?o z^!SQ77slI&w`SK+P_)-Z&TlN*%YGtO+vC$mrynrq{Rk?D<~&Yme#xeJ6Q9w}QR@@| zVB0oE+3b2b29ESI=LsO*R*Wepan$ixWVq#7Xb@i(2Uf9j)R#h!5o^88M`6%Fk-I?{ zdiMOvhPa>kI~nWi^_<^m`3*?Zd|Fo6C5|bU;XRynJ5|h>3uQ!`F^ksg;-j5&M(8c) zfgEYz07E-d+HV%y&Ve|JC_E-XgK!FuA{x}oY#2b())YMQdNB?)U{`u;d!g@f&q_iI zD^5L4$m^cjM7ZhIbUKM2bKMs0Hao)0CJIahT60nT>^iziJi;&HT4p06(`Mpz<)zI< z?l*Z+ho8+j4)wAS3=4?OQqUz}H(14XkaZxGB(l1&HjGy6c;aHCM;x0t3VHG<)F*yx za>lI0{6nZg=44Y*4+de3#5cBD#e3(iWS?;oU?g6MdsLh{wC==HR zxUm>Nc#|%r2c9vPBJH&b!QX5A4P*S$-tZej77f%+eBY)}hfD`+^XztlFl37j9Bmh0 zns>`LFpzNGMQI2YTkHl!Jeb0hlnQSLJB14o3lcvg*SLgG+?Zw+q2hC3{cdc}|5w-F zMU9n9Ud63#$4P6(tV%F)CUWW%q-ZE+wcrz+!c1FL)fbllw!9Ehyxnc?0hxcEY=_54@jDZ?{DO};)wT1PKM##R;&kJ*z4H!FeYJ&kj~?n^{N;wGbn6&iUeVGxiWU; zMP*PM`<6}Q*`C-?#aMFYxjo&5}~P;8)Y26+fHq~|zQaewF#hTD)`D;lClrQLWLr_TLG zFUS!0XqayRu@aOywL%3Ii!G{T8k#D4K?h)U3Ym$xg zs_+6N$Sw3+(R!6g7Pl(#*JDDOJ$n^RBA=!oY_X>@sEq`P)NDkn9;-DQtauP)-LIje zcRyEW*DvF-64xtJoIyIoP^INvLMUsQbRDtj9Wp=NCpzxTn2l}UUck7$NCcd1kxZdi z)(5!-47J5ptqjvMO5=Ao^PsS}eXE!1wIX|rquM<4&e-Eej~=TXJ6=0_ z!XA5Y=7AIUA3b*TC>?8Sa7Us3mixX@< zaMMrRNw^4DnHxc!a~|LqSd6|yhn$1OV3$q0!|?y*3&--2PY&by+*&leoW{sI7coZ{ zV3R&UD~rkftA4YV({9|0Iq04%w!+akXmKW9iSsQ#M16`gbn3VJqeo(Bjxm-&c}IS) zm5<0kNveE=XZ_r5owKjD-u5tb#CHt|1SAfOUx_dp?4_6V-6=Tb13I|0LSiGPae|xD zv!S%zOt`=NUoy5ujL<2&+sj?Tt|>$1&RSf8mHDnazp7c$1uyW%`|Sp{9HfO4rw7_@ zaFQC$J5of=I{KWFGo1&%kHaIORzJ&8m2pQh?I{`ZPT43FE*5*g#WT0Y`;{G_X8Cq@ z?~xf3Z{@C{fu|uM-~jDM<}w+Bzgyc^O;> zV1tO>_QWsA%^jk91Uob)zy1t5;s$EaL63&#>GDHyxf1ZCxs1M2CDHL!pVV(~td8BW zdQEnlW=Xk+5uF~aj@YwN#BLIE4xbFnCH;YROZ^W{+3sen$AQ8VA5ggf%W3Al*UM$= zz(aUYRA3JUNr&TUkXxR=Q!}SbwlErG)x^78vrfx8c&`nOH2%&A(F-Y-^N>@Yb8;>u zOSOViI1-gdsm|gQFQmO&oW^fVfd%Pj*M^7XPpTt1DJ19cCWldIl3SgAaot42_L=RYtxQDH>%PV%V-&B)z@ ztbdI(2`#}>_ra)zP{Jhr$5Tdq6~HQjR=Ge^o5-;@PIr~tm?_Wq%viY8eWvbrd!n)P zLK-gU_Km{Sm_sL3uYCIqnP#aODaNepd?ZJv($dHaw4XcQ<0m7Z6v`Z!Pby!y`omg4oluPYhc+-%6$N5*-8;LuGIwcZWn*Dj8yMG266eJB$Shu1-dh~#M|~9s z>VshC{6o@5Il+{6bz_r+)YuQ7x(vDKF0mEmtIC#cS2!47rH=jirU-PK(!qLBA{Z+h z6k;9L6sB}iSK{IH1Ha2k0#yY{CZ$T{=yXJ`vH^&q)VOQnq;~l`G2&93*3d*oJT`@?FQ8Z zdOf93m2ep6yoNo#=1t$AngBUn4y%0{8L!VViVaZj6V`aK7Q!R=Km!VrA^29S5pM42IhKRhd8_LkDycQ3tVR6T0C-N*6j#8*}T|14fs1 zin%yy2b+26kmQJ1WtHJ-oz=t!S6N?N*_f>_URtriz~0B7S6<+{^2PFqSJ5OKk5bh% zrYxfLpn}^C<&5I^pI$e>xXIru;lzfA-)hfGF4H*3 ze=r_)l@3R`{RU?=u4Cz_WKt0?N$6!cMW(JfVNUtKbS#U4NMA)-o@4k#ap&^}`Q=R# zehpKme(8bXj9Sf@ProgbPg9O}r=lv6H1m1VcmAt`G1UrVDm7FTK*Ylsm&JeUV60@| zt^`5|AEfGOF{mWu${=OhASqz*#gWn!2N`T>@Klj&_}JA(28jhqb;S`TRrXj`NMKo? z0!cM~VIf7OqzHhe2E^aJB@=9C5M#Wue4+~AEQbh%jzS@ANe30{q#>s^5IVt, 2001 +# http://lassauge.free.fr/linux.html +# +msgid "" +msgstr "" +"Project-Id-Version: prozgui 2.0.4\n" +"POT-Creation-Date: 2001-12-03 15:43+0100\n" +"PO-Revision-Date: 2001-12-03 15:43+0100\n" +"Last-Translator: Eric Lassauge \n" +"Language-Team: Gozer le maudit \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/we.cxx:81 +msgid "ftpsearch.lycos.com" +msgstr "" + +#: src/we.cxx:82 +msgid "ftpsearch.uniovie.es" +msgstr "" + +#: src/we.cxx:92 +msgid "Prozilla Preferences Panel" +msgstr "Configuration des préférences de Prozilla" + +#: src/we.cxx:97 +msgid "General" +msgstr "Général" + +#: src/we.cxx:116 +msgid "Number of Threads:" +msgstr "Nombre de \"Threads\":" + +#: src/we.cxx:125 +msgid "Use PASV for FTP transfers (recommended)" +msgstr "Utiliser PASV pour les transferts FTP (recommandé)" + +#: src/we.cxx:130 +msgid "" +"Ask the HTTP proxies not to cache requests between sessions (default is off)" +msgstr "" +"Demander aux proxies HTTP de ne pas faire de cache pour les requętes " +"entre les sessions (pas fait par défaut)" + +#: src/we.cxx:146 +msgid "Retry Delay (Sec):" +msgstr "Délai entre les tentatives (sec):" + +#: src/we.cxx:150 +msgid "Timeout Period (Sec):" +msgstr "Durée de hors-temps (sec):" + +#: src/we.cxx:154 +msgid "Directory to download the files:" +msgstr "Répertoire oů télécharger les fichiers:" + +#: src/we.cxx:158 +msgid "Limit bandwith usage PER download to (Kbps) (0 = unlimited):" +msgstr "Limiter la bande passante par téléchargement ŕ (Kps) (0 = illimité):" + +#: src/we.cxx:166 +msgid "Proxies" +msgstr "" + +#: src/we.cxx:174 src/we.cxx:201 +msgid "Hostname:" +msgstr "Nom d'hôte:" + +#: src/we.cxx:179 src/we.cxx:206 +msgid "Port:" +msgstr "" + +#: src/we.cxx:185 +msgid "HTTP Proxy:" +msgstr "Proxy HTTP:" + +#: src/we.cxx:190 src/we.cxx:212 +msgid "Username:" +msgstr "Nom d'utilisateur:" + +#: src/we.cxx:195 src/we.cxx:217 +msgid "Password:" +msgstr "Mot de passe:" + +#: src/we.cxx:223 +msgid "FTP Proxy:" +msgstr "Proxy FTP:" + +#: src/we.cxx:228 +msgid "FTP Proxy Type:" +msgstr "Type de proxy FTP:" + +#: src/we.cxx:235 +msgid "Use HTTP Proxy" +msgstr "Utiliser un proxy HTTP" + +#: src/we.cxx:240 +msgid "Use FTP Proxy" +msgstr "Utiliser un proxy FTP" + +#: src/we.cxx:248 +msgid "Direct Connection to the Internet" +msgstr "Connexion directe ŕ Internet" + +#: src/we.cxx:255 +msgid "Use proxies" +msgstr "Utiliser des proxies" + +#: src/we.cxx:268 +msgid "FTP Search" +msgstr "Recherche FTP" + +#: src/we.cxx:274 +msgid "Number of mirrors to request:" +msgstr "Nombre de sites miroirs ŕ interroger:" + +#: src/we.cxx:287 +msgid "Ping Timeout (Sec):" +msgstr "Hors temps pour ping (Sec):" + +#: src/we.cxx:296 +msgid "Number of mirrors to ping at once:" +msgstr "Nombre de sites miroirs ŕ contacter (ping) ŕ la fois:" + +#: src/we.cxx:309 +msgid "Do FTPSearch automatically" +msgstr "Faire les recherches FTP automatiquement" + +#: src/we.cxx:314 +msgid "FTPSearch Server to use:" +msgstr "Serveur de recherche FTP ŕ utiliser:" + +#: src/we.cxx:331 src/we.cxx:4252 src/we.cxx:4653 +msgid "OK" +msgstr "" + +#: src/dl_win.cxx:102 src/we.cxx:335 src/we.cxx:4669 +msgid "Cancel" +msgstr "Annuler" + +#: src/we.cxx:4240 +msgid "Prozilla Download Accelerator 2.0.4" +msgstr "Accélérateur de téléchargement Prozilla 2.0.4" + +#: src/we.cxx:4246 +msgid "GUI Version 2.0.4" +msgstr "IHM Version 2.0.4" + +#: src/we.cxx:4249 +msgid "libprozilla version 1.0.0" +msgstr "" + +#: src/we.cxx:4264 +msgid "Credits" +msgstr "Crédits" + +#: src/we.cxx:4273 +msgid "Kalum Somaratna - Main Programming" +msgstr "Kalum Somaratna - Programmeur principal" + +#: src/we.cxx:4277 +msgid "Uwe Hermann - Additional Programming" +msgstr "Uwe Hermann - Programmeur additionnel" + +#: src/we.cxx:4280 +msgid "" +"Gustavo Noronha Silva (KoV) - libprozilla GNU gettext support, deb package " +"maintainer" +msgstr "" +"Gustavo Noronha Silva (KoV) - Support GNU gettext pour " +"libprozilla, mainteneur du package debian" + +#: src/we.cxx:4285 +msgid "Ralph Slooten - Web Page Maintainer, RPM packager, testing" +msgstr "Ralph Slooten - Mainteneur des pages Web, empaqueteur RPM, tests" + +#: src/we.cxx:4289 +msgid "" +"If you have contributed and arent listed, I apologise and please mail me " +" and I will correct it" +msgstr "" +"Si vous avez contribué et n'ętes pas listé, milles excuses et envoyez un mel ŕ" +" et je corrigerais ça." + +#: src/we.cxx:4294 +msgid "" +"Silviu Marin-Caea - (Our sysadmin) Donation of valuable bandwith and system " +"resources at genesys.ro, testing" +msgstr "" +"Silviu Marin-Caea - (notre administrateur systčme) Dons de bande passanteet " +"de ressources systčme chez genesys.ro, tests" + +#: src/we.cxx:4299 +msgid "Pablo Iranzo Gómez - testing" +msgstr "Pablo Iranzo Gómez - tests" + +#: src/we.cxx:4303 +msgid "Krogg - The cool Prozilla logo" +msgstr "Krogg - Le logo Prozilla" + +#: src/we.cxx:4307 +msgid "David L. Matthews - testing" +msgstr "David L. Matthews - tests" + +#: src/we.cxx:4315 +msgid "Translations" +msgstr "Traductions" + +#: src/we.cxx:4323 +msgid "Ruben Boer - Dutch Translation" +msgstr "Ruben Boer - Traduction en hollandais" + +#: src/we.cxx:4327 +msgid "Ralph Slooten- Dutch Translation" +msgstr "Ralph Slooten - Traduction en hollandais" + +#: src/we.cxx:4331 +msgid "Flower - Romanian Translation" +msgstr "Flower - Traduction en roumain" + +#: src/we.cxx:4335 +msgid "Gustavo Noronha Silva (KoV) - Portugese Translation" +msgstr "Gustavo Noronha Silva (KoV) - Traduction en portugais" + +#: src/we.cxx:4339 +msgid "Emanuele Tatti (Kreazy) - Italian Translation" +msgstr "Emanuele Tatti (Kreazy) - Traduction en italien" + +#: src/we.cxx:4343 +msgid "Alberto Zanoni - Italian Translation" +msgstr "Alberto Zanoni - Traduction en italien" + +#: src/we.cxx:4347 +msgid "Eric Lassauge - French Translation" +msgstr "Eric Lassauge - Traduction en français" + +#: src/we.cxx:4357 +msgid "Webpage - http://prozilla.genesys.ro/" +msgstr "Site web - http://prozilla.genesys.ro/" + +#: src/we.cxx:4651 +msgid "Please enter the URL" +msgstr "Entrez l'URL" + +#: src/we.cxx:4662 +msgid "Enter URL (CTRL+V to paste from clipboard)" +msgstr "" +"Entrez l'URL (CTRL+V ou clic milieu pour copier depuis le presse-papier)" + +#: src/we.cxx:4673 +msgid "FTPSearch for mirrors (Experimental)" +msgstr "Recherches FTP pour les sites miroirs (expérimental)" + +#: src/dl_win.cxx:14 +msgid "Abort, Resume Later" +msgstr "Interrompre, continuer + tard" + +#: src/dl_win.cxx:19 src/download_win.cpp:392 +msgid "Pause" +msgstr "" + +#: src/dl_win.cxx:25 +msgid "Abort, No Resume Later" +msgstr "Interrompre, pas de continuation + tard" + +#: src/dl_win.cxx:31 +msgid "URL:" +msgstr "" + +#: src/dl_win.cxx:70 +msgid "Estimated Time Left" +msgstr "Temps restant estimé" + +#: src/dl_win.cxx:98 +msgid "Creating file.............." +msgstr "Création du fichier.............." + +#: src/dl_win.cxx:137 src/dl_win.cxx:170 src/dl_win.cxx:208 +msgid "Attention!" +msgstr "" + +#: src/dl_win.cxx:141 +msgid "Ok" +msgstr "" + +#: src/dl_win.cxx:174 src/dl_win.cxx:212 +msgid "Yes" +msgstr "Oui" + +#: src/dl_win.cxx:178 src/dl_win.cxx:216 +msgid "No" +msgstr "Non" + +#: src/download_win.cpp:43 +msgid "Are you Sure You want to quit?" +msgstr "Voulez-vous vraiment quitter?" + +#: src/download_win.cpp:185 +msgid "Creating the thread that gets info about file.." +msgstr "Création du \"thread\" qui récupčre les informations sur le fichier..." + +#: src/download_win.cpp:209 +msgid "I am unable to delete the target file!" +msgstr "Impossible de détruire le fichier cible!" + +#: src/download_win.cpp:242 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections" +msgstr "" +"Erreur lors du traitement du fichier de traces! Utilisation du nombrede " +"connections par défaut" + +#: src/download_win.cpp:251 +msgid "" +"The previous download used a different number of connections than the " +"default! so I will use the previous number of threads" +msgstr "" +"Le téléchargement précédent utilisait un nombre de connections différentde " +"la valeur par défaut! Utilisation du nombre de \"threads\" précédent" + +#: src/download_win.cpp:271 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections to delete" +msgstr "" +"Erreur lors du traitement du fichier de traces! Utilisation du nombrede " +"connections par défaut ŕ détuire" + +#: src/download_win.cpp:294 +#, c-format +msgid "The target file %s exists, would you like to overwrite it?" +msgstr "Le fichier cible %s existe, voulez-vous l'écraser?" + +#: src/download_win.cpp:322 +#, c-format +msgid "" +"Previous download of %s exists, would you like to resume it or overwrite it?" +msgstr "" +"Un téléchargement précédent de %s existe, voulez-vous l'écraser ou continuer?" + +#: src/download_win.cpp:326 +msgid "Resume" +msgstr "Continuer" + +#: src/download_win.cpp:327 +msgid "Overwrite" +msgstr "Ecraser" + +#: src/download_win.cpp:372 +msgid "RESUME supported" +msgstr "CONTINUATION possible" + +#: src/download_win.cpp:380 +msgid "RESUME NOT supported" +msgstr "CONTINUATION impossible" + +#: src/download_win.cpp:445 +msgid "UnPause" +msgstr "Fin de pause" + +#: src/download_win.cpp:476 +msgid "waiting for thread to end" +msgstr "attente de la fin du \"thread\"" + +#: src/download_win.cpp:478 +msgid "Thread ended" +msgstr "Fin du \"thread\"" + +#: src/download_win.cpp:486 +msgid "Got info succesfully" +msgstr "Récupération réussie des informations" + +#: src/download_win.cpp:489 +#, c-format +msgid "File Size = %ld Kb" +msgstr "Taille du fichier: = %ld Ko" + +#: src/download_win.cpp:493 +msgid "File Size is UNKOWN" +msgstr "Taille du fichier INCONNUE" + +#: src/download_win.cpp:527 +#, c-format +msgid "The URL %s doesnt exist!" +msgstr "L'URL %s n'existe pas!" + +#: src/download_win.cpp:558 +msgid "No suitable mirrors were found, downloading from original server" +msgstr "Pas de site miroir trouvé, téléchargement depuis le site d'origine" + +#: src/download_win.cpp:623 +#, c-format +msgid "Total Bytes received %ld Kb" +msgstr "Total des octets recus %ld Ko" + +#: src/download_win.cpp:628 +#, c-format +msgid "Average Speed = %.3f Kb/sec" +msgstr "Vitesse moyenne = %.3f Ko/sec" + +#: src/download_win.cpp:637 +#, c-format +msgid "%d Seconds" +msgstr "%d secondes" + +#: src/download_win.cpp:639 +#, c-format +msgid "%d Minutes %d Seconds" +msgstr "%d minutes %d secondes" + +#: src/download_win.cpp:642 +#, c-format +msgid "%d Hours %d minutes" +msgstr "%d heures %d minutes" + +#. Wait till all are completed +#: src/download_win.cpp:664 +msgid "Waiting till all threads terminate" +msgstr "Attente de la fin de tous les \"threads\"" + +#: src/download_win.cpp:669 +msgid "Got DL succesfully, now building file" +msgstr "Téléchargement réussi, reconstruction du fichier" + +#: src/download_win.cpp:676 +#, c-format +msgid "Building file %s ....." +msgstr "Reconstruction du fichier %s ....." + +#: src/download_win.cpp:698 +msgid "" +"Error the server/proxy lied about resuming so I have to restart this from " +"the beginning!" +msgstr "" +"Erreur, le serveur/proxy a donné une fausse information sur sa capacitéŕ " +"exécuter une continuation, il est nécessaire de recommencer du début!" + +#: src/download_win.cpp:718 +#, c-format +msgid "" +"One connection of the download %s encountered a unrecoverable local error, " +"usually lack of free space, or a write to bad medium, or a problem with " +"permissions,so please fix this and retry" +msgstr "" +"Une connexion du téléchargement %s a eu une erreur fatale, ŕ priori manquede " +"place disque, ou écriture sur un support en erreur, ou une problčme avecles " +"permissions de fichier, corriger ce problčme avant de recommencer" + +#: src/download_win.cpp:735 +#, c-format +msgid "" +"A connection(s) of the download %s encountered a unrecoverable remote error, " +"usually the file not being present in the remote server, therefore the " +"download had to be aborted!" +msgstr "" +"Une connexion du téléchargement %s a eu une erreur fatale, ŕ priorile " +"fichier n'est pas présent sur le serveur distant, le téléchargement a duętre " +"interrompu!" + +#: src/download_win.cpp:782 src/download_win.cpp:809 +msgid "Close" +msgstr "Fermer" + +#: src/main.cpp:225 src/main.cpp:351 +#, c-format +msgid "%s does not seem to be a valid URL" +msgstr "%s n'est pas une URL valide" + +#: src/main.cpp:232 +#, c-format +msgid "%s contains just a hostname, it does not contain a file to download!" +msgstr "%s contient juste un nom d'hôte, pas de fichier ŕ télécharger!" + +#: src/main.cpp:286 +msgid "Error: Invalid option\n" +msgstr "Erreur: option invalide\n" + +#: src/main.cpp:291 +msgid "Prozilla - Download Accelerator" +msgstr "Prozilla - Accélérateur de téléchargement" + +#: src/main.cpp:314 +msgid "&File" +msgstr "&Fichier" + +#: src/main.cpp:315 +msgid "&New URL" +msgstr "&Nouvelle URL" + +#: src/main.cpp:317 +msgid "&Preferences" +msgstr "&Préférences" + +#: src/main.cpp:319 +msgid "&Quit" +msgstr "&Quitter" + +#: src/main.cpp:321 +msgid "&Help" +msgstr "&Aide" + +#: src/main.cpp:322 +msgid "&About" +msgstr "A &Propos" + +#: src/options.cpp:130 +#, c-format +msgid "%s does not seem to be a valid directory" +msgstr "%s ne contient pas un répertoire valide" + +#: src/options.cpp:153 +#, c-format +msgid "%s does not seem to be a valid HTTP proxy value" +msgstr "%s ne contient pas une valeur de proxy HTTP valide" + +#: src/options.cpp:181 +#, c-format +msgid "%s does not seem to be a valid FTP proxy value" +msgstr "%s ne contient pas une valeur de proxy FTP valide" diff --git a/po/fr.po~ b/po/fr.po~ new file mode 100644 index 0000000..203a43d --- /dev/null +++ b/po/fr.po~ @@ -0,0 +1,523 @@ +# french po file for prozgui +# Copyright (C) 2001 Free Software Foundation, Inc. +# Eric Lassauge , 2001 +# http://lassauge.free.fr/linux.html +# +msgid "" +msgstr "" +"Project-Id-Version: prozgui 2.0.4\n" +"POT-Creation-Date: 2001-12-03 15:43+0100\n" +"PO-Revision-Date: 2001-12-03 15:43+0100\n" +"Last-Translator: Eric Lassauge \n" +"Language-Team: Gozer le maudit \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/we.cxx:81 +msgid "ftpsearch.lycos.com" +msgstr "" + +#: src/we.cxx:82 +msgid "ftpsearch.uniovie.es" +msgstr "" + +#: src/we.cxx:92 +msgid "Prozilla Preferences Panel" +msgstr "Configuration des préférences de Prozilla" + +#: src/we.cxx:97 +msgid "General" +msgstr "Général" + +#: src/we.cxx:116 +msgid "Number of Threads:" +msgstr "Nombre de \"Threads\":" + +#: src/we.cxx:125 +msgid "Use PASV for FTP transfers (recommended)" +msgstr "Utiliser PASV pour les transferts FTP (recommandé)" + +#: src/we.cxx:130 +msgid "" +"Ask the HTTP proxies not to cache requests between sessions (default is off)" +msgstr "" +"Demander aux proxies HTTP de ne pas faire de cache pour les requętes " +"entre les sessions (pas fait par défaut)" + +#: src/we.cxx:146 +msgid "Retry Delay (Sec):" +msgstr "Délai entre les tentatives (sec):" + +#: src/we.cxx:150 +msgid "Timeout Period (Sec):" +msgstr "Durée de hors-temps (sec):" + +#: src/we.cxx:154 +msgid "Directory to download the files:" +msgstr "Répertoire oů télécharger les fichiers:" + +#: src/we.cxx:158 +msgid "Limit bandwith usage PER download to (Kbps) (0 = unlimited):" +msgstr "Limiter la bande passante par téléchargement ŕ (Kps) (0 = illimité):" + +#: src/we.cxx:166 +msgid "Proxies" +msgstr "" + +#: src/we.cxx:174 src/we.cxx:201 +msgid "Hostname:" +msgstr "Nom d'hôte:" + +#: src/we.cxx:179 src/we.cxx:206 +msgid "Port:" +msgstr "" + +#: src/we.cxx:185 +msgid "HTTP Proxy:" +msgstr "Proxy HTTP:" + +#: src/we.cxx:190 src/we.cxx:212 +msgid "Username:" +msgstr "Nom d'utilisateur:" + +#: src/we.cxx:195 src/we.cxx:217 +msgid "Password:" +msgstr "Mot de passe:" + +#: src/we.cxx:223 +msgid "FTP Proxy:" +msgstr "Proxy FTP:" + +#: src/we.cxx:228 +msgid "FTP Proxy Type:" +msgstr "Type de proxy FTP:" + +#: src/we.cxx:235 +msgid "Use HTTP Proxy" +msgstr "Utiliser un proxy HTTP" + +#: src/we.cxx:240 +msgid "Use FTP Proxy" +msgstr "Utiliser un proxy FTP" + +#: src/we.cxx:248 +msgid "Direct Connection to the Internet" +msgstr "Connexion directe ŕ Internet" + +#: src/we.cxx:255 +msgid "Use proxies" +msgstr "Utiliser des proxies" + +#: src/we.cxx:268 +msgid "FTP Search" +msgstr "Recherche FTP" + +#: src/we.cxx:274 +msgid "Number of mirrors to request:" +msgstr "Nombre de sites miroirs ŕ interroger:" + +#: src/we.cxx:287 +msgid "Ping Timeout (Sec):" +msgstr "Hors temps pour ping (Sec):" + +#: src/we.cxx:296 +msgid "Number of mirrors to ping at once:" +msgstr "Nombre de sites miroirs ŕ contacter (ping) ŕ la fois:" + +#: src/we.cxx:309 +msgid "Do FTPSearch automatically" +msgstr "Faire les recherches FTP automatiquement" + +#: src/we.cxx:314 +msgid "FTPSearch Server to use:" +msgstr "Serveur de recherche FTP ŕ utiliser:" + +#: src/we.cxx:331 src/we.cxx:4252 src/we.cxx:4653 +msgid "OK" +msgstr "" + +#: src/dl_win.cxx:102 src/we.cxx:335 src/we.cxx:4669 +msgid "Cancel" +msgstr "Annuler" + +#: src/we.cxx:4240 +msgid "Prozilla Download Accelerator 2.0.4" +msgstr "Accélérateur de téléchargement Prozilla 2.0.4" + +#: src/we.cxx:4246 +msgid "GUI Version 2.0.4" +msgstr "IHM Version 2.0.4" + +#: src/we.cxx:4249 +msgid "libprozilla version 1.0.0" +msgstr "" + +#: src/we.cxx:4264 +msgid "Credits" +msgstr "Crédits" + +#: src/we.cxx:4273 +msgid "Kalum Somaratna - Main Programming" +msgstr "Kalum Somaratna - Programmeur principal" + +#: src/we.cxx:4277 +msgid "Uwe Hermann - Additional Programming" +msgstr "Uwe Hermann - Programmeur additionnel" + +#: src/we.cxx:4280 +msgid "" +"Gustavo Noronha Silva (KoV) - libprozilla GNU gettext support, deb package " +"maintainer" +msgstr "" +"Gustavo Noronha Silva (KoV) - Support GNU gettext pour " +"libprozilla, mainteneur du package debian" + +#: src/we.cxx:4285 +msgid "Ralph Slooten - Web Page Maintainer, RPM packager, testing" +msgstr "Ralph Slooten - Mainteneur des pages Web, empaqueteur RPM, tests" + +#: src/we.cxx:4289 +msgid "" +"If you have contributed and arent listed, I apologise and please mail me " +" and I will correct it" +msgstr "" +"Si vous avez contribué et n'ętes pas listé, milles excuses et envoyez un mel ŕ" +" et je corrigerais ça." + +#: src/we.cxx:4294 +msgid "" +"Silviu Marin-Caea - (Our sysadmin) Donation of valuable bandwith and system " +"resources at delrom.ro, testing" +msgstr "" +"Silviu Marin-Caea - (notre administrateur systčme) Dons de bande passanteet " +"de ressources systčme chez delrom.ro, tests" + +#: src/we.cxx:4299 +msgid "Pablo Iranzo Gómez - testing" +msgstr "Pablo Iranzo Gómez - tests" + +#: src/we.cxx:4303 +msgid "Krogg - The cool Prozilla logo" +msgstr "Krogg - Le logo Prozilla" + +#: src/we.cxx:4307 +msgid "David L. Matthews - testing" +msgstr "David L. Matthews - tests" + +#: src/we.cxx:4315 +msgid "Translations" +msgstr "Traductions" + +#: src/we.cxx:4323 +msgid "Ruben Boer - Dutch Translation" +msgstr "Ruben Boer - Traduction en hollandais" + +#: src/we.cxx:4327 +msgid "Ralph Slooten- Dutch Translation" +msgstr "Ralph Slooten - Traduction en hollandais" + +#: src/we.cxx:4331 +msgid "Flower - Romanian Translation" +msgstr "Flower - Traduction en roumain" + +#: src/we.cxx:4335 +msgid "Gustavo Noronha Silva (KoV) - Portugese Translation" +msgstr "Gustavo Noronha Silva (KoV) - Traduction en portugais" + +#: src/we.cxx:4339 +msgid "Emanuele Tatti (Kreazy) - Italian Translation" +msgstr "Emanuele Tatti (Kreazy) - Traduction en italien" + +#: src/we.cxx:4343 +msgid "Alberto Zanoni - Italian Translation" +msgstr "Alberto Zanoni - Traduction en italien" + +#: src/we.cxx:4347 +msgid "Eric Lassauge - French Translation" +msgstr "Eric Lassauge - Traduction en français" + +#: src/we.cxx:4357 +msgid "Webpage - http://prozilla.delrom.ro/" +msgstr "Site web - http://prozilla.delrom.ro/" + +#: src/we.cxx:4651 +msgid "Please enter the URL" +msgstr "Entrez l'URL" + +#: src/we.cxx:4662 +msgid "Enter URL (CTRL+V to paste from clipboard)" +msgstr "" +"Entrez l'URL (CTRL+V ou clic milieu pour copier depuis le presse-papier)" + +#: src/we.cxx:4673 +msgid "FTPSearch for mirrors (Experimental)" +msgstr "Recherches FTP pour les sites miroirs (expérimental)" + +#: src/dl_win.cxx:14 +msgid "Abort, Resume Later" +msgstr "Interrompre, continuer + tard" + +#: src/dl_win.cxx:19 src/download_win.cpp:392 +msgid "Pause" +msgstr "" + +#: src/dl_win.cxx:25 +msgid "Abort, No Resume Later" +msgstr "Interrompre, pas de continuation + tard" + +#: src/dl_win.cxx:31 +msgid "URL:" +msgstr "" + +#: src/dl_win.cxx:70 +msgid "Estimated Time Left" +msgstr "Temps restant estimé" + +#: src/dl_win.cxx:98 +msgid "Creating file.............." +msgstr "Création du fichier.............." + +#: src/dl_win.cxx:137 src/dl_win.cxx:170 src/dl_win.cxx:208 +msgid "Attention!" +msgstr "" + +#: src/dl_win.cxx:141 +msgid "Ok" +msgstr "" + +#: src/dl_win.cxx:174 src/dl_win.cxx:212 +msgid "Yes" +msgstr "Oui" + +#: src/dl_win.cxx:178 src/dl_win.cxx:216 +msgid "No" +msgstr "Non" + +#: src/download_win.cpp:43 +msgid "Are you Sure You want to quit?" +msgstr "Voulez-vous vraiment quitter?" + +#: src/download_win.cpp:185 +msgid "Creating the thread that gets info about file.." +msgstr "Création du \"thread\" qui récupčre les informations sur le fichier..." + +#: src/download_win.cpp:209 +msgid "I am unable to delete the target file!" +msgstr "Impossible de détruire le fichier cible!" + +#: src/download_win.cpp:242 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections" +msgstr "" +"Erreur lors du traitement du fichier de traces! Utilisation du nombrede " +"connections par défaut" + +#: src/download_win.cpp:251 +msgid "" +"The previous download used a different number of connections than the " +"default! so I will use the previous number of threads" +msgstr "" +"Le téléchargement précédent utilisait un nombre de connections différentde " +"la valeur par défaut! Utilisation du nombre de \"threads\" précédent" + +#: src/download_win.cpp:271 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections to delete" +msgstr "" +"Erreur lors du traitement du fichier de traces! Utilisation du nombrede " +"connections par défaut ŕ détuire" + +#: src/download_win.cpp:294 +#, c-format +msgid "The target file %s exists, would you like to overwrite it?" +msgstr "Le fichier cible %s existe, voulez-vous l'écraser?" + +#: src/download_win.cpp:322 +#, c-format +msgid "" +"Previous download of %s exists, would you like to resume it or overwrite it?" +msgstr "" +"Un téléchargement précédent de %s existe, voulez-vous l'écraser ou continuer?" + +#: src/download_win.cpp:326 +msgid "Resume" +msgstr "Continuer" + +#: src/download_win.cpp:327 +msgid "Overwrite" +msgstr "Ecraser" + +#: src/download_win.cpp:372 +msgid "RESUME supported" +msgstr "CONTINUATION possible" + +#: src/download_win.cpp:380 +msgid "RESUME NOT supported" +msgstr "CONTINUATION impossible" + +#: src/download_win.cpp:445 +msgid "UnPause" +msgstr "Fin de pause" + +#: src/download_win.cpp:476 +msgid "waiting for thread to end" +msgstr "attente de la fin du \"thread\"" + +#: src/download_win.cpp:478 +msgid "Thread ended" +msgstr "Fin du \"thread\"" + +#: src/download_win.cpp:486 +msgid "Got info succesfully" +msgstr "Récupération réussie des informations" + +#: src/download_win.cpp:489 +#, c-format +msgid "File Size = %ld Kb" +msgstr "Taille du fichier: = %ld Ko" + +#: src/download_win.cpp:493 +msgid "File Size is UNKOWN" +msgstr "Taille du fichier INCONNUE" + +#: src/download_win.cpp:527 +#, c-format +msgid "The URL %s doesnt exist!" +msgstr "L'URL %s n'existe pas!" + +#: src/download_win.cpp:558 +msgid "No suitable mirrors were found, downloading from original server" +msgstr "Pas de site miroir trouvé, téléchargement depuis le site d'origine" + +#: src/download_win.cpp:623 +#, c-format +msgid "Total Bytes received %ld Kb" +msgstr "Total des octets recus %ld Ko" + +#: src/download_win.cpp:628 +#, c-format +msgid "Average Speed = %.3f Kb/sec" +msgstr "Vitesse moyenne = %.3f Ko/sec" + +#: src/download_win.cpp:637 +#, c-format +msgid "%d Seconds" +msgstr "%d secondes" + +#: src/download_win.cpp:639 +#, c-format +msgid "%d Minutes %d Seconds" +msgstr "%d minutes %d secondes" + +#: src/download_win.cpp:642 +#, c-format +msgid "%d Hours %d minutes" +msgstr "%d heures %d minutes" + +#. Wait till all are completed +#: src/download_win.cpp:664 +msgid "Waiting till all threads terminate" +msgstr "Attente de la fin de tous les \"threads\"" + +#: src/download_win.cpp:669 +msgid "Got DL succesfully, now building file" +msgstr "Téléchargement réussi, reconstruction du fichier" + +#: src/download_win.cpp:676 +#, c-format +msgid "Building file %s ....." +msgstr "Reconstruction du fichier %s ....." + +#: src/download_win.cpp:698 +msgid "" +"Error the server/proxy lied about resuming so I have to restart this from " +"the beginning!" +msgstr "" +"Erreur, le serveur/proxy a donné une fausse information sur sa capacitéŕ " +"exécuter une continuation, il est nécessaire de recommencer du début!" + +#: src/download_win.cpp:718 +#, c-format +msgid "" +"One connection of the download %s encountered a unrecoverable local error, " +"usually lack of free space, or a write to bad medium, or a problem with " +"permissions,so please fix this and retry" +msgstr "" +"Une connexion du téléchargement %s a eu une erreur fatale, ŕ priori manquede " +"place disque, ou écriture sur un support en erreur, ou une problčme avecles " +"permissions de fichier, corriger ce problčme avant de recommencer" + +#: src/download_win.cpp:735 +#, c-format +msgid "" +"A connection(s) of the download %s encountered a unrecoverable remote error, " +"usually the file not being present in the remote server, therefore the " +"download had to be aborted!" +msgstr "" +"Une connexion du téléchargement %s a eu une erreur fatale, ŕ priorile " +"fichier n'est pas présent sur le serveur distant, le téléchargement a duętre " +"interrompu!" + +#: src/download_win.cpp:782 src/download_win.cpp:809 +msgid "Close" +msgstr "Fermer" + +#: src/main.cpp:225 src/main.cpp:351 +#, c-format +msgid "%s does not seem to be a valid URL" +msgstr "%s n'est pas une URL valide" + +#: src/main.cpp:232 +#, c-format +msgid "%s contains just a hostname, it does not contain a file to download!" +msgstr "%s contient juste un nom d'hôte, pas de fichier ŕ télécharger!" + +#: src/main.cpp:286 +msgid "Error: Invalid option\n" +msgstr "Erreur: option invalide\n" + +#: src/main.cpp:291 +msgid "Prozilla - Download Accelerator" +msgstr "Prozilla - Accélérateur de téléchargement" + +#: src/main.cpp:314 +msgid "&File" +msgstr "&Fichier" + +#: src/main.cpp:315 +msgid "&New URL" +msgstr "&Nouvelle URL" + +#: src/main.cpp:317 +msgid "&Preferences" +msgstr "&Préférences" + +#: src/main.cpp:319 +msgid "&Quit" +msgstr "&Quitter" + +#: src/main.cpp:321 +msgid "&Help" +msgstr "&Aide" + +#: src/main.cpp:322 +msgid "&About" +msgstr "A &Propos" + +#: src/options.cpp:130 +#, c-format +msgid "%s does not seem to be a valid directory" +msgstr "%s ne contient pas un répertoire valide" + +#: src/options.cpp:153 +#, c-format +msgid "%s does not seem to be a valid HTTP proxy value" +msgstr "%s ne contient pas une valeur de proxy HTTP valide" + +#: src/options.cpp:181 +#, c-format +msgid "%s does not seem to be a valid FTP proxy value" +msgstr "%s ne contient pas une valeur de proxy FTP valide" diff --git a/po/it.gmo b/po/it.gmo new file mode 100644 index 0000000000000000000000000000000000000000..8479c7670f5540fd27de2a90f097cff818af2892 GIT binary patch literal 10080 zcmcJUdyE~|UB^%JYGYawN}-VSakh!=b+UK8PU1W^agz0Vz259I`*7+OO6T5t_U?)2 z&fLsn*K3Ljs8E5b@>fMgrAmaBho}@0Ap{CS6_ubAgz{%7qVNZT(27?|ky`NwpYNHu zk9C|lL3HG^-#ce!&g1v{{$9u5c;^kDF5cDx`{tr_GV*#7#stC1Uv~I z0vEwE;CXNo{2X{3{2KTH@O$7m_+DPtP-np#!Q~n^z_)RK0em~ytou{&Iqpkv6FmF_ z#(V_4489xu8&K={Pw;)Scegd@M3V0isg4*XVgLi>{1bz_wM^NiJ^@G*Aw!mAs_n_9ZU*jjhJGuWA z@SWiAgWAWRgYO0Z7L-Qc^xQ{a8zI(Q!ZB!~#iH$X&fz6l-y{|n5( z+i$J(@M%zT`aSRw@I~-C@Et#7%;Vs#pw{ywD802ot>=@V-uq&WzYV^?{qKUBufs>; z%QK+vKMhL0p9QtA&x6{}^L77M!6okh8r1%7=cV_9cYsI1Sx|Dm2x`B-2(nc3Iq+fd zOP~c`2BpuNd5NLSt)TXI2N;8=!5;&k1AiL)DmV?EVKJ!Md>queKE)sLJS@@N#G=KQ+rfG82zWo3fDeFQ1U3HOfyY1%s{P*uO75pX$z>MQI8T6D z=T?0mfzNXvgC7OokFXQ)XF7I-(fWh*`Z95~1QZ-KIxe+AdT{{Xe#88$24Y=U%|p8@sW=WG0R@D=XA z0BYV}WiyDv{01m~eHoN~zXnPUFM`_FKZBC{b!_$=crz$@uY)Ynd77| zDToQ1m%xX?Z`RL`Kw`<~EQmy)?<$(e9zG(>7_kq?c9NPwIwC zygflXO?!x@OMBAwVH%s`PNVjiIh+sQ%bn}$Y18rQZWQ~rJ-fMPds%vEU-zZE*6Zgs-`x9K>r2-f zvh6e1D$;D<9GPjRWnqq-WfSJeIT!cLkrlURHOP^*%x$~OB`qX(L+qT$ogRNV3&g*HJ6nxia$7RAy>8{J7CQ`~=H!YlXS(auKw#>^Yj`za|L5PxT z)A^)>cwFw1!uljUt-s4%#z+(DVr6ND*heSdiQ0WhH`A1H@@Z(~sGiJTGBN$F|*eRK|r(%5KwT+U0QD`S)eeKp+>p!WlG@6%%$PwRYXH zAZM2%#M$pZ*oO@E)6#CRJ9~j2dl6EDZqJ~t$IMKAG3;1Tu5}QjfDeNEb3&H0IVEdSvDGF4=GsG%|cAVYlIfQ!39-h2++b%Yb=dNW=mp*Pw zh(VW;SzC(SIjAAN(0UlWK|`-bAZAQDHldW%^`0wUIa*#@E2; z)fc%r6YXMKOOtjvD)@9Sw+)NQYZ`MV@ZHW1xGNE9`~?v;aYg+G77-LtTXJ|s+sLQQ znN)VW;i9ayW23T2yX>GP{+hXNl$7YsZZfmCWZbL3v?NZMNw;-Y3XotQvTl?N=Vjradj~keNeXY>eSIy@=6 z7Tne5e$P!0@2j7cNYq;k2gAhQYUPk**M)pL=C%+l#?svH@~%D&$~=4wf9U;P2LA}BQx(3I2oIHe8`z4o0lz2e7i(H z6Zq>r+Z?53cq>q83J!04YMpe_@x8dyv9edZ=$oy zK8_K=X@7WFXl|@8L#I?*u#G6hQb>&pe zBELI4*o2C$G>!GJ5)2DS&64jDUz@CA&lfuc2T5dYZhaVB*zx#cvq#t&pMpST66+J! zJ~nMuQvM-SUj*6o=?9B2D#8(4?T6>!c4TL1<~u%#VqBiWidh*r`_15WF#2Ive?*z8 zM!+AXIJDPzrS_`RW_8i5UNozTcHEDfZ#HPgDQ@PEME4YZv(XLATddV<|Wb}vID z@+eLGW*663cIzkbkQm%Wb%+nPvAOwE|%K2{iVuhhzpr3NDx*LO&HUxAzGXa zp6qgJ=fB-`mr-Wl!>&bnzL#e0XyFEtaz5W zU7wapoT@BJn{}T|wR43%*$t6SSP`sY&-90# z!7s#k3bLQ!^Q%1_@hyXKMiL^s7A3^9^|_6$M4@mc}&^{be`q=i{Ap?DlR16joTt%fiSsAk-4hHYU z5aH2a@L@Jrr4@OYd&G0TKH&~>tnv|LyKVH_C;A$(E^YV4znK#B?CE_piF{hl@3N;l z?2RZeH^^n$Y$cWDY_aS?$Thkf#)5FWHnVXariB_FvlLFVfj%a7S6OuoQR?<5{3`_^ivVNSZ^U0PyT`sm4xLm5}yGdoPobR(YIlD zilR4tTzN^bw8^3BkDCja;As5AMnlj(LC~Hud-XKhNi~DK7R#4eK22C@EVLWvt52rw z+RW_Y%>0}^KexWIu)1<+ZFRFzWszypIK!Hz?LAXdCmK@^HST%9p15cF2rHM!1J2BOmx{pt$PoB7YetGlI68Tr7uaq>Kw)7;Ol1(-?UDTbn_K~)GJob}m z)_L^M^1|}maBb}85UHiI<3>o4kkqB(crV7dAGWQXD9c@O%I9h0!3R%1)Hrc+_;#(m z#vDbHlICgqVAB_eKG>+z8JyI#T|6B%U2LZ&A2_7?b(N3?EUS$5gM!u%>)Fs*)wBGp z>RC?!$29QY#PuY_Z?-)FG}N}rj}pbFBD_U!$lTkJ&0DwznhPbZ-pXCKnMIZwL6MbL zaSE!#LK>+slBrX~+ZR1G{hR$vY=5oqj>>~nbG_Cp@)=4>l*)%UBWhf&sF&s*g0;P> zk-FZU@g(vTyk$zF$JoP?_cGP+OjDi?`@lA%Du9QGDQ^=G0~LFGnYyGE^?Feesbob2 zp~S5VUW87b6xiP+0VWmk(uG#Tu!Kw2?Be(+A=D+8!%d}vyzD0@_zx=QbV3qt`B$XH zL7;3ibYCMB1zEwsV=TG9hL=_Sl8m$W626fgkc(1j7TkrMRORwNd z_Fao(Z+o-h5VoiKm+I|qO6;d}sui2L$IR>w)s(jpA65Rc^0#z}xn1S!5FD*m1v3Q< zHo-Tl*YLhbvR^Y(`n7!?p<~ie1SV^!<5FEcU&aezOy?aroiF}DD`E)w?@%J8Az_QI zD5z&i|Fe?KrWGp==XEh1M_PQzCglnH&j*!s^<(f1rPgj%b$?2wDxbjWRR<9gv^GQq z<)p4bVeMbHu*U6C8OXUht0KF=03v&ps=7_|9QqUM!z5(bbHsO;h!`Wu6?R7?} z)sF6UYHXZ#y9|Q0Dz~W?BeRg;pF|cL2ba+=w51U&HKiIur|qZ{qxfEr<0@Yl+r*I( zo2*NNy6hGoUbfVT(rwDFWzDR*&%^^(SsN*{Qg)?K?tJbdxDxY=8 zY`Sg_K41XBWUIP7CDWi6+6-K*Qs>&+PMh_i1P8zSm5XwUaSm+y)wnxm=5YsYcNv#+ zRy!Hgo^UhUk7bxRjG#xy)jy%JF}{j zB%&8Ipi~c4B*Y1dR;@zdLBg#e?V+w#(Esk$tUWNqwd(kh1*`T*J3G|$*ZQc=ym0~``f*`$4$7QcvrHqGNAu|mA zfr6Y`q2+rK+UVEw3j`_OCH8stp;BJ_JkVOZ| zd$LcJ_k`4beNXz4CRF+K$!`*~!9Kl%-S`RXDu)t+*kEL=t~TXC)$df?E5xzbDwnV7 z{kp3^tQJaMCU=45a)O`6MHH(3SHD=r1;wO(;s1Zm8$!*GYrbaQfB=GvP}+d^?nzBJ zac*E0#w5R*w>T3B(Vhq7Ce^8c=p;9yGXaka>gfo%O5W5J#=~3WT_t-V@vz&Rj`0#6 zk5e9byZUny!r)*_YL4;?k4h!UOB=Y{D0WQ0qm;aL)_3B2}i!R7? z;CzcjMY+vT=cL4(ALKgent+#fw@m%0D@IO(wW71{!?6Kn7KBeRhU))OIQJYijltQ$ zO8@MD$a2NuLFoDaJ3ScjeWzXAiHH&*dU<{*U*c3;nx%l@SfW6O{aW_GQNpW6x#~&6 ziX1qeO{ae-Aso2`0R)wFqv~{_ihOV}_p%%%XcAK8BSfp5)OGYT;`6Y`#N*Y+BugRC z*Y!rFbq+#D(&Q12ka3gm!}U7L9h@?Rd00!G(}*s44=>Ixu9gyCC0icQ5E)iwvlcPp z&96qvD|lGBqd~b%&=0wQ9M!=Cwfbm*pufxcu5#2uM-J47oRwW{nt`6k)^)@%Q1%uj z2OhdE(uQ}T_6oN;V+h&Ofdtiu+-y7}xanlR4LfzzfRC(F=PJ0d7A*0~(+1`n4J1*g zL-FP1F(lp~W=0GS3k|g5vdSvibx|sg4h8zgP9HY>FcBFI+STcUGK_Y literal 0 HcmV?d00001 diff --git a/po/it.po b/po/it.po new file mode 100644 index 0000000..7c72eb0 --- /dev/null +++ b/po/it.po @@ -0,0 +1,498 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2001-09-27 12:56+0600\n" +"PO-Revision-Date: 2001-10-04 20:51+GMT\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 0.7\n" + +#: src/we.cxx:84 +msgid "Prozilla Preferences Panel" +msgstr "Pannello Preferenze di Prozilla" + +#: src/we.cxx:89 +msgid "General" +msgstr "Generale" + +#: src/we.cxx:108 +msgid "Number of Threads:" +msgstr "Numero di Threads:" + +#: src/we.cxx:117 +msgid "Use PASV for FTP transfers (recommended)" +msgstr "Usa PASV per i trasferimenti FTP (raccomandato)" + +#: src/we.cxx:122 +msgid "Ask the HTTP proxies not to cache requests between sessions (default is off)" +msgstr "" +"Chiedi ai proxies HTTP di non mettere in cache le richieste tra le sessioni " +"(disabilitato per default)" + +#: src/we.cxx:138 +msgid "Retry Delay (Sec):" +msgstr "Ritardo tra i tentativi (Sec):" + +#: src/we.cxx:142 +msgid "Timeout Period (Sec):" +msgstr "Tempo di Timeout (Sec):" + +#: src/we.cxx:146 +msgid "Directory to download the files:" +msgstr "Directory dove scaricare i files:" + +#: src/we.cxx:150 +msgid "Limit bandwith usage PER download to (Kbps) (0 = unlimited):" +msgstr "Limita l'uso della banda per ogni download a (Kbps) (0 = illimitata):" + +#: src/we.cxx:158 +msgid "Proxies" +msgstr "Proxies" + +#: src/we.cxx:166 src/we.cxx:193 +msgid "Hostname:" +msgstr "Nome Host:" + +#: src/we.cxx:171 src/we.cxx:198 +msgid "Port:" +msgstr "Porta:" + +#: src/we.cxx:177 +msgid "HTTP Proxy:" +msgstr "Proxy HTTP:" + +#: src/we.cxx:182 src/we.cxx:204 +msgid "Username:" +msgstr "Nome utente:" + +#: src/we.cxx:187 src/we.cxx:209 +msgid "Password:" +msgstr "Password:" + +#: src/we.cxx:215 +msgid "FTP Proxy:" +msgstr "Proxy FTP:" + +#: src/we.cxx:220 +msgid "FTP Proxy Type:" +msgstr "Tipo di proxy FTP:" + +#: src/we.cxx:227 +msgid "Use HTTP Proxy" +msgstr "Usa Proxy HTTP" + +#: src/we.cxx:232 +msgid "Use FTP Proxy" +msgstr "Usa Proxy FTP" + +#: src/we.cxx:240 +msgid "Direct Connection to the Internet" +msgstr "Connessione Diretta a Internet" + +#: src/we.cxx:247 +msgid "Use proxies" +msgstr "Usa proxies" + +#: src/we.cxx:260 +msgid "FTP Search" +msgstr "Ricerca FTP" + +#: src/we.cxx:266 +msgid "Number of mirrors to request:" +msgstr "Numero di mirrors da richiedere:" + +#: src/we.cxx:279 +msgid "Ping Timeout (Sec):" +msgstr "Timeout del ping(Sec):" + +#: src/we.cxx:288 +msgid "Number of mirrors to ping at once:" +msgstr "Numero di mirrors da pingare alla volta:" + +#: src/we.cxx:301 +msgid "Do FTPSearch automatically" +msgstr "Effettua la ricerca FTP automaticamente" + +#: src/we.cxx:312 src/we.cxx:4233 src/we.cxx:4626 +msgid "OK" +msgstr "OK" + +#: src/dl_win.cxx:102 src/we.cxx:316 src/we.cxx:4642 +msgid "Cancel" +msgstr "Cancella" + +#: src/we.cxx:4221 +msgid "Prozilla Download Accelerator 2.0.4beta" +msgstr "Prozilla Download Accelerator 2.0.4beta" + +#: src/we.cxx:4227 +msgid "GUI Version 2.0.4beta" +msgstr "Versione GUI 2.0.4-beta" + +#: src/we.cxx:4230 +msgid "libprozilla version 1.0.0" +msgstr "Versione libprozilla 1.0.0" + +#: src/we.cxx:4245 +msgid "Credits" +msgstr "Crediti" + +#: src/we.cxx:4254 +msgid "Kalum Somaratna - Main Programming" +msgstr "Kalum Somaratna - Programmazione Principale" + +#: src/we.cxx:4258 +msgid "Uwe Hermann - Additional Programming" +msgstr "Uwe Hermann - Programmazione aggiutiva" + +#: src/we.cxx:4261 +msgid "" +"Gustavo Noronha Silva (KoV) - libprozilla GNU gettext support, deb package " +"maintainer" +msgstr "Gustavo Noronha Silva (KoV) - supporto libprozilla GNU gettext, maintenimento pacchetti deb" + +#: src/we.cxx:4266 +msgid "Ralph Slooten - Web Page Maintainer, RPM packager, testing" +msgstr "Ralph Slooten - Web Page Maintainer, RPM packager, testing" + +#: src/we.cxx:4270 +msgid "" +"If you have contributed and arent listed, I apologise and please mail me " +" and I will correct it" +msgstr "" +"Se hai contribuito e non sei nella lista, ti prego di mandarmi un email" +" e la correggerň" + +#: src/we.cxx:4275 +msgid "" +"Silviu Marin-Caea - (Our sysadmin) Donation of valuable bandwith and system " +"resources at genesys.ro, testing" +msgstr "" +"Silviu Marin-Caea - (Nostro amministratore di sistema) Donazione considerevole di banda " +"e risorse di sistema a genesys.ro, testing" + +#: src/we.cxx:4280 +msgid "Pablo Iranzo Gómez - testing" +msgstr "Pablo Iranzo Gómez - testing" + +#: src/we.cxx:4284 +msgid "Krogg - The cool Prozilla logo" +msgstr "Krogg - Il simpatico logo di Prozilla" + +#: src/we.cxx:4288 +msgid "David L. Matthews - testing" +msgstr "David L. Matthews - testing" + +#: src/we.cxx:4296 +msgid "Translations" +msgstr "Traduzioni" + +#: src/we.cxx:4304 +msgid "Ruben Boer - Dutch Translation" +msgstr "Ruben Boer - Traduzione Belga" + +#: src/we.cxx:4308 +msgid "Ralph Slooten- Dutch Translation" +msgstr "Ralph Slooten- Traduzione Belga" + +#: src/we.cxx:4312 +msgid "Flower - Romanian Translation" +msgstr "Flower - Traduzione Rumena" + +#: src/we.cxx:4316 +msgid "Gustavo Noronha Silva (KoV) - Portugese Translation" +msgstr "Gustavo Noronha Silva (KoV) - Traduzione Portoghese" + +#: src/we.cxx:4320 +msgid "Emanuele Tatti (Kreazy) - Itallian Translation" +msgstr "Emanuele Tatti (Kreazy) - Traduzione Italiana" + +#: src/we.cxx:4330 +msgid "Webpage - http://prozilla.genesys.ro/" +msgstr "Webpage - http://prozilla.genesys.ro/" + +#: src/we.cxx:4624 +msgid "Please enter the URL" +msgstr "Per favore inserisci l'URL" + +#: src/we.cxx:4635 +msgid "Enter URL (CTRL+V to paste from clipboard)" +msgstr "Inserisci l'URL (CTRL+V per incollare dagli appunti)" + +#: src/we.cxx:4646 +msgid "FTPSearch for mirrors (Experimental)" +msgstr "Ricerca mirrors FTP (Sperimentale)" + +#: src/dl_win.cxx:14 +msgid "Abort, Resume Later" +msgstr "Abortisci; Riprendi piů tardi" + +#: src/dl_win.cxx:19 src/download_win.cpp:391 +msgid "Pause" +msgstr "Pausa" + +#: src/dl_win.cxx:25 +msgid "Abort, No Resume Later" +msgstr "Abortisci; Non Riprendere" + +#: src/dl_win.cxx:31 +msgid "URL:" +msgstr "URL:" + +#: src/dl_win.cxx:70 +msgid "Estimated Time Left" +msgstr "Tempo mancante stimato" + +#: src/dl_win.cxx:98 +msgid "Creating file.............." +msgstr "Creando file..............." + +#: src/dl_win.cxx:137 src/dl_win.cxx:170 src/dl_win.cxx:208 +msgid "Attention!" +msgstr "Attenzione!" + +#: src/dl_win.cxx:141 +msgid "Ok" +msgstr "Ok" + +#: src/dl_win.cxx:174 src/dl_win.cxx:212 +msgid "Yes" +msgstr "Si" + +#: src/dl_win.cxx:178 src/dl_win.cxx:216 +msgid "No" +msgstr "No" + +#: src/download_win.cpp:43 +msgid "Are you Sure You want to quit?" +msgstr "Sei sicuro di voler abbandonare?" + +#: src/download_win.cpp:183 +msgid "Creating the thread that gets info about file.." +msgstr "Creando il thread che ottiene le informazioni sul file.." + +#: src/download_win.cpp:208 +msgid "I am unable to delete the target file!" +msgstr "Non riesco a cancellare il target file!" + +#: src/download_win.cpp:241 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections" +msgstr "" +"Un errore č occorso durante la lettura del file di log! Uso il numero " +"predefinito di.connessioni" + +#: src/download_win.cpp:250 +msgid "" +"The previous download used a different number of connections than the " +"default! so I will use the previous number of threads" +msgstr "" +"Il download precedente usava un numero differente di connessioni rispetto al " +"numero predefinito! Uso il numero precedente di threads" + +#: src/download_win.cpp:270 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections to delete" +msgstr "" +"Un errore č occorso durante la letture del file di log! Uso il numero " +"predefinito di connessioni da cancellare" + +#: src/download_win.cpp:293 +#, c-format +msgid "The target file %s exists, would you like to overwrite it?" +msgstr "Il target file %s esiste, lo vuoi sovrascrivere?" + +#: src/download_win.cpp:321 +#, c-format +msgid "Previous download of %s exists, would you like to resume it or overwrite it?" +msgstr "Un precedente download di %s esiste, lo vuoi riprendere o sovrascrivere?" + +#: src/download_win.cpp:325 +msgid "Resume" +msgstr "Riprendi" + +#: src/download_win.cpp:326 +msgid "Overwrite" +msgstr "Sovrascrivi" + +#: src/download_win.cpp:371 +msgid "RESUME supported" +msgstr "RESUME supportato" + +#: src/download_win.cpp:379 +msgid "RESUME NOT supported" +msgstr "RESUME NON supportato" + +#: src/download_win.cpp:444 +msgid "UnPause" +msgstr "Riprendi" + +#: src/download_win.cpp:477 +msgid "waiting for thread to end" +msgstr "sto aspettando la fine del thread" + +#: src/download_win.cpp:479 +msgid "Thread ended" +msgstr "Thread terminato" + +#: src/download_win.cpp:487 +msgid "Got info succesfully" +msgstr "Ottenute le informazioni correttamente" + +#: src/download_win.cpp:490 +#, c-format +msgid "File Size = %ld Kb" +msgstr "Grandezza File = %ld Kb" + +#: src/download_win.cpp:494 +msgid "File Size is UNKOWN" +msgstr "La Grandezza del file č SCONOSCIUTA" + +#: src/download_win.cpp:515 +#, c-format +msgid "The URL %s doesnt exist!" +msgstr "L'URL %s non esiste!" + +#: src/download_win.cpp:546 +msgid "No suitable mirrors were found, downloading from original server" +msgstr "Non sono stati trovati mirrors validi, effettuo il download dal server originale" + +#: src/download_win.cpp:596 +#, c-format +msgid "Total Bytes received %ld Kb" +msgstr "Bytes ricevute in totale %ld kb" + +#: src/download_win.cpp:601 +#, c-format +msgid "Average Speed = %.3f Kb/sec" +msgstr "Velocitŕ di trasferimento media = %.3f Kb/sec" + +#: src/download_win.cpp:610 +#, c-format +msgid "%d Seconds" +msgstr "%d Secondi" + +#: src/download_win.cpp:612 +#, c-format +msgid "%d Minutes %d Seconds" +msgstr "%d Minuti %d Secondi" + +#: src/download_win.cpp:615 +#, c-format +msgid "%d Hours %d minutes" +msgstr "%d Ore %d Minuti" + +#. Wait till all are completed +#: src/download_win.cpp:637 +msgid "Waiting till all threads terminate" +msgstr "Sto aspettando la conclusione di tutti i threads" + +#: src/download_win.cpp:642 +msgid "Got DL succesfully, now building file" +msgstr "Ottenuti i DL correttamente, ora sto costruendo il file" + +#: src/download_win.cpp:649 +#, c-format +msgid "Building file %s ....." +msgstr "Costruendo file %s" + +#: src/download_win.cpp:673 +msgid "" +"Error the server/proxy lied about resuming so I have to restart this from " +"the begiining!" +msgstr "" +"Errore: a causa del server/proxy non č stato possibile riprendere il " +"download perciň devo riprendere dall'inizio!" + +#: src/download_win.cpp:693 +#, c-format +msgid "" +"One connection of the download %s encountered a unrecoverable local error, " +"usually lack of free space, or a write to bad medium, or a problem with " +"permissions,so pelase fix this and retry" +msgstr "" +"Una connessione del download %s č incappata in un errore locale " +"irreversibile, di solito a causa di mancanza di spazio su disco, o la " +"scrittura su un medium con problemi oppure un problema di persmesse, per " +"favore ripara il problema e riprova" + +#: src/download_win.cpp:710 +#, c-format +msgid "" +"A connection(s) of the download %s encountered a unrecoverable remote error, " +"usually the file not being present in the remote server, therefore the " +"download had to be aborted!" +msgstr "" +"Una connessione del download %s č incappata in un errore remoto " +"irreversibile, di solito a causa dell'assenza del file sul server remoto, perciň il download deve essere abortito!" + +#: src/download_win.cpp:761 src/download_win.cpp:788 +msgid "Close" +msgstr "Chiudi" + +#: src/main.cpp:225 src/main.cpp:351 +#, c-format +msgid "%s does not seem to be a valid URL" +msgstr "%s non sembra essere un'URL valido" + +#: src/main.cpp:232 +#, c-format +msgid "%s contains just a hostname, it does not contain a file to download!" +msgstr "%s contiene solo il nome di un host, non contiene un file da scaricare!" + +#: src/main.cpp:286 +msgid "Error: Invalid option\n" +msgstr "Errore: opzione non valida\n" + +#: src/main.cpp:291 +msgid "Prozilla - Download Accelerator" +msgstr "Prozilla - Download Accelerator" + +#: src/main.cpp:314 +msgid "&File" +msgstr "&File" + +#: src/main.cpp:315 +msgid "&New URL" +msgstr "&Nuova URL" + +#: src/main.cpp:317 +msgid "&Preferences" +msgstr "&Preferenze" + +#: src/main.cpp:319 +msgid "&Quit" +msgstr "&Abbandona" + +#: src/main.cpp:321 +msgid "&Help" +msgstr "&Aiuto" + +#: src/main.cpp:322 +msgid "&About" +msgstr "&A proposito di..." + +#: src/options.cpp:130 +#, c-format +msgid "%s does not seem to be a valid directory" +msgstr "%s non sembra essere una directory valida" + +#: src/options.cpp:153 +#, c-format +msgid "%s does not seem to be a valid HTTP proxy value" +msgstr "%s non sembra essere un valore valido per un proxy HTTP" + +#: src/options.cpp:181 +#, c-format +msgid "%s does not seem to be a valid FTP proxy value" +msgstr "%s non sembra essere un valore valido per un proxy FTP" + diff --git a/po/it.po~ b/po/it.po~ new file mode 100644 index 0000000..eab21e6 --- /dev/null +++ b/po/it.po~ @@ -0,0 +1,498 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2001-09-27 12:56+0600\n" +"PO-Revision-Date: 2001-10-04 20:51+GMT\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 0.7\n" + +#: src/we.cxx:84 +msgid "Prozilla Preferences Panel" +msgstr "Pannello Preferenze di Prozilla" + +#: src/we.cxx:89 +msgid "General" +msgstr "Generale" + +#: src/we.cxx:108 +msgid "Number of Threads:" +msgstr "Numero di Threads:" + +#: src/we.cxx:117 +msgid "Use PASV for FTP transfers (recommended)" +msgstr "Usa PASV per i trasferimenti FTP (raccomandato)" + +#: src/we.cxx:122 +msgid "Ask the HTTP proxies not to cache requests between sessions (default is off)" +msgstr "" +"Chiedi ai proxies HTTP di non mettere in cache le richieste tra le sessioni " +"(disabilitato per default)" + +#: src/we.cxx:138 +msgid "Retry Delay (Sec):" +msgstr "Ritardo tra i tentativi (Sec):" + +#: src/we.cxx:142 +msgid "Timeout Period (Sec):" +msgstr "Tempo di Timeout (Sec):" + +#: src/we.cxx:146 +msgid "Directory to download the files:" +msgstr "Directory dove scaricare i files:" + +#: src/we.cxx:150 +msgid "Limit bandwith usage PER download to (Kbps) (0 = unlimited):" +msgstr "Limita l'uso della banda per ogni download a (Kbps) (0 = illimitata):" + +#: src/we.cxx:158 +msgid "Proxies" +msgstr "Proxies" + +#: src/we.cxx:166 src/we.cxx:193 +msgid "Hostname:" +msgstr "Nome Host:" + +#: src/we.cxx:171 src/we.cxx:198 +msgid "Port:" +msgstr "Porta:" + +#: src/we.cxx:177 +msgid "HTTP Proxy:" +msgstr "Proxy HTTP:" + +#: src/we.cxx:182 src/we.cxx:204 +msgid "Username:" +msgstr "Nome utente:" + +#: src/we.cxx:187 src/we.cxx:209 +msgid "Password:" +msgstr "Password:" + +#: src/we.cxx:215 +msgid "FTP Proxy:" +msgstr "Proxy FTP:" + +#: src/we.cxx:220 +msgid "FTP Proxy Type:" +msgstr "Tipo di proxy FTP:" + +#: src/we.cxx:227 +msgid "Use HTTP Proxy" +msgstr "Usa Proxy HTTP" + +#: src/we.cxx:232 +msgid "Use FTP Proxy" +msgstr "Usa Proxy FTP" + +#: src/we.cxx:240 +msgid "Direct Connection to the Internet" +msgstr "Connessione Diretta a Internet" + +#: src/we.cxx:247 +msgid "Use proxies" +msgstr "Usa proxies" + +#: src/we.cxx:260 +msgid "FTP Search" +msgstr "Ricerca FTP" + +#: src/we.cxx:266 +msgid "Number of mirrors to request:" +msgstr "Numero di mirrors da richiedere:" + +#: src/we.cxx:279 +msgid "Ping Timeout (Sec):" +msgstr "Timeout del ping(Sec):" + +#: src/we.cxx:288 +msgid "Number of mirrors to ping at once:" +msgstr "Numero di mirrors da pingare alla volta:" + +#: src/we.cxx:301 +msgid "Do FTPSearch automatically" +msgstr "Effettua la ricerca FTP automaticamente" + +#: src/we.cxx:312 src/we.cxx:4233 src/we.cxx:4626 +msgid "OK" +msgstr "OK" + +#: src/dl_win.cxx:102 src/we.cxx:316 src/we.cxx:4642 +msgid "Cancel" +msgstr "Cancella" + +#: src/we.cxx:4221 +msgid "Prozilla Download Accelerator 2.0.4beta" +msgstr "Prozilla Download Accelerator 2.0.4beta" + +#: src/we.cxx:4227 +msgid "GUI Version 2.0.4beta" +msgstr "Versione GUI 2.0.4-beta" + +#: src/we.cxx:4230 +msgid "libprozilla version 1.0.0" +msgstr "Versione libprozilla 1.0.0" + +#: src/we.cxx:4245 +msgid "Credits" +msgstr "Crediti" + +#: src/we.cxx:4254 +msgid "Kalum Somaratna - Main Programming" +msgstr "Kalum Somaratna - Programmazione Principale" + +#: src/we.cxx:4258 +msgid "Uwe Hermann - Additional Programming" +msgstr "Uwe Hermann - Programmazione aggiutiva" + +#: src/we.cxx:4261 +msgid "" +"Gustavo Noronha Silva (KoV) - libprozilla GNU gettext support, deb package " +"maintainer" +msgstr "Gustavo Noronha Silva (KoV) - supporto libprozilla GNU gettext, maintenimento pacchetti deb" + +#: src/we.cxx:4266 +msgid "Ralph Slooten - Web Page Maintainer, RPM packager, testing" +msgstr "Ralph Slooten - Web Page Maintainer, RPM packager, testing" + +#: src/we.cxx:4270 +msgid "" +"If you have contributed and arent listed, I apologise and please mail me " +" and I will correct it" +msgstr "" +"Se hai contribuito e non sei nella lista, ti prego di mandarmi un email" +" e la correggerň" + +#: src/we.cxx:4275 +msgid "" +"Silviu Marin-Caea - (Our sysadmin) Donation of valuable bandwith and system " +"resources at delrom.ro, testing" +msgstr "" +"Silviu Marin-Caea - (Nostro amministratore di sistema) Donazione considerevole di banda " +"e risorse di sistema a delrom.ro, testing" + +#: src/we.cxx:4280 +msgid "Pablo Iranzo Gómez - testing" +msgstr "Pablo Iranzo Gómez - testing" + +#: src/we.cxx:4284 +msgid "Krogg - The cool Prozilla logo" +msgstr "Krogg - Il simpatico logo di Prozilla" + +#: src/we.cxx:4288 +msgid "David L. Matthews - testing" +msgstr "David L. Matthews - testing" + +#: src/we.cxx:4296 +msgid "Translations" +msgstr "Traduzioni" + +#: src/we.cxx:4304 +msgid "Ruben Boer - Dutch Translation" +msgstr "Ruben Boer - Traduzione Belga" + +#: src/we.cxx:4308 +msgid "Ralph Slooten- Dutch Translation" +msgstr "Ralph Slooten- Traduzione Belga" + +#: src/we.cxx:4312 +msgid "Flower - Romanian Translation" +msgstr "Flower - Traduzione Rumena" + +#: src/we.cxx:4316 +msgid "Gustavo Noronha Silva (KoV) - Portugese Translation" +msgstr "Gustavo Noronha Silva (KoV) - Traduzione Portoghese" + +#: src/we.cxx:4320 +msgid "Emanuele Tatti (Kreazy) - Itallian Translation" +msgstr "Emanuele Tatti (Kreazy) - Traduzione Italiana" + +#: src/we.cxx:4330 +msgid "Webpage - http://prozilla.delrom.ro/" +msgstr "Webpage - http://prozilla.delrom.ro/" + +#: src/we.cxx:4624 +msgid "Please enter the URL" +msgstr "Per favore inserisci l'URL" + +#: src/we.cxx:4635 +msgid "Enter URL (CTRL+V to paste from clipboard)" +msgstr "Inserisci l'URL (CTRL+V per incollare dagli appunti)" + +#: src/we.cxx:4646 +msgid "FTPSearch for mirrors (Experimental)" +msgstr "Ricerca mirrors FTP (Sperimentale)" + +#: src/dl_win.cxx:14 +msgid "Abort, Resume Later" +msgstr "Abortisci; Riprendi piů tardi" + +#: src/dl_win.cxx:19 src/download_win.cpp:391 +msgid "Pause" +msgstr "Pausa" + +#: src/dl_win.cxx:25 +msgid "Abort, No Resume Later" +msgstr "Abortisci; Non Riprendere" + +#: src/dl_win.cxx:31 +msgid "URL:" +msgstr "URL:" + +#: src/dl_win.cxx:70 +msgid "Estimated Time Left" +msgstr "Tempo mancante stimato" + +#: src/dl_win.cxx:98 +msgid "Creating file.............." +msgstr "Creando file..............." + +#: src/dl_win.cxx:137 src/dl_win.cxx:170 src/dl_win.cxx:208 +msgid "Attention!" +msgstr "Attenzione!" + +#: src/dl_win.cxx:141 +msgid "Ok" +msgstr "Ok" + +#: src/dl_win.cxx:174 src/dl_win.cxx:212 +msgid "Yes" +msgstr "Si" + +#: src/dl_win.cxx:178 src/dl_win.cxx:216 +msgid "No" +msgstr "No" + +#: src/download_win.cpp:43 +msgid "Are you Sure You want to quit?" +msgstr "Sei sicuro di voler abbandonare?" + +#: src/download_win.cpp:183 +msgid "Creating the thread that gets info about file.." +msgstr "Creando il thread che ottiene le informazioni sul file.." + +#: src/download_win.cpp:208 +msgid "I am unable to delete the target file!" +msgstr "Non riesco a cancellare il target file!" + +#: src/download_win.cpp:241 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections" +msgstr "" +"Un errore č occorso durante la lettura del file di log! Uso il numero " +"predefinito di.connessioni" + +#: src/download_win.cpp:250 +msgid "" +"The previous download used a different number of connections than the " +"default! so I will use the previous number of threads" +msgstr "" +"Il download precedente usava un numero differente di connessioni rispetto al " +"numero predefinito! Uso il numero precedente di threads" + +#: src/download_win.cpp:270 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections to delete" +msgstr "" +"Un errore č occorso durante la letture del file di log! Uso il numero " +"predefinito di connessioni da cancellare" + +#: src/download_win.cpp:293 +#, c-format +msgid "The target file %s exists, would you like to overwrite it?" +msgstr "Il target file %s esiste, lo vuoi sovrascrivere?" + +#: src/download_win.cpp:321 +#, c-format +msgid "Previous download of %s exists, would you like to resume it or overwrite it?" +msgstr "Un precedente download di %s esiste, lo vuoi riprendere o sovrascrivere?" + +#: src/download_win.cpp:325 +msgid "Resume" +msgstr "Riprendi" + +#: src/download_win.cpp:326 +msgid "Overwrite" +msgstr "Sovrascrivi" + +#: src/download_win.cpp:371 +msgid "RESUME supported" +msgstr "RESUME supportato" + +#: src/download_win.cpp:379 +msgid "RESUME NOT supported" +msgstr "RESUME NON supportato" + +#: src/download_win.cpp:444 +msgid "UnPause" +msgstr "Riprendi" + +#: src/download_win.cpp:477 +msgid "waiting for thread to end" +msgstr "sto aspettando la fine del thread" + +#: src/download_win.cpp:479 +msgid "Thread ended" +msgstr "Thread terminato" + +#: src/download_win.cpp:487 +msgid "Got info succesfully" +msgstr "Ottenute le informazioni correttamente" + +#: src/download_win.cpp:490 +#, c-format +msgid "File Size = %ld Kb" +msgstr "Grandezza File = %ld Kb" + +#: src/download_win.cpp:494 +msgid "File Size is UNKOWN" +msgstr "La Grandezza del file č SCONOSCIUTA" + +#: src/download_win.cpp:515 +#, c-format +msgid "The URL %s doesnt exist!" +msgstr "L'URL %s non esiste!" + +#: src/download_win.cpp:546 +msgid "No suitable mirrors were found, downloading from original server" +msgstr "Non sono stati trovati mirrors validi, effettuo il download dal server originale" + +#: src/download_win.cpp:596 +#, c-format +msgid "Total Bytes received %ld Kb" +msgstr "Bytes ricevute in totale %ld kb" + +#: src/download_win.cpp:601 +#, c-format +msgid "Average Speed = %.3f Kb/sec" +msgstr "Velocitŕ di trasferimento media = %.3f Kb/sec" + +#: src/download_win.cpp:610 +#, c-format +msgid "%d Seconds" +msgstr "%d Secondi" + +#: src/download_win.cpp:612 +#, c-format +msgid "%d Minutes %d Seconds" +msgstr "%d Minuti %d Secondi" + +#: src/download_win.cpp:615 +#, c-format +msgid "%d Hours %d minutes" +msgstr "%d Ore %d Minuti" + +#. Wait till all are completed +#: src/download_win.cpp:637 +msgid "Waiting till all threads terminate" +msgstr "Sto aspettando la conclusione di tutti i threads" + +#: src/download_win.cpp:642 +msgid "Got DL succesfully, now building file" +msgstr "Ottenuti i DL correttamente, ora sto costruendo il file" + +#: src/download_win.cpp:649 +#, c-format +msgid "Building file %s ....." +msgstr "Costruendo file %s" + +#: src/download_win.cpp:673 +msgid "" +"Error the server/proxy lied about resuming so I have to restart this from " +"the begiining!" +msgstr "" +"Errore: a causa del server/proxy non č stato possibile riprendere il " +"download perciň devo riprendere dall'inizio!" + +#: src/download_win.cpp:693 +#, c-format +msgid "" +"One connection of the download %s encountered a unrecoverable local error, " +"usually lack of free space, or a write to bad medium, or a problem with " +"permissions,so pelase fix this and retry" +msgstr "" +"Una connessione del download %s č incappata in un errore locale " +"irreversibile, di solito a causa di mancanza di spazio su disco, o la " +"scrittura su un medium con problemi oppure un problema di persmesse, per " +"favore ripara il problema e riprova" + +#: src/download_win.cpp:710 +#, c-format +msgid "" +"A connection(s) of the download %s encountered a unrecoverable remote error, " +"usually the file not being present in the remote server, therefore the " +"download had to be aborted!" +msgstr "" +"Una connessione del download %s č incappata in un errore remoto " +"irreversibile, di solito a causa dell'assenza del file sul server remoto, perciň il download deve essere abortito!" + +#: src/download_win.cpp:761 src/download_win.cpp:788 +msgid "Close" +msgstr "Chiudi" + +#: src/main.cpp:225 src/main.cpp:351 +#, c-format +msgid "%s does not seem to be a valid URL" +msgstr "%s non sembra essere un'URL valido" + +#: src/main.cpp:232 +#, c-format +msgid "%s contains just a hostname, it does not contain a file to download!" +msgstr "%s contiene solo il nome di un host, non contiene un file da scaricare!" + +#: src/main.cpp:286 +msgid "Error: Invalid option\n" +msgstr "Errore: opzione non valida\n" + +#: src/main.cpp:291 +msgid "Prozilla - Download Accelerator" +msgstr "Prozilla - Download Accelerator" + +#: src/main.cpp:314 +msgid "&File" +msgstr "&File" + +#: src/main.cpp:315 +msgid "&New URL" +msgstr "&Nuova URL" + +#: src/main.cpp:317 +msgid "&Preferences" +msgstr "&Preferenze" + +#: src/main.cpp:319 +msgid "&Quit" +msgstr "&Abbandona" + +#: src/main.cpp:321 +msgid "&Help" +msgstr "&Aiuto" + +#: src/main.cpp:322 +msgid "&About" +msgstr "&A proposito di..." + +#: src/options.cpp:130 +#, c-format +msgid "%s does not seem to be a valid directory" +msgstr "%s non sembra essere una directory valida" + +#: src/options.cpp:153 +#, c-format +msgid "%s does not seem to be a valid HTTP proxy value" +msgstr "%s non sembra essere un valore valido per un proxy HTTP" + +#: src/options.cpp:181 +#, c-format +msgid "%s does not seem to be a valid FTP proxy value" +msgstr "%s non sembra essere un valore valido per un proxy FTP" + diff --git a/po/nl.gmo b/po/nl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..836b215b755ce3e886aec8ec186e7954fd795283 GIT binary patch literal 3781 zcmcJQON<;x8OMv@#KZ&wdGJU=sD-StwS%OW^8;wR?T$nY|2So^^Aix&{L@1X?904H&0wj>|0ddHMNc{diuU%}oQJU&s zRdv@_->bg){Ue9IZD{A{PtgzEXG|6T{oTeq3SYe6n8)D?JOUf=6R-{WnU{II2Yv@W z1aH9)!`GnpzX6|yzlPfXHhdD^_kc0{%+owrGLum2C*TBJgcio|S@;boxj%%G`xbl{ z{t-&Hhe>~1% zvSS9y?z2$mUmnbB@O{j;pw8QY$KcnX?EW6)XKwR&2EG9at@#`LD7*t7froLT{PzUZ zz8NTa=OC(>mBD%)>O2SK{{TM#zYJyP%Mg*~`%rPb4YmJwP=5IflwEhA{O}-$DQ}*E zr{N5g9t|jaccJ8e6SBp;0+o-iLdpFplz-lY{LEWCbpCJPC*hw4Jj@{${!37K zya!LgZ$W+kb0~fO0Hxobq2#_Zm_NkigUlzP;`IX5zRQF4Ey&O8@sJ*0hqCKcD0#0z z`BO49XKGH+&(YOzlX-!zn5aotHQAu1oSdPb)PyD^VC*{rsj~Zk)<})66>#PRx7~a&P7{?}|8W*-ccOKG4jCIP=ZI&WALG z$kkEBmbXhO8m7J&d=au;y@^6EO@fQcPb4m%H4FMuM%!cawT+b%SM*`W<%PGKS!mm4 z5_cNGWzli7kYyp8MRwnBHgt645wnmNaT}LJwie4fezPzaYZY6`!p&V<+wJ(-@qE@S z)|c!RpXE~bx#`o>XHGVJ;mo2>@knAW)oPXU(ceF7E`_{ET^k`w*0pUnb&bTA=J>>; zrtB?T*78N^q6xF?l5X2pL)&GJo%W<%b#W?jt<1Gao0eH-+~P%zz0D93z1)kF#MvaY zf>~K#Tw1%1;PiUEy0Gzu>QZgNtOc{aY}P9aYvpu(+pH7AUKSVLRM08drOc&!!7l!@ z?e`E)aw>4V%=2EzqFGZRlX&8nn8YgmQ_p?Ymp@YBq`fc<)LfH9z%50{^m$*!d%d-* zGvg2TWv{KclvLVqNoUJelMqNiRJ-aMydnMMnS$=KDbl;LO6Z&0ykI&|p8;m&NvVS@ zFRhp3lr)q5yG4@wn{i%D7`@mR4Si6)$){{Dbd#vO9!b1iMlcK=XmvYkp>T;kzstdv zy!P=9DK*KK<%Z#`SyRU1KfE@M&uDbLva$ZfYnmFoYe%VA&XiuZlu=GAbJZ($Gi2pg zrJ>yW+#cin&~E!Q@+7{bbOu3Fy!zQ#?|FO4XKk0tqjOOd>pEZo(npDQjW{Q9gWdhu zVQ`uFGbH|Lm99EfMs=%S!qRayD_8p^%$LjKac<+>wmcil+I5~hb7@5RihUQQ%EhIW zE1V?cAG_z$w3~PZby2%C_k)FgExYQuJ$1Y1w$@)KOsb{s`M zi6~uU)|RJ&9;{x&!%Q`y=yCc$KihWOK0Q#triT@5Sg%wV8gUxw+KkeC)pZnquDss~ z9(zWmYR9D(MYa=%ni&~uJBi!ol;h@N=oYhf9rKeYCec-_{1K^-{-yf0_(nukZ;fjc zHKV+sqm0>Cto;63HJ7w}8&CePVzr*O1Bb^qwk>58EgStXNy}cG=bk@-yDQbD5H_P> z2I(JYRH~5Ba&A-a?y6LgORq03oZqM~Esv^|_Xo=rrAx`z+{)q`JIMX7C5v}gU307G z;f#oq^?$2bW@O5NWW86ds**?qv*^V{H*qerr7;X9X5w&FzhVT&7rKwL)#_KVf1T7|SA6_uIea%IK=!Ookz z<3c}vQI^t!(|yHj(KoVgyuGi04OjLRvEfo#$aV-;`MDGgzWmS7Uk%s36h&x, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2001-08-15 15:29+0600\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING\n" + +#: src/we.cxx:49 +msgid "USER@SITE" +msgstr "GEBRUIKER@SITE" + +#: src/we.cxx:50 +msgid "USER@ProxyUser@SITE" +msgstr "GEBRUIKER@ProxyUser@SITE" + +#: src/we.cxx:51 +msgid "USER@SITE_PROXYUSER" +msgstr "GEBRUIKER@SITE_PROXYUSER" + +#: src/we.cxx:52 +msgid "ProxyUser@SITE" +msgstr "ProxyUser@SITE" + +#: src/we.cxx:53 +msgid "LOGIN_then_USER@SITE" +msgstr "LOGIN_dan_GEBRUIKER@SITE" + +#: src/we.cxx:54 +msgid "OPENSITE" +msgstr "OPENSITE" + +#: src/we.cxx:55 +msgid "SITESITE" +msgstr "SITESITE" + +#: src/we.cxx:56 +msgid "HTTP" +msgstr "HTTP" + +#: src/we.cxx:74 +msgid "Prozilla Preferences Panel" +msgstr "Prozilla Instellingen" + +#: src/we.cxx:79 +msgid "General" +msgstr "Algemeen" + +#: src/we.cxx:84 +msgid "Retry Delay (Sec):" +msgstr "" + +#: src/we.cxx:98 +msgid "Number of Threads:" +msgstr "" + +#: src/we.cxx:101 +msgid "Timeout Period (Sec):" +msgstr "" + +#: src/we.cxx:106 +msgid "Use PASV for FTP transfers (recommended)" +msgstr "Gebruik PASV voor FTP vervoer" + +#: src/we.cxx:110 +msgid "" +"Ask the HTTP proxies not to cache requests between sessions (default is off)" +msgstr "" + +#: src/we.cxx:115 +msgid "Directory to download the files:" +msgstr "Download Map" + +#: src/we.cxx:119 +msgid "Limit bandwith usage PER download to (Kbps) (0 = unlimited):" +msgstr "" + +#: src/we.cxx:128 +msgid "Proxies" +msgstr "Proxies" + +#: src/we.cxx:136 src/we.cxx:157 +msgid "Hostname:" +msgstr "Hostname:" + +#: src/we.cxx:140 src/we.cxx:161 +msgid "Port:" +msgstr "Poort:" + +#: src/we.cxx:145 +msgid "HTTP Proxy:" +msgstr "HTTP Proxy:" + +#: src/we.cxx:148 src/we.cxx:166 +msgid "Username:" +msgstr "Gebruikersnaam" + +#: src/we.cxx:152 src/we.cxx:170 +msgid "Password:" +msgstr "Wachtwoord" + +#: src/we.cxx:175 +msgid "FTP Proxy:" +msgstr "FTP Proxy:" + +#: src/we.cxx:178 +msgid "FTP Proxy Type:" +msgstr "FTP Proxy Soort:" + +#: src/we.cxx:183 +msgid "Use HTTP Proxy" +msgstr "Gebruik HTTP Proxy" + +#: src/we.cxx:187 +msgid "Use FTP Proxy" +msgstr "Gebruik FTP Proxy" + +#: src/we.cxx:194 +msgid "Direct Connection to the Internet" +msgstr "Direct Internet Verbinding" + +#: src/we.cxx:200 +msgid "Use proxies" +msgstr "Proxies Gebruiken" + +#: src/we.cxx:214 src/we.cxx:4175 +msgid "OK" +msgstr "OK" + +#: src/dl_win.cxx:85 src/we.cxx:218 +msgid "Cancel" +msgstr "Annuleer" + +#: src/we.cxx:4123 +msgid "Prozilla Download Accelerator M1" +msgstr "Prozilla Download Accelerator" + +#: src/we.cxx:4128 +msgid "GUI Version 2.0.4-beta" +msgstr "GUI Versie 2.0.4-beta" + +#: src/we.cxx:4131 +msgid "libprozilla version 1.0.0" +msgstr "libprozilla versie 1.0.0" + +#: src/we.cxx:4134 +msgid "Credits" +msgstr "" + +#: src/we.cxx:4140 +msgid "Kalum Somaratna - Main Programming" +msgstr "Kalum Somaratna - Hoofd Programeren" + +#: src/we.cxx:4143 +msgid "Uwe Hermann - Additional Programming" +msgstr "Uwe Hermann - Extra Programeren" + +#: src/we.cxx:4146 +msgid "" +"Gustavo Noronha Silva (KoV) - libprozilla GNU gettext support, translator, " +"deb package maintainer" +msgstr "" + +#: src/we.cxx:4151 +msgid "Ralph Slooten - Web Page Maintainer, RPM packager, testing, translator" +msgstr "Ralph Slooten - Web Site Ontwikkelaar / Onderhoud, RPM packager, testen, vertaaling" + +#: src/we.cxx:4155 +msgid "" +"If you have contributed and arent listed, I apologise and please mail me " +" and I will correct it" +msgstr "" + +#: src/we.cxx:4160 +msgid "" +"Silviu Marin-Caea - (Our sysadmin) Donation of valuable bandwith and system " +"resources at genesys.ro, testing" +msgstr "" + +#: src/we.cxx:4165 +msgid "Pablo Iranzo Gómez - testing" +msgstr "Pablo Iranzo Gómez - testen" + +#: src/we.cxx:4169 +msgid "Krogg - The cool Prozilla logo" +msgstr "Krogg - de gaaf Prozilla logo" + +#: src/dl_win.cxx:13 +msgid "URL:" +msgstr "URL" + +#: src/dl_win.cxx:56 +msgid "Estimated Time Left" +msgstr "Gemmidelde Tijd Nog" + +#: src/dl_win.cxx:64 +msgid "Abort, Resume Later" +msgstr "Anneuleer, Later" + +#: src/dl_win.cxx:68 +msgid "Abort, No Resume Later" +msgstr "Annuleer, Geen " + +#: src/dl_win.cxx:81 +msgid "Creating file.............." +msgstr "Bestand maken.............." + +#: src/dl_win.cxx:120 src/dl_win.cxx:153 src/dl_win.cxx:191 +msgid "Attention!" +msgstr "Attentie!" + +#: src/dl_win.cxx:124 +msgid "Ok" +msgstr "OK" + +#: src/dl_win.cxx:157 src/dl_win.cxx:195 +msgid "Yes" +msgstr "Ja" + +#: src/dl_win.cxx:161 src/dl_win.cxx:199 +msgid "No" +msgstr "Nee" + +#: src/download_win.cpp:42 +msgid "Are you Sure You want to quit?" +msgstr "Weet U zeker dat U wil stoppen?" + +#: src/download_win.cpp:171 +msgid "I am unable to delete the target file!" +msgstr "Onmogelijk om de bestand te wissen!" + +#: src/download_win.cpp:204 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections" +msgstr "" + +#: src/download_win.cpp:213 +msgid "" +"The previous download used a different number of connections than the " +"default! so I will use the previous number of threads" +msgstr "" + +#: src/download_win.cpp:233 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections to delete" +msgstr "" + +#: src/download_win.cpp:256 +#, c-format +msgid "The target file %s exists, would you like to overwrite it?" +msgstr "De bestand %s bestaat al, wilt U het vervengen?" + +#: src/download_win.cpp:284 +#, c-format +msgid "" +"Previous download of %s exists, would you like to resume it or overwrite it?" +msgstr "" + +#: src/download_win.cpp:288 +msgid "Resume" +msgstr "" + +#: src/download_win.cpp:289 +msgid "Overwrite" +msgstr "Overschrijven" + +#: src/download_win.cpp:326 +msgid "RESUME supported" +msgstr "" + +#: src/download_win.cpp:334 +msgid "RESUME NOT supported" +msgstr "" + +#: src/download_win.cpp:378 +msgid "waiting for thread to end" +msgstr "" + +#: src/download_win.cpp:380 +msgid "Thread ended" +msgstr "" + +#: src/download_win.cpp:388 +msgid "Got info succesfully" +msgstr "" + +#: src/download_win.cpp:391 +#, c-format +msgid "File Size = %ld Kb" +msgstr "" + +#: src/download_win.cpp:395 +msgid "File Size is UNKOWN" +msgstr "" + +#: src/download_win.cpp:404 +#, c-format +msgid "The URL %s doesnt exist!" +msgstr "De URL %s bestaat niet!" + +#: src/download_win.cpp:451 +#, c-format +msgid "Total Bytes received %ld Kb" +msgstr "Totaal Bytes ontvangen %ld Kb" + +#: src/download_win.cpp:456 +#, c-format +msgid "Average Speed = %.3f Kb/sec" +msgstr "Gemiddelde Snelheid = %.3f Kb/sec" + +#: src/download_win.cpp:465 +#, c-format +msgid "%d Seconds" +msgstr "%d Seconden" + +#: src/download_win.cpp:467 +#, c-format +msgid "%d Minutes %d Seconds" +msgstr "%d Minuten %d Seconden" + +#: src/download_win.cpp:470 +#, c-format +msgid "%d Hours %d minutes" +msgstr "%d Uren %d Minuten" + +#. Wait till all are completed +#: src/download_win.cpp:492 +msgid "Waiting till all threads terminate" +msgstr "" + +#: src/download_win.cpp:497 +msgid "Got DL succesfully, now building file" +msgstr "" + +#: src/download_win.cpp:503 +#, c-format +msgid "Building file %s ....." +msgstr "" + +#: src/download_win.cpp:526 +msgid "" +"Error the server/proxy lied about resuming so I have to restart this from " +"the begiining!" +msgstr "" + +#: src/download_win.cpp:546 +#, c-format +msgid "" +"One connection of the download %s encountered a unrecoverable local error, " +"usually lack of free space, or a write to bad medium, or a problem with " +"permissions,so pelase fix this and retry" +msgstr "" + +#: src/download_win.cpp:593 src/download_win.cpp:619 +msgid "Close" +msgstr "Sluiten" + +#: src/download_win.cpp:685 +msgid "Creating the thread that gets info about file.." +msgstr "" + +#: src/main.cpp:145 +msgid "Enter URL (CTRL+V to paste from clipboard)" +msgstr "URL toevoegen (CTRL+V van de klapper te plakken)" + +#: src/main.cpp:158 src/main.cpp:306 +#, c-format +msgid "%s does not seem to be a valid URL" +msgstr "%s is geen URL" + +#: src/main.cpp:248 +msgid "Error: Invalid option\n" +msgstr "Fout: Ongeldige optie\n" + +#: src/main.cpp:253 +msgid "Prozilla - Download Accelerator" +msgstr "Prozilla - Download Accelerator" + +#: src/main.cpp:276 +msgid "&File" +msgstr "&Bestand" + +#: src/main.cpp:277 +msgid "&New URL" +msgstr "&Nieuwe URL" + +#: src/main.cpp:278 +msgid "&Preferences" +msgstr "&Instellingen" + +#: src/main.cpp:279 +msgid "&About" +msgstr "" + +#: src/main.cpp:280 +msgid "&Quit" +msgstr "" + +#: src/options.cpp:119 +#, c-format +msgid "%s does not seem to be a valid directory" +msgstr "" + +#: src/options.cpp:142 +#, c-format +msgid "%s does not seem to be a valid HTTP proxy value" +msgstr "" + +#: src/options.cpp:170 +#, c-format +msgid "%s does not seem to be a valid FTP proxy value" +msgstr "" diff --git a/po/nl.po~ b/po/nl.po~ new file mode 100644 index 0000000..82fc6fb --- /dev/null +++ b/po/nl.po~ @@ -0,0 +1,422 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2001-08-15 15:29+0600\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING\n" + +#: src/we.cxx:49 +msgid "USER@SITE" +msgstr "GEBRUIKER@SITE" + +#: src/we.cxx:50 +msgid "USER@ProxyUser@SITE" +msgstr "GEBRUIKER@ProxyUser@SITE" + +#: src/we.cxx:51 +msgid "USER@SITE_PROXYUSER" +msgstr "GEBRUIKER@SITE_PROXYUSER" + +#: src/we.cxx:52 +msgid "ProxyUser@SITE" +msgstr "ProxyUser@SITE" + +#: src/we.cxx:53 +msgid "LOGIN_then_USER@SITE" +msgstr "LOGIN_dan_GEBRUIKER@SITE" + +#: src/we.cxx:54 +msgid "OPENSITE" +msgstr "OPENSITE" + +#: src/we.cxx:55 +msgid "SITESITE" +msgstr "SITESITE" + +#: src/we.cxx:56 +msgid "HTTP" +msgstr "HTTP" + +#: src/we.cxx:74 +msgid "Prozilla Preferences Panel" +msgstr "Prozilla Instellingen" + +#: src/we.cxx:79 +msgid "General" +msgstr "Algemeen" + +#: src/we.cxx:84 +msgid "Retry Delay (Sec):" +msgstr "" + +#: src/we.cxx:98 +msgid "Number of Threads:" +msgstr "" + +#: src/we.cxx:101 +msgid "Timeout Period (Sec):" +msgstr "" + +#: src/we.cxx:106 +msgid "Use PASV for FTP transfers (recommended)" +msgstr "Gebruik PASV voor FTP vervoer" + +#: src/we.cxx:110 +msgid "" +"Ask the HTTP proxies not to cache requests between sessions (default is off)" +msgstr "" + +#: src/we.cxx:115 +msgid "Directory to download the files:" +msgstr "Download Map" + +#: src/we.cxx:119 +msgid "Limit bandwith usage PER download to (Kbps) (0 = unlimited):" +msgstr "" + +#: src/we.cxx:128 +msgid "Proxies" +msgstr "Proxies" + +#: src/we.cxx:136 src/we.cxx:157 +msgid "Hostname:" +msgstr "Hostname:" + +#: src/we.cxx:140 src/we.cxx:161 +msgid "Port:" +msgstr "Poort:" + +#: src/we.cxx:145 +msgid "HTTP Proxy:" +msgstr "HTTP Proxy:" + +#: src/we.cxx:148 src/we.cxx:166 +msgid "Username:" +msgstr "Gebruikersnaam" + +#: src/we.cxx:152 src/we.cxx:170 +msgid "Password:" +msgstr "Wachtwoord" + +#: src/we.cxx:175 +msgid "FTP Proxy:" +msgstr "FTP Proxy:" + +#: src/we.cxx:178 +msgid "FTP Proxy Type:" +msgstr "FTP Proxy Soort:" + +#: src/we.cxx:183 +msgid "Use HTTP Proxy" +msgstr "Gebruik HTTP Proxy" + +#: src/we.cxx:187 +msgid "Use FTP Proxy" +msgstr "Gebruik FTP Proxy" + +#: src/we.cxx:194 +msgid "Direct Connection to the Internet" +msgstr "Direct Internet Verbinding" + +#: src/we.cxx:200 +msgid "Use proxies" +msgstr "Proxies Gebruiken" + +#: src/we.cxx:214 src/we.cxx:4175 +msgid "OK" +msgstr "OK" + +#: src/dl_win.cxx:85 src/we.cxx:218 +msgid "Cancel" +msgstr "Annuleer" + +#: src/we.cxx:4123 +msgid "Prozilla Download Accelerator M1" +msgstr "Prozilla Download Accelerator" + +#: src/we.cxx:4128 +msgid "GUI Version 2.0.4-beta" +msgstr "GUI Versie 2.0.4-beta" + +#: src/we.cxx:4131 +msgid "libprozilla version 1.0.0" +msgstr "libprozilla versie 1.0.0" + +#: src/we.cxx:4134 +msgid "Credits" +msgstr "" + +#: src/we.cxx:4140 +msgid "Kalum Somaratna - Main Programming" +msgstr "Kalum Somaratna - Hoofd Programeren" + +#: src/we.cxx:4143 +msgid "Uwe Hermann - Additional Programming" +msgstr "Uwe Hermann - Extra Programeren" + +#: src/we.cxx:4146 +msgid "" +"Gustavo Noronha Silva (KoV) - libprozilla GNU gettext support, translator, " +"deb package maintainer" +msgstr "" + +#: src/we.cxx:4151 +msgid "Ralph Slooten - Web Page Maintainer, RPM packager, testing, translator" +msgstr "Ralph Slooten - Web Site Ontwikkelaar / Onderhoud, RPM packager, testen, vertaaling" + +#: src/we.cxx:4155 +msgid "" +"If you have contributed and arent listed, I apologise and please mail me " +" and I will correct it" +msgstr "" + +#: src/we.cxx:4160 +msgid "" +"Silviu Marin-Caea - (Our sysadmin) Donation of valuable bandwith and system " +"resources at delrom.ro, testing" +msgstr "" + +#: src/we.cxx:4165 +msgid "Pablo Iranzo Gómez - testing" +msgstr "Pablo Iranzo Gómez - testen" + +#: src/we.cxx:4169 +msgid "Krogg - The cool Prozilla logo" +msgstr "Krogg - de gaaf Prozilla logo" + +#: src/dl_win.cxx:13 +msgid "URL:" +msgstr "URL" + +#: src/dl_win.cxx:56 +msgid "Estimated Time Left" +msgstr "Gemmidelde Tijd Nog" + +#: src/dl_win.cxx:64 +msgid "Abort, Resume Later" +msgstr "Anneuleer, Later" + +#: src/dl_win.cxx:68 +msgid "Abort, No Resume Later" +msgstr "Annuleer, Geen " + +#: src/dl_win.cxx:81 +msgid "Creating file.............." +msgstr "Bestand maken.............." + +#: src/dl_win.cxx:120 src/dl_win.cxx:153 src/dl_win.cxx:191 +msgid "Attention!" +msgstr "Attentie!" + +#: src/dl_win.cxx:124 +msgid "Ok" +msgstr "OK" + +#: src/dl_win.cxx:157 src/dl_win.cxx:195 +msgid "Yes" +msgstr "Ja" + +#: src/dl_win.cxx:161 src/dl_win.cxx:199 +msgid "No" +msgstr "Nee" + +#: src/download_win.cpp:42 +msgid "Are you Sure You want to quit?" +msgstr "Weet U zeker dat U wil stoppen?" + +#: src/download_win.cpp:171 +msgid "I am unable to delete the target file!" +msgstr "Onmogelijk om de bestand te wissen!" + +#: src/download_win.cpp:204 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections" +msgstr "" + +#: src/download_win.cpp:213 +msgid "" +"The previous download used a different number of connections than the " +"default! so I will use the previous number of threads" +msgstr "" + +#: src/download_win.cpp:233 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections to delete" +msgstr "" + +#: src/download_win.cpp:256 +#, c-format +msgid "The target file %s exists, would you like to overwrite it?" +msgstr "De bestand %s bestaat al, wilt U het vervengen?" + +#: src/download_win.cpp:284 +#, c-format +msgid "" +"Previous download of %s exists, would you like to resume it or overwrite it?" +msgstr "" + +#: src/download_win.cpp:288 +msgid "Resume" +msgstr "" + +#: src/download_win.cpp:289 +msgid "Overwrite" +msgstr "Overschrijven" + +#: src/download_win.cpp:326 +msgid "RESUME supported" +msgstr "" + +#: src/download_win.cpp:334 +msgid "RESUME NOT supported" +msgstr "" + +#: src/download_win.cpp:378 +msgid "waiting for thread to end" +msgstr "" + +#: src/download_win.cpp:380 +msgid "Thread ended" +msgstr "" + +#: src/download_win.cpp:388 +msgid "Got info succesfully" +msgstr "" + +#: src/download_win.cpp:391 +#, c-format +msgid "File Size = %ld Kb" +msgstr "" + +#: src/download_win.cpp:395 +msgid "File Size is UNKOWN" +msgstr "" + +#: src/download_win.cpp:404 +#, c-format +msgid "The URL %s doesnt exist!" +msgstr "De URL %s bestaat niet!" + +#: src/download_win.cpp:451 +#, c-format +msgid "Total Bytes received %ld Kb" +msgstr "Totaal Bytes ontvangen %ld Kb" + +#: src/download_win.cpp:456 +#, c-format +msgid "Average Speed = %.3f Kb/sec" +msgstr "Gemiddelde Snelheid = %.3f Kb/sec" + +#: src/download_win.cpp:465 +#, c-format +msgid "%d Seconds" +msgstr "%d Seconden" + +#: src/download_win.cpp:467 +#, c-format +msgid "%d Minutes %d Seconds" +msgstr "%d Minuten %d Seconden" + +#: src/download_win.cpp:470 +#, c-format +msgid "%d Hours %d minutes" +msgstr "%d Uren %d Minuten" + +#. Wait till all are completed +#: src/download_win.cpp:492 +msgid "Waiting till all threads terminate" +msgstr "" + +#: src/download_win.cpp:497 +msgid "Got DL succesfully, now building file" +msgstr "" + +#: src/download_win.cpp:503 +#, c-format +msgid "Building file %s ....." +msgstr "" + +#: src/download_win.cpp:526 +msgid "" +"Error the server/proxy lied about resuming so I have to restart this from " +"the begiining!" +msgstr "" + +#: src/download_win.cpp:546 +#, c-format +msgid "" +"One connection of the download %s encountered a unrecoverable local error, " +"usually lack of free space, or a write to bad medium, or a problem with " +"permissions,so pelase fix this and retry" +msgstr "" + +#: src/download_win.cpp:593 src/download_win.cpp:619 +msgid "Close" +msgstr "Sluiten" + +#: src/download_win.cpp:685 +msgid "Creating the thread that gets info about file.." +msgstr "" + +#: src/main.cpp:145 +msgid "Enter URL (CTRL+V to paste from clipboard)" +msgstr "URL toevoegen (CTRL+V van de klapper te plakken)" + +#: src/main.cpp:158 src/main.cpp:306 +#, c-format +msgid "%s does not seem to be a valid URL" +msgstr "%s is geen URL" + +#: src/main.cpp:248 +msgid "Error: Invalid option\n" +msgstr "Fout: Ongeldige optie\n" + +#: src/main.cpp:253 +msgid "Prozilla - Download Accelerator" +msgstr "Prozilla - Download Accelerator" + +#: src/main.cpp:276 +msgid "&File" +msgstr "&Bestand" + +#: src/main.cpp:277 +msgid "&New URL" +msgstr "&Nieuwe URL" + +#: src/main.cpp:278 +msgid "&Preferences" +msgstr "&Instellingen" + +#: src/main.cpp:279 +msgid "&About" +msgstr "" + +#: src/main.cpp:280 +msgid "&Quit" +msgstr "" + +#: src/options.cpp:119 +#, c-format +msgid "%s does not seem to be a valid directory" +msgstr "" + +#: src/options.cpp:142 +#, c-format +msgid "%s does not seem to be a valid HTTP proxy value" +msgstr "" + +#: src/options.cpp:170 +#, c-format +msgid "%s does not seem to be a valid FTP proxy value" +msgstr "" diff --git a/po/prozgui.pot b/po/prozgui.pot new file mode 100644 index 0000000..9b4339b --- /dev/null +++ b/po/prozgui.pot @@ -0,0 +1,567 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2003-02-18 05:45+0600\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING\n" + +#: src/we.cxx:49 +msgid "USER@SITE" +msgstr "" + +#: src/we.cxx:50 +msgid "USER@ProxyUser@SITE" +msgstr "" + +#: src/we.cxx:51 +msgid "USER@SITE_PROXYUSER" +msgstr "" + +#: src/we.cxx:52 +msgid "ProxyUser@SITE" +msgstr "" + +#: src/we.cxx:53 +msgid "LOGIN_then_USER@SITE" +msgstr "" + +#: src/we.cxx:54 +msgid "OPENSITE" +msgstr "" + +#: src/we.cxx:55 +msgid "SITESITE" +msgstr "" + +#: src/we.cxx:56 +msgid "HTTP proxy" +msgstr "" + +#: src/we.cxx:81 +msgid "filesearching.com" +msgstr "" + +#: src/we.cxx:82 +msgid "ftpsearch.uniovie.es" +msgstr "" + +#: src/we.cxx:83 +msgid "ftpsearch.lycos.com" +msgstr "" + +#: src/we.cxx:93 +msgid "Prozilla Preferences Panel" +msgstr "" + +#: src/we.cxx:98 +msgid "General" +msgstr "" + +#: src/we.cxx:117 +msgid "Number of Threads:" +msgstr "" + +#: src/we.cxx:126 +msgid "Use PASV for FTP transfers (recommended)" +msgstr "" + +#: src/we.cxx:131 +msgid "" +"Ask the HTTP proxies not to cache requests between sessions (default is off)" +msgstr "" + +#: src/we.cxx:147 +msgid "Retry Delay (Sec):" +msgstr "" + +#: src/we.cxx:151 +msgid "Timeout Period (Sec):" +msgstr "" + +#: src/we.cxx:155 +msgid "Directory to download the files:" +msgstr "" + +#: src/we.cxx:159 +msgid "Limit bandwith usage PER download to (Kbps) (0 = unlimited):" +msgstr "" + +#: src/we.cxx:167 +msgid "Proxies" +msgstr "" + +#: src/we.cxx:175 src/we.cxx:202 +msgid "Hostname:" +msgstr "" + +#: src/we.cxx:180 src/we.cxx:207 +msgid "Port:" +msgstr "" + +#: src/we.cxx:186 +msgid "HTTP Proxy:" +msgstr "" + +#: src/we.cxx:191 src/we.cxx:213 +msgid "Username:" +msgstr "" + +#: src/we.cxx:196 src/we.cxx:218 +msgid "Password:" +msgstr "" + +#: src/we.cxx:224 +msgid "FTP Proxy:" +msgstr "" + +#: src/we.cxx:229 +msgid "FTP Proxy Type:" +msgstr "" + +#: src/we.cxx:236 +msgid "Use HTTP Proxy" +msgstr "" + +#: src/we.cxx:241 +msgid "Use FTP Proxy" +msgstr "" + +#: src/we.cxx:249 +msgid "Direct Connection to the Internet" +msgstr "" + +#: src/we.cxx:256 +msgid "Use proxies" +msgstr "" + +#: src/we.cxx:269 +msgid "FTP Search" +msgstr "" + +#: src/we.cxx:275 +msgid "Number of mirrors to request:" +msgstr "" + +#: src/we.cxx:288 +msgid "Ping Timeout (Sec):" +msgstr "" + +#: src/we.cxx:297 +msgid "Number of mirrors to ping at once:" +msgstr "" + +#: src/we.cxx:310 +msgid "Do FTPSearch automatically" +msgstr "" + +#: src/we.cxx:315 +msgid "FTPSearch Server to use:" +msgstr "" + +#: src/we.cxx:332 src/we.cxx:4253 src/we.cxx:4654 +msgid "OK" +msgstr "" + +#: src/dl_win.cxx:119 src/we.cxx:336 src/we.cxx:4670 +msgid "Cancel" +msgstr "" + +#: src/we.cxx:4241 +msgid "Prozilla Download Accelerator 2.0.5beta" +msgstr "" + +#: src/we.cxx:4247 +msgid "GUI Version 2.0.5beta" +msgstr "" + +#: src/we.cxx:4250 +msgid "libprozilla version 1.2.0" +msgstr "" + +#: src/we.cxx:4265 +msgid "Credits" +msgstr "" + +#: src/we.cxx:4274 +msgid "Kalum Somaratna - Main Programming" +msgstr "" + +#: src/we.cxx:4278 +msgid "Uwe Hermann - Additional Programming" +msgstr "" + +#: src/we.cxx:4281 +msgid "" +"Gustavo Noronha Silva (KoV) - libprozilla GNU gettext support, deb package " +"maintainer" +msgstr "" + +#: src/we.cxx:4286 +msgid "Ralph Slooten - Web Page Maintainer, RPM packager, testing" +msgstr "" + +#: src/we.cxx:4290 +msgid "" +"If you have contributed and arent listed, I apologise and please mail me " +" and I will correct it" +msgstr "" + +#: src/we.cxx:4295 +msgid "" +"Silviu Marin-Caea - (Our sysadmin) Donation of valuable bandwith and system " +"resources at genesys.ro, testing" +msgstr "" + +#: src/we.cxx:4300 +msgid "Pablo Iranzo Gómez - testing" +msgstr "" + +#: src/we.cxx:4304 +msgid "Krogg - The cool Prozilla logo" +msgstr "" + +#: src/we.cxx:4308 +msgid "David L. Matthews - testing" +msgstr "" + +#: src/we.cxx:4316 +msgid "Translations" +msgstr "" + +#: src/we.cxx:4324 +msgid "Ruben Boer - Dutch Translation" +msgstr "" + +#: src/we.cxx:4328 +msgid "Ralph Slooten- Dutch Translation" +msgstr "" + +#: src/we.cxx:4332 +msgid "Flower - Romanian Translation" +msgstr "" + +#: src/we.cxx:4336 +msgid "Gustavo Noronha Silva (KoV) - Portugese Translation" +msgstr "" + +#: src/we.cxx:4340 +msgid "Emanuele Tatti (Kreazy) - Itallian Translation" +msgstr "" + +#: src/we.cxx:4344 +msgid "Alberto Zanoni - Itallian Translation" +msgstr "" + +#: src/we.cxx:4348 +msgid "Eric Lassauge - French Translation" +msgstr "" + +#: src/we.cxx:4358 +msgid "Webpage - http://prozilla.genesys.ro/" +msgstr "" + +#: src/we.cxx:4652 +msgid "Please enter the URL" +msgstr "" + +#: src/we.cxx:4663 +msgid "Enter URL (CTRL+V to paste from clipboard)" +msgstr "" + +#: src/we.cxx:4674 +msgid "FTPSearch for mirrors (Experimental)" +msgstr "" + +#: src/dl_win.cxx:31 +msgid "Abort, Resume Later" +msgstr "" + +#: src/dl_win.cxx:36 src/download_win.cpp:403 +msgid "Pause" +msgstr "" + +#: src/dl_win.cxx:42 +msgid "Abort, No Resume Later" +msgstr "" + +#: src/dl_win.cxx:48 +msgid "URL:" +msgstr "" + +#: src/dl_win.cxx:87 +msgid "Estimated Time Left" +msgstr "" + +#: src/dl_win.cxx:115 +msgid "Creating file.............." +msgstr "" + +#: src/dl_win.cxx:154 src/dl_win.cxx:187 src/dl_win.cxx:225 +msgid "Attention!" +msgstr "" + +#: src/dl_win.cxx:158 +msgid "Ok" +msgstr "" + +#: src/dl_win.cxx:191 src/dl_win.cxx:229 +msgid "Yes" +msgstr "" + +#: src/dl_win.cxx:195 src/dl_win.cxx:233 +msgid "No" +msgstr "" + +#: src/download_win.cpp:44 +msgid "Are you Sure You want to quit?" +msgstr "" + +#: src/download_win.cpp:188 +msgid "Creating the thread that gets info about file.." +msgstr "" + +#: src/download_win.cpp:212 +msgid "I am unable to delete the target file!" +msgstr "" + +#: src/download_win.cpp:245 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections" +msgstr "" + +#: src/download_win.cpp:254 +msgid "" +"The previous download used a different number of connections than the " +"default! so I will use the previous number of threads" +msgstr "" + +#: src/download_win.cpp:274 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections to delete" +msgstr "" + +#: src/download_win.cpp:298 +#, c-format +msgid "The target file %s exists, would you like to overwrite it?" +msgstr "" + +#: src/download_win.cpp:326 +#, c-format +msgid "" +"Previous download of %s exists, would you like to resume it or overwrite it?" +msgstr "" + +#: src/download_win.cpp:330 +msgid "Resume" +msgstr "" + +#: src/download_win.cpp:331 +msgid "Overwrite" +msgstr "" + +#: src/download_win.cpp:361 +msgid "" +"There doesnt seem to be enough free space or a disk write failed when " +"attempting to create output file" +msgstr "" + +#: src/download_win.cpp:383 +msgid "RESUME supported" +msgstr "" + +#: src/download_win.cpp:391 +msgid "RESUME NOT supported" +msgstr "" + +#: src/download_win.cpp:457 +msgid "UnPause" +msgstr "" + +#: src/download_win.cpp:488 +msgid "waiting for thread to end" +msgstr "" + +#: src/download_win.cpp:490 +msgid "Thread ended" +msgstr "" + +#: src/download_win.cpp:498 +msgid "Got info succesfully" +msgstr "" + +#: src/download_win.cpp:501 +#, c-format +msgid "File Size = %ld Kb" +msgstr "" + +#: src/download_win.cpp:505 +msgid "File Size is UNKOWN" +msgstr "" + +#: src/download_win.cpp:546 +#, c-format +msgid "The URL %s doesnt exist!" +msgstr "" + +#: src/download_win.cpp:577 +msgid "No suitable mirrors were found, downloading from original server" +msgstr "" + +#: src/download_win.cpp:642 +#, c-format +msgid "Total Bytes received %ld Kb" +msgstr "" + +#: src/download_win.cpp:647 +#, c-format +msgid "Average Speed = %.3f Kb/sec" +msgstr "" + +#: src/download_win.cpp:656 +#, c-format +msgid "%d Seconds" +msgstr "" + +#: src/download_win.cpp:658 +#, c-format +msgid "%d Minutes %d Seconds" +msgstr "" + +#: src/download_win.cpp:661 +#, c-format +msgid "%d Hours %d minutes" +msgstr "" + +#. Wait till all are completed +#: src/download_win.cpp:683 +msgid "Waiting till all threads terminate" +msgstr "" + +#: src/download_win.cpp:688 +msgid "Got DL succesfully, now building file" +msgstr "" + +#: src/download_win.cpp:695 +#, c-format +msgid "Building file %s ....." +msgstr "" + +#: src/download_win.cpp:717 +msgid "" +"Error the server/proxy lied about resuming so I have to restart this from " +"the beginning!" +msgstr "" + +#: src/download_win.cpp:737 +#, c-format +msgid "" +"One connection of the download %s encountered a unrecoverable local error, " +"usually lack of free space, or a write to bad medium, or a problem with " +"permissions,so please fix this and retry" +msgstr "" + +#: src/download_win.cpp:754 +#, c-format +msgid "" +"A connection(s) of the download %s encountered a unrecoverable remote error, " +"usually the file not being present in the remote server, therefore the " +"download had to be aborted!" +msgstr "" + +#: src/download_win.cpp:801 src/download_win.cpp:828 +msgid "Close" +msgstr "" + +#: src/main.cpp:245 src/main.cpp:361 src/main.cpp:498 +#, c-format +msgid "%s does not seem to be a valid URL" +msgstr "" + +#: src/main.cpp:255 +#, c-format +msgid "%s is already in the list of downloads" +msgstr "" + +#: src/main.cpp:269 +#, c-format +msgid "%s is already running!" +msgstr "" + +#: src/main.cpp:278 src/main.cpp:368 +#, c-format +msgid "%s contains just a hostname, it does not contain a file to download!" +msgstr "" + +#: src/main.cpp:307 +msgid "&File" +msgstr "" + +#: src/main.cpp:308 +msgid "&New URL" +msgstr "" + +#: src/main.cpp:310 +msgid "&Preferences" +msgstr "" + +#: src/main.cpp:312 +msgid "&Quit" +msgstr "" + +#: src/main.cpp:314 +msgid "&Download" +msgstr "" + +#: src/main.cpp:315 +msgid "&Start" +msgstr "" + +#: src/main.cpp:316 +msgid "&Stop" +msgstr "" + +#: src/main.cpp:317 +msgid "&Remove from list" +msgstr "" + +#: src/main.cpp:319 +msgid "&Help" +msgstr "" + +#: src/main.cpp:320 +msgid "&About" +msgstr "" + +#: src/main.cpp:447 +msgid "Error: Invalid option\n" +msgstr "" + +#: src/main.cpp:452 +msgid "Prozilla - Download Accelerator" +msgstr "" + +#: src/options.cpp:130 +#, c-format +msgid "%s does not seem to be a valid directory" +msgstr "" + +#: src/options.cpp:153 +#, c-format +msgid "%s does not seem to be a valid HTTP proxy value" +msgstr "" + +#: src/options.cpp:181 +#, c-format +msgid "%s does not seem to be a valid FTP proxy value" +msgstr "" diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo new file mode 100644 index 0000000000000000000000000000000000000000..8f1cde2e5a06744908c98eef6d3c84a550226f94 GIT binary patch literal 9320 zcmcJUdyE~|UB^!nx1|m=O=(JK3Y-P(?k0QJyUx>VC-HiBZ7=J6WFO9hkaX^yvv((+ zJ99ISU9VAT5K&Q4#XoJO{sH0-M1|Cbsd0rmGiT16$M5(3y{^ChjsqVvTp{f}v=cWO^C9rbH}i+W-0!QTh(1YZIl1OE%uK9+v0+J^&g;du|#`X8$Cqu@Ju{vA+q z`$O=jz`p<`zi)tA_dDPr@W!_p^Grx z`lrBi;QgS^@jUo5;D^EYf}aB44ZaNOT;Bwl(i~tj$HCh`3qAr$KN-kBv&SEuz{$r&p(5hgt?i;eiFQ;#xd~Z4aUrZY{5Ja>BPH_^GEZ38axBO z2u^@EL7pSvQBd-3f|~yWpycp-pzPvPp!V}ep!WSmP;&n(@K3mZGf$BdGYW=4{eZK`B1D~(o|0$^PUjmuRd;=T< zzXxjED8k2yaHpsE#wDtN~G8JERP0`q{k1OI#@6tJRiBG*tvIy%3olBQ^rL*-e$!GZb1s>*U(tqzd z%gto{@B}DM=n~g;i3`%7WPFOI>kw_x-x<>Y#m^a<^dg&Dpgl&DU%8w1I8E0b75Km6 zjQFbSeYDfGhiFG>57MOb5!&!I&BI-^HQFdmd=qycrHM4IY3 z*NA^N(jK5aO_SY01J5_v%rDVS(!_glbD3rih4yS(X1V326D4Kga`i1$x9VMYtuzUJ zZ~r#8^c6vrHv9m?WtKB3{gK)$g$_L|e z=Q?`ZbPU}I;wZGIH&$&oOE2!}xpdbXes<#r8^5`B?s`*(QRZ4jn(djxGtIOt%;D1< z!W>?9yH=kcUd`N=%UsezW``dsqr%MS#0g(TX)>CR*>uYm+pd3T%b6LTmPx^PA!jWU z)<}0;7BrDh<~nKNtjn@A8@FX%264RSXYk^aM4K*3+6czwE-7r3__y_UxyzVoTwUxe z%@FwT;@d&klW{Z63WpA6sw&8%c-?%jtx0`Es(@U2_}X2qdg%+IRe-kGc!ej zN_dA@rO>vs>s^OXAGC)i?%uMC%_F&MnNwvHhZ3S!DTJ8NWo83t6r0&N&7GOeTu}7J z`1k!kgLhI*vCT-dx*Zg@?bv3NY^633TmAf+7`;YCZsvj=tm@o^T?z_5-OX*oV(ePR z%z38U**zH5w#8bAv#7rZRRynW?@HXH`dPGbzTFzK@Od_vb1Ac zanx<5K^BggdC}W{TM_n1W#(}ti||{A-4)UD)GpZVV8^=-dW#@KecOoKPpU08T|0^r zPBBtVJk6#n4`S1<)N#v$i1w3_p-6qb<>0A>UP})S!>&zmN~3P zmzK*4R%sYAxo3(fQ`mG zfwiNH>G?4>vx=RRZ5+kbyLsb};;4x_E=6%1*fYzUVpZWT7VNLv^>!D!CVFjM5WhP_ z07U_;&zq1J=(IUo$AW3IV1o`m&O0~w5PA#tsz;Md?MXUf7Ph>VdPOU+WKokq1RD|> z4z{py1e3yX*bsD698$!o^wxG`7jVx`VvBB1Tp(CL54{*L7JZsvO@q zHraKtguWGBtc+2b$Xr3BT*34CIn63c$9l1YOQ}8ct&Y2dD0>cPHOTYbGz+I0R^sqh zZqv@=*`jGdAO4BqeecF3~(^9>>P^R>j`|VY_i;`)O)h;|4`l~D%nF8C5_p@$!11Z%FJSDL5RhS zA-2T3JZVE&o45PEg@`4LEg%)HoTL+nXMN!68SCH}vN;74bgE<$58zchV)TOS=Nj$9 zA!SoxwB-}B*U3y^5w2NOs$=(v^#R8F2Bz?@`jZcmn<~oYe(fQ@^~Qv|nq!rTll+C~ zw@366d`lc z?AFWZB-IM?T5Mlt`3z3Iu@E-uC_AkT_ENiy4z8|jG^%7OO&W9TW!fH{oSbS*9%~%E z-%cH!zW2VnChwb^WME?rQfa~AaZ{6x$)g9)k;XK7DoC?wyMN$4aUtC~Nq8jwPo!D< zA-+r6B?oV8xS%tQvFTOg)S5j}jcUYGlSxBiwQQ4Rx|51>`NZ%POAAZ$gJU6zgCuFn zGaEi_LC6=2Bi$IkaNM@GgDiK&gA3~`jRzjM_gG_UFu2xxW1i|m+2^#KU!Gl=TUb7G zuqpwwz?Xnas{7JG37Gocb=NMFu<9P%S4H4!9YV58_&gWH(-(LT6dn3ngc48;-?>a#m>N97b%%Qs*mr!{ z3A|tNFN6IjQ{7j53)Ac^d3Zf-W)yxi)%K|XQ}V2#67WjWiUMlD^&ra3CQA^$-9-+C zEcy|OjjQ$}yCE!bL{)jzR*Ke<(vp%Od)dXx{xG>1(r|IOPIqx z&`(tq;utg)2kUKuS;&X_)gf<^?{pkzW?tYi@M?4ngi8C9-rS5^ApK^Ny8+=#*eDK5Ph zM!_{@aIdsS6gS(+CiKQplaIYDJ-gnn4cCbDVj&$bfP z%6NMfrvIpw#sSt5*vo_+ajqBRyir!w<}};xnMGY~dh?2i|2kBU2MFHs^Gm7N<)Vtf z9rr5p7bW83A2HLtigr}PGHX{~L`mgM4vIS6)RJMz-kh!KPJGrzL^oR_R8`JQ8EpSn z&aJLDHv)p~_EqN9FFf~oH#fgNyRv+Ces*DQWl)3?slrklqZ-9A!=x%`QkaVS2-+#$TIs^~G0rRu@k8&46Hr!xp<}OHgc{eYQTu!Kx>Ryc zD7=zi?=x~`hKdivHL9N@AmtyFu&NAEMdIWTs{mY!UNK_0R6SirXtEV_gG*9X?L!89 zC%4%_@$1g+q^&ESGAdKai1E7Ojr_0zIGo4l!V;#*TV>3TAPix@xQ8A7x@0GEJ^u&~Q?_~@Vlfd*Wf}C(d@$IjaD__B#saB)mE^n?bx~`tdR>us_Kaej&$_D06;fk3 zZT!2At0X<}o9u@OFU{flHS*=FycG2-&V0G==Bwu9BjAL7(1>3*1a1W}UW7e6 z3R$G=qiJ9}|0XAiN9?A9H>#8hQ%Q2PV_LxGRBE9}Foi4wQ161Pu^aLB)@yI_vKVT!?| zBR(I($NNf%0^SFvp6jBhEh}$U?{nX}cBZOkWefuYwQg+xTKAR<;|Hd{rQTwjLKMpFu3Z?pm*(>a(8K9vEt^r$4&G;?eGB2`RGHe0 z>R@~T9=HYg--qw6b^(4H~h|`Cun*DFoL5n=Iysk-9RWPd#3gIT%EM-Xb^J}FK z4pf!Fb8-S~o(dL+1_i75I{YX{Uq7o9_HGRY`8v2}uOe_&5K~a1Iu*pd>G-LxDr)%e zn9EqT&hgq#C{>J6;dej+; a, 2001. +# +msgid "" +msgstr "" +"Project-Id-Version: prozgui\n" +"POT-Creation-Date: 2001-09-27 12:56+0600\n" +"PO-Revision-Date: 2001-10-02\n" +"Last-Translator: Gustavo Noronha Silva \n" +"Language-Team: Debian-BR \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: ENCODING\n" + +#: src/we.cxx:84 +msgid "Prozilla Preferences Panel" +msgstr "Painel de Preferęncias do Prozilla" + +#: src/we.cxx:89 +msgid "General" +msgstr "Geral" + +#: src/we.cxx:108 +msgid "Number of Threads:" +msgstr "Número de Threads:" + +#: src/we.cxx:117 +msgid "Use PASV for FTP transfers (recommended)" +msgstr "Usar PASV para transferęncias FTP (recomendado)" + +#: src/we.cxx:122 +msgid "" +"Ask the HTTP proxies not to cache requests between sessions (default is off)" +msgstr "Pedir aos proxies HTTP para năo fazerem cache das requisiçőes entre sessőes (o padrăo é desligado)" + +#: src/we.cxx:138 +msgid "Retry Delay (Sec):" +msgstr "Intervalo de Tentativas (Seg):" + +#: src/we.cxx:142 +msgid "Timeout Period (Sec):" +msgstr "Tempo Limite de Operaçăo (Seg):" + +#: src/we.cxx:146 +msgid "Directory to download the files:" +msgstr "Diretório para onde os arquivos devem ir:" + +#: src/we.cxx:150 +msgid "Limit bandwith usage PER download to (Kbps) (0 = unlimited):" +msgstr "Limitar largura de banda por download para (Kbps) (0 = ilimitado):" + +#: src/we.cxx:158 +msgid "Proxies" +msgstr "Proxies" + +#: src/we.cxx:166 src/we.cxx:193 +msgid "Hostname:" +msgstr "Hostname:" + +#: src/we.cxx:171 src/we.cxx:198 +msgid "Port:" +msgstr "Porta:" + +#: src/we.cxx:177 +msgid "HTTP Proxy:" +msgstr "Proxy HTTP:" + +#: src/we.cxx:182 src/we.cxx:204 +msgid "Username:" +msgstr "Nome do usuário:" + +#: src/we.cxx:187 src/we.cxx:209 +msgid "Password:" +msgstr "Senha:" + +#: src/we.cxx:215 +msgid "FTP Proxy:" +msgstr "Proxy FTP:" + +#: src/we.cxx:220 +msgid "FTP Proxy Type:" +msgstr "Tipo de Proxy FTP:" + +#: src/we.cxx:227 +msgid "Use HTTP Proxy" +msgstr "Usar Proxy HTTP" + +#: src/we.cxx:232 +msgid "Use FTP Proxy" +msgstr "Usar Proxy FTP" + +#: src/we.cxx:240 +msgid "Direct Connection to the Internet" +msgstr "Conexăo Direta ŕ Internet" + +#: src/we.cxx:247 +msgid "Use proxies" +msgstr "Usar Proxy" + +#: src/we.cxx:260 +msgid "FTP Search" +msgstr "FTP Search" + +#: src/we.cxx:266 +msgid "Number of mirrors to request:" +msgstr "" + +#: src/we.cxx:279 +msgid "Ping Timeout (Sec):" +msgstr "Tempo Limite de Operaçăo (Seg):" + +#: src/we.cxx:288 +msgid "Number of mirrors to ping at once:" +msgstr "" + +#: src/we.cxx:301 +msgid "Do FTPSearch automatically" +msgstr "" + +#: src/we.cxx:312 src/we.cxx:4233 src/we.cxx:4626 +msgid "OK" +msgstr "OK" + +#: src/dl_win.cxx:102 src/we.cxx:316 src/we.cxx:4642 +msgid "Cancel" +msgstr "Cancelar" + +#: src/we.cxx:4221 +msgid "Prozilla Download Accelerator 2.0.4beta" +msgstr "Acelerador de Downloads Prozilla 2.0.4beta" + +#: src/we.cxx:4227 +msgid "GUI Version 2.0.4beta" +msgstr "Versăo da GUI: 2.0.4beta" + +#: src/we.cxx:4230 +msgid "libprozilla version 1.0.0" +msgstr "Versăo da libprozilla: 1.0.1" + +#: src/we.cxx:4245 +msgid "Credits" +msgstr "Créditos" + +#: src/we.cxx:4254 +msgid "Kalum Somaratna - Main Programming" +msgstr "Kalum Somaratna - Programaçăo Principal" + +#: src/we.cxx:4258 +msgid "Uwe Hermann - Additional Programming" +msgstr "Uwe Hermann - Programaçăo Adicional" + +#: src/we.cxx:4261 +msgid "" +"Gustavo Noronha Silva (KoV) - libprozilla GNU gettext support, deb package " +"maintainer" +msgstr "" +"Gustavo Noronha Silva (KoV) - suporte a GNU gettext para a libprozilla e " +"mantenedor Debian" + +#: src/we.cxx:4266 +msgid "Ralph Slooten - Web Page Maintainer, RPM packager, testing" +msgstr "Ralph Slooten - Mantenedor da página Web, empacotador RPM, testador" + +#: src/we.cxx:4270 +msgid "" +"If you have contributed and arent listed, I apologise and please mail me " +" and I will correct it" +msgstr "Se vocę contribuiu e năo está listado, peço desculpas e por favor envie um email para e eu irei corrigir isso" + +#: src/we.cxx:4275 +msgid "" +"Silviu Marin-Caea - (Our sysadmin) Donation of valuable bandwith and system " +"resources at genesys.ro, testing" +msgstr "Silviu Marin-Caea - (Nosso Administrador de Sistema) Doaçăo de sistema e banda valorosos em genesys.ro e testador" + +#: src/we.cxx:4280 +msgid "Pablo Iranzo Gómez - testing" +msgstr "Pablo Iranzo Gómez - testador" + +#: src/we.cxx:4284 +msgid "Krogg - The cool Prozilla logo" +msgstr "Krogg - O logo do Prozilla" + +#: src/we.cxx:4288 +msgid "David L. Matthews - testing" +msgstr "David L. Matthews - testador" + +#: src/we.cxx:4296 +msgid "Translations" +msgstr "Traduçőes" + +#: src/we.cxx:4304 +msgid "Ruben Boer - Dutch Translation" +msgstr "Ruben Boer - Traduçăo Holandesa" + +#: src/we.cxx:4308 +msgid "Ralph Slooten- Dutch Translation" +msgstr "Ralph Slooten - Traduçăo Holandesa" + +#: src/we.cxx:4312 +msgid "Flower - Romanian Translation" +msgstr "Flower - Traduçăo Romena" + +#: src/we.cxx:4316 +msgid "Gustavo Noronha Silva (KoV) - Portugese Translation" +msgstr "Gustavo Noronha Silva (KoV) - Traduçăo para Portuguęs" + +#: src/we.cxx:4320 +msgid "Emanuele Tatti (Kreazy) - Itallian Translation" +msgstr "" + +#: src/we.cxx:4330 +msgid "Webpage - http://prozilla.genesys.ro/" +msgstr "Página - http://prozilla.genesys.ro/" + +#: src/we.cxx:4624 +msgid "Please enter the URL" +msgstr "Por favor digite a URL" + +#: src/we.cxx:4635 +msgid "Enter URL (CTRL+V to paste from clipboard)" +msgstr "Digite a URL (CTRL+V para colar da área de transferęncia)" + +#: src/we.cxx:4646 +msgid "FTPSearch for mirrors (Experimental)" +msgstr "" + +#: src/dl_win.cxx:14 +msgid "Abort, Resume Later" +msgstr "Abortar, continuar mais tarde" + +#: src/dl_win.cxx:19 src/download_win.cpp:391 +msgid "Pause" +msgstr "Pausa" + +#: src/dl_win.cxx:25 +msgid "Abort, No Resume Later" +msgstr "Abortar, năo continuar" + +#: src/dl_win.cxx:31 +msgid "URL:" +msgstr "URL:" + +#: src/dl_win.cxx:70 +msgid "Estimated Time Left" +msgstr "Tempo Restante Estimado" + +#: src/dl_win.cxx:98 +msgid "Creating file.............." +msgstr "Criando arquivo.............." + +#: src/dl_win.cxx:137 src/dl_win.cxx:170 src/dl_win.cxx:208 +msgid "Attention!" +msgstr "Atençăo!" + +#: src/dl_win.cxx:141 +msgid "Ok" +msgstr "Ok" + +#: src/dl_win.cxx:174 src/dl_win.cxx:212 +msgid "Yes" +msgstr "Sim" + +#: src/dl_win.cxx:178 src/dl_win.cxx:216 +msgid "No" +msgstr "Năo" + +#: src/download_win.cpp:43 +msgid "Are you Sure You want to quit?" +msgstr "Tem certeza que quer sair?" + +#: src/download_win.cpp:183 +msgid "Creating the thread that gets info about file.." +msgstr "Criando a thread que obtém informaçőes sobre o arquivo..." + +#: src/download_win.cpp:208 +msgid "I am unable to delete the target file!" +msgstr "Fui incapaz de remover o arquivo alvo!" + +#: src/download_win.cpp:241 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections" +msgstr "Um erro aconteceu durante o processamento do arquivo de log! Assumindo número de conexőes padrăo" + +#: src/download_win.cpp:250 +msgid "" +"The previous download used a different number of connections than the " +"default! so I will use the previous number of threads" +msgstr "O download anterior usou um número de conexőes diferente do padrăo! Entăo eu usarei o número anterior de threads." + +#: src/download_win.cpp:270 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections to delete" +msgstr "Um erro aconteceu durante o processamento do arquivo de log! Assumindo número de conexőes padrăo para remover." + +#: src/download_win.cpp:293 +#, c-format +msgid "The target file %s exists, would you like to overwrite it?" +msgstr "O arquivo alvo %s existe, gostaria de sobrescrevę-lo?" + +#: src/download_win.cpp:321 +#, c-format +msgid "" +"Previous download of %s exists, would you like to resume it or overwrite it?" +msgstr "Download anterior de %s existe, quer continuar ou sobrescrever?" + +#: src/download_win.cpp:325 +msgid "Resume" +msgstr "Continuar" + +#: src/download_win.cpp:326 +msgid "Overwrite" +msgstr "Sobrescrever" + +#: src/download_win.cpp:371 +msgid "RESUME supported" +msgstr "CONTINUAÇĂO suportada" + +#: src/download_win.cpp:379 +msgid "RESUME NOT supported" +msgstr "CONTINUAÇĂO năo suportada" + +#: src/download_win.cpp:444 +msgid "UnPause" +msgstr "Despausa" + +#: src/download_win.cpp:477 +msgid "waiting for thread to end" +msgstr "esperando que a thread acabe" + +#: src/download_win.cpp:479 +msgid "Thread ended" +msgstr "Thread acabou" + +#: src/download_win.cpp:487 +msgid "Got info succesfully" +msgstr "Informaçőes conseguidas com ęxito" + +#: src/download_win.cpp:490 +#, c-format +msgid "File Size = %ld Kb" +msgstr "Tamanho do arquivo = %ld Kb" + +#: src/download_win.cpp:494 +msgid "File Size is UNKOWN" +msgstr "Tamanho do arquivo DESCONHECIDO" + +#: src/download_win.cpp:515 +#, c-format +msgid "The URL %s doesnt exist!" +msgstr "A URL %s năo existe!" + +#: src/download_win.cpp:546 +msgid "No suitable mirrors were found, downloading from original server" +msgstr "" + +#: src/download_win.cpp:596 +#, c-format +msgid "Total Bytes received %ld Kb" +msgstr "Total de Bytes recebidos %ld Kb" + +#: src/download_win.cpp:601 +#, c-format +msgid "Average Speed = %.3f Kb/sec" +msgstr "Velocidade Média = %.3f Kb/sec" + +#: src/download_win.cpp:610 +#, c-format +msgid "%d Seconds" +msgstr "%d Segundos" + +#: src/download_win.cpp:612 +#, c-format +msgid "%d Minutes %d Seconds" +msgstr "%d Minutos %d Segundos" + +#: src/download_win.cpp:615 +#, c-format +msgid "%d Hours %d minutes" +msgstr "%d Horas %d Minutos" + +#. Wait till all are completed +#: src/download_win.cpp:637 +msgid "Waiting till all threads terminate" +msgstr "Esperando até que todas as threads completem" + +#: src/download_win.cpp:642 +msgid "Got DL succesfully, now building file" +msgstr "Download terminado com sucesso, agora reconstruindo arquivo" + +#: src/download_win.cpp:649 +#, c-format +msgid "Building file %s ....." +msgstr "Construindo arquivo %s ....." + +#: src/download_win.cpp:673 +msgid "" +"Error the server/proxy lied about resuming so I have to restart this from " +"the begiining!" +msgstr "Erro: o servidor/proxy mentei sobre continuaçăo e eu terei de começar tudo do começo!" + +#: src/download_win.cpp:693 +#, c-format +msgid "" +"One connection of the download %s encountered a unrecoverable local error, " +"usually lack of free space, or a write to bad medium, or a problem with " +"permissions,so pelase fix this and retry" +msgstr "Uma conexăo do download %s encontrou um erro local irrecuperáel. Norlmalmente isso quer dizer falta de espaço ou uma mídia ruim ou um problema de permissőes, entăo por favor conserte o erro e tente novamente." + +#: src/download_win.cpp:710 +#, c-format +msgid "" +"A connection(s) of the download %s encountered a unrecoverable remote error, " +"usually the file not being present in the remote server, therefore the " +"download had to be aborted!" +msgstr "Uma conexăo do download %s encontrou um erro local irrecuperáel, normalmente isso quer dizer que o arquivo năo está presente no servidor remoto, portanto o download teve de ser abortado!" + +#: src/download_win.cpp:761 src/download_win.cpp:788 +msgid "Close" +msgstr "Fechar" + +#: src/main.cpp:225 src/main.cpp:351 +#, c-format +msgid "%s does not seem to be a valid URL" +msgstr "%s năo parece uma URL válida" + +#: src/main.cpp:232 +#, c-format +msgid "%s contains just a hostname, it does not contain a file to download!" +msgstr "%s contém apenas o nome do host mas năo um nome de arquivo para baixar!" + +#: src/main.cpp:286 +msgid "Error: Invalid option\n" +msgstr "Erro: opçăo inválida\n" + +#: src/main.cpp:291 +msgid "Prozilla - Download Accelerator" +msgstr "Prozilla - Acelerador de Download" + +#: src/main.cpp:314 +msgid "&File" +msgstr "&Arquivo" + +#: src/main.cpp:315 +msgid "&New URL" +msgstr "&Nova URL" + +#: src/main.cpp:317 +msgid "&Preferences" +msgstr "&Preferęncias" + +#: src/main.cpp:319 +msgid "&Quit" +msgstr "&Sair" + +#: src/main.cpp:321 +msgid "&Help" +msgstr "" + +#: src/main.cpp:322 +msgid "&About" +msgstr "&Sobre" + +#: src/options.cpp:130 +#, c-format +msgid "%s does not seem to be a valid directory" +msgstr "%s năo parece ser um diretório válido" + +#: src/options.cpp:153 +#, c-format +msgid "%s does not seem to be a valid HTTP proxy value" +msgstr "%s năo parece ser um valor de proxy HTTP válido" + +#: src/options.cpp:181 +#, c-format +msgid "%s does not seem to be a valid FTP proxy value" +msgstr "%s năo parece ser um valor de proxy FTP válido" + +#~ msgid "USER@SITE" +#~ msgstr "USUÁRIO@SERVIDOR" + +#~ msgid "USER@ProxyUser@SITE" +#~ msgstr "USUÁRIO@USUÁRIONOPROXY@SERVIDOR" + +#~ msgid "USER@SITE_PROXYUSER" +#~ msgstr "USUÁRIO@SERVIDOR_USUÁRIONOPROXY" + +#~ msgid "ProxyUser@SITE" +#~ msgstr "USUÁRIONOPROXY@SERVIDOR" + +#~ msgid "LOGIN_then_USER@SITE" +#~ msgstr "LOGIN_entăo_USUÁRIO@SERVIDOR" + +#~ msgid "OPENSITE" +#~ msgstr "SITEABERTO" + +#~ msgid "SITESITE" +#~ msgstr "SERVIDORSERVIDOR" + +#~ msgid "HTTP" +#~ msgstr "HTTP" diff --git a/po/pt_BR.po~ b/po/pt_BR.po~ new file mode 100644 index 0000000..d327784 --- /dev/null +++ b/po/pt_BR.po~ @@ -0,0 +1,504 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# Gustavo Noronha Silva , 2001. +# +msgid "" +msgstr "" +"Project-Id-Version: prozgui\n" +"POT-Creation-Date: 2001-09-27 12:56+0600\n" +"PO-Revision-Date: 2001-10-02\n" +"Last-Translator: Gustavo Noronha Silva \n" +"Language-Team: Debian-BR \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: ENCODING\n" + +#: src/we.cxx:84 +msgid "Prozilla Preferences Panel" +msgstr "Painel de Preferęncias do Prozilla" + +#: src/we.cxx:89 +msgid "General" +msgstr "Geral" + +#: src/we.cxx:108 +msgid "Number of Threads:" +msgstr "Número de Threads:" + +#: src/we.cxx:117 +msgid "Use PASV for FTP transfers (recommended)" +msgstr "Usar PASV para transferęncias FTP (recomendado)" + +#: src/we.cxx:122 +msgid "" +"Ask the HTTP proxies not to cache requests between sessions (default is off)" +msgstr "Pedir aos proxies HTTP para năo fazerem cache das requisiçőes entre sessőes (o padrăo é desligado)" + +#: src/we.cxx:138 +msgid "Retry Delay (Sec):" +msgstr "Intervalo de Tentativas (Seg):" + +#: src/we.cxx:142 +msgid "Timeout Period (Sec):" +msgstr "Tempo Limite de Operaçăo (Seg):" + +#: src/we.cxx:146 +msgid "Directory to download the files:" +msgstr "Diretório para onde os arquivos devem ir:" + +#: src/we.cxx:150 +msgid "Limit bandwith usage PER download to (Kbps) (0 = unlimited):" +msgstr "Limitar largura de banda por download para (Kbps) (0 = ilimitado):" + +#: src/we.cxx:158 +msgid "Proxies" +msgstr "Proxies" + +#: src/we.cxx:166 src/we.cxx:193 +msgid "Hostname:" +msgstr "Hostname:" + +#: src/we.cxx:171 src/we.cxx:198 +msgid "Port:" +msgstr "Porta:" + +#: src/we.cxx:177 +msgid "HTTP Proxy:" +msgstr "Proxy HTTP:" + +#: src/we.cxx:182 src/we.cxx:204 +msgid "Username:" +msgstr "Nome do usuário:" + +#: src/we.cxx:187 src/we.cxx:209 +msgid "Password:" +msgstr "Senha:" + +#: src/we.cxx:215 +msgid "FTP Proxy:" +msgstr "Proxy FTP:" + +#: src/we.cxx:220 +msgid "FTP Proxy Type:" +msgstr "Tipo de Proxy FTP:" + +#: src/we.cxx:227 +msgid "Use HTTP Proxy" +msgstr "Usar Proxy HTTP" + +#: src/we.cxx:232 +msgid "Use FTP Proxy" +msgstr "Usar Proxy FTP" + +#: src/we.cxx:240 +msgid "Direct Connection to the Internet" +msgstr "Conexăo Direta ŕ Internet" + +#: src/we.cxx:247 +msgid "Use proxies" +msgstr "Usar Proxy" + +#: src/we.cxx:260 +msgid "FTP Search" +msgstr "FTP Search" + +#: src/we.cxx:266 +msgid "Number of mirrors to request:" +msgstr "" + +#: src/we.cxx:279 +msgid "Ping Timeout (Sec):" +msgstr "Tempo Limite de Operaçăo (Seg):" + +#: src/we.cxx:288 +msgid "Number of mirrors to ping at once:" +msgstr "" + +#: src/we.cxx:301 +msgid "Do FTPSearch automatically" +msgstr "" + +#: src/we.cxx:312 src/we.cxx:4233 src/we.cxx:4626 +msgid "OK" +msgstr "OK" + +#: src/dl_win.cxx:102 src/we.cxx:316 src/we.cxx:4642 +msgid "Cancel" +msgstr "Cancelar" + +#: src/we.cxx:4221 +msgid "Prozilla Download Accelerator 2.0.4beta" +msgstr "Acelerador de Downloads Prozilla 2.0.4beta" + +#: src/we.cxx:4227 +msgid "GUI Version 2.0.4beta" +msgstr "Versăo da GUI: 2.0.4beta" + +#: src/we.cxx:4230 +msgid "libprozilla version 1.0.0" +msgstr "Versăo da libprozilla: 1.0.1" + +#: src/we.cxx:4245 +msgid "Credits" +msgstr "Créditos" + +#: src/we.cxx:4254 +msgid "Kalum Somaratna - Main Programming" +msgstr "Kalum Somaratna - Programaçăo Principal" + +#: src/we.cxx:4258 +msgid "Uwe Hermann - Additional Programming" +msgstr "Uwe Hermann - Programaçăo Adicional" + +#: src/we.cxx:4261 +msgid "" +"Gustavo Noronha Silva (KoV) - libprozilla GNU gettext support, deb package " +"maintainer" +msgstr "" +"Gustavo Noronha Silva (KoV) - suporte a GNU gettext para a libprozilla e " +"mantenedor Debian" + +#: src/we.cxx:4266 +msgid "Ralph Slooten - Web Page Maintainer, RPM packager, testing" +msgstr "Ralph Slooten - Mantenedor da página Web, empacotador RPM, testador" + +#: src/we.cxx:4270 +msgid "" +"If you have contributed and arent listed, I apologise and please mail me " +" and I will correct it" +msgstr "Se vocę contribuiu e năo está listado, peço desculpas e por favor envie um email para e eu irei corrigir isso" + +#: src/we.cxx:4275 +msgid "" +"Silviu Marin-Caea - (Our sysadmin) Donation of valuable bandwith and system " +"resources at delrom.ro, testing" +msgstr "Silviu Marin-Caea - (Nosso Administrador de Sistema) Doaçăo de sistema e banda valorosos em delrom.ro e testador" + +#: src/we.cxx:4280 +msgid "Pablo Iranzo Gómez - testing" +msgstr "Pablo Iranzo Gómez - testador" + +#: src/we.cxx:4284 +msgid "Krogg - The cool Prozilla logo" +msgstr "Krogg - O logo do Prozilla" + +#: src/we.cxx:4288 +msgid "David L. Matthews - testing" +msgstr "David L. Matthews - testador" + +#: src/we.cxx:4296 +msgid "Translations" +msgstr "Traduçőes" + +#: src/we.cxx:4304 +msgid "Ruben Boer - Dutch Translation" +msgstr "Ruben Boer - Traduçăo Holandesa" + +#: src/we.cxx:4308 +msgid "Ralph Slooten- Dutch Translation" +msgstr "Ralph Slooten - Traduçăo Holandesa" + +#: src/we.cxx:4312 +msgid "Flower - Romanian Translation" +msgstr "Flower - Traduçăo Romena" + +#: src/we.cxx:4316 +msgid "Gustavo Noronha Silva (KoV) - Portugese Translation" +msgstr "Gustavo Noronha Silva (KoV) - Traduçăo para Portuguęs" + +#: src/we.cxx:4320 +msgid "Emanuele Tatti (Kreazy) - Itallian Translation" +msgstr "" + +#: src/we.cxx:4330 +msgid "Webpage - http://prozilla.delrom.ro/" +msgstr "Página - http://prozilla.delrom.ro/" + +#: src/we.cxx:4624 +msgid "Please enter the URL" +msgstr "Por favor digite a URL" + +#: src/we.cxx:4635 +msgid "Enter URL (CTRL+V to paste from clipboard)" +msgstr "Digite a URL (CTRL+V para colar da área de transferęncia)" + +#: src/we.cxx:4646 +msgid "FTPSearch for mirrors (Experimental)" +msgstr "" + +#: src/dl_win.cxx:14 +msgid "Abort, Resume Later" +msgstr "Abortar, continuar mais tarde" + +#: src/dl_win.cxx:19 src/download_win.cpp:391 +msgid "Pause" +msgstr "Pausa" + +#: src/dl_win.cxx:25 +msgid "Abort, No Resume Later" +msgstr "Abortar, năo continuar" + +#: src/dl_win.cxx:31 +msgid "URL:" +msgstr "URL:" + +#: src/dl_win.cxx:70 +msgid "Estimated Time Left" +msgstr "Tempo Restante Estimado" + +#: src/dl_win.cxx:98 +msgid "Creating file.............." +msgstr "Criando arquivo.............." + +#: src/dl_win.cxx:137 src/dl_win.cxx:170 src/dl_win.cxx:208 +msgid "Attention!" +msgstr "Atençăo!" + +#: src/dl_win.cxx:141 +msgid "Ok" +msgstr "Ok" + +#: src/dl_win.cxx:174 src/dl_win.cxx:212 +msgid "Yes" +msgstr "Sim" + +#: src/dl_win.cxx:178 src/dl_win.cxx:216 +msgid "No" +msgstr "Năo" + +#: src/download_win.cpp:43 +msgid "Are you Sure You want to quit?" +msgstr "Tem certeza que quer sair?" + +#: src/download_win.cpp:183 +msgid "Creating the thread that gets info about file.." +msgstr "Criando a thread que obtém informaçőes sobre o arquivo..." + +#: src/download_win.cpp:208 +msgid "I am unable to delete the target file!" +msgstr "Fui incapaz de remover o arquivo alvo!" + +#: src/download_win.cpp:241 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections" +msgstr "Um erro aconteceu durante o processamento do arquivo de log! Assumindo número de conexőes padrăo" + +#: src/download_win.cpp:250 +msgid "" +"The previous download used a different number of connections than the " +"default! so I will use the previous number of threads" +msgstr "O download anterior usou um número de conexőes diferente do padrăo! Entăo eu usarei o número anterior de threads." + +#: src/download_win.cpp:270 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections to delete" +msgstr "Um erro aconteceu durante o processamento do arquivo de log! Assumindo número de conexőes padrăo para remover." + +#: src/download_win.cpp:293 +#, c-format +msgid "The target file %s exists, would you like to overwrite it?" +msgstr "O arquivo alvo %s existe, gostaria de sobrescrevę-lo?" + +#: src/download_win.cpp:321 +#, c-format +msgid "" +"Previous download of %s exists, would you like to resume it or overwrite it?" +msgstr "Download anterior de %s existe, quer continuar ou sobrescrever?" + +#: src/download_win.cpp:325 +msgid "Resume" +msgstr "Continuar" + +#: src/download_win.cpp:326 +msgid "Overwrite" +msgstr "Sobrescrever" + +#: src/download_win.cpp:371 +msgid "RESUME supported" +msgstr "CONTINUAÇĂO suportada" + +#: src/download_win.cpp:379 +msgid "RESUME NOT supported" +msgstr "CONTINUAÇĂO năo suportada" + +#: src/download_win.cpp:444 +msgid "UnPause" +msgstr "Despausa" + +#: src/download_win.cpp:477 +msgid "waiting for thread to end" +msgstr "esperando que a thread acabe" + +#: src/download_win.cpp:479 +msgid "Thread ended" +msgstr "Thread acabou" + +#: src/download_win.cpp:487 +msgid "Got info succesfully" +msgstr "Informaçőes conseguidas com ęxito" + +#: src/download_win.cpp:490 +#, c-format +msgid "File Size = %ld Kb" +msgstr "Tamanho do arquivo = %ld Kb" + +#: src/download_win.cpp:494 +msgid "File Size is UNKOWN" +msgstr "Tamanho do arquivo DESCONHECIDO" + +#: src/download_win.cpp:515 +#, c-format +msgid "The URL %s doesnt exist!" +msgstr "A URL %s năo existe!" + +#: src/download_win.cpp:546 +msgid "No suitable mirrors were found, downloading from original server" +msgstr "" + +#: src/download_win.cpp:596 +#, c-format +msgid "Total Bytes received %ld Kb" +msgstr "Total de Bytes recebidos %ld Kb" + +#: src/download_win.cpp:601 +#, c-format +msgid "Average Speed = %.3f Kb/sec" +msgstr "Velocidade Média = %.3f Kb/sec" + +#: src/download_win.cpp:610 +#, c-format +msgid "%d Seconds" +msgstr "%d Segundos" + +#: src/download_win.cpp:612 +#, c-format +msgid "%d Minutes %d Seconds" +msgstr "%d Minutos %d Segundos" + +#: src/download_win.cpp:615 +#, c-format +msgid "%d Hours %d minutes" +msgstr "%d Horas %d Minutos" + +#. Wait till all are completed +#: src/download_win.cpp:637 +msgid "Waiting till all threads terminate" +msgstr "Esperando até que todas as threads completem" + +#: src/download_win.cpp:642 +msgid "Got DL succesfully, now building file" +msgstr "Download terminado com sucesso, agora reconstruindo arquivo" + +#: src/download_win.cpp:649 +#, c-format +msgid "Building file %s ....." +msgstr "Construindo arquivo %s ....." + +#: src/download_win.cpp:673 +msgid "" +"Error the server/proxy lied about resuming so I have to restart this from " +"the begiining!" +msgstr "Erro: o servidor/proxy mentei sobre continuaçăo e eu terei de começar tudo do começo!" + +#: src/download_win.cpp:693 +#, c-format +msgid "" +"One connection of the download %s encountered a unrecoverable local error, " +"usually lack of free space, or a write to bad medium, or a problem with " +"permissions,so pelase fix this and retry" +msgstr "Uma conexăo do download %s encontrou um erro local irrecuperáel. Norlmalmente isso quer dizer falta de espaço ou uma mídia ruim ou um problema de permissőes, entăo por favor conserte o erro e tente novamente." + +#: src/download_win.cpp:710 +#, c-format +msgid "" +"A connection(s) of the download %s encountered a unrecoverable remote error, " +"usually the file not being present in the remote server, therefore the " +"download had to be aborted!" +msgstr "Uma conexăo do download %s encontrou um erro local irrecuperáel, normalmente isso quer dizer que o arquivo năo está presente no servidor remoto, portanto o download teve de ser abortado!" + +#: src/download_win.cpp:761 src/download_win.cpp:788 +msgid "Close" +msgstr "Fechar" + +#: src/main.cpp:225 src/main.cpp:351 +#, c-format +msgid "%s does not seem to be a valid URL" +msgstr "%s năo parece uma URL válida" + +#: src/main.cpp:232 +#, c-format +msgid "%s contains just a hostname, it does not contain a file to download!" +msgstr "%s contém apenas o nome do host mas năo um nome de arquivo para baixar!" + +#: src/main.cpp:286 +msgid "Error: Invalid option\n" +msgstr "Erro: opçăo inválida\n" + +#: src/main.cpp:291 +msgid "Prozilla - Download Accelerator" +msgstr "Prozilla - Acelerador de Download" + +#: src/main.cpp:314 +msgid "&File" +msgstr "&Arquivo" + +#: src/main.cpp:315 +msgid "&New URL" +msgstr "&Nova URL" + +#: src/main.cpp:317 +msgid "&Preferences" +msgstr "&Preferęncias" + +#: src/main.cpp:319 +msgid "&Quit" +msgstr "&Sair" + +#: src/main.cpp:321 +msgid "&Help" +msgstr "" + +#: src/main.cpp:322 +msgid "&About" +msgstr "&Sobre" + +#: src/options.cpp:130 +#, c-format +msgid "%s does not seem to be a valid directory" +msgstr "%s năo parece ser um diretório válido" + +#: src/options.cpp:153 +#, c-format +msgid "%s does not seem to be a valid HTTP proxy value" +msgstr "%s năo parece ser um valor de proxy HTTP válido" + +#: src/options.cpp:181 +#, c-format +msgid "%s does not seem to be a valid FTP proxy value" +msgstr "%s năo parece ser um valor de proxy FTP válido" + +#~ msgid "USER@SITE" +#~ msgstr "USUÁRIO@SERVIDOR" + +#~ msgid "USER@ProxyUser@SITE" +#~ msgstr "USUÁRIO@USUÁRIONOPROXY@SERVIDOR" + +#~ msgid "USER@SITE_PROXYUSER" +#~ msgstr "USUÁRIO@SERVIDOR_USUÁRIONOPROXY" + +#~ msgid "ProxyUser@SITE" +#~ msgstr "USUÁRIONOPROXY@SERVIDOR" + +#~ msgid "LOGIN_then_USER@SITE" +#~ msgstr "LOGIN_entăo_USUÁRIO@SERVIDOR" + +#~ msgid "OPENSITE" +#~ msgstr "SITEABERTO" + +#~ msgid "SITESITE" +#~ msgstr "SERVIDORSERVIDOR" + +#~ msgid "HTTP" +#~ msgstr "HTTP" diff --git a/po/ro.gmo b/po/ro.gmo new file mode 100644 index 0000000000000000000000000000000000000000..98fbd689a857c6f3effff7cc2248e00d57c7ec0a GIT binary patch literal 7931 zcmcJTYiwoLS%w!7+A;*vh5~`mund{OZato9k~YOnnm8Vh#~t6|%Oq1M(K_d>V=rc( zy-)VV9y=hUs+GdeBJ~GITz-U`M3AWZ0|rtqhx@)?SzId%y2{_j&R5TRvtuK1ll!+AZH<%rAid`JKjmANX%?H0Jxk z{{c^cx4+4l8Sri38E_f=G4SWWN$}UfH-Mi88Nz%P{4|(@uYj^&>wD_`egxDw&wvkre*}Iz_*GEr_-W}n zy$#g!JHS5%?*ui^--Gh!zcklJp#1nIHYYpX1ulbkgWAWFAYIG>_@m&{pap*i{9*7j zpw{(8@Xg@Y!A0-{7qb5bsP$b2aj8kb1gyY2z?Z$ifKz)XT#@4LZCZ~>H^Q&9a6!Mni^gR<}Mf>7K175GEo-!%B| zpvJw0f8yUAp!|Loycc{gcpsR7;^Q;mkAt5AWw(EA@D)(|{u-!t$XI%QD|lI#U;tB4 z^S=PT4g4=q>w7as*aGhbHO|wZ?EX!52Zv|O21wR04Kc52k!56^$!F8OWbv_M3W%Dsm`}=KBcKbt6 z^E?M?eV=Qt{}IGR<`obVn>Rqd`@p+E_1|o82b7(kYVg-U+40XomTdkKWb5Xi!Ff=J z`ZH|ggRXVV(jKL0Z8{Vy7if>rF42aEeDxUZJ+udDvhnb^w>gphXNEUHtyi|ydURNt zZ1s~gtyRZH4Q3mBFYO)8wf3$<+|m9Yr_IrHtkw|uFJJ2TY1$?Y^P3f#Y(9RR9lQ88 z&d<=^MN>|`hbC@(fF_?QuPYYh=Ovo>wM^5oNV`mvkEUptH`-Yod6*{OD^DqA)@h{6 z>yEp*nx?&*_E7UgJbR!y7o4YU(ZmzwSjCq(@;=%JX+K4qq!ChPfwo2yci&0Vaj}N@ z|76Er$f~@sob*CkmA){XuGFWxyXo6m+KG2Zr-kigzOZRl+QR#uEi>El*4aImgpNJG zwQl=)cJ)Bll{Y6}yZeQ$Z?6CL#`5b8*$KICmsx&bPR+Hlsx+t0hs2vxtA5|=^;7G) z@A}-QZMJ*r(JGW?&iXvha+|f=Rqi`>f0sA34Z0K|-Ld7aw@J3s<@SV~D~bwp?bwd* zx+*DcTJ>6Wk%-}@BLV;FX6Cx=D| z1qSF&nYps`sVp#I=JtHJQiY@=Bg&>0mdxld^A5Kp zW0tY@TTH#ZdU5TsRkOIgWH0$#4z>5p zoSnJvG;Vfg(Wm$?F^fd{xn)~aZNi~jCCR}w(Z6q7<1UQ7qS?p#nZ=5Y?q#qv&(dAT zT9Q3y?c~Mm(v&@IlhDFqhapLvU0mIk?@E7_yi)c1k=z?L)R z0XZSb+AgVc?KG>a99*&qKGi_o+!IH5*iTz>v9tR*E7OWwEWAhfR=ws4q+z%oW@VRs zpZ7wYji!mRzE9+mZn#>9m;99bl5()dGUAwKoz)PJkn1qBi(l#aLkvyzQ?lV_MZhWPCgI93=#`~$kSfh^ zEnGjuVA)l2Zp4Faa!KvZk;hNlbHiEY2*Lz&5)$fOGva1X?aDpJ9mYzYU3V!Nc4J|4 zdu73{u5AsY&3A@3oAA>Om-Kh-W|Czjb!_w)F}N;LiLP}3PE&u@SB8;EoHlmkWE8xn zu0{ZUu;=j5ft^H9z&a5tl1r%}R1BPl^z^**3W~|KDz`+E>ktxC7$Kz|kfboR)J5df zi0yJTeM@*jenr=it!yj^!)P3>%_yjp;c=M63?Uxa5>Q%(K#}dY-a1Zur`>@BJnxcRyW=%{ZV&WJBk5kL&?1}Y_wZ|{((!kWH_u@BHN|n-CT#_jpx|`qmOdrV~)F$ zXG*Um6D%wtP{2WQ0%Y;#GGR4dW{A63=iW)3J8Slv0kp>YUF91VCLNq1mac_kajbic zN^NLvqhl&8uKS}?gmFbM@MlUj3*-R_iV{PgSh6vUfrQ`GJF(*3_)?Wd zN=L4JvJ~}Fsbp&n(5D*oj-QNf#SZ05`C+Kcrs~;IutnG*AGHVMj6CRiU<1}U3J;li z#;;v^y2?WWo!DcH20F>RgQCnmLaa?kI(YjsERb$2WCS}ovJDj?b$mkXNlN?lDEJ9; zi9&ejVhxN^ZcIndBf_B*)uTP~fig!_$|T&hN{;J6Me#E(PzW_&<2Wt5&iGElB|HxcCcS9L~03%7@~9r}C=4ORJyhnT@#gBFtG!&Jjd zQIWldJooO902v%b#y~0Mq(LpxkG;(L$7MQ#O|EpMWO^l;9`h-0cZr-EMEW*g6hxEq z3mmD_Z1hoN5oD#PA&r!RUh4H#C&#k7BswXJG=*hcDQq4C6_}$s|tp7q8`-N zhpGNqeZV#KBJQRbaEpC5E9%uU{y_P^jsl69|1Tl$sLL?}WqoW-!D!-hM7a62)vcw~ z?YWHwmD#Ka@|+pFJG%Fcntnw^h78zuJ5WIqf7*USbR+Od?j~MBGoKP{joq1%j!6ZgedsU5{l`gyr)n<{@xz0Qd&mC z;Ybol?MqV3$mNnQXy6V~Og``OQD2a6T>WF-AXe{D=!lyym86_w1v6nU@k>zsT20-d z#@X{!TCI2V`V7Ch)Y^#K!+iH@6uXX3=L4#=QL=Se>ba|-H?-_}+ew6nO5r^tt>ZkrHs8v4MjkI;+U<3(iOohW%$oD{2$#OnI zu9N++dz6D!rc`>&94qbf8_@vq)R-s!On};t>5$)g&p8uyeypkE>c3X~t{#Eh$yUe5 H@#cR4S^ehy literal 0 HcmV?d00001 diff --git a/po/ro.po b/po/ro.po new file mode 100644 index 0000000..48ea6db --- /dev/null +++ b/po/ro.po @@ -0,0 +1,445 @@ +# Romanian messages for prozgui. +# Copyright (C) 2001 Free Software Foundation, Inc. +# Flower , 2001. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2001-08-19 21:49+0600\n" +"PO-Revision-Date: 2001-08-21 06:14+0300\n" +"Last-Translator: Flower \n" +"Language-Team: RTFS \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING\n" + +#: src/we.cxx:49 +msgid "USER@SITE" +msgstr "USER@SITE" + +#: src/we.cxx:50 +msgid "USER@ProxyUser@SITE" +msgstr "USER@ProxyUser@SITE" + +#: src/we.cxx:51 +msgid "USER@SITE_PROXYUSER" +msgstr "USER@SITE_PROXYUSER" + +#: src/we.cxx:52 +msgid "ProxyUser@SITE" +msgstr "ProxyUser@SITE" + +#: src/we.cxx:53 +msgid "LOGIN_then_USER@SITE" +msgstr "LOGIN_then_USER@SITE" + +#: src/we.cxx:54 +msgid "OPENSITE" +msgstr "OPENSITE" + +#: src/we.cxx:55 +msgid "SITESITE" +msgstr "SITESITE" + +#: src/we.cxx:56 +msgid "HTTP" +msgstr "HTTP" + +#: src/we.cxx:74 +msgid "Prozilla Preferences Panel" +msgstr "Panoul de opţiuni pentru Prozilla" + +#: src/we.cxx:79 +msgid "General" +msgstr "General" + +#: src/we.cxx:98 +msgid "Number of Threads:" +msgstr "Numărul de fire:" + +#: src/we.cxx:107 +msgid "Use PASV for FTP transfers (recommended)" +msgstr "Foloseşte PASV pentru transferurile FTP (recomandat)" + +#: src/we.cxx:111 +msgid "" +"Ask the HTTP proxies not to cache requests between sessions (default is off)" +msgstr "" +"Cere proxy-urilor de HTTP să nu păstreze cererile între sesiuni (implicit e inactiv)" + +#: src/we.cxx:127 +msgid "Retry Delay (Sec):" +msgstr "Pauză între încercări (sec):" + +#: src/we.cxx:131 +msgid "Timeout Period (Sec):" +msgstr "Timp maxim (sec):" + +#: src/we.cxx:135 +msgid "Directory to download the files:" +msgstr "" + +#: src/we.cxx:139 +msgid "Limit bandwith usage PER download to (Kbps) (0 = unlimited):" +msgstr "Limitează lăţimea de bandă PER descărcare la (Kbps) (0 = nelimitat):" + +#: src/we.cxx:147 +msgid "Proxies" +msgstr "Proxy-uri" + +#: src/we.cxx:155 src/we.cxx:180 +msgid "Hostname:" +msgstr "Hostname:" + +#: src/we.cxx:160 src/we.cxx:185 +msgid "Port:" +msgstr "Port:" + +#: src/we.cxx:166 +msgid "HTTP Proxy:" +msgstr "Proxy HTTP:" + +#: src/we.cxx:169 src/we.cxx:191 +msgid "Username:" +msgstr "Nume de utilizator:" + +#: src/we.cxx:174 src/we.cxx:196 +msgid "Password:" +msgstr "Parola:" + +#: src/we.cxx:202 +msgid "FTP Proxy:" +msgstr "Proxy FTP:" + +#: src/we.cxx:205 +msgid "FTP Proxy Type:" +msgstr "Tipul de proxy FTP:" + +#: src/we.cxx:211 +msgid "Use HTTP Proxy" +msgstr "Foloseşte proxy-ul HTTP" + +#: src/we.cxx:215 +msgid "Use FTP Proxy" +msgstr "Foloseşte proxy-ul FTP" + +#: src/we.cxx:222 +msgid "Direct Connection to the Internet" +msgstr "Conexiune directă la Internet" + +#: src/we.cxx:228 +msgid "Use proxies" +msgstr "Foloseşte proxy-uri" + +#: src/we.cxx:242 src/we.cxx:4203 src/we.cxx:4500 +msgid "OK" +msgstr "OK" + +#: src/dl_win.cxx:88 src/we.cxx:246 src/we.cxx:4516 +msgid "Cancel" +msgstr "Renunţă" + +#: src/we.cxx:4151 +msgid "Prozilla Download Accelerator M2" +msgstr "Prozilla Download Accelerator M2" + +#: src/we.cxx:4156 +msgid "GUI Version 2.0.4-beta" +msgstr "Versiunea GUI 2.0.4-beta" + +#: src/we.cxx:4159 +msgid "libprozilla version 1.0.0" +msgstr "versiunea libprozilla 1.0.0" + +#: src/we.cxx:4162 +msgid "Credits" +msgstr "Mulţumiri" + +#: src/we.cxx:4168 +msgid "Kalum Somaratna - Main Programming" +msgstr "Kalum Somaratna - Programator principal" + +#: src/we.cxx:4171 +msgid "Uwe Hermann - Additional Programming" +msgstr "Uwe Hermann - Programator ajutător" + +#: src/we.cxx:4174 +msgid "" +"Gustavo Noronha Silva (KoV) - libprozilla GNU gettext support, translator, " +"deb package maintainer" +msgstr "" +"Gustavo Noronha Silva (KoV) - ajutor la GNU gettext pentru libprozilla, traducător, " +"face pachetele deb" + +#: src/we.cxx:4179 +msgid "Ralph Slooten - Web Page Maintainer, RPM packager, testing, translator" +msgstr "Ralph Slooten - Menţine pagina Web, face pachetele RPM, tester, traducător" + +#: src/we.cxx:4183 +msgid "" +"If you have contributed and arent listed, I apologise and please mail me " +" and I will correct it" +msgstr "" +"Dacă aţi contribuit şi nu sunteţi afişat, îmi cer scuze şi vă rog scrieţi­mi la " +" şi­mi voi corecta scăparea" + +#: src/we.cxx:4188 +msgid "" +"Silviu Marin-Caea - (Our sysadmin) Donation of valuable bandwith and system " +"resources at genesys.ro, testing" +msgstr "" +"Silviu Marin-Caea - (sysadmin-ul nostru) Donează lăţime de bandă şi resurse " +"sistem la genesys.ro, tester" + +#: src/we.cxx:4193 +msgid "Pablo Iranzo Gómez - testing" +msgstr "Pablo Iranzo Gómez - tester" + +#: src/we.cxx:4197 +msgid "Krogg - The cool Prozilla logo" +msgstr "Krogg - Meseriaşul logo pentru Prozilla" + +#: src/we.cxx:4498 +msgid "Please enter the URL" +msgstr "Introduceţi URL-ul" + +#: src/we.cxx:4509 +msgid "Enter URL (CTRL+V to paste from clipboard)" +msgstr "Introduceţi URL-ul (CTRL+V pentru lipire din clipboard)" + +#: src/dl_win.cxx:14 +msgid "Abort, Resume Later" +msgstr "Abandon, continuăm mai târziu" + +#: src/dl_win.cxx:19 +msgid "Abort, No Resume Later" +msgstr "Abandon, nu mai continuăm" + +#: src/dl_win.cxx:25 +msgid "URL:" +msgstr "URL:" + +#: src/dl_win.cxx:63 +msgid "Estimated Time Left" +msgstr "Timp rămas estimat" + +#: src/dl_win.cxx:84 +msgid "Creating file.............." +msgstr "Creez fişierul.............." + +#: src/dl_win.cxx:123 src/dl_win.cxx:156 src/dl_win.cxx:194 +msgid "Attention!" +msgstr "Atenţie!" + +#: src/dl_win.cxx:127 +msgid "Ok" +msgstr "Ok" + +#: src/dl_win.cxx:160 src/dl_win.cxx:198 +msgid "Yes" +msgstr "Da" + +#: src/dl_win.cxx:164 src/dl_win.cxx:202 +msgid "No" +msgstr "Nu" + +#: src/download_win.cpp:42 +msgid "Are you Sure You want to quit?" +msgstr "Sunteţi sigur că doriţi să ieşiţi?" + +#: src/download_win.cpp:172 +msgid "I am unable to delete the target file!" +msgstr "Nu pot şterge fişierul destinaţie!" + +#: src/download_win.cpp:205 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections" +msgstr "" +"A apărut o eroare la procesarea fişierului de log! Presupun numărul implicit " +"de conexiuni" + +#: src/download_win.cpp:214 +msgid "" +"The previous download used a different number of connections than the " +"default! so I will use the previous number of threads" +msgstr "" +"Descărcarea precedentă a folosit alt număr de conexiuni decât cel implicit! " +"Vom folosi deci numărul vechi de conexiuni." + +#: src/download_win.cpp:234 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections to delete" +msgstr "" +"A apărut o eroare la procesarea fişierului de log! Presupun numărul implicit " +"de conexiuni pentru ştergere" + +#: src/download_win.cpp:257 +#, c-format +msgid "The target file %s exists, would you like to overwrite it?" +msgstr "Fişierul destinaţie %s există, doriţi să­l suprascriem?" + +#: src/download_win.cpp:285 +#, c-format +msgid "" +"Previous download of %s exists, would you like to resume it or overwrite it?" +msgstr "" +"O descărcare anterioară a lui %s există, doriţi să­l continuăm sau să­l suprascriem?" + +#: src/download_win.cpp:289 +msgid "Resume" +msgstr "Continuare" + +#: src/download_win.cpp:290 +msgid "Overwrite" +msgstr "Suprascriere" + +#: src/download_win.cpp:327 +msgid "RESUME supported" +msgstr "CONTINUARE posibilă" + +#: src/download_win.cpp:335 +msgid "RESUME NOT supported" +msgstr "CONTINUARE imposibilă" + +#: src/download_win.cpp:379 +msgid "waiting for thread to end" +msgstr "aştept firul să se termine" + +#: src/download_win.cpp:381 +msgid "Thread ended" +msgstr "Fir terminat" + +#: src/download_win.cpp:389 +msgid "Got info succesfully" +msgstr "Informaţii primite" + +#: src/download_win.cpp:392 +#, c-format +msgid "File Size = %ld Kb" +msgstr "Mărimea fişierului = %ld Kb" + +#: src/download_win.cpp:396 +msgid "File Size is UNKOWN" +msgstr "Mărimea fişierului este necunoscută" + +#: src/download_win.cpp:405 +#, c-format +msgid "The URL %s doesnt exist!" +msgstr "URL-ul %s nu există!" + +#: src/download_win.cpp:451 +#, c-format +msgid "Total Bytes received %ld Kb" +msgstr "Am primit %ld Kb" + +#: src/download_win.cpp:456 +#, c-format +msgid "Average Speed = %.3f Kb/sec" +msgstr "Viteza medie = %.3f Kb/sec" + +#: src/download_win.cpp:465 +#, c-format +msgid "%d Seconds" +msgstr "%d secunde" + +#: src/download_win.cpp:467 +#, c-format +msgid "%d Minutes %d Seconds" +msgstr "%d minute şi %d secunde" + +#: src/download_win.cpp:470 +#, c-format +msgid "%d Hours %d minutes" +msgstr "%d ore şi %d minute" + +#. Wait till all are completed +#: src/download_win.cpp:492 +msgid "Waiting till all threads terminate" +msgstr "Aştept să se terminte toate firele" + +#: src/download_win.cpp:497 +msgid "Got DL succesfully, now building file" +msgstr "Descărcare terminată, construiesc fişierul" + +#: src/download_win.cpp:503 +#, c-format +msgid "Building file %s ....." +msgstr "Construiesc fişierul %s ....." + +#: src/download_win.cpp:527 +msgid "" +"Error the server/proxy lied about resuming so I have to restart this from " +"the begiining!" +msgstr "" +"Eroare serverul/proxy-ul a minţit referitor la continuare deci trebuie să " +"reiau de la început!" + +#: src/download_win.cpp:547 +#, c-format +msgid "" +"One connection of the download %s encountered a unrecoverable local error, " +"usually lack of free space, or a write to bad medium, or a problem with " +"permissions,so pelase fix this and retry" +msgstr "" +"Una dintre conexiunile descărcării %s a întâmpinat o eroare locală nereparabilă, " +"de obicei cauzată de lipsa de spaţiu, scrierea pe suport defectuos sau o problemă " +"cu permisiunile, deci reparaţi eroarea şi reîncercaţi" + +#: src/download_win.cpp:596 src/download_win.cpp:621 +msgid "Close" +msgstr "Închide" + +#: src/download_win.cpp:689 +msgid "Creating the thread that gets info about file.." +msgstr "Creez firul care ia informaţii despre fişier." + +#: src/main.cpp:222 src/main.cpp:335 +#, c-format +msgid "%s does not seem to be a valid URL" +msgstr "%s nu pare să fie un URL valid" + +#: src/main.cpp:275 +msgid "Error: Invalid option\n" +msgstr "Eroare: optiune invalidă\n" + +#: src/main.cpp:280 +msgid "Prozilla - Download Accelerator" +msgstr "Prozilla - Download Accelerator" + +#: src/main.cpp:303 +msgid "&File" +msgstr "&Fişier" + +#: src/main.cpp:304 +msgid "&New URL" +msgstr "URL &nou" + +#: src/main.cpp:305 +msgid "&Preferences" +msgstr "&Preferinţe" + +#: src/main.cpp:306 +msgid "&About" +msgstr "&Despre" + +#: src/main.cpp:307 +msgid "&Quit" +msgstr "&Ieşire" + +#: src/options.cpp:119 +#, c-format +msgid "%s does not seem to be a valid directory" +msgstr "%s nu pare să fie un director valid" + +#: src/options.cpp:142 +#, c-format +msgid "%s does not seem to be a valid HTTP proxy value" +msgstr "%s nu pare să fie o valoare validă pentru proxy HTTP" + +#: src/options.cpp:170 +#, c-format +msgid "%s does not seem to be a valid FTP proxy value" +msgstr "%s nu pare să fie o valoare validă pentru proxy FTP" diff --git a/po/ro.po~ b/po/ro.po~ new file mode 100644 index 0000000..254d344 --- /dev/null +++ b/po/ro.po~ @@ -0,0 +1,445 @@ +# Romanian messages for prozgui. +# Copyright (C) 2001 Free Software Foundation, Inc. +# Flower , 2001. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2001-08-19 21:49+0600\n" +"PO-Revision-Date: 2001-08-21 06:14+0300\n" +"Last-Translator: Flower \n" +"Language-Team: RTFS \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING\n" + +#: src/we.cxx:49 +msgid "USER@SITE" +msgstr "USER@SITE" + +#: src/we.cxx:50 +msgid "USER@ProxyUser@SITE" +msgstr "USER@ProxyUser@SITE" + +#: src/we.cxx:51 +msgid "USER@SITE_PROXYUSER" +msgstr "USER@SITE_PROXYUSER" + +#: src/we.cxx:52 +msgid "ProxyUser@SITE" +msgstr "ProxyUser@SITE" + +#: src/we.cxx:53 +msgid "LOGIN_then_USER@SITE" +msgstr "LOGIN_then_USER@SITE" + +#: src/we.cxx:54 +msgid "OPENSITE" +msgstr "OPENSITE" + +#: src/we.cxx:55 +msgid "SITESITE" +msgstr "SITESITE" + +#: src/we.cxx:56 +msgid "HTTP" +msgstr "HTTP" + +#: src/we.cxx:74 +msgid "Prozilla Preferences Panel" +msgstr "Panoul de opţiuni pentru Prozilla" + +#: src/we.cxx:79 +msgid "General" +msgstr "General" + +#: src/we.cxx:98 +msgid "Number of Threads:" +msgstr "Numărul de fire:" + +#: src/we.cxx:107 +msgid "Use PASV for FTP transfers (recommended)" +msgstr "Foloseşte PASV pentru transferurile FTP (recomandat)" + +#: src/we.cxx:111 +msgid "" +"Ask the HTTP proxies not to cache requests between sessions (default is off)" +msgstr "" +"Cere proxy-urilor de HTTP să nu păstreze cererile între sesiuni (implicit e inactiv)" + +#: src/we.cxx:127 +msgid "Retry Delay (Sec):" +msgstr "Pauză între încercări (sec):" + +#: src/we.cxx:131 +msgid "Timeout Period (Sec):" +msgstr "Timp maxim (sec):" + +#: src/we.cxx:135 +msgid "Directory to download the files:" +msgstr "" + +#: src/we.cxx:139 +msgid "Limit bandwith usage PER download to (Kbps) (0 = unlimited):" +msgstr "Limitează lăţimea de bandă PER descărcare la (Kbps) (0 = nelimitat):" + +#: src/we.cxx:147 +msgid "Proxies" +msgstr "Proxy-uri" + +#: src/we.cxx:155 src/we.cxx:180 +msgid "Hostname:" +msgstr "Hostname:" + +#: src/we.cxx:160 src/we.cxx:185 +msgid "Port:" +msgstr "Port:" + +#: src/we.cxx:166 +msgid "HTTP Proxy:" +msgstr "Proxy HTTP:" + +#: src/we.cxx:169 src/we.cxx:191 +msgid "Username:" +msgstr "Nume de utilizator:" + +#: src/we.cxx:174 src/we.cxx:196 +msgid "Password:" +msgstr "Parola:" + +#: src/we.cxx:202 +msgid "FTP Proxy:" +msgstr "Proxy FTP:" + +#: src/we.cxx:205 +msgid "FTP Proxy Type:" +msgstr "Tipul de proxy FTP:" + +#: src/we.cxx:211 +msgid "Use HTTP Proxy" +msgstr "Foloseşte proxy-ul HTTP" + +#: src/we.cxx:215 +msgid "Use FTP Proxy" +msgstr "Foloseşte proxy-ul FTP" + +#: src/we.cxx:222 +msgid "Direct Connection to the Internet" +msgstr "Conexiune directă la Internet" + +#: src/we.cxx:228 +msgid "Use proxies" +msgstr "Foloseşte proxy-uri" + +#: src/we.cxx:242 src/we.cxx:4203 src/we.cxx:4500 +msgid "OK" +msgstr "OK" + +#: src/dl_win.cxx:88 src/we.cxx:246 src/we.cxx:4516 +msgid "Cancel" +msgstr "Renunţă" + +#: src/we.cxx:4151 +msgid "Prozilla Download Accelerator M2" +msgstr "Prozilla Download Accelerator M2" + +#: src/we.cxx:4156 +msgid "GUI Version 2.0.4-beta" +msgstr "Versiunea GUI 2.0.4-beta" + +#: src/we.cxx:4159 +msgid "libprozilla version 1.0.0" +msgstr "versiunea libprozilla 1.0.0" + +#: src/we.cxx:4162 +msgid "Credits" +msgstr "Mulţumiri" + +#: src/we.cxx:4168 +msgid "Kalum Somaratna - Main Programming" +msgstr "Kalum Somaratna - Programator principal" + +#: src/we.cxx:4171 +msgid "Uwe Hermann - Additional Programming" +msgstr "Uwe Hermann - Programator ajutător" + +#: src/we.cxx:4174 +msgid "" +"Gustavo Noronha Silva (KoV) - libprozilla GNU gettext support, translator, " +"deb package maintainer" +msgstr "" +"Gustavo Noronha Silva (KoV) - ajutor la GNU gettext pentru libprozilla, traducător, " +"face pachetele deb" + +#: src/we.cxx:4179 +msgid "Ralph Slooten - Web Page Maintainer, RPM packager, testing, translator" +msgstr "Ralph Slooten - Menţine pagina Web, face pachetele RPM, tester, traducător" + +#: src/we.cxx:4183 +msgid "" +"If you have contributed and arent listed, I apologise and please mail me " +" and I will correct it" +msgstr "" +"Dacă aţi contribuit şi nu sunteţi afişat, îmi cer scuze şi vă rog scrieţi­mi la " +" şi­mi voi corecta scăparea" + +#: src/we.cxx:4188 +msgid "" +"Silviu Marin-Caea - (Our sysadmin) Donation of valuable bandwith and system " +"resources at delrom.ro, testing" +msgstr "" +"Silviu Marin-Caea - (sysadmin-ul nostru) Donează lăţime de bandă şi resurse " +"sistem la delrom.ro, tester" + +#: src/we.cxx:4193 +msgid "Pablo Iranzo Gómez - testing" +msgstr "Pablo Iranzo Gómez - tester" + +#: src/we.cxx:4197 +msgid "Krogg - The cool Prozilla logo" +msgstr "Krogg - Meseriaşul logo pentru Prozilla" + +#: src/we.cxx:4498 +msgid "Please enter the URL" +msgstr "Introduceţi URL-ul" + +#: src/we.cxx:4509 +msgid "Enter URL (CTRL+V to paste from clipboard)" +msgstr "Introduceţi URL-ul (CTRL+V pentru lipire din clipboard)" + +#: src/dl_win.cxx:14 +msgid "Abort, Resume Later" +msgstr "Abandon, continuăm mai târziu" + +#: src/dl_win.cxx:19 +msgid "Abort, No Resume Later" +msgstr "Abandon, nu mai continuăm" + +#: src/dl_win.cxx:25 +msgid "URL:" +msgstr "URL:" + +#: src/dl_win.cxx:63 +msgid "Estimated Time Left" +msgstr "Timp rămas estimat" + +#: src/dl_win.cxx:84 +msgid "Creating file.............." +msgstr "Creez fişierul.............." + +#: src/dl_win.cxx:123 src/dl_win.cxx:156 src/dl_win.cxx:194 +msgid "Attention!" +msgstr "Atenţie!" + +#: src/dl_win.cxx:127 +msgid "Ok" +msgstr "Ok" + +#: src/dl_win.cxx:160 src/dl_win.cxx:198 +msgid "Yes" +msgstr "Da" + +#: src/dl_win.cxx:164 src/dl_win.cxx:202 +msgid "No" +msgstr "Nu" + +#: src/download_win.cpp:42 +msgid "Are you Sure You want to quit?" +msgstr "Sunteţi sigur că doriţi să ieşiţi?" + +#: src/download_win.cpp:172 +msgid "I am unable to delete the target file!" +msgstr "Nu pot şterge fişierul destinaţie!" + +#: src/download_win.cpp:205 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections" +msgstr "" +"A apărut o eroare la procesarea fişierului de log! Presupun numărul implicit " +"de conexiuni" + +#: src/download_win.cpp:214 +msgid "" +"The previous download used a different number of connections than the " +"default! so I will use the previous number of threads" +msgstr "" +"Descărcarea precedentă a folosit alt număr de conexiuni decât cel implicit! " +"Vom folosi deci numărul vechi de conexiuni." + +#: src/download_win.cpp:234 +msgid "" +"A error occured while processing the logfile! Assuming default number of " +"connections to delete" +msgstr "" +"A apărut o eroare la procesarea fişierului de log! Presupun numărul implicit " +"de conexiuni pentru ştergere" + +#: src/download_win.cpp:257 +#, c-format +msgid "The target file %s exists, would you like to overwrite it?" +msgstr "Fişierul destinaţie %s există, doriţi să­l suprascriem?" + +#: src/download_win.cpp:285 +#, c-format +msgid "" +"Previous download of %s exists, would you like to resume it or overwrite it?" +msgstr "" +"O descărcare anterioară a lui %s există, doriţi să­l continuăm sau să­l suprascriem?" + +#: src/download_win.cpp:289 +msgid "Resume" +msgstr "Continuare" + +#: src/download_win.cpp:290 +msgid "Overwrite" +msgstr "Suprascriere" + +#: src/download_win.cpp:327 +msgid "RESUME supported" +msgstr "CONTINUARE posibilă" + +#: src/download_win.cpp:335 +msgid "RESUME NOT supported" +msgstr "CONTINUARE imposibilă" + +#: src/download_win.cpp:379 +msgid "waiting for thread to end" +msgstr "aştept firul să se termine" + +#: src/download_win.cpp:381 +msgid "Thread ended" +msgstr "Fir terminat" + +#: src/download_win.cpp:389 +msgid "Got info succesfully" +msgstr "Informaţii primite" + +#: src/download_win.cpp:392 +#, c-format +msgid "File Size = %ld Kb" +msgstr "Mărimea fişierului = %ld Kb" + +#: src/download_win.cpp:396 +msgid "File Size is UNKOWN" +msgstr "Mărimea fişierului este necunoscută" + +#: src/download_win.cpp:405 +#, c-format +msgid "The URL %s doesnt exist!" +msgstr "URL-ul %s nu există!" + +#: src/download_win.cpp:451 +#, c-format +msgid "Total Bytes received %ld Kb" +msgstr "Am primit %ld Kb" + +#: src/download_win.cpp:456 +#, c-format +msgid "Average Speed = %.3f Kb/sec" +msgstr "Viteza medie = %.3f Kb/sec" + +#: src/download_win.cpp:465 +#, c-format +msgid "%d Seconds" +msgstr "%d secunde" + +#: src/download_win.cpp:467 +#, c-format +msgid "%d Minutes %d Seconds" +msgstr "%d minute şi %d secunde" + +#: src/download_win.cpp:470 +#, c-format +msgid "%d Hours %d minutes" +msgstr "%d ore şi %d minute" + +#. Wait till all are completed +#: src/download_win.cpp:492 +msgid "Waiting till all threads terminate" +msgstr "Aştept să se terminte toate firele" + +#: src/download_win.cpp:497 +msgid "Got DL succesfully, now building file" +msgstr "Descărcare terminată, construiesc fişierul" + +#: src/download_win.cpp:503 +#, c-format +msgid "Building file %s ....." +msgstr "Construiesc fişierul %s ....." + +#: src/download_win.cpp:527 +msgid "" +"Error the server/proxy lied about resuming so I have to restart this from " +"the begiining!" +msgstr "" +"Eroare serverul/proxy-ul a minţit referitor la continuare deci trebuie să " +"reiau de la început!" + +#: src/download_win.cpp:547 +#, c-format +msgid "" +"One connection of the download %s encountered a unrecoverable local error, " +"usually lack of free space, or a write to bad medium, or a problem with " +"permissions,so pelase fix this and retry" +msgstr "" +"Una dintre conexiunile descărcării %s a întâmpinat o eroare locală nereparabilă, " +"de obicei cauzată de lipsa de spaţiu, scrierea pe suport defectuos sau o problemă " +"cu permisiunile, deci reparaţi eroarea şi reîncercaţi" + +#: src/download_win.cpp:596 src/download_win.cpp:621 +msgid "Close" +msgstr "Închide" + +#: src/download_win.cpp:689 +msgid "Creating the thread that gets info about file.." +msgstr "Creez firul care ia informaţii despre fişier." + +#: src/main.cpp:222 src/main.cpp:335 +#, c-format +msgid "%s does not seem to be a valid URL" +msgstr "%s nu pare să fie un URL valid" + +#: src/main.cpp:275 +msgid "Error: Invalid option\n" +msgstr "Eroare: optiune invalidă\n" + +#: src/main.cpp:280 +msgid "Prozilla - Download Accelerator" +msgstr "Prozilla - Download Accelerator" + +#: src/main.cpp:303 +msgid "&File" +msgstr "&Fişier" + +#: src/main.cpp:304 +msgid "&New URL" +msgstr "URL &nou" + +#: src/main.cpp:305 +msgid "&Preferences" +msgstr "&Preferinţe" + +#: src/main.cpp:306 +msgid "&About" +msgstr "&Despre" + +#: src/main.cpp:307 +msgid "&Quit" +msgstr "&Ieşire" + +#: src/options.cpp:119 +#, c-format +msgid "%s does not seem to be a valid directory" +msgstr "%s nu pare să fie un director valid" + +#: src/options.cpp:142 +#, c-format +msgid "%s does not seem to be a valid HTTP proxy value" +msgstr "%s nu pare să fie o valoare validă pentru proxy HTTP" + +#: src/options.cpp:170 +#, c-format +msgid "%s does not seem to be a valid FTP proxy value" +msgstr "%s nu pare să fie o valoare validă pentru proxy FTP" diff --git a/po/stamp-cat-id b/po/stamp-cat-id new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/po/stamp-cat-id @@ -0,0 +1 @@ +timestamp diff --git a/prozgui-static-rpm.spec b/prozgui-static-rpm.spec new file mode 100644 index 0000000..b6dbd1f --- /dev/null +++ b/prozgui-static-rpm.spec @@ -0,0 +1,130 @@ +%define name prozgui +%define version 2.0.5beta +#%define buildversion static +%define release 1 +%define prefix /usr + +Summary: An GUI advanced Linux download manager +Summary(fr): Un gestionnaire graphique de téléchargement avancé pour Linux +Name: %{name} +Version: %{version} +Release: %{release} +Copyright: GNU +BuildArchitectures: i386 +Group: Networking/File transfer +Source0: %{name}-%{version}.tar.gz +Url: http://prozilla.delrom.ro/ +BuildRoot: /var/tmp/%{name}-%{version}-root +Packager: Kalum Somaratna (Grendel) +Distribution: Build for Mandrake 8.0 + +%description +This is the GUI version of Prozilla. It uses libprozilla and the GUI is +created and designed with The Fast Light Tool Kit (fltk). + +ProZilla is a download accellerator program written for Linux to speed up the +normal file download process. It often gives speed increases of around 200% to +300%. It supports both FTP and HTTP protocols, and the theory behind it is +very simple. The program opens multiple connections to several ftp servers +hosting the same file, and each of the connections downloads a part of the file, +thus defeating existing internet congestion prevention methods which slow down +a single connection based download. + +It also features the new multiple server based downloading, based on +ftpsearch and ping returned results prozilla now supports downloading from +multiple servers simultaneously. + +%description -l fr +Ce programme est la version IHM de Prozilla. Il utilise libprozilla et l'IHM +est créé et géré avec les widgets FLTK (The Fast Light Tool Kit). + +Prozilla est un accélérateur de téléchargement écris pour Linux pour accélérer +le processus de téléchargement de fichiers. Il permet en général un gain de +vitesse d'environ 200 ŕ 300%. Il supporte les protocoles FTP et HTTP, et la +théorie derričre est trčs simple: le programme ouvre plusieurs connexions au +serveur, et chacune télécharge une partie du fichier, ce qui permet de combattre +les méthodes de prévention des congestions d'internet qui ralentissent les +téléchargement basés sur une seule connexion. + +%prep +rm -rf $RPM_BUILD_ROOT/%{name}-%{version} + +%setup -n %{name}-%{version} +CFLAGS="$RPM_OPT_FLAGS -static" CXXFLAGS="$RPM_OPT_FLAGS -static" ./configure --prefix=%{prefix} --sysconfdir=/etc + + + +%build +make + +%install +make prefix=$RPM_BUILD_ROOT%{prefix} install + + +# Mandrake Menu entry +mkdir -p $RPM_BUILD_ROOT%{_menudir} +cat < $RPM_BUILD_ROOT%{_menudir}/%{name} +?package(%{name}): \ +needs="x11" \ +section="Networking/File transfer" \ +title="ProzGUI" \ +longtitle="ProzGUI" \ +command="%{_bindir}/prozgui" \ +icon="%{name}.xpm" +EOF + +mkdir -p $RPM_BUILD_ROOT%{_miconsdir} $RPM_BUILD_ROOT%{_liconsdir} $RPM_BUILD_ROOT%{_iconsdir} + + +%post +%{update_menus} + +%postun +%{clean_menus} + + +%clean +rm -rf $RPM_BUILD_ROOT +rm -rf $RPM_BUILD_DIR/%{name}-%{version} + +%files +%{prefix}/bin/prozgui +%{prefix}/include/prozilla* +%{prefix}/lib/libprozilla* +%{prefix}/share/locale/*/LC_MESSAGES/* +%{prefix}/man/man1/prozgui* +%doc COPYING +%doc ChangeLog +%doc CREDITS* +%doc INSTALL +%doc README +%doc TODO +%doc docs/FAQ +%doc libprozilla/docs/HACKING + + +%changelog +* Mon Dec 3 2001 Eric Lassauge +- Added french translation + +* Thu Sep 27 2001 Grendel +- This spec file created for making statically linked RPM's + +* Sun Sep 23 2001 Ralph Slooten +- ProzGUI 2.0.4beta released +- GUI improvements +- FTP search +- Download from several servers + +* Wed Aug 29 2001 Ralph Slooten +- ProzGUI 2.0.2 released +- GUI improvements +- Man page included + +* Thu Aug 23 2001 Ralph Slooten +- ProzGUI 2.0.0 released! + +* Wed Aug 01 2001 Ralph Slooten +- RPM created for libprozilla / prozgui +- Created Mandrake Menu-entries + diff --git a/prozgui.spec b/prozgui.spec new file mode 100644 index 0000000..3f9f3d8 --- /dev/null +++ b/prozgui.spec @@ -0,0 +1,95 @@ +%define name prozgui +%define version 2.0.5beta +%define release 1 +%define prefix /usr + +Summary: An GUI advanced Linux download manager +Summary(fr): Un gestionnaire graphique de téléchargement avancé pour Linux +Name: %{name} +Version: %{version} +Release: %{release} +Copyright: GNU +Group: Applications/Internet +Source0: %{name}-%{version}.tar.gz +Source1: prozgui.desktop.bz2 +Url: http://prozilla.delrom.ro/ +Packager: Ralph Slooten +BuildRoot: /var/tmp/%{name}-%{version}-root +Icon: %{name}48.xpm +BuildRequires: fltk-devel +Requires: fltk +Distribution: Build for Redhat 7.0 + +%description +This is the GUI version of Prozilla. It uses libprozilla and the GUI is +created and designed with The Fast Light Tool Kit (fltk). + +ProZilla is a download accellerator program written for Linux to speed up the +normal file download process. It often gives speed increases of around 200% to +300%. It supports both FTP and HTTP protocols, and the theory behind it is +very simple. The program opens multiple connections to a server, and each of +the connections downloads a part of the file, thus defeating existing internet +congestion prevention methods which slow down a single connection based download. + +%description -l fr +Ce programme est la version IHM de Prozilla. Il utilise libprozilla et l'IHM +est créé et géré avec les widgets FLTK (The Fast Light Tool Kit). + +Prozilla est un accélérateur de téléchargement écris pour Linux pour accélérer +le processus de téléchargement de fichiers. Il permet en général un gain de +vitesse d'environ 200 ŕ 300%. Il supporte les protocoles FTP et HTTP, et la +théorie derričre est trčs simple: le programme ouvre plusieurs connexions au +serveur, et chacune télécharge une partie du fichier, ce qui permet de combattre +les méthodes de prévention des congestions d'internet qui ralentissent les +téléchargement basés sur une seule connexion. + +%prep +rm -rf $RPM_BUILD_ROOT/ + +%setup -n %{name}-%{version} +CXXFLAGS="$RPM_OPT_FLAGS" CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{prefix} + +%build +make + +%install +make prefix=$RPM_BUILD_ROOT%{prefix} install + + +# Mandrake Menu entry +mkdir -p $RPM_BUILD_ROOT/etc/X11/applnk/Internet +mkdir -p $RPM_BUILD_ROOT/usr/share/pixmaps + + +bzcat %{SOURCE1} > $RPM_BUILD_ROOT/etc/X11/applnk/Internet/%{name}.desktop +cp src/images/Pz12.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/prozgui.xpm + + +%clean +rm -rf $RPM_BUILD_ROOT +rm -rf $RPM_BUILD_DIR/* + +%files +%{prefix}/bin/prozgui +%{prefix}/include/prozilla* +%{prefix}/lib/libprozilla* +%{prefix}/share/locale/*/*/* +%{prefix}/man/man1/prozgui* +%doc COPYING +%doc ChangeLog +%doc CREDITS* +%doc INSTALL +%doc README +%doc TODO +%doc docs/FAQ +%doc libprozilla/docs/HACKING +/etc/X11/applnk/Internet/* +%{prefix}/share/pixmaps/* + + +%changelog +* Mon Dec 3 2001 Eric Lassauge +- Added french translation +* Mon Aug 08 2001 Ralph Slooten +- RPM created for libprozilla / prozgui +- Created Mandrake Menu-entries diff --git a/src/BigProZilla01.xpm b/src/BigProZilla01.xpm new file mode 100644 index 0000000..e2c219a --- /dev/null +++ b/src/BigProZilla01.xpm @@ -0,0 +1,3496 @@ +/* XPM */ +static char * BigProZilla01_xpm[] = { +"130 130 3363 2", +" c None", +". c #838C83", +"+ c #858C84", +"@ c #868E84", +"# c #868D84", +"$ c #878E86", +"% c #898E86", +"& c #888D86", +"* c #8A8F86", +"= c #8A8E86", +"- c #8A8E87", +"; c #8C8E87", +"> c #8C8F87", +", c #8C8E88", +"' c #8A8D86", +") c #8B8D87", +"! c #8B8D86", +"~ c #8C8F88", +"{ c #8B8E88", +"] c #8B8E87", +"^ c #8B8F88", +"/ c #8A8F88", +"( c #8C8F89", +"_ c #8B8F89", +": c #8B8F8A", +"< c #8C8E8A", +"[ c #8A8F89", +"} c #8B8E89", +"| c #8A8E89", +"1 c #8A8E88", +"2 c #898E88", +"3 c #898F88", +"4 c #888E88", +"5 c #888D88", +"6 c #878E88", +"7 c #868D88", +"8 c #878D88", +"9 c #868C88", +"0 c #858C87", +"a c #848C88", +"b c #848C87", +"c c #848C86", +"d c #838B86", +"e c #828B86", +"f c #828A86", +"g c #808A86", +"h c #7F8A86", +"i c #7E8986", +"j c #7E8985", +"k c #7E8A85", +"l c #808A87", +"m c #818A86", +"n c #828B87", +"o c #828C87", +"p c #828C88", +"q c #838C87", +"r c #848D88", +"s c #848E88", +"t c #868D89", +"u c #868E89", +"v c #868E88", +"w c #878F8A", +"x c #878E8B", +"y c #868E8B", +"z c #858D8A", +"A c #838C8B", +"B c #828B88", +"C c #7E8783", +"D c #899189", +"E c #8A9289", +"F c #8B928A", +"G c #8B9189", +"H c #8C918A", +"I c #8A9088", +"J c #8C9087", +"K c #8C9088", +"L c #8B9087", +"M c #8B8F87", +"N c #8B8E86", +"O c #8A8C86", +"P c #8B8C86", +"Q c #8D8E88", +"R c #8C8E89", +"S c #8C9089", +"T c #8B9089", +"U c #8B908A", +"V c #8A8E8A", +"W c #898E89", +"X c #888F89", +"Y c #888E8A", +"Z c #888E89", +"` c #878E8A", +" . c #878E89", +".. c #868E8A", +"+. c #858E89", +"@. c #848E8A", +"#. c #858E8A", +"$. c #848F8A", +"%. c #878F88", +"&. c #868F8A", +"*. c #878F89", +"=. c #888F8A", +"-. c #88908B", +";. c #888F8C", +">. c #878F8C", +",. c #868E8C", +"'. c #8A9288", +"). c #8A928A", +"!. c #8B9289", +"~. c #8C9189", +"{. c #8B8F86", +"]. c #8C8D88", +"^. c #8C8D87", +"/. c #898F8A", +"(. c #898F89", +"_. c #8A8F8A", +":. c #89908A", +"<. c #88908A", +"[. c #89908B", +"}. c #878F8B", +"|. c #87908B", +"1. c #868F8B", +"2. c #86908A", +"3. c #87908A", +"4. c #889089", +"5. c #879089", +"6. c #888F88", +"7. c #888F8B", +"8. c #88908C", +"9. c #838C88", +"0. c #899089", +"a. c #8A908A", +"b. c #8B918A", +"c. c #8C8E86", +"d. c #8B8D88", +"e. c #8B8C87", +"f. c #898B85", +"g. c #8C8C87", +"h. c #8B9088", +"i. c #898E8A", +"j. c #899088", +"k. c #888F87", +"l. c #898E87", +"m. c #898F8B", +"n. c #889088", +"o. c #8A9089", +"p. c #8A8F87", +"q. c #898B86", +"r. c #898A84", +"s. c #8A8C87", +"t. c #8D8D88", +"u. c #848580", +"v. c #8D8E89", +"w. c #898A86", +"x. c #848681", +"y. c #898D86", +"z. c #868F88", +"A. c #898F87", +"B. c #868D8A", +"C. c #858C88", +"D. c #889087", +"E. c #899087", +"F. c #8D8E87", +"G. c #898A85", +"H. c #898A82", +"I. c #868682", +"J. c #848581", +"K. c #666764", +"L. c #6E6E6D", +"M. c #848484", +"N. c #696969", +"O. c #8C8C8C", +"P. c #656565", +"Q. c #888888", +"R. c #636362", +"S. c #808080", +"T. c #868785", +"U. c #858683", +"V. c #91948F", +"W. c #888A85", +"X. c #898C87", +"Y. c #888B86", +"Z. c #888B85", +"`. c #8A8E85", +" + c #878E8C", +".+ c #898F86", +"++ c #8E8E88", +"@+ c #898984", +"#+ c #757874", +"$+ c #525350", +"%+ c #464645", +"&+ c #262626", +"*+ c #5D5D5D", +"=+ c #444444", +"-+ c #616161", +";+ c #666666", +">+ c #636363", +",+ c #747474", +"'+ c #818181", +")+ c #606060", +"!+ c #7C7C7C", +"~+ c #6F6F6F", +"{+ c #7B7B7B", +"]+ c #6D6D6D", +"^+ c #8A8A8A", +"/+ c #757575", +"(+ c #767676", +"_+ c #858585", +":+ c #7C7C7B", +"<+ c #868885", +"[+ c #828480", +"}+ c #868D87", +"|+ c #858C86", +"1+ c #848D87", +"2+ c #878C87", +"3+ c #878D87", +"4+ c #878E87", +"5+ c #878D86", +"6+ c #888E85", +"7+ c #8B8E85", +"8+ c #8A8E84", +"9+ c #8B8C84", +"0+ c #8A8C83", +"a+ c #8B8E84", +"b+ c #898E8C", +"c+ c #7C7E78", +"d+ c #494A48", +"e+ c #383838", +"f+ c #222222", +"g+ c #3D3D3D", +"h+ c #3B3B3B", +"i+ c #181818", +"j+ c #535353", +"k+ c #5A5A5A", +"l+ c #777777", +"m+ c #8D8D8D", +"n+ c #727272", +"o+ c #909090", +"p+ c #9C9C9C", +"q+ c #939393", +"r+ c #828282", +"s+ c #959595", +"t+ c #8F8F8F", +"u+ c #979797", +"v+ c #989898", +"w+ c #929292", +"x+ c #969696", +"y+ c #9B9C9A", +"z+ c #888B87", +"A+ c #8B8C82", +"B+ c #8A8D83", +"C+ c #8A8F84", +"D+ c #898F8C", +"E+ c #888E8C", +"F+ c #5F605C", +"G+ c #50504E", +"H+ c #000000", +"I+ c #131313", +"J+ c #1F1F1F", +"K+ c #363636", +"L+ c #2E2E2E", +"M+ c #101010", +"N+ c #555555", +"O+ c #353535", +"P+ c #393939", +"Q+ c #333333", +"R+ c #2B2B2B", +"S+ c #272727", +"T+ c #141414", +"U+ c #4D4D4D", +"V+ c #7E7E7E", +"W+ c #3F3F3F", +"X+ c #585858", +"Y+ c #8E8E8E", +"Z+ c #797979", +"`+ c #7A7A7A", +" @ c #8E908C", +".@ c #858E88", +"+@ c #858D86", +"@@ c #868C86", +"#@ c #868C87", +"$@ c #888C86", +"%@ c #8A9085", +"&@ c #8C8F86", +"*@ c #868982", +"=@ c #545652", +"-@ c #3E3E3D", +";@ c #050505", +">@ c #0D0D0D", +",@ c #323232", +"'@ c #202020", +")@ c #3C3C3C", +"!@ c #4E4E4E", +"~@ c #474747", +"{@ c #4A4A4A", +"]@ c #525252", +"^@ c #3E3E3E", +"/@ c #6C6C6C", +"(@ c #5F5F5F", +"_@ c #424242", +":@ c #5E5E5E", +"<@ c #404040", +"[@ c #717171", +"}@ c #949694", +"|@ c #888E87", +"1@ c #888E8B", +"2@ c #8B8F84", +"3@ c #8C9086", +"4@ c #898C85", +"5@ c #595B57", +"6@ c #121212", +"7@ c #1A1A1A", +"8@ c #1C1C1C", +"9@ c #313131", +"0@ c #2C2C2C", +"a@ c #070707", +"b@ c #212121", +"c@ c #373737", +"d@ c #3A3A3A", +"e@ c #0C0C0C", +"f@ c #4C4C4C", +"g@ c #4F4F4F", +"h@ c #6E6E6E", +"i@ c #5B5B5B", +"j@ c #787878", +"k@ c #6A6A6A", +"l@ c #626262", +"m@ c #868686", +"n@ c #6B6B6B", +"o@ c #8B8B8B", +"p@ c #7E807C", +"q@ c #8C8E84", +"r@ c #8C9085", +"s@ c #8D9086", +"t@ c #8A8D85", +"u@ c #7F827C", +"v@ c #363836", +"w@ c #0A0A0A", +"x@ c #171717", +"y@ c #161616", +"z@ c #080808", +"A@ c #292929", +"B@ c #1B1B1B", +"C@ c #494949", +"D@ c #5C5C5C", +"E@ c #343434", +"F@ c #454545", +"G@ c #7F7F7F", +"H@ c #9E9E9E", +"I@ c #949792", +"J@ c #89908C", +"K@ c #8B9086", +"L@ c #656863", +"M@ c #0D0E0D", +"N@ c #1E1E1E", +"O@ c #434343", +"P@ c #242424", +"Q@ c #2A2A2A", +"R@ c #464646", +"S@ c #737373", +"T@ c #7D7D7D", +"U@ c #8A8C82", +"V@ c #8C8F84", +"W@ c #8A8F85", +"X@ c #585955", +"Y@ c #545454", +"Z@ c #707070", +"`@ c #646464", +" # c #505050", +".# c #878787", +"+# c #9A9A9A", +"@# c #A3A3A3", +"## c #8D908A", +"$# c #858D88", +"%# c #858D87", +"&# c #878D89", +"*# c #888B82", +"=# c #696A66", +"-# c #2D2D2D", +";# c #303030", +"># c #111111", +",# c #232323", +"'# c #414141", +")# c #2F2F2F", +"!# c #575757", +"~# c #7E7F7E", +"{# c #898B80", +"]# c #8D8F84", +"^# c #8D9084", +"/# c #8B8D84", +"(# c #0F0F0F", +"_# c #282828", +":# c #676767", +"<# c #191919", +"[# c #4B4B4B", +"}# c #898D88", +"|# c #878C88", +"1# c #888A7E", +"2# c #8D8E84", +"3# c #8D9085", +"4# c #8D8F86", +"5# c #8D8F88", +"6# c #8B8C85", +"7# c #222220", +"8# c #686868", +"9# c #949494", +"0# c #787978", +"a# c #878B85", +"b# c #868E87", +"c# c #86877B", +"d# c #8E8F85", +"e# c #8D8F87", +"f# c #585A56", +"g# c #1D1D1D", +"h# c #484848", +"i# c #515151", +"j# c #252525", +"k# c #151515", +"l# c #0E0E0E", +"m# c #7B7C7B", +"n# c #888C87", +"o# c #888D87", +"p# c #888D82", +"q# c #8A8C85", +"r# c #141413", +"s# c #898989", +"t# c #838383", +"u# c #767876", +"v# c #8D9088", +"w# c #6E6F6A", +"x# c #7E807E", +"y# c #8A8D87", +"z# c #8D9087", +"A# c #444544", +"B# c #565656", +"C# c #575452", +"D# c #564A47", +"E# c #4E423D", +"F# c #6A6261", +"G# c #535251", +"H# c #595959", +"I# c #AAAAAA", +"J# c #474847", +"K# c #8A8D89", +"L# c #898D84", +"M# c #767872", +"N# c #232020", +"O# c #5F3D2C", +"P# c #5C2412", +"Q# c #A98C76", +"R# c #8A725E", +"S# c #675042", +"T# c #5E3028", +"U# c #402920", +"V# c #383030", +"W# c #7F807F", +"X# c #747673", +"Y# c #868A86", +"Z# c #8C8F8A", +"`# c #8A8D84", +" $ c #3A3B39", +".$ c #5E4C4C", +"+$ c #795A51", +"@$ c #825846", +"#$ c #A57B66", +"$$ c #C0A288", +"%$ c #BEA78C", +"&$ c #8D7A65", +"*$ c #796554", +"=$ c #8A7771", +"-$ c #A39A95", +";$ c #4C2923", +">$ c #706160", +",$ c #3A393A", +"'$ c #9B9B9B", +")$ c #9D9D9D", +"!$ c #5B5C5B", +"~$ c #7A7E7A", +"{$ c #878D8A", +"]$ c #898D83", +"^$ c #888C85", +"/$ c #8E605A", +"($ c #C27C64", +"_$ c #BF9377", +":$ c #BD9F83", +"<$ c #C1AA8F", +"[$ c #766655", +"}$ c #85715D", +"|$ c #AA9C8E", +"1$ c #E3D9CE", +"2$ c #AE9C90", +"3$ c #3B180E", +"4$ c #401D1B", +"5$ c #584136", +"6$ c #403E3C", +"7$ c #7C807C", +"8$ c #898D87", +"9$ c #898D89", +"0$ c #878C83", +"a$ c #70726D", +"b$ c #98564A", +"c$ c #BC7C62", +"d$ c #BE997C", +"e$ c #BEA488", +"f$ c #AE9A81", +"g$ c #867260", +"h$ c #7E6856", +"i$ c #3A2926", +"j$ c #867A68", +"k$ c #482E27", +"l$ c #594132", +"m$ c #674C3F", +"n$ c #755B49", +"o$ c #3F2829", +"p$ c #362320", +"q$ c #A0A0A0", +"r$ c #919191", +"s$ c #8E8F8E", +"t$ c #878B83", +"u$ c #373936", +"v$ c #727271", +"w$ c #130E0E", +"x$ c #754434", +"y$ c #9A593B", +"z$ c #CE9D81", +"A$ c #C0A68A", +"B$ c #8E7A66", +"C$ c #867160", +"D$ c #725645", +"E$ c #3C2919", +"F$ c #2E221E", +"G$ c #5D4439", +"H$ c #735947", +"I$ c #806752", +"J$ c #A17E60", +"K$ c #391C15", +"L$ c #320A07", +"M$ c #5F5552", +"N$ c #A6A6A6", +"O$ c #8A8D88", +"P$ c #898C84", +"Q$ c #0F0F0E", +"R$ c #0B0B0B", +"S$ c #443937", +"T$ c #9B6049", +"U$ c #AD856B", +"V$ c #86705F", +"W$ c #6E5340", +"X$ c #523A2C", +"Y$ c #543C33", +"Z$ c #654C3E", +"`$ c #785E4B", +" % c #927760", +".% c #C9A68A", +"+% c #D2A688", +"@% c #B37F5D", +"#% c #4F1E0B", +"$% c #3C1405", +"%% c #342C29", +"&% c #A5A5A5", +"*% c #878B86", +"=% c #898C88", +"-% c #8B8D85", +";% c #7B7E78", +">% c #2A1C1C", +",% c #905746", +"'% c #966551", +")% c #6F4F3E", +"!% c #60473E", +"~% c #5A4036", +"{% c #866D55", +"]% c #9C8069", +"^% c #DCB4A1", +"/% c #D4A694", +"(% c #B7846C", +"_% c #9B5E42", +":% c #965A3E", +"<% c #58382F", +"[% c #522E16", +"}% c #5A5C5A", +"|% c #8E918D", +"1% c #8E8F87", +"2% c #8E9088", +"3% c #3C3D3A", +"4% c #3A302E", +"5% c #775644", +"6% c #9F6E5D", +"7% c #AD8570", +"8% c #B7957D", +"9% c #C69784", +"0% c #C48F7F", +"a% c #AC725F", +"b% c #A05F4C", +"c% c #8C4F3D", +"d% c #4E3223", +"e% c #787676", +"f% c #7B7F79", +"g% c #8A8C88", +"h% c #8B8D89", +"i% c #8C8D85", +"j% c #2F2F2E", +"k% c #3E3636", +"l% c #5C4C45", +"m% c #796359", +"n% c #6E4B3A", +"o% c #816155", +"p% c #7D5445", +"q% c #582E20", +"r% c #726665", +"s% c #8C8D86", +"t% c #757872", +"u% c #7A7C78", +"v% c #8B8C88", +"w% c #8D8D86", +"x% c #454543", +"y% c #818280", +"z% c #121312", +"A% c #787977", +"B% c #808280", +"C% c #363634", +"D% c #6C6E6B", +"E% c #82847E", +"F% c #676866", +"G% c #8D8E86", +"H% c #4B4C49", +"I% c #828280", +"J% c #82837C", +"K% c #303130", +"L% c #A9A9A9", +"M% c #999999", +"N% c #858782", +"O% c #3F423D", +"P% c #ACACAC", +"Q% c #BCBCBC", +"R% c #AEAEAE", +"S% c #ACAEAE", +"T% c #B7B8B8", +"U% c #BDBDBD", +"V% c #A7A7A7", +"W% c #B1B1B1", +"X% c #A2A2A2", +"Y% c #82847F", +"Z% c #767675", +"`% c #8C8D8B", +" & c #92938E", +".& c #9E9D9A", +"+& c #A3A29E", +"@& c #B0AEAB", +"#& c #BDBEBB", +"$& c #CED6D4", +"%& c #CFD8D6", +"&& c #BCBDBB", +"*& c #DCF1F2", +"=& c #D8EEEF", +"-& c #BCC9C8", +";& c #A8ADAB", +">& c #ACADAA", +",& c #BAC5C5", +"'& c #B8BCBC", +")& c #B0B0B0", +"!& c #B6B6B6", +"~& c #5C5C5A", +"{& c #8C8C88", +"]& c #9E9E9B", +"^& c #9A9A97", +"/& c #9E9E9A", +"(& c #A5A4A0", +"_& c #B0AEAA", +":& c #BCB8B4", +"<& c #C9C6C1", +"[& c #D0CDC8", +"}& c #D5D3CD", +"|& c #D5D4CE", +"1& c #D9DED9", +"2& c #B1B2AE", +"3& c #A8AAA5", +"4& c #A2A4A0", +"5& c #DBF7F7", +"6& c #CCE2E0", +"7& c #A9ACA9", +"8& c #A4A4A4", +"9& c #A3A5A2", +"0& c #A8A9A6", +"a& c #AEACA8", +"b& c #B5B3AE", +"c& c #BDBBB6", +"d& c #C7C5BE", +"e& c #D3D1C8", +"f& c #DAD9CE", +"g& c #DEDDD3", +"h& c #DFE0D5", +"i& c #DCDED4", +"j& c #D2D4CE", +"k& c #C6C8C3", +"l& c #BDC0BB", +"m& c #B6BAB4", +"n& c #D8ECEA", +"o& c #DFF8F6", +"p& c #A4ABA6", +"q& c #949790", +"r& c #D4F0F0", +"s& c #D0E0E0", +"t& c #B6BBBB", +"u& c #C4C4C4", +"v& c #C0C0C0", +"w& c #B7B7B7", +"x& c #7D7E7D", +"y& c #BCC2C3", +"z& c #BABEBC", +"A& c #C0BEB9", +"B& c #CCC8C2", +"C& c #D3D1C7", +"D& c #D8D6C9", +"E& c #DEDDCD", +"F& c #E5E4D4", +"G& c #E6E6D6", +"H& c #E6E9D8", +"I& c #E6E9DA", +"J& c #E4E8DA", +"K& c #DCE0D4", +"L& c #D4D8CD", +"M& c #CCD2C8", +"N& c #CDD4CB", +"O& c #C0C5BC", +"P& c #ADB4AB", +"Q& c #A1A69E", +"R& c #939590", +"S& c #D8F8F8", +"T& c #CEE7E7", +"U& c #ACB1B0", +"V& c #ACADAD", +"W& c #BBBBBB", +"X& c #A8A8A8", +"Y& c #A1A1A1", +"Z& c #8A8B87", +"`& c #A8A9A9", +" * c #D4E6E6", +".* c #C9CBC6", +"+* c #D3D2CA", +"@* c #DDDDD0", +"#* c #E0E2D1", +"$* c #E0E2CE", +"%* c #E3E4D0", +"&* c #E6E8D4", +"** c #E9ECDA", +"=* c #EAEDDE", +"-* c #EAEEE0", +";* c #E8EEE0", +">* c #E3E9DC", +",* c #DEE4D8", +"'* c #DBE2D7", +")* c #D5DCD1", +"!* c #C4CCC0", +"~* c #B3B8AE", +"{* c #A3A79F", +"]* c #BED2D0", +"^* c #B3C5C2", +"/* c #929894", +"(* c #AFBEBB", +"_* c #CBDEDE", +":* c #B9BEBE", +"<* c #BFBFBF", +"[* c #8A8B86", +"}* c #CED6D6", +"|* c #C2C4BF", +"1* c #CACDC4", +"2* c #DADBCC", +"3* c #E2E3D2", +"4* c #E4E7D1", +"5* c #E1E5CD", +"6* c #E2E7CE", +"7* c #E4ECD5", +"8* c #E8F0DD", +"9* c #EAF1E1", +"0* c #ECF2E6", +"a* c #EDF1E6", +"b* c #EBF0E4", +"c* c #EAEEE2", +"d* c #E7ECDE", +"e* c #DBE2D3", +"f* c #C8CDC0", +"g* c #B6BAAF", +"h* c #A6A8A2", +"i* c #8E908B", +"j* c #B2C3C0", +"k* c #D8F7F7", +"l* c #CCE3E3", +"m* c #B2B8B8", +"n* c #C3C3C3", +"o* c #AFAFAF", +"p* c #BCBEB9", +"q* c #C4C7BF", +"r* c #D1D6C7", +"s* c #DCE2D0", +"t* c #E8E9D5", +"u* c #E6E9D2", +"v* c #E3E8CE", +"w* c #DFEBD0", +"x* c #E1EED8", +"y* c #E6F1DE", +"z* c #EAF4E6", +"A* c #ECF4E8", +"B* c #F3F4E8", +"C* c #F3F3E7", +"D* c #F1F2E4", +"E* c #E8EBDD", +"F* c #DCDED1", +"G* c #CCCEC3", +"H* c #BABCB6", +"I* c #ACAEA8", +"J* c #9B9C98", +"K* c #91928D", +"L* c #B1C2C0", +"M* c #CDE9E9", +"N* c #939994", +"O* c #A4A5A2", +"P* c #BFC5C5", +"Q* c #CACACA", +"R* c #949592", +"S* c #9F9F9F", +"T* c #B0B1B0", +"U* c #BFC5BC", +"V* c #CCD2C6", +"W* c #D8DED0", +"X* c #E4E8D8", +"Y* c #E8ECD8", +"Z* c #E8EDD5", +"`* c #E2EDD3", +" = c #E1EED7", +".= c #E1F2DA", +"+= c #E4F4E2", +"@= c #E8F6E7", +"#= c #F2F6E8", +"$= c #F4F6E8", +"%= c #F5F6E8", +"&= c #F2F2E4", +"*= c #E6E7DB", +"== c #DBDCD2", +"-= c #CECEC8", +";= c #BEC0BB", +">= c #B4B5B2", +",= c #9E9F9A", +"'= c #B3C4C1", +")= c #BACECC", +"!= c #939894", +"~= c #B1C2BF", +"{= c #D7F7F7", +"]= c #CDE0E0", +"^= c #B5B6B6", +"/= c #888886", +"(= c #B5B5B5", +"_= c #C6C6C6", +":= c #C7CEC9", +"<= c #D8E6DC", +"[= c #D4DDD0", +"}= c #DEE7D9", +"|= c #E2ECDD", +"1= c #E7EEE0", +"2= c #E3EEDE", +"3= c #E1EEDB", +"4= c #E0F1DB", +"5= c #E2F4E0", +"6= c #E5F7E3", +"7= c #F0F8E3", +"8= c #F1F7E4", +"9= c #F4F8E6", +"0= c #F4F5E6", +"a= c #ECECE1", +"b= c #E3E4DB", +"c= c #D9DAD4", +"d= c #CDCDCA", +"e= c #C4C5C2", +"f= c #B6B7B4", +"g= c #B6BBB7", +"h= c #A6A8A3", +"i= c #9A9C96", +"j= c #8D8F89", +"k= c #B2C2C0", +"l= c #D0EAEA", +"m= c #C8CBCB", +"n= c #8C8D8C", +"o= c #B3B6B6", +"p= c #E4FAF3", +"q= c #D2D9CC", +"r= c #DBE4D7", +"s= c #DFE8DC", +"t= c #E4ECE0", +"u= c #E4EEE1", +"v= c #E0EDDE", +"w= c #DEEEDE", +"x= c #E1F2E1", +"y= c #E3F4E1", +"z= c #E6F3E0", +"A= c #E8F5E1", +"B= c #ECF7E2", +"C= c #F0F6E4", +"D= c #EFF2E4", +"E= c #EAEBE2", +"F= c #E3E4DF", +"G= c #DADBD8", +"H= c #D4D4D2", +"I= c #CFD0CE", +"J= c #C9CAC8", +"K= c #C0C2BF", +"L= c #BBBDBA", +"M= c #B6B8B4", +"N= c #B9CAC7", +"O= c #949994", +"P= c #969894", +"Q= c #BEC3C3", +"R= c #B2B2B2", +"S= c #8B8C8B", +"T= c #7C7E79", +"U= c #BFC6C2", +"V= c #C5CAC0", +"W= c #D6DDD3", +"X= c #DCE4D9", +"Y= c #DEE7DA", +"Z= c #E0E8DD", +"`= c #DCE8D9", +" - c #D9E8D8", +".- c #DCECDD", +"+- c #DFEFDE", +"@- c #E4F0DC", +"#- c #E4F1DE", +"$- c #E7F3E0", +"%- c #EBF6E4", +"&- c #EDF6E5", +"*- c #EDF2E7", +"=- c #ECEDE9", +"-- c #E6E7E5", +";- c #E1E1E0", +">- c #DCDCDB", +",- c #D8D8D7", +"'- c #D5D5D4", +")- c #D3D3D2", +"!- c #D1D2D0", +"~- c #CED0CE", +"{- c #CCCDCA", +"]- c #D5DDDC", +"^- c #B4BAB6", +"/- c #999B96", +"(- c #A0AAA6", +"_- c #D4F2F2", +":- c #AFB4B4", +"<- c #B4B4B4", +"[- c #9C9C9A", +"}- c #B2B3B2", +"|- c #B1B5AD", +"1- c #C3CAC0", +"2- c #CFD6CD", +"3- c #D4DDD3", +"4- c #D6DFD3", +"5- c #D4E2D4", +"6- c #D7E7D8", +"7- c #DCEADA", +"8- c #E1ECDA", +"9- c #E2EFDC", +"0- c #E6F2DE", +"a- c #E8F4E1", +"b- c #ECF8E5", +"c- c #ECF7E6", +"d- c #F0F4EB", +"e- c #F0F0EE", +"f- c #ECECEB", +"g- c #E8E8E8", +"h- c #E6E6E6", +"i- c #E4E4E3", +"j- c #E2E2E1", +"k- c #E0E0DE", +"l- c #DFDFDE", +"m- c #DEDEDD", +"n- c #DADBD9", +"o- c #D2D3D1", +"p- c #C1C2BE", +"q- c #C3D1CF", +"r- c #DAF8F8", +"s- c #BCBEBD", +"t- c #9B9C99", +"u- c #8D8F8A", +"v- c #8E8F8A", +"w- c #BEBEBE", +"x- c #BCC2BF", +"y- c #D6EAE5", +"z- c #E3FAF6", +"A- c #D6E4DC", +"B- c #C7CFC6", +"C- c #CAD2C8", +"D- c #CCD7CC", +"E- c #D0E0D2", +"F- c #D8E5D5", +"G- c #DEEAD8", +"H- c #E3EFDC", +"I- c #E6F4DF", +"J- c #E8F5E3", +"K- c #ECF8E6", +"L- c #EFFBEA", +"M- c #F2FAEB", +"N- c #F4F8F1", +"O- c #F6F7F5", +"P- c #F4F5F4", +"Q- c #F4F4F3", +"R- c #F2F2F2", +"S- c #EEEEEE", +"T- c #ECEDEC", +"U- c #EBEBEB", +"V- c #EAEAE9", +"W- c #E9E9E8", +"X- c #E8E8E7", +"Y- c #D5D5D2", +"Z- c #D9E3E0", +"`- c #E4FAF9", +" ; c #CEDEDD", +".; c #A7A8A3", +"+; c #A6A7A5", +"@; c #9D9E9A", +"#; c #91928E", +"$; c #90918C", +"%; c #8F908C", +"&; c #8F908B", +"*; c #8E8E89", +"=; c #B4B5B5", +"-; c #D4EBE9", +";; c #DEF9F5", +">; c #CBDBD3", +",; c #BAC1B8", +"'; c #BEC4BC", +"); c #C2CAC1", +"!; c #C9D5C9", +"~; c #D3DECE", +"{; c #DCE8D7", +"]; c #E4F1DD", +"^; c #E9F7E2", +"/; c #EBF8E5", +"(; c #EDF9E8", +"_; c #F0FBE9", +":; c #F2FDEC", +"<; c #F5FDF0", +"[; c #F9FDF6", +"}; c #FAFCFA", +"|; c #FAFAFA", +"1; c #F8F8F8", +"2; c #F6F6F6", +"3; c #F4F4F4", +"4; c #F3F3F2", +"5; c #F2F2F1", +"6; c #EFEFEE", +"7; c #E6E6E5", +"8; c #DCDCDA", +"9; c #D6DAD8", +"0; c #D0D7D4", +"a; c #BABBB6", +"b; c #B3B3AF", +"c; c #AAABA6", +"d; c #A4A59E", +"e; c #A0A09B", +"f; c #9C9D98", +"g; c #989893", +"h; c #959691", +"i; c #92948F", +"j; c #C2C7C7", +"k; c #D9F6F4", +"l; c #C2D4CE", +"m; c #ADB3AB", +"n; c #B3B9B2", +"o; c #B9C0B8", +"p; c #C4CCC3", +"q; c #D0D9CA", +"r; c #D9E6D5", +"s; c #E4F0DD", +"t; c #ECF8E4", +"u; c #EDF9E7", +"v; c #ECF9E7", +"w; c #EDF8E6", +"x; c #F0FBE8", +"y; c #F4FDEC", +"z; c #F8FEF2", +"A; c #FBFEF8", +"B; c #FBFCFA", +"C; c #FAFBFA", +"D; c #FAFAF9", +"E; c #F6F6F5", +"F; c #F2F3F2", +"G; c #ECECEC", +"H; c #D7D8D5", +"I; c #CBCCC8", +"J; c #C1C2BD", +"K; c #BEBFBA", +"L; c #BDBDB7", +"M; c #BABAB4", +"N; c #B6B6B0", +"O; c #B2B2AB", +"P; c #AAAAA3", +"Q; c #A2A19C", +"R; c #9D9E98", +"S; c #92928E", +"T; c #CEDCDC", +"U; c #BBCCC8", +"V; c #A4A8A2", +"W; c #ACB1AB", +"X; c #B5BAB3", +"Y; c #C0C7BF", +"Z; c #CFD6CA", +"`; c #D8E3D3", +" > c #E3EDDB", +".> c #EBF5E2", +"+> c #EAF8E8", +"@> c #EAF7E5", +"#> c #EAF6E4", +"$> c #F6FEEF", +"%> c #FBFEF5", +"&> c #FCFEF9", +"*> c #FCFDFA", +"=> c #FCFCFA", +"-> c #F9FAF9", +";> c #F0F0F0", +">> c #E0E0E0", +",> c #D6D6D4", +"'> c #CECFCC", +")> c #CBCBC8", +"!> c #CBCCC6", +"~> c #CCCDC6", +"{> c #CCCDC5", +"]> c #CBCBC4", +"^> c #C5C4BE", +"/> c #BCBBB4", +"(> c #B1B0AA", +"_> c #A7A6A0", +":> c #9B9C95", +"<> c #969690", +"[> c #8F908A", +"}> c #8E908A", +"|> c #989999", +"1> c #AEB6B3", +"2> c #9CA09A", +"3> c #A6ABA4", +"4> c #BEC7C2", +"5> c #D2E0DA", +"6> c #DBE9DF", +"7> c #D7E0D2", +"8> c #E0EADA", +"9> c #E6F1DF", +"0> c #E8F6E5", +"a> c #E8F8E6", +"b> c #EBF7E5", +"c> c #E7F5E2", +"d> c #F1FAEB", +"e> c #F8FDF1", +"f> c #FBFEF6", +"g> c #FDFEF9", +"h> c #FEFEFA", +"i> c #FDFEFA", +"j> c #FDFDFA", +"k> c #F5F5F4", +"l> c #E3E3E2", +"m> c #DDDDDC", +"n> c #DADAD7", +"o> c #D9D9D6", +"p> c #DADAD4", +"q> c #DBDBD4", +"r> c #DCDCD4", +"s> c #D9D8D0", +"t> c #D1D0C8", +"u> c #C5C3BC", +"v> c #B8B7B0", +"w> c #ABA9A3", +"x> c #A1A19B", +"y> c #989993", +"z> c #94948F", +"A> c #90908B", +"B> c #8E8E8A", +"C> c #B9BAB9", +"D> c #B2BFBC", +"E> c #C0D1CE", +"F> c #E0FAF8", +"G> c #E4FAF4", +"H> c #CDD6CA", +"I> c #D7DFD2", +"J> c #E1EADC", +"K> c #E5EEDF", +"L> c #E7F3E4", +"M> c #E8F3E0", +"N> c #EBF5E5", +"O> c #F1F9EA", +"P> c #F7FCF2", +"Q> c #FAFEF4", +"R> c #FCFFF7", +"S> c #FEFEF8", +"T> c #FCFEF8", +"U> c #FCFCFB", +"V> c #FAFBF9", +"W> c #F6F6F4", +"X> c #F1F1F0", +"Y> c #ECEDEB", +"Z> c #E6E6E4", +"`> c #E5E5E3", +" , c #E5E5E2", +"., c #E6E6E1", +"+, c #E7E7E0", +"@, c #E4E4DC", +"#, c #DEDED6", +"$, c #D6D5CD", +"%, c #CDCAC3", +"&, c #BDBBB4", +"*, c #B1AFA9", +"=, c #A6A6A0", +"-, c #9E9E98", +";, c #C6CBCA", +">, c #D9F5F3", +",, c #DFFAF8", +"', c #DEF2EC", +"), c #CAD0C5", +"!, c #D9DED5", +"~, c #E2E8DF", +"{, c #E7EDE4", +"], c #E9F2E6", +"^, c #E8F4E4", +"/, c #E9F5E4", +"(, c #EAF5E4", +"_, c #E6F2E1", +":, c #EBF5E6", +"<, c #F2FAEE", +"[, c #FCFEF5", +"}, c #FEFFF7", +"|, c #FEFFF6", +"1, c #FEFEF3", +"2, c #FEFEF4", +"3, c #FDFDF9", +"4, c #FCFCF9", +"5, c #F8F8F6", +"6, c #F5F5F2", +"7, c #F1F2EF", +"8, c #EFF0EE", +"9, c #EFEFEC", +"0, c #EEEFEB", +"a, c #EDEDE7", +"b, c #EAEAE4", +"c, c #E8E8DF", +"d, c #E3E3DA", +"e, c #DDDBD4", +"f, c #D0CEC7", +"g, c #C3C0BA", +"h, c #B6B4AE", +"i, c #ABAAA5", +"j, c #9C9B97", +"k, c #969691", +"l, c #BCC5C4", +"m, c #DCF8F6", +"n, c #C8D3CC", +"o, c #C8CBC2", +"p, c #D7DAD3", +"q, c #E1E3DD", +"r, c #E8EAE4", +"s, c #EAEEE6", +"t, c #EBF2E7", +"u, c #EAF5E6", +"v, c #EAF5E3", +"w, c #E8F2E2", +"x, c #E9F2E4", +"y, c #EEF7EA", +"z, c #F6FBEE", +"A, c #FAFDF3", +"B, c #FDFEF6", +"C, c #FFFFF4", +"D, c #FFFFF2", +"E, c #FFFFF3", +"F, c #FEFEF7", +"G, c #FCFCF8", +"H, c #FAFAF6", +"I, c #F7F7F4", +"J, c #F5F5F1", +"K, c #F2F2EE", +"L, c #F0F0EB", +"M, c #EEEEE8", +"N, c #ECECE6", +"O, c #E9E9E0", +"P, c #E6E6DC", +"Q, c #DCD9D2", +"R, c #D2CFC8", +"S, c #C4C2BB", +"T, c #B8B6AF", +"U, c #ACAAA6", +"V, c #A5A39E", +"W, c #A09F9B", +"X, c #9A9A95", +"Y, c #959690", +"Z, c #C8D2D2", +"`, c #B0B1A8", +" ' c #C2C3B8", +".' c #CECFC6", +"+' c #E2E4DE", +"@' c #ECEEE7", +"#' c #EDF3E8", +"$' c #EEF6E8", +"%' c #EDF6E7", +"&' c #ECF4E6", +"*' c #E9F3E3", +"=' c #F0F8E8", +"-' c #F6FBEF", +";' c #FEFEF5", +">' c #FFFFF1", +",' c #FFFFF6", +"'' c #FEFEF9", +")' c #FAFAF8", +"!' c #F8F8F4", +"~' c #F6F6F0", +"{' c #F2F3ED", +"]' c #F1F1EA", +"^' c #EFEFE9", +"/' c #ECECE4", +"(' c #EAEAE0", +"_' c #E3E0D8", +":' c #D9D8CE", +"<' c #CDCAC4", +"[' c #C1BEB8", +"}' c #B5B4AE", +"|' c #AEACA7", +"1' c #AAA9A4", +"2' c #A6A4A0", +"3' c #9F9F9A", +"4' c #9A9994", +"5' c #92948E", +"6' c #A3A49F", +"7' c #B2B4A8", +"8' c #D0D1C7", +"9' c #DCDCD6", +"0' c #ECF1EC", +"a' c #EDF0EA", +"b' c #EEF0E9", +"c' c #F2F4ED", +"d' c #F3F6EE", +"e' c #F2F6EE", +"f' c #EEF6EA", +"g' c #ECF4E5", +"h' c #EDF6E6", +"i' c #F2F8EA", +"j' c #F6FAEE", +"k' c #FBFCF0", +"l' c #FEFEF0", +"m' c #FEFEF1", +"n' c #FFFFF0", +"o' c #FFFFEF", +"p' c #FDFDFB", +"q' c #F6F6F2", +"r' c #F5F5EE", +"s' c #F3F3EC", +"t' c #F0F0E8", +"u' c #EEEEE6", +"v' c #EAE9E0", +"w' c #E2E1D8", +"x' c #CBCAC3", +"y' c #C1C0BA", +"z' c #B8B6B2", +"A' c #B2B2AC", +"B' c #B0B0AA", +"C' c #AEADA8", +"D' c #A7A7A1", +"E' c #A0A09C", +"F' c #9B9C96", +"G' c #989892", +"H' c #949590", +"I' c #90928C", +"J' c #BCC1BE", +"K' c #E2F9F6", +"L' c #E8FBF7", +"M' c #EEFCF8", +"N' c #F2FDF9", +"O' c #EEF2EE", +"P' c #ECECE7", +"Q' c #F1F1EC", +"R' c #F4F4F1", +"S' c #F6F6F3", +"T' c #F4F7F0", +"U' c #F0F6EB", +"V' c #EEF5E6", +"W' c #EEF6E6", +"X' c #F1F7E8", +"Y' c #F8F9EA", +"Z' c #FBFAEB", +"`' c #FCFCEC", +" ) c #FEFDED", +".) c #FEFEED", +"+) c #FEFFEE", +"@) c #FBFBF8", +"#) c #F9F9F6", +"$) c #F8F8F3", +"%) c #F4F4EC", +"&) c #F2F2EA", +"*) c #EFEEE5", +"=) c #E8E8E0", +"-) c #E0DFD6", +";) c #D6D6CD", +">) c #CECDC5", +",) c #C6C5BE", +"') c #C0BFBA", +")) c #BEBCB7", +"!) c #BFBDB7", +"~) c #BABAB2", +"{) c #A2A49E", +"]) c #9C9C98", +"^) c #969893", +"/) c #929490", +"() c #90928D", +"_) c #8F918C", +":) c #C2D0CE", +"<) c #E2F9F7", +"[) c #E8FBF6", +"}) c #EEFCF9", +"|) c #EAF0EC", +"1) c #E8E8E4", +"2) c #EEEEEB", +"3) c #F4F7EE", +"4) c #F1F6EA", +"5) c #EEF5E3", +"6) c #EEF6E2", +"7) c #EEF6E5", +"8) c #F2F7E6", +"9) c #F5F9E8", +"0) c #F9FAEA", +"a) c #FBFBEA", +"b) c #FDFDEC", +"c) c #FEFEEC", +"d) c #FFFFF9", +"e) c #FEFEFB", +"f) c #F9F9F3", +"g) c #F6F7EE", +"h) c #F5F5ED", +"i) c #F4F4EA", +"j) c #F0F0E7", +"k) c #E0E0D8", +"l) c #DADAD1", +"m) c #D4D4CB", +"n) c #CFCFC6", +"o) c #CDCDC5", +"p) c #CFCEC6", +"q) c #CDCCC4", +"r) c #C7C6BE", +"s) c #C0C0BA", +"t) c #B3B4AE", +"u) c #A8A8A3", +"v) c #9DA09A", +"w) c #9A9B96", +"x) c #969993", +"y) c #949690", +"z) c #8F918B", +"A) c #8C908A", +"B) c #8C908B", +"C) c #D3DDDD", +"D) c #E0F6F4", +"E) c #E8FBF8", +"F) c #D8DAD6", +"G) c #E3E4DD", +"H) c #E9EAE6", +"I) c #EEEEEC", +"J) c #F4F6F0", +"K) c #F2F7EC", +"L) c #F0F6E6", +"M) c #ECF5E5", +"N) c #ECF6E4", +"O) c #EDF6E3", +"P) c #F0F8E5", +"Q) c #F2F8E6", +"R) c #F6FAE8", +"S) c #FAFBEA", +"T) c #FCFCEB", +"U) c #FFFFF7", +"V) c #FCFCF7", +"W) c #FAFBF6", +"X) c #F8F8F1", +"Y) c #F7F7EE", +"Z) c #F6F6ED", +"`) c #EBEBE3", +" ! c #E5E5DD", +".! c #E2E1DA", +"+! c #DDDCD4", +"@! c #DCDCD2", +"#! c #DCDAD1", +"$! c #D8D8D0", +"%! c #D4D4CC", +"&! c #C7C7C0", +"*! c #B8BAB3", +"=! c #AEAFA9", +"-! c #A7A8A2", +";! c #A1A29D", +">! c #9B9D96", +",! c #989A94", +"'! c #90938C", +")! c #8E918C", +"!! c #BEC2C1", +"~! c #D2E2E1", +"{! c #C5C7BF", +"]! c #D3D4CC", +"^! c #DEDFDA", +"/! c #E4E4E2", +"(! c #EBEBEA", +"_! c #F5F5F3", +":! c #F6F7F4", +"~ c #D0D0D0", +",~ c #C7D1CE", +"'~ c #E5FAF3", +")~ c #ECFCF6", +"!~ c #F0FCFA", +"~~ c #E8EAE8", +"{~ c #ECECEA", +"]~ c #F6F7F6", +"^~ c #F8F9F7", +"/~ c #F8F9F4", +"(~ c #F4F8ED", +"_~ c #F0F4E5", +":~ c #EFF3E0", +"<~ c #F1F2DF", +"[~ c #F0F2DE", +"}~ c #F4F3DF", +"|~ c #F4F4DF", +"1~ c #F6F4E0", +"2~ c #F7F6E2", +"3~ c #FAF8E4", +"4~ c #FAF9E6", +"5~ c #FCFAE8", +"6~ c #FCFCEF", +"7~ c #FCFCF4", +"8~ c #FAFBF5", +"9~ c #F8F8F0", +"0~ c #F4F5EE", +"a~ c #F2F2ED", +"b~ c #F0F0E9", +"c~ c #E7E7DF", +"d~ c #E0E0D9", +"e~ c #D9DAD3", +"f~ c #D4D4CE", +"g~ c #D1D1C9", +"h~ c #CACCC4", +"i~ c #C4C6BD", +"j~ c #BABBB5", +"k~ c #B0B3AD", +"l~ c #A1A29C", +"m~ c #9B9E97", +"n~ c #8D908B", +"o~ c #757574", +"p~ c #474745", +"q~ c #D4D4D4", +"r~ c #C5C5C5", +"s~ c #D8E1DF", +"t~ c #E6FAF6", +"u~ c #E8F5F2", +"v~ c #DDDEDA", +"w~ c #F9F9F7", +"x~ c #F7F9F4", +"y~ c #F6F7ED", +"z~ c #F2F5E6", +"A~ c #F2F4E2", +"B~ c #F2F4DF", +"C~ c #F2F2DD", +"D~ c #F2F2DC", +"E~ c #F2F1DC", +"F~ c #F4F1DC", +"G~ c #F5F2DD", +"H~ c #F8F2DE", +"I~ c #F8F4E0", +"J~ c #FAF7E2", +"K~ c #FAF9E5", +"L~ c #FBFAEA", +"M~ c #FCFCF0", +"N~ c #FDFDF5", +"O~ c #FCFCF5", +"P~ c #FAFBF4", +"Q~ c #F7F7F1", +"R~ c #F5F5F0", +"S~ c #F4F4EE", +"T~ c #F3F3ED", +"U~ c #EFEFE7", +"V~ c #E9EAE2", +"W~ c #E4E5DE", +"X~ c #DCDCD5", +"Y~ c #D6D7CF", +"Z~ c #D1D2CB", +"`~ c #CACCC5", +" { c #C2C3BF", +".{ c #BDBEB9", +"+{ c #B8B9B4", +"@{ c #B4B6AF", +"#{ c #B2B3AC", +"${ c #ADAEA8", +"%{ c #A2A29D", +"&{ c #90938F", +"*{ c #8B8E8A", +"={ c #797976", +"-{ c #555553", +";{ c #C9C9C9", +">{ c #CACCC7", +",{ c #D6D6D2", +"'{ c #E2E2DE", +"){ c #F7F7F6", +"!{ c #F9F9F8", +"~{ c #F7F8EE", +"{{ c #F6F7EA", +"]{ c #F3F4E1", +"^{ c #F3F3DE", +"/{ c #F3F2DC", +"({ c #F3F1DC", +"_{ c #F3F0DB", +":{ c #F5EFDB", +"<{ c #F8F0DC", +"[{ c #F6F2DC", +"}{ c #F7F3DD", +"|{ c #F8F4DE", +"1{ c #F6F4DE", +"2{ c #F7F6E1", +"3{ c #F9F8E4", +"4{ c #FAFAE9", +"5{ c #FCFBEF", +"6{ c #FCFCF3", +"7{ c #E9EAE4", +"8{ c #E6E7E0", +"9{ c #E1E2DB", +"0{ c #DDDED6", +"a{ c #D4D5D2", +"b{ c #CED0CC", +"c{ c #C9CAC6", +"d{ c #C6C7BE", +"e{ c #C2C2BC", +"f{ c #B7B7B1", +"g{ c #999C96", +"h{ c #8E928C", +"i{ c #90908C", +"j{ c #444542", +"k{ c #C5C5C2", +"l{ c #DDDDD8", +"m{ c #E9E9E6", +"n{ c #F0F0ED", +"o{ c #F2F2F0", +"p{ c #F9FAF7", +"q{ c #F8F9F2", +"r{ c #F5F6E7", +"s{ c #F2F2DE", +"t{ c #F4F2DC", +"u{ c #F4EFDB", +"v{ c #F4EEDB", +"w{ c #F6EEDB", +"x{ c #F5F0DB", +"y{ c #F7F1DC", +"z{ c #F6F2DD", +"A{ c #F5F4DC", +"B{ c #F6F6DF", +"C{ c #F5F5DF", +"D{ c #F6F6E2", +"E{ c #F6F6E3", +"F{ c #F9F9EC", +"G{ c #FBFCF6", +"H{ c #F7F8F1", +"I{ c #F6F6EF", +"J{ c #F4F4EF", +"K{ c #EDEEE8", +"L{ c #E9EAE3", +"M{ c #E2E2DF", +"N{ c #DEDEDC", +"O{ c #D9DAD6", +"P{ c #D8D9D2", +"Q{ c #D8D8CF", +"R{ c #C9C8C2", +"S{ c #B9B8B3", +"T{ c #A8A9A4", +"U{ c #9C9E98", +"V{ c #949791", +"W{ c #90948F", +"X{ c #93938F", +"Y{ c #575855", +"Z{ c #CCCCCA", +"`{ c #C7C8C4", +" ] c #E7E8E4", +".] c #F0F1EC", +"+] c #F3F3EE", +"@] c #F9F9F9", +"#] c #F4F3E5", +"$] c #F2F0DB", +"%] c #F4F1DA", +"&] c #F4F0DA", +"*] c #F2ECDB", +"=] c #F6EBDA", +"-] c #F8ECDA", +";] c #F6EED9", +">] c #F7EFD9", +",] c #F6F1DA", +"'] c #F4F4DC", +")] c #F4F4DE", +"!] c #F6F5DC", +"~] c #F7F6E0", +"{] c #F8F8E8", +"]] c #FBFAF0", +"^] c #FDFCF5", +"/] c #FBFBF3", +"(] c #FAFAF2", +"_] c #F8F8F5", +":] c #F2F3F0", +"<] c #EFF0EC", +"[] c #ECEDEA", +"}] c #EAEAE7", +"|] c #E5E6E2", +"1] c #E3E4DE", +"2] c #DEDFD9", +"3] c #D4D5CC", +"4] c #C5C6BE", +"5] c #B5B6B0", +"6] c #A5A6A0", +"7] c #9B9D97", +"8] c #90938E", +"9] c #8F928D", +"0] c #989995", +"a] c #8B8B86", +"b] c #747471", +"c] c #2D2D2C", +"d] c #ABABAB", +"e] c #BDBDBC", +"f] c #C1C1BE", +"g] c #D2D2D0", +"h] c #ECECE8", +"i] c #EFF0EB", +"j] c #F0F1EA", +"k] c #F8F8EF", +"l] c #F3F3E2", +"m] c #F4F0DC", +"n] c #F5F0DA", +"o] c #F6F0DC", +"p] c #F4EDDB", +"q] c #F5ECDA", +"r] c #F5EBD9", +"s] c #F4ECD8", +"t] c #F6EFD9", +"u] c #F5F0D9", +"v] c #F3F0DA", +"w] c #F6F4DD", +"x] c #F6F5DD", +"y] c #F5F4DF", +"z] c #F6F6E4", +"A] c #FBFBF2", +"B] c #FDFDF6", +"C] c #F4F4F2", +"D] c #EFEFED", +"E] c #E8E9E4", +"F] c #E4E4DE", +"G] c #DADBD4", +"H] c #AFB1A9", +"I] c #A3A49E", +"J] c #989A95", +"K] c #959891", +"L] c #919590", +"M] c #91948E", +"N] c #8C8F8B", +"O] c #939490", +"P] c #7F807C", +"Q] c #5B5B5A", +"R] c #ADAEAA", +"S] c #CCCCC9", +"T] c #E8E8E6", +"U] c #EDEDE9", +"V] c #EFEFE8", +"W] c #F3F3F0", +"X] c #F9F9F5", +"Y] c #F8F7EC", +"Z] c #F4F3E3", +"`] c #F4EDDC", +" ^ c #F5EDDA", +".^ c #F4ECD9", +"+^ c #F3ECD8", +"@^ c #F5F2DA", +"#^ c #F3F4DD", +"$^ c #F6F5DF", +"%^ c #F6F6E0", +"&^ c #F6F6E1", +"*^ c #F8F6E4", +"=^ c #FAF8EB", +"-^ c #FCFBF2", +";^ c #FAFBF8", +">^ c #F7F8F4", +",^ c #F3F3F1", +"'^ c #F0F1EE", +")^ c #EEEEEA", +"!^ c #EAEAE5", +"~^ c #D3D4CE", +"{^ c #C4C6BE", +"]^ c #B7B9B1", +"^^ c #ACACA5", +"/^ c #9EA19A", +"(^ c #999B95", +"_^ c #919490", +":^ c #6B6C68", +"<^ c #4D4D4B", +"[^ c #8E8F8D", +"}^ c #A2A39D", +"|^ c #C6C6C2", +"1^ c #D8D8D5", +"2^ c #E2E2E0", +"3^ c #F7F6EC", +"4^ c #F5F2E4", +"5^ c #F4EFDD", +"6^ c #F6EEDC", +"7^ c #F4EDDA", +"8^ c #F3ECD9", +"9^ c #F3ECD7", +"0^ c #F4EED8", +"a^ c #F6F2DB", +"b^ c #F4F3DC", +"c^ c #F4F3DD", +"d^ c #F5F2DE", +"e^ c #F6F5E2", +"f^ c #F8F5E3", +"g^ c #FAF8E8", +"h^ c #FCFAEF", +"i^ c #FEFDF9", +"j^ c #FDFDFC", +"k^ c #FAFAF7", +"l^ c #F8F8F7", +"m^ c #E9E9E2", +"n^ c #DADBD5", +"o^ c #CCCDC7", +"p^ c #C0C1B9", +"q^ c #B2B5AD", +"r^ c #A6A7A2", +"s^ c #A6A7A0", +"t^ c #A4A5A0", +"u^ c #A1A29E", +"v^ c #9C9F99", +"w^ c #989B95", +"x^ c #8E928D", +"y^ c #939390", +"z^ c #8B8A86", +"A^ c #80817D", +"B^ c #575755", +"C^ c #959590", +"D^ c #9E9F98", +"E^ c #ACADA7", +"F^ c #BFBFBA", +"G^ c #D0D0CE", +"H^ c #E1E1DF", +"I^ c #E7E7E4", +"J^ c #E8E9E5", +"K^ c #EBECE6", +"L^ c #EEEEED", +"M^ c #F5F6F4", +"N^ c #F8F6EC", +"O^ c #F5F2E5", +"P^ c #F2EDDE", +"Q^ c #F3EDDA", +"R^ c #F3EDD7", +"S^ c #F3EED8", +"T^ c #F5F3DE", +"U^ c #F8F6E2", +"V^ c #F9F7E5", +"W^ c #FCFAF2", +"X^ c #FDFCF6", +"Y^ c #FDFDF8", +"Z^ c #F7F7F7", +"`^ c #F4F4F0", +" / c #EEEFEA", +"./ c #C9CAC4", +"+/ c #BCBEB8", +"@/ c #B3B3AC", +"#/ c #B2B4AC", +"$/ c #B4B4AD", +"%/ c #B7B6B0", +"&/ c #BAB9B3", +"*/ c #B0B0AB", +"=/ c #A8AAA4", +"-/ c #9DA099", +";/ c #8F928E", +">/ c #8D908C", +",/ c #8C8C86", +"'/ c #888883", +")/ c #7A7A76", +"!/ c #4A4A48", +"~/ c #979894", +"{/ c #91928C", +"]/ c #9A9B95", +"^/ c #A6A7A1", +"// c #B7B8B4", +"(/ c #C8C9C6", +"_/ c #D1D2CF", +":/ c #D8D8D6", +"( c #989895", +",( c #8B8B87", +"'( c #8D8D87", +")( c #B5B5B1", +"!( c #BBBCB6", +"~( c #BEBFBB", +"{( c #C5C5C0", +"]( c #CACAC7", +"^( c #D0D1CD", +"/( c #F0F1EF", +"(( c #F8F7F0", +"_( c #F8F6E8", +":( c #F6F2E0", +"<( c #F5EEDA", +"[( c #F6F0DA", +"}( c #F7F2DB", +"|( c #F7F3DC", +"1( c #F7F5DE", +"2( c #F7F5E0", +"3( c #F5F7E2", +"4( c #F5F7E3", +"5( c #F6F8E2", +"6( c #F7F8E2", +"7( c #F6F7E4", +"8( c #F6F8E1", +"9( c #F6F5DE", +"0( c #F9F8E8", +"a( c #FBFBFA", +"b( c #F2F2EF", +"c( c #E5E6E0", +"d( c #E2E3DB", +"e( c #E2E2D8", +"f( c #E3E4D8", +"g( c #E2E3D8", +"h( c #E1E2D8", +"i( c #DEDFD4", +"j( c #DBDCD1", +"k( c #D1D2C8", +"l( c #AEB1AA", +"m( c #9EA19C", +"n( c #949892", +"o( c #8B8B88", +"p( c #8D8C88", +"q( c #ABABA6", +"r( c #B1B2AB", +"s( c #B6B7B1", +"t( c #BABAB6", +"u( c #C2C2BD", +"v( c #CCCDC8", +"w( c #E2E3E1", +"x( c #F5F6F3", +"y( c #F7F7F3", +"z( c #F8F8EE", +"A( c #F8F6E9", +"B( c #F6F4E1", +"C( c #F8F2DB", +"D( c #FBF4DC", +"E( c #F8F5DD", +"F( c #F8F6DF", +"G( c #F8F6E0", +"H( c #F7F5E1", +"I( c #F8F7E4", +"J( c #F8F7E3", +"K( c #F7F7E1", +"L( c #FDFCFA", +"M( c #FBFBF9", +"N( c #F1F1ED", +"O( c #EFF0EA", +"P( c #E7E7DC", +"Q( c #E3E4D9", +"R( c #E1E1D6", +"S( c #DADAD0", +"T( c #BEBFB7", +"U( c #ADAEA7", +"V( c #9FA19C", +"W( c #929290", +"X( c #A2A39E", +"Y( c #A9AAA3", +"Z( c #A8AAA3", +"`( c #A8A9A2", +" _ c #AAABA4", +"._ c #ADAEA9", +"+_ c #C2C3BD", +"@_ c #D0D0CB", +"#_ c #DCDCD9", +"$_ c #F0F0EC", +"%_ c #F8F7F2", +"&_ c #F6F3E1", +"*_ c #F5F1DC", +"=_ c #F7F1DB", +"-_ c #F9F4DD", +";_ c #F7F5DD", +">_ c #F7F4E1", +",_ c #F9F6E3", +"'_ c #F8F7E2", +")_ c #F9F7E4", +"!_ c #F9F7E6", +"~_ c #F9F8EA", +"{_ c #FAF9EE", +"]_ c #FBFAF2", +"^_ c #F6F7F1", +"/_ c #EEEFE6", +"(_ c #ECECE3", +"__ c #E9E9DF", +":_ c #D7D6CF", +"<_ c #B7B8B0", +"[_ c #AAACA6", +"}_ c #9FA09C", +"|_ c #979995", +"1_ c #939691", +"2_ c #8E928E", +"3_ c #989896", +"4_ c #A4A49F", +"5_ c #B7B8B2", +"6_ c #C6C6C0", +"7_ c #D4D4CF", +"8_ c #F2F3EE", +"9_ c #F4F5F0", +"0_ c #F9F8EF", +"a_ c #F7F4E2", +"b_ c #F6F1DD", +"c_ c #F7F2DD", +"d_ c #F6F4DC", +"e_ c #F8F5E0", +"f_ c #F8F5E1", +"g_ c #F9F6E2", +"h_ c #F9F8E5", +"i_ c #F9F8E6", +"j_ c #F8F7E6", +"k_ c #F8F5E4", +"l_ c #FAF8E9", +"m_ c #F9FAF6", +"n_ c #F7F7F2", +"o_ c #F5F5EF", +"p_ c #F2F2EB", +"q_ c #F1F1E8", +"r_ c #EEEFE5", +"s_ c #ECECE2", +"t_ c #E8E9DE", +"u_ c #E1E0D6", +"v_ c #D5D4CC", +"w_ c #A0A29D", +"x_ c #9A9C97", +"y_ c #949793", +"z_ c #969694", +"A_ c #91918B", +"B_ c #9B9B96", +"C_ c #9C9D97", +"D_ c #AEAEA9", +"E_ c #BEBEB7", +"F_ c #CDCEC7", +"G_ c #DCDDD6", +"H_ c #E7E7E2", +"I_ c #F9F8F3", +"J_ c #F9F8F0", +"K_ c #F9F7EC", +"L_ c #F6F2DE", +"M_ c #F7F4DD", +"N_ c #F9F6E1", +"O_ c #F8F6E1", +"P_ c #F9F7E2", +"Q_ c #F9F8E7", +"R_ c #F9F7E8", +"S_ c #F8F6E5", +"T_ c #F6F2DF", +"U_ c #F7F4DE", +"V_ c #FAF8E6", +"W_ c #FBFAEE", +"X_ c #FCFCF2", +"Y_ c #F3F3EA", +"Z_ c #F1F2E7", +"`_ c #EFEFE4", +" : c #EAE9DD", +".: c #E0E0D6", +"+: c #D4D4CA", +"@: c #C4C5BC", +"#: c #9EA09B", +"$: c #8A8B89", +"%: c #959490", +"&: c #A4A49E", +"*: c #B4B4AE", +"=: c #C6C6BF", +"-: c #D5D5CD", +";: c #E2E2DA", +">: c #E8E9E1", +",: c #ECECE5", +"': c #F9F8EC", +"): c #F6F3DD", +"!: c #F8F5DF", +"~: c #FAF8EA", +"{: c #F9F7E9", +"]: c #FAF7E6", +"^: c #F9F6E4", +"/: c #F8F4E1", +"(: c #F7F4DF", +"_: c #FCFAF0", +":: c #F7F7EF", +"<: c #F2F3EA", +"[: c #F0F0E6", +"}: c #E0E0D5", +"|: c #C3C5BC", +"1: c #B9BAB2", +"2: c #B4B5AE", +"3: c #B0B1AB", +"4: c #AEAFA8", +"5: c #A6A6A5", +"6: c #91918C", +"7: c #92928D", +"8: c #949490", +"9: c #9C9B96", +"0: c #A9AAA4", +"a: c #BEBEB8", +"b: c #CDCEC6", +"c: c #DCDCD3", +"d: c #ECEDE5", +"e: c #F3F2ED", +"f: c #F6F6F1", +"g: c #FAF9F2", +"h: c #F7F3DE", +"i: c #F8F4DF", +"j: c #F8F7E5", +"k: c #F9F8E9", +"l: c #F9F7EB", +"m: c #F9F7EA", +"n: c #FAF7E9", +"o: c #FAF6E6", +"p: c #F9F5E2", +"q: c #FAF8E7", +"r: c #FCFBF4", +"s: c #F6F6EE", +"t: c #F4F4EB", +"u: c #F2F2E8", +"v: c #DEDED2", +"w: c #B9BAB4", +"x: c #BABCB5", +"y: c #8F8F8E", +"z: c #8A8A85", +"A: c #8B8B85", +"B: c #8F8F8A", +"C: c #C5C4BD", +"D: c #DEDED4", +"E: c #E5E5DC", +"F: c #EDEDE4", +"G: c #F7F6F1", +"H: c #F9F9F0", +"I: c #F9F5E4", +"J: c #FAF7E8", +"K: c #F9F6E6", +"L: c #F8F5E2", +"M: c #F9F5E1", +"N: c #F9F4E1", +"O: c #FAF9EA", +"P: c #F9FAF5", +"Q: c #F7F7F0", +"R: c #EAEAE1", +"S: c #DEDFD6", +"T: c #D3D3CA", +"U: c #C9CAC2", +"V: c #C2C2BB", +"W: c #C3C2BC", +"X: c #8C8B87", +"Y: c #989793", +"Z: c #A6A6A1", +"`: c #BAB9B2", +" < c #CCCAC4", +".< c #DFE0D6", +"+< c #EDEDE5", +"@< c #F3F3EB", +"#< c #F5F4ED", +"$< c #FAF9F0", +"%< c #F8F4E2", +"&< c #F8F4DD", +"*< c #F9F6E0", +"=< c #F9F6EA", +"-< c #F9F6E9", +";< c #FAF5E2", +">< c #F9F7E3", +",< c #FEFEFC", +"'< c #E8E9E2", +")< c #D7D8CF", +"!< c #D2D1C8", +"~< c #D1CEC6", +"{< c #8D8D89", +"]< c #8B8A85", +"^< c #8D8C87", +"/< c #93948E", +"(< c #9E9D98", +"_< c #B0AEA9", +":< c #C3C1BB", +"<< c #D0CDC6", +"[< c #D9D7CF", +"}< c #E7E7DD", +"|< c #F9F9F1", +"1< c #F7F5E3", +"2< c #F5F3DF", +"3< c #FAF7E3", +"4< c #F9F7E7", +"5< c #F8F7EA", +"6< c #F8F8E2", +"7< c #F8F7E1", +"8< c #F9F8E2", +"9< c #F7F7E6", +"0< c #FBF9EC", +"a< c #FDFBF4", +"b< c #FEFDF8", +"c< c #F5F6F1", +"d< c #E1E0D8", +"e< c #E0DED6", +"f< c #8A8B88", +"g< c #8A8B85", +"h< c #90918B", +"i< c #969792", +"j< c #A5A49E", +"k< c #B7B5AF", +"l< c #C8C4BE", +"m< c #D2D0C9", +"n< c #DAD8D0", +"o< c #E1E1D8", +"p< c #E9E9E1", +"q< c #F3F2EA", +"r< c #F5F4EC", +"s< c #F9F8F2", +"t< c #F8F6EA", +"u< c #F8F7E9", +"v< c #FCFBF3", +"w< c #FEFCF6", +"x< c #EBEBE1", +"y< c #8D8D8B", +"z< c #8E8F89", +"A< c #C2BFBA", +"B< c #D6D4CC", +"C< c #DDDCD3", +"D< c #E8E8DE", +"E< c #EFEFE5", +"F< c #F9F8EE", +"G< c #F7F4E0", +"H< c #F8F7E8", +"I< c #F7F2E0", +"J< c #F8F3E0", +"K< c #F9F4E0", +"L< c #FAF9EB", +"M< c #93938E", +"N< c #989894", +"O< c #A2A29C", +"P< c #AEACA6", +"Q< c #BAB8B2", +"R< c #D3D0C9", +"S< c #DAD6CE", +"T< c #E1DFD6", +"U< c #E8E7DD", +"V< c #EEEEE4", +"W< c #F2F1E8", +"X< c #F8F5E5", +"Y< c #FAF6E2", +"Z< c #F7F0DF", +"`< c #F6F0DE", +" [ c #F8F1DE", +".[ c #F9F2DE", +"+[ c #F8F3DE", +"@[ c #F9F7E1", +"#[ c #FBFAEC", +"$[ c #FBFAF3", +"%[ c #8D8C86", +"&[ c #9B9A96", +"*[ c #B4B0AC", +"=[ c #C4C0BA", +"-[ c #CFCBC4", +";[ c #D9D5CE", +">[ c #E2DFD7", +",[ c #E7E5DC", +"'[ c #EAEADF", +")[ c #EEEDE2", +"![ c #F8F7EE", +"~[ c #F7F6EA", +"{[ c #F7F4E4", +"][ c #F9F2E0", +"^[ c #F8F1DF", +"/[ c #F8F0DD", +"([ c #F7F0DC", +"_[ c #F8F2DD", +":[ c #F9F5DF", +"<[ c #FDFCF3", +"[[ c #FEFDF6", +"}[ c #FEFCF4", +"|[ c #FDFBF2", +"1[ c #91918D", +"2[ c #979792", +"3[ c #A0A09A", +"4[ c #C3BFBA", +"5[ c #CFCBC5", +"6[ c #DAD7D0", +"7[ c #E2E0D6", +"8[ c #E6E4DA", +"9[ c #F4F3EB", +"0[ c #F6F6EC", +"a[ c #F7F5E9", +"b[ c #F5F5E2", +"c[ c #F8F2DF", +"d[ c #F6F0DB", +"e[ c #F7EFDB", +"f[ c #F7F0DB", +"g[ c #F8F2DC", +"h[ c #F8F3DD", +"i[ c #F8F6DE", +"j[ c #F8F6E3", +"k[ c #FAF7E7", +"l[ c #A3A19C", +"m[ c #B5B2AE", +"n[ c #C6C1BD", +"o[ c #D4CEC8", +"p[ c #DEDAD2", +"q[ c #E2DFD6", +"r[ c #E5E4DA", +"s[ c #EEEEE5", +"t[ c #F5F6EC", +"u[ c #F7F6ED", +"v[ c #F8F5EA", +"w[ c #F8F4E4", +"x[ c #F4F4E2", +"y[ c #F7F6E4", +"z[ c #F7F3E0", +"A[ c #F6EFDA", +"B[ c #F8F0DB", +"C[ c #F7F4DC", +"D[ c #F8F5DE", +"E[ c #F9F5E0", +"F[ c #F9F4DF", +"G[ c #ABABA9", +"H[ c #AAA7A2", +"I[ c #BDB8B4", +"J[ c #CBC6C0", +"K[ c #D8D3CC", +"L[ c #EDEEE5", +"M[ c #F5F5EC", +"N[ c #F7F6EF", +"O[ c #F5F6E6", +"P[ c #F5F5E3", +"Q[ c #F8F1DC", +"R[ c #F8F0DA", +"S[ c #F6EEDA", +"T[ c #F7F2DA", +"U[ c #F6F2DA", +"V[ c #F7F2DC", +"W[ c #8D8C89", +"X[ c #90908A", +"Y[ c #B4B1AC", +"Z[ c #C4BFBA", +"`[ c #D1CCC7", +" } c #D9D4CD", +".} c #DED9D2", +"+} c #E5E5DB", +"@} c #F1F1E9", +"#} c #F7F6F2", +"$} c #F7F6F0", +"%} c #F6F5E6", +"&} c #F6F5E1", +"*} c #F9F1DC", +"=} c #FAF2DF", +"-} c #F8F3DF", +";} c #F5EFDA", +">} c #FAF2DB", +",} c #F6F1DC", +"'} c #F7F7E0", +")} c #959594", +"!} c #8F8E88", +"~} c #ADAAA6", +"{} c #BCB9B4", +"]} c #CAC6C1", +"^} c #D3CEC8", +"/} c #DAD4CD", +"(} c #DDDAD2", +"_} c #F4F4ED", +":} c #F7F5E6", +"<} c #F8F4E3", +"[} c #F4EEDC", +"}} c #F8EFDB", +"|} c #F7EFDA", +"1} c #F9F1DB", +"2} c #F9F3E0", +"3} c #8E8D88", +"4} c #9D9B96", +"5} c #A9A7A2", +"6} c #B7B4AF", +"7} c #DAD6CF", +"8} c #DEDCD2", +"9} c #E1E1D7", +"0} c #F1F1EB", +"a} c #F6F5E7", +"b} c #F6F4E2", +"c} c #F8F2E0", +"d} c #F6EDD9", +"e} c #F6EDDA", +"f} c #F7EEDB", +"g} c #F8F3DC", +"h} c #F6EFDC", +"i} c #F7EEDA", +"j} c #F8EEDA", +"k} c #F7F0DA", +"l} c #F9F2DF", +"m} c #868681", +"n} c #9D9B97", +"o} c #A6A49F", +"p} c #B3B0AA", +"q} c #BEB9B5", +"r} c #C7C3BC", +"s} c #CDC7C1", +"t} c #D2CDC7", +"u} c #D8D4CC", +"v} c #DAD9D0", +"w} c #DFDFD5", +"x} c #E4E4DB", +"y} c #F8F7EF", +"z} c #F6F2E1", +"A} c #F8F0E0", +"B} c #F5EDDB", +"C} c #F5ECD9", +"D} c #F6ECD9", +"E} c #F6ECDA", +"F} c #F8F1DA", +"G} c #F7F0DE", +"H} c #F8EFDC", +"I} c #F8F1DB", +"J} c #F8EEDB", +"K} c #F7EEDC", +"L} c #6D6D6C", +"M} c #A19F9A", +"N} c #ACA8A5", +"O} c #BDB9B4", +"P} c #C1BCB7", +"Q} c #C6C2BB", +"R} c #CEC9C2", +"S} c #D2D0C8", +"T} c #D7D6CD", +"U} c #DDDED4", +"V} c #E4E4DA", +"W} c #EDEDE8", +"X} c #FAF8EE", +"Y} c #F8F5E8", +"Z} c #F7F2E2", +"`} c #FAF1E0", +" | c #F6EFD8", +".| c #F9F4DE", +"+| c #F7EFDC", +"@| c #F7F1DA", +"#| c #F4EBD9", +"$| c #A2A09B", +"%| c #A9A6A2", +"&| c #AFACA8", +"*| c #BAB7B1", +"=| c #C0BBB5", +"-| c #C8C4BC", +";| c #D7D7CE", +">| c #FAFAF5", +",| c #FAF2E0", +"'| c #F8F0D9", +")| c #F6F1DB", +"!| c #F7F1DE", +"~| c #F6EAD9", +"{| c #F8EBD9", +"]| c #9E9B96", +"^| c #A5A29D", +"/| c #B0ACA8", +"(| c #B9B4AE", +"_| c #C4C0B8", +":| c #CFCEC4", +"<| c #D9D8CF", +"[| c #E1E1D9", +"}| c #EBEBE7", +"|| c #FAF9F8", +"1| c #FBFAF7", +"2| c #FAF8F2", +"3| c #FBF7E9", +"4| c #FAF4E1", +"5| c #F9F1DA", +"6| c #F5EAD9", +"7| c #F6E9D9", +"8| c #F8E9D9", +"9| c #E3C5C3", +"0| c #E2C4C2", +"a| c #E1C3C1", +"b| c #E1C2C0", +"c| c #E0C2C0", +"d| c #817271", +"e| c #A89998", +"f| c #7E7776", +"g| c #787876", +"h| c #B38888", +"i| c #B08484", +"j| c #AB7E7E", +"k| c #AAA6A2", +"l| c #B7B2AC", +"m| c #C4C1B8", +"n| c #7F3C4C", +"o| c #76203F", +"p| c #741839", +"q| c #EAEBE9", +"r| c #6A0030", +"s| c #6B0A30", +"t| c #6B102E", +"u| c #FBFAF6", +"v| c #FCFAF1", +"w| c #FCF9EB", +"x| c #FAF7E5", +"y| c #F5EEDB", +"z| c #F6F3DB", +"A| c #F9F2DD", +"B| c #F8F1DD", +"C| c #F9F1DD", +"D| c #F7EDDB", +"E| c #F7EBDA", +"F| c #F7E9D9", +"G| c #F8E8D8", +"H| c #E2C3C2", +"I| c #C6B0AE", +"J| c #958D8D", +"K| c #B4898A", +"L| c #B18585", +"M| c #AD8080", +"N| c #9E9C98", +"O| c #ABA8A2", +"P| c #BBB7B0", +"Q| c #864A52", +"R| c #7B2A44", +"S| c #781A3D", +"T| c #E3E3DC", +"U| c #E6E6E2", +"V| c #6A002C", +"W| c #6A002B", +"X| c #69002C", +"Y| c #FBFAF8", +"Z| c #FDFBF0", +"`| c #FDFAED", +" 1 c #FCF8EA", +".1 c #FAF5E5", +"+1 c #F5F2DC", +"@1 c #F7F2DE", +"#1 c #B7A8A7", +"$1 c #C0B1B0", +"%1 c #BAABAA", +"&1 c #B9AAA9", +"*1 c #BEAEAE", +"=1 c #AB9C9B", +"-1 c #C2B2B2", +";1 c #B2A2A2", +">1 c #CAB4B2", +",1 c #B68B8A", +"'1 c #B28686", +")1 c #B1AFA8", +"!1 c #8B5157", +"~1 c #813A4C", +"{1 c #7B2342", +"]1 c #E0E0D7", +"^1 c #6A0027", +"/1 c #660027", +"(1 c #640028", +"_1 c #FEFDF5", +":1 c #FEFCF5", +"<1 c #FEFBF3", +"[1 c #B59E9D", +"}1 c #CAB3B2", +"|1 c #8F8E8A", +"11 c #999893", +"21 c #A6A69F", +"31 c #915A60", +"41 c #864853", +"51 c #7E2C46", +"61 c #DDDCD1", +"71 c #EAEAE3", +"81 c #660022", +"91 c #640022", +"01 c #600020", +"a1 c #FDFDF4", +"b1 c #FFFEF6", +"c1 c #FFFEF7", +"d1 c #FEFDF4", +"e1 c #FDFCF2", +"f1 c #FCF9ED", +"g1 c #FAF6E7", +"h1 c #F9F3DE", +"i1 c #AA9492", +"j1 c #9C9C96", +"k1 c #996566", +"l1 c #90575C", +"m1 c #85434F", +"n1 c #DAD8CD", +"o1 c #DFDED4", +"p1 c #68101A", +"q1 c #640018", +"r1 c #5E001C", +"s1 c #F7F7F5", +"t1 c #FFFFF8", +"u1 c #FFFEF8", +"v1 c #FCFBF0", +"w1 c #FBF8EA", +"x1 c #726262", +"y1 c #4B4443", +"z1 c #ACA4A4", +"A1 c #9C938E", +"B1 c #AA9896", +"C1 c #9C928F", +"D1 c #8F8E89", +"E1 c #9F6D6E", +"F1 c #986366", +"G1 c #90585C", +"H1 c #CECEC4", +"I1 c #DAD8CF", +"J1 c #E2E3DC", +"K1 c #6A151E", +"L1 c #651517", +"M1 c #5F0517", +"N1 c #F8F7F5", +"O1 c #FBFBF5", +"P1 c #FEFEF6", +"Q1 c #B28A97", +"R1 c #B28A95", +"S1 c #D8C5C6", +"T1 c #827372", +"U1 c #948684", +"V1 c #A09090", +"W1 c #8A8282", +"X1 c #B6A7A4", +"Y1 c #9B928F", +"Z1 c #BAA09E", +"`1 c #C8A4A4", +" 2 c #B99E9D", +".2 c #C7A3A2", +"+2 c #C5A09F", +"@2 c #BB9292", +"#2 c #B88F8F", +"$2 c #B58A8A", +"%2 c #A47272", +"&2 c #A06E6F", +"*2 c #9A6668", +"=2 c #BCBCB4", +"-2 c #CECDC4", +";2 c #D6D5CE", +">2 c #6E1530", +",2 c #680A1E", +"'2 c #600A15", +")2 c #D6BEC4", +"!2 c #8A4561", +"~2 c #651532", +"{2 c #661034", +"]2 c #681532", +"^2 c #661530", +"/2 c #671730", +"(2 c #6A1E34", +"_2 c #6D2439", +":2 c #D8C4BF", +"<2 c #847C7C", +"[2 c #BEB0AE", +"}2 c #82827F", +"|2 c #9E9592", +"12 c #D0AEAD", +"22 c #CDAAA9", +"32 c #C9A6A5", +"42 c #9A928E", +"52 c #BE9696", +"62 c #BA9291", +"72 c #B88E8E", +"82 c #A67474", +"92 c #A47373", +"02 c #A26F70", +"a2 c #AAA9A2", +"b2 c #B9B9B1", +"c2 c #760A39", +"d2 c #6E002B", +"e2 c #670517", +"f2 c #EFEFEA", +"g2 c #F4F3EF", +"h2 c #FAFAF3", +"i2 c #D3BCC1", +"j2 c #5D0027", +"k2 c #610027", +"l2 c #63002C", +"m2 c #65002D", +"n2 c #680A30", +"o2 c #68152C", +"p2 c #66152A", +"q2 c #671828", +"r2 c #6A1E2E", +"s2 c #6C2333", +"t2 c #B58E91", +"u2 c #9A9292", +"v2 c #B0A8A8", +"w2 c #D6B4B4", +"x2 c #D2B1B1", +"y2 c #CFADAD", +"z2 c #9C938F", +"A2 c #9B928E", +"B2 c #9A918E", +"C2 c #AA9895", +"D2 c #C09A9A", +"E2 c #BD9695", +"F2 c #BA9292", +"G2 c #A87878", +"H2 c #A67575", +"I2 c #A47473", +"J2 c #A7A7A0", +"K2 c #B8B8B0", +"L2 c #CAC9C0", +"M2 c #803646", +"N2 c #771939", +"O2 c #720E34", +"P2 c #E8E9E3", +"Q2 c #F1F1E7", +"R2 c #D0B8B9", +"S2 c #5E0028", +"T2 c #630029", +"U2 c #D7BEC2", +"V2 c #FFFFFA", +"W2 c #B28A90", +"X2 c #681722", +"Y2 c #681C26", +"Z2 c #6C1F2D", +"`2 c #FBFAEF", +" 3 c #F5F7E4", +".3 c #F7F6E3", +"+3 c #AAA2A2", +"@3 c #C2ABAA", +"#3 c #B3A4A3", +"$3 c #D7B7B6", +"%3 c #D6B6B6", +"&3 c #D5B4B3", +"*3 c #9D9490", +"=3 c #B99E9C", +"-3 c #C39E9D", +";3 c #BE9796", +">3 c #AB7C7C", +",3 c #A67676", +"'3 c #9B9B95", +")3 c #B8B6B0", +"!3 c #8A4E54", +"~3 c #823F48", +"{3 c #7D3444", +"]3 c #E8E7DE", +"^3 c #A98181", +"/3 c #620A29", +"(3 c #620027", +"_3 c #B07E90", +":3 c #FFFEFB", +"<3 c #8E4F56", +"[3 c #69151F", +"}3 c #6C1523", +"|3 c #D9C4C3", +"13 c #FBF9EB", +"23 c #AC9C9C", +"33 c #615A59", +"43 c #867E7E", +"53 c #ACA5A4", +"63 c #DABABA", +"73 c #B0A09D", +"83 c #C6A1A1", +"93 c #C49F9E", +"03 c #C29C9C", +"a3 c #B08382", +"b3 c #AB7D7C", +"c3 c #A87978", +"d3 c #9A9A94", +"e3 c #965F62", +"f3 c #8E5458", +"g3 c #894B51", +"h3 c #D2D2CA", +"i3 c #D5D6CD", +"j3 c #DADAD2", +"k3 c #AB7F84", +"l3 c #AA8183", +"m3 c #8A3C58", +"n3 c #FDFCF4", +"o3 c #FEFDF7", +"p3 c #B68990", +"q3 c #6C1526", +"r3 c #6B1024", +"s3 c #B58A91", +"t3 c #FAF9EC", +"u3 c #A29A9A", +"v3 c #B2A3A2", +"w3 c #E1C2C1", +"x3 c #D9B8B8", +"y3 c #9C9590", +"z3 c #8A8A84", +"A3 c #8D8B86", +"B3 c #C8A4A3", +"C3 c #C6A1A0", +"D3 c #C49E9E", +"E3 c #B48A89", +"F3 c #AC7D7D", +"G3 c #9A9993", +"H3 c #9E6A6B", +"I3 c #986465", +"J3 c #935A5D", +"K3 c #C8C6BF", +"L3 c #C9C9C1", +"M3 c #DDDBD2", +"N3 c #EFEDE4", +"O3 c #FAFAF0", +"P3 c #B68393", +"Q3 c #6D102F", +"R3 c #B68A95", +"S3 c #F9F9E9", +"T3 c #F7F7E5", +"U3 c #D1BBB9", +"V3 c #463E3E", +"W3 c #AFA09F", +"X3 c #DFC0BE", +"Y3 c #888984", +"Z3 c #9A928D", +"`3 c #C7A3A3", +" 4 c #BA9190", +".4 c #B68B8B", +"+4 c #B18584", +"@4 c #A37172", +"#4 c #9F6C6C", +"$4 c #9C6668", +"%4 c #B8B5B0", +"&4 c #BCBBB5", +"*4 c #C1BFB9", +"=4 c #C9C7C1", +"-4 c #D3D1CA", +";4 c #E8E6DC", +">4 c #F2F1E6", +",4 c #D8BCC2", +"'4 c #B57C91", +")4 c #943E63", +"!4 c #700534", +"~4 c #6F1534", +"{4 c #FFFFFC", +"]4 c #FDFEF7", +"^4 c #FBFCF1", +"/4 c #F7F9E9", +"(4 c #F4F6E4", +"_4 c #F4F7E4", +":4 c #968786", +"<4 c #9D8E8D", +"[4 c #988888", +"}4 c #9B8C8B", +"|4 c #A19291", +"14 c #BCADAC", +"24 c #998A89", +"34 c #9B9493", +"44 c #8A8A88", +"54 c #9A918D", +"64 c #C8A3A3", +"74 c #BB9393", +"84 c #B78E8E", +"94 c #A16F6E", +"04 c #A8A5A0", +"a4 c #AFADA8", +"b4 c #C1BFBA", +"c4 c #CCCAC3", +"d4 c #D5D3CC", +"e4 c #B18B8B", +"f4 c #B58E90", +"g4 c #954E69", +"h4 c #74053B", +"i4 c #72003A", +"j4 c #710037", +"k4 c #73003A", +"l4 c #74003A", +"m4 c #740038", +"n4 c #731536", +"o4 c #B78995", +"p4 c #FFFFFB", +"q4 c #FAFBEF", +"r4 c #F2F5E2", +"s4 c #F4F5E1", +"t4 c #F5F4E1", +"u4 c #949491", +"v4 c #BE9797", +"w4 c #BC9493", +"x4 c #AA7A7A", +"y4 c #A77676", +"z4 c #A57372", +"A4 c #A3A29C", +"B4 c #ABA9A4", +"C4 c #B6B3AE", +"D4 c #C5C1BC", +"E4 c #BDACA8", +"F4 c #7F3C44", +"G4 c #79303A", +"H4 c #78303C", +"I4 c #782E3F", +"J4 c #792640", +"K4 c #771042", +"L4 c #74003E", +"M4 c #963F6A", +"N4 c #983F6A", +"O4 c #76003B", +"P4 c #750038", +"Q4 c #B88292", +"R4 c #FCFDF5", +"S4 c #F5F8E8", +"T4 c #F0F5E2", +"U4 c #F1F5E1", +"V4 c #F4F5E2", +"W4 c #F6F5E3", +"X4 c #ACACAB", +"Y4 c #C8A5A5", +"Z4 c #C09998", +"`4 c #AE8081", +" 5 c #AA7A7B", +".5 c #A77776", +"+5 c #A8A6A0", +"@5 c #AD9E9A", +"#5 c #8D5458", +"$5 c #81414A", +"%5 c #7C3644", +"&5 c #98616A", +"*5 c #B59092", +"=5 c #B78F94", +"-5 c #F9F9EE", +";5 c #B97D98", +">5 c #78003E", +",5 c #77003D", +"'5 c #B87C93", +")5 c #FAFAEF", +"!5 c #F6FAEC", +"~5 c #F0F5E1", +"{5 c #F0F4E2", +"]5 c #F1F5E2", +"^5 c #F4F6E3", +"/5 c #A49594", +"(5 c #CCA8A8", +"_5 c #C9A4A4", +":5 c #C19B9B", +"<5 c #BF9898", +"[5 c #B48989", +"}5 c #AF8282", +"|5 c #979892", +"15 c #9C9C97", +"25 c #9E6B6C", +"35 c #966062", +"45 c #8B5256", +"55 c #CAB6B2", +"65 c #EBE7DE", +"75 c #EEEBE0", +"85 c #F1ECE1", +"95 c #F4F1E5", +"05 c #F6F5E9", +"a5 c #F8F8ED", +"b5 c #BA829A", +"c5 c #7B0046", +"d5 c #7A0044", +"e5 c #B97C96", +"f5 c #F9F9EB", +"g5 c #F9FCF0", +"h5 c #EFF6E2", +"i5 c #ECF5E1", +"j5 c #F0F5E3", +"k5 c #F2F6E4", +"l5 c #F5F6E4", +"m5 c #AE9F9E", +"n5 c #A79F9F", +"o5 c #90908D", +"p5 c #CEACAB", +"q5 c #CBA7A7", +"r5 c #C29B9B", +"s5 c #B99190", +"t5 c #B58B8B", +"u5 c #B28585", +"v5 c #9A8E8A", +"w5 c #A37171", +"x5 c #9E6C6C", +"y5 c #AE9290", +"z5 c #D4CFC9", +"A5 c #E6E0DA", +"B5 c #ECE8E0", +"C5 c #EDEAE0", +"D5 c #EDEBDF", +"E5 c #EEECE0", +"F5 c #F1F1E4", +"G5 c #BA8E9A", +"H5 c #801C4D", +"I5 c #7D0549", +"J5 c #BA7C98", +"K5 c #F7F8E8", +"L5 c #FBFBF0", +"M5 c #FBFEF3", +"N5 c #F4FAE9", +"O5 c #ECF6E2", +"P5 c #ECF6E1", +"Q5 c #ECF7E1", +"R5 c #EEF7E2", +"S5 c #F0F6E3", +"T5 c #F2F6E3", +"U5 c #B0A1A0", +"V5 c #8D8D8A", +"W5 c #B09F9C", +"X5 c #D1AFAF", +"Y5 c #CEABAB", +"Z5 c #9B938E", +"`5 c #C6A2A1", +" 6 c #C19B9A", +".6 c #BC9494", +"+6 c #9B8380", +"@6 c #A88E8C", +"#6 c #C0BCB7", +"$6 c #E0DCD5", +"%6 c #E4E0D8", +"&6 c #E4E2D8", +"*6 c #E6E5DA", +"=6 c #EAE9DE", +"-6 c #863B55", +";6 c #863251", +">6 c #81184A", +",6 c #BB7C98", +"'6 c #F7F7EA", +")6 c #FDFEF5", +"!6 c #FAFDF1", +"~6 c #F4F9EA", +"{6 c #EDF6E2", +"]6 c #EDF7E0", +"^6 c #EEF8E2", +"/6 c #EDF6E1", +"(6 c #EFF6E3", +"_6 c #CFB9B7", +":6 c #BAB2B2", +"<6 c #9F9794", +"[6 c #D3B2B1", +"}6 c #D0AEAE", +"|6 c #BC9393", +"16 c #968A86", +"26 c #A97A7A", +"36 c #A48C89", +"46 c #ADABA6", +"56 c #BDBAB4", +"66 c #CBC7C1", +"76 c #D4D1CA", +"86 c #D8D6CE", +"96 c #DBDACF", +"06 c #B8999A", +"a6 c #8C465A", +"b6 c #883855", +"c6 c #852750", +"d6 c #BC859A", +"e6 c #F6F7EC", +"f6 c #F6F7EB", +"g6 c #F8F8EC", +"h6 c #F8F9EE", +"i6 c #FDFEF4", +"j6 c #FAFCF1", +"k6 c #F4F8EA", +"l6 c #EDF4E1", +"m6 c #EAF4DF", +"n6 c #EBF6E1", +"o6 c #EEF6E3", +"p6 c #908988", +"q6 c #B5AEAD", +"r6 c #B7AFAF", +"s6 c #DCBDBB", +"t6 c #9E9591", +"u6 c #BD9696", +"v6 c #BD9595", +"w6 c #AE8181", +"x6 c #AC7E7E", +"y6 c #AB7D7D", +"z6 c #A7908C", +"A6 c #ABAAA4", +"B6 c #BAB6B1", +"C6 c #C4C1BC", +"D6 c #C2B4AF", +"E6 c #AA8384", +"F6 c #986268", +"G6 c #915260", +"H6 c #8C4359", +"I6 c #883153", +"J6 c #BC8A9B", +"K6 c #F4F5EB", +"L6 c #F5F6EB", +"M6 c #F6F6EA", +"N6 c #FDFEF3", +"O6 c #FAFBF0", +"P6 c #F4F6E7", +"Q6 c #ECF4E0", +"R6 c #EBF6E0", +"S6 c #EAF6E1", +"T6 c #EBF6E2", +"U6 c #968F8E", +"V6 c #ABA4A2", +"W6 c #C9A5A4", +"X6 c #BF9897", +"Y6 c #978D89", +"Z6 c #AE8180", +"`6 c #AC7F80", +" 7 c #AA7E7E", +".7 c #A77879", +"+7 c #A27474", +"@7 c #A07073", +"#7 c #A98283", +"$7 c #C4B4B0", +"%7 c #8F4B5C", +"&7 c #883854", +"*7 c #A05A74", +"=7 c #F3F4EA", +"-7 c #F5F6EA", +";7 c #F5F5EA", +">7 c #FCFCF1", +",7 c #FDFDF2", +"'7 c #FCFDF1", +")7 c #F8F9EB", +"!7 c #EFF4E1", +"~7 c #EAF3DE", +"{7 c #8E8786", +"]7 c #C9B2B1", +"^7 c #D3BCBB", +"/7 c #ADA6A5", +"(7 c #CAA6A6", +"_7 c #C09A99", +":7 c #C09898", +"<7 c #988E8A", +"[7 c #B48888", +"}7 c #B28584", +"|7 c #AF8382", +"17 c #AE8282", +"27 c #AC7E7F", +"37 c #A67879", +"47 c #B19896", +"57 c #D1D0C6", +"67 c #A4757C", +"77 c #862B4F", +"87 c #F2F2E9", +"97 c #F3F4E9", +"07 c #F3F4E7", +"a7 c #F4F5E9", +"b7 c #FAFCEE", +"c7 c #F4F8E7", +"d7 c #ECF3DD", +"e7 c #EBF5DE", +"f7 c #B6AEAE", +"g7 c #A09998", +"h7 c #A28E8A", +"i7 c #A48F8C", +"j7 c #ADACA8", +"k7 c #BAB7B2", +"l7 c #CFCCC5", +"m7 c #F2F3E9", +"n7 c #F2F3E6", +"o7 c #FAFAED", +"p7 c #FBFBEF", +"q7 c #FAFBEE", +"r7 c #F8FAEC", +"s7 c #EBF3DD", +"t7 c #EAF3DC", +"u7 c #969794", +"v7 c #91938E", +"w7 c #949692", +"x7 c #A3A39E", +"y7 c #BDBAB6", +"z7 c #CCC9C4", +"A7 c #D9D7D0", +"B7 c #E2E1D7", +"C7 c #F0F1E7", +"D7 c #F1F2E8", +"E7 c #F1F2E6", +"F7 c #F6F6E9", +"G7 c #F9FAEC", +"H7 c #F8FAEB", +"I7 c #F2F7E5", +"J7 c #EEF6E0", +"K7 c #EAF2DB", +"L7 c #A3A3A2", +"M7 c #90928F", +"N7 c #90938D", +"O7 c #989B97", +"P7 c #A2A39F", +"Q7 c #C4C2BD", +"R7 c #D8D4CE", +"S7 c #E2E0D8", +"T7 c #EBEAE0", +"U7 c #EEEFE3", +"V7 c #F0F1E8", +"W7 c #F2F4E7", +"X7 c #F4F5E7", +"Y7 c #F6F7E8", +"Z7 c #F8F8EB", +"`7 c #F2F6E2", +" 8 c #EFF6E0", +".8 c #A7A7A6", +"+8 c #929691", +"@8 c #989B96", +"#8 c #A4A4A2", +"$8 c #B6B4B1", +"%8 c #CCC8C3", +"&8 c #D9D8D2", +"*8 c #E2E4DA", +"=8 c #E3E4DA", +"-8 c #E4E6DC", +";8 c #EBECE4", +">8 c #EFF0E6", +",8 c #F2F3E8", +"'8 c #F4F4E7", +")8 c #F7F8EC", +"!8 c #F6F8EC", +"~8 c #F3F6E7", +"{8 c #EFF4E2", +"]8 c #EEF6E1", +"^8 c #8F928F", +"/8 c #909390", +"(8 c #939693", +"_8 c #9A9C98", +":8 c #B7B7B2", +"<8 c #C6C6C1", +"[8 c #D0D0C9", +"}8 c #D6D6CE", +"|8 c #D8DAD2", +"18 c #E5E6DF", +"28 c #F2F3E7", +"38 c #F6F6EB", +"48 c #F3F6E6", +"58 c #80807F", +"68 c #8E908D", +"78 c #909490", +"88 c #949794", +"98 c #9A9C9A", +"08 c #A6A7A4", +"a8 c #B3B4B0", +"b8 c #C0C2BC", +"c8 c #CFCEC7", +"d8 c #D2D4CA", +"e8 c #E0E1D8", +"f8 c #E6E8DE", +"g8 c #F0F1E6", +"h8 c #F4F5EA", +"i8 c #F4F6E9", +"j8 c #F1F6E6", +"k8 c #EDF4E0", +"l8 c #ECF3DF", +". + @ # $ % & % * = = = = - ; > ; ; , ; ; ; , ' ' ) ! , , , , , , ~ , ~ ~ { { ~ ~ ~ { ] ^ ^ ^ ^ { / , ^ ^ ( ~ _ : ( < _ [ } | / 1 / 2 2 3 2 4 2 4 5 4 5 6 7 8 7 9 0 a b 0 b c d d e f g g g h i j j h g k h g g l m n o p q a r r s t u u v v 7 7 u u w x y z A B C ", +"D E F F G H I J K L L M N M ~ ~ , , ; , , ] , O O O P , ; ] Q , R , , ~ ~ { , ^ ~ , ^ { ^ ( ^ ^ ( ^ , S ( ~ ~ S S ~ ( T U [ _ ^ [ [ V [ / [ W 1 W | W W V X X Y Z Y X Z w ` .u .u ..u u +.@.#.#.@.$.#.@.+.@...+.#.u u %.` &.*.*...*.=. .X X 4 4 =.=.-.;.>.>.,.@.e ", +"'.).F !.~.H {.J J > {.M > , ~ ~ , > , , Q ].{ ' O ! ^.; ]., ]., Q ~ ~ , ~ , ~ , ( ^ ~ ^ _ ^ ^ ( ^ ^ ~ ( ( R ^ ( ~ } U _ [ _ _ : [ [ _ [ [ [ [ [ /.(._.V /./._./.:./.<./.=./.[.Y <.w =.<.w }.|.1.|.2.w w <.3.}.<.=.w <.X X X X 4.5.6.X X 4 3 4 4 4 2 X /.7.8.;.,.#.9.", +"0.a.b.U b.~.= {.> > ~ > > c.> , ; ; , ~ Q d.e.O f.P g., , ) , , , , , ^ ~ , , ~ ~ ~ , { , ~ ^ ( _ ^ ^ ( T _ : h.( : ( _ _ _ { _ } [ [ [ [ [ [ [ [ _._.[ [ i.V /.Y /./././././.=././.<.=.<.-.-.7.-.<.=.=.<.<.<.:././.X 6.:.3 j.3 6./ / j.3 k.- l.l.- 2 _.m.7.;.>.z q ", +"n.o.o.o.T I p.] M ^ ^ ~ { , ] , ; ]., , Q , ) q.r.s.e.t.c.^., , u.v.w.x.R y., ~ M ~ , K , ^ { K ( ~ ^ S ( _ { ( ( ^ ^ ^ ^ ^ ^ ^ ^ / , _ ^ ( ~ _ : _ ( T _.| [ [ W | 2 Z Z Z 4 Z .*.z.*.z.&.Z . .6 X .X 6.n.(.3 6.3 3 / / 3 3 3 l.p.p.A.- = = = - - [ :.[.;.>.B.C.", +"$ D.6.6.p.E.- L ~ K h.~ { , , > , ].; , Q F.].G.H.O P I.J.K.L.M.N.M.O.P.Q.R.S.T.U.V.W.X.Y.Z.{ ( } _ ~ ~ T ^ ( ^ ^ { ^ | ^ K ^ _ T ^ { S ~ ( ~ S S ~ S T a.[ | [ (.W W W =.(.Z Z Z Z Y X X .Z X Z 4 6.6.2 6.4 2 2 A.* p.A.3 2 p.1 % - p.= = `.= `.`.= p.[ _.m. +z a ", +".+j.I I h.I { L K K ^ K ~ M ; , ; ^.Q , ++, ^.@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+,+]+^+>+/+(+]+!+_+:+<+[+~ S _ ( ( } ^ ^ { _ ^ ^ ( / ^ ^ _ _ ( _ _ : [ ^ | 1 [ W 2 3 Z 6.W 4 4 4 4 6 6 .7 7 v 7 7 7 }+}+|+b 0 b b b c 1+b }+2+3+4+3+5+6+% .+N 7+8+9+0+a+N [ :.m.b+B.C.", +"j.j.I I T h.= ~ ^ ~ ^ > ~ c.; , ; ; , , Q c+d+e+f+g+h+i+)+j+k+N.]+l+{+_+m+n+_+o+(+p+{+q+r+s+t+u+v+w+x+y+z+( ( ( ( _ ( } _ ^ _ ( ~ ~ ^ S ( ( : o._ : _ [ o.[ [ [ / | [ (.| 3 Z (.W =.=./.Z X Z =.X X .Z u .Y Z .%.%.Z 4 6.3 2 4 4 p.* = N `.a+A+B+C+N / V D+E+..7 ", +"* * L p.I L = > ~ M > ^ ] ; ; ; N ^.G.F+G+H+H+I+J+K+L+M+N+O+P+K+O+Q+R+H+S+T+U+e+K+V+W+r+X+P.Y+Z+,+`+n+O.V+ @~ ~ ( K ~ ~ ~ ^ ~ S ( ~ ^ ~ ( : _ _ _ / V [ [ [ _.[ [ [ (.Y W (.i.(.X (./.:.<.Z 4 Y 4 Z 4 6 6 6 6 t .@C.a b c b b a 0 b +@@@@@#@& $@& $@& 4 4 Y =.x y u ", +"%@J K K J J {.J &@; ; , , , ] , *@=@-@;@;@T+>@,@'@)@)@L+!@M+~@,@{@]@^@L+,+&+/@,@]@(@Q+_@:@<@[@!+Z+/@n+Q.{+Y+}@, ~ ~ ~ , ~ _ _ _ _ _ ^ [ _ [ _ ^ [ [ [ | (._.(.[ W [ | [ /.W [ 3 i.| /.(.Z W 3 [ X X Z (.Z 4 w X 6 X Z ` .u u =.6 6 4 6 A.|@|@|@l.- 1 2 Z /.-.1@y 6 ", +"2@3@J J J 3@= &@> ; ^ > M = 4@5@6@7@8@9@0@a@b@<@c@9@d@e@~@6@f@d@g@h@;+i@/+9@j@g+:@,+-+;+(@i@h@k@l@m@n@^+'+o@v+p@~ ( ~ ^ ~ ~ ( _ ~ ^ ~ K ( [ ^ 1 | ^ [ [ / 1 1 / / 1 [ (.2 / W 4 Z 4 5 5 4 8 8 v 6 8 Z 6 6 6.4 4 X w Z 6 ` .Z w .u 6 4+#@4 2 / 2 2 / 4 /.=.7.7.,.8 ", +"q@r@s@&@7+&@t@c.^ ~ ; , , u@v@L+w@8@i+H+x@;@y@0@,@x@8@z@A@'@K+Q+0@^@x@B@C@&+D@E@S+)+x@^@K+L+H+^@<@>+F@l+,+G@H@M.I@K K ^ ~ ^ ( _ / _ _ [ | [ | 1 ^ [ [ / (.1 / | 1 / [ [ / [ | (.W W Z Z Y Y Z Z 4 X X Z Z 6.(.X Y 6.X 6.X =.=.=.7.7.Y .7 3 / 3 3 2 1 W /.7.J@;.y 8 ", +"B+r@s@r@{.K@N &@> M ] ; L@M@H+;@;@N@e@H+M+H+z@T+c@P+c@&+O@y@X+=+E@c@9@i+)+J+)+)@P@0@7@)@Q@<@,+i+,@i@R@)@N+{+S@T@^+Y.^ ^ ~ ^ K T _ ~ ^ } ^ / _ _ [ [ I [ [ ^ [ [ [ [ [ | | | 3 2 2 4 Z 4 .4 5 4 4 4 4 6 6 4 4 4 Z 4 4 4 Z Z =.Z Y Y ` v #@|@4 2 4 4 W X Y =.E+7. +}+", +"U@V@r@7+2@W@N > > ; ; X@I+N@N@8@'@)@7@6@_@;@L+'@P+Y@S+6@h@;@Z@g+l+~+;+f@:@E@,+P+h@{+F@M.>+`@Q.!+l@]@S.`+ #O..#!++#@###| [ / ^ o.[ ^ } ^ _ } [ } [ _ [ [ _ [ [ [ [ | [ 2 (.W W 4 4 Z 4 6 6 8 7 $#$#r 7 $#$#%#v $#9 $#C.7 7 7 7 7 &#u .t t u 6 6 4 4 Z *.Y 7.;.7.,.7 ", +"*#2@r@8+8+8+t@> > ~ =#H+y@;@H+9@H+'@>@H+-#e@;#>#H+j+;#J+!@H+j+,#i+Y@d@B@'#d@*+,@)#(@>#k+L+E@Y@e+-#)#a@(+0@K+!#)+n+O.~#$@( _ ( [ [ [ / / _ _ } [ { [ [ [ | 1 1 1 [ W W W 1 W 2 W 4 6.4 Z Z Z 4 u v .w *. . . .6 6 Z Z Z 4 4 4 Z W =.Y . . . .6 8 |@Z Y =.=.-.;. +2+", +"{#]#^#a+/#a+t@> > c+w@H+H+y@;@R+H+6@(#z@-#;@g+)#H+c@I+L+;+H+l+K+9@Z@0@d@9@_#,+S+ #:#H+)#<#E@L+!#^@_#^@[#g@d@e+d@`@Q.m@-+}#I { [ | } / } ^ / ~ | | | [ 1 | 1 W Z W W W W 2 2 4 Z (./ X X (.2 X X 6.=.Z Y Y Y X Z 6.X 6.6.2 4 2 4 (.X =.Y Y Z Z 4 4 X =.=.Y :.[.;.>.|#", +"1#2#3#2#q@4#N 5#6#7#H+H+z@z@,#P@;@f+I+Q@K+T+K+O+R+O@'@<@(+I+S@f@)@k@P@N+:#'#:@d@{@n@*+j@{@8#>+<#8#R@:@h@'#O@S+{@h@V+9#Q.0#a#o._.| _ | _ _ / _ } | V | [ (.2 | 2 2 2 l.2 2 4 Z 2 4 2 2 Z 2 4 Z X Z Z =.W Z Z X 6.4 2 A.4 6.2 6.2 2 3 (.X Z Z 6 8 b#6 6 .w Y 1@>.,.9 ", +"c#U@]#V@d#s@c.e#f#(#M+T+e+M+x@f+T+`@g#L+T+H+h#T+>#'#Q@_#X+>@i#<@=+)+Q+!@)#0@)+,@g+g@;@h#j#Q@Y@8@S+k#M+l#k#=+(@l@N.'+m@V+~+m#n#_ _ _._ | [ | [ [ / V | W W 4 Z 4 4 4 Z 4 4 6 4 4 4 o#6 6 4 6 4 Z 4 4 4 4 6 4 2 4 4 4 6.4 2 2 l.2 2 3 W (.Z Z Y 4 Z 4 Z X =.1@-.;. +9 ", +"p#8+= * M ~ ] q#r#d@w@;@6@e@;@H+H+g#;@)@e+H+W+i+T+R+O+U+P+H+X+_@,#E@&+O@_@P@Q+&+k+/+)#n@P+R+;#g+h+[#^@N+ #Y+s#q+,+r+t#q+r+n+u#1 : ( | / _ 1 | | 1 | 1 (.4 2 4 4 4 5 4 4 6 Z 6 4 4 5 6 6 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 l.|@4 |@l.2 4 Z 4 W Z Z 4 4 4 W W /.m.[.J@7.&#", +"`.v#v#K K K ] w#H+H+;@8@e@w@,#<#'@Q+e@'@O+;@)+T+'@X+6@n+!@`@V+P+!+W+:#l@-+*+!+U+;+T@6@'#;#Y@-+h@S@8#T@Q.h@v+M.Q.m@o+Y+G@S.!@^+x#}#_ [ / | 1 1 1 | 2 [ 2 2 2 | 2 4 2 2 2 2 2 4 Z 4 4 4 4 4 4 4 4 4 4 4 2 4 4 4 4 5 4 4 |@2 l.l.% y#2 4 3 4 (.W 4 4 W 2 2 /.=.:.7.7.&#", +"8+z#v#J ^ S - A#H+T+w@&+7@;@)@H+,@8@w@f+_@>@]@e@7@`@&+l+h+H+k+g#)@O@0@'#<@B#~@P+)#`@&+j+X+l+n+/+C#D#E#F#G#)+U+H#Z@k@I#m@u+Z+:@`@J#n#| 1 K#| 1 2 [ 2 1 1 1 2 2 2 | 2 W 2 (.2 W W 4 2 2 4 2 1 3 4 2 2 2 2 3 2 Z 4 2 W |@2 2 l.y#l.2 1 1 W 2 2 4 4 2 2 4 Z Z X Y m.1@&#", +"L#J J M ^ K M#-#H+f+a@<#,#6@k#(#;#x@H+y@;#0@Q@;@_#!@H+f@ #x@X+H+,#;@H+e@;@M+h#6@:@D@k#S.]@Q.k+N#O#P#Q#R#S#T#U#V#O+6@Y+[@V+_+B#[@_@W#X#Y#Z#| 1 1 1 2 W 2 2 2 2 W 2 1 2 W Z 2 W 2 2 2 }#2 2 2 2 1 W 2 2 4 2 4 4 4 4 4 4 4 o#4 |@|@l.}#2 4 4 4 4 4 4 2 4 W X =.=.7.Y .", +"`#&@J J ~ K $B@H+e@H+i+H+i+P@H+x@h+6@,@R+,@^@f+0@l@T+*+Y@L+:#g#g+,+i#Y@e+K+U+'@g@`@-#r+ #.$+$@$#$$$%$&$*$=$-$;$>$,$G@m@'$u+.#)$)+N+/+e+S.!$~$2 2 2 2 4 2 4 4 W | 1 2 2 2 Z 4 4 2 4 2 l.4 2 2 2 2 2 2 2 2 4 2 4 4 2 4 4 2 4 4 l.2 2 2 2 4 2 4 4 4 4 Z Z Y Y =.Y Y {$", +"]$N {.{.L ^$r#<#6@E@b@B@f+H+[#0@K+h#j#g@j#a@W+e+Y@Z@N@)@c@K+U+P@f@c@'@;+h#9@g+E@E@Z@d@f@)#/$($_$:$<$[$}$|$1$2$3$4$5$6$P+Y+w+T@H@Z+w+r+k@M.8#:#7$4 W 2 4 4 4 4 2 }#2 W 1 2 5 2 2 }#2 5 5 8$2 4 2 5 2 l.l.l.8$2 2 2 |@2 4 2 2 2 2 2 1 1 1 1 9$4 2 4 2 X Z =.Y 7.-.}.` ", +"0$`.N > M a$T+g#;@_#L+_#b@z@)#6@E@h+>#e@a@l#f+l#O+R@-#K+Q@P@B#;@R+R@>@y@T+;#P+K+M+l@g#X+H+b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$/@,+G@9#S.q$q$r$@#n+n@s$2 2 2 2 }#4 }#2 2 1 8$}#1 2 l.2 2 2 2 4 1 1 2 2 y#1 }#l.2 2 1 4 4 }#5 4 2 2 2 1 2 1 2 4 2 2 1 2 2 2 2 Z Y Y =.Y Y ..", +"t$N > > { u$i+M+;@L+;#,#'@H+_#8@B#'@K+F@y@h+d@,@Y@i#,@*+c@Q+~+b@h@`@W+/@^@*+i#-+!#Q.Q+v$w$x$y$z$A$B$C$D$E$F$G$H$I$J$K$L$M$h#,+N$~+9#Z+,+M.~+{+`@2 O$1 1 1 O$O$1 1 1 | 1 - 2 }#}#2 1 }#1 1 l.1 1 8$y#1 1 1 2 1 2 1 }#4 l.2 2 1 O$}#2 2 2 1 2 2 }#2 2 Z Z Z Y =./.=.` ", +"P$&@J ; ' Q$g#8@w@g+R+b@k#H+g+;@&+0@R$[#,#9@X+e+!#h#e+P.:@{@/@<@N+,+E@T@h#g@X+<@{@f@)@j@N@P+S$T$U$V$W$X$Y$Z$`$ %.%+%@%#%$%%%,#n+e+n+i@]+&%h@y+*%2 O$y#1 O$8$l.1 1 1 - 1 1 O$y#2 2 }#l.2 y#=%8$- l.}#8$1 2 1 2 }#}#2 }#}#2 5 }#2 2 8$2 l.2 2 2 5 }#2 Z Z Z Y Y Y Y B.", +"-%&@J > ;%'@>#e@b@=+J+c@P@;@!@f+P@8@y@R@Q@P@w@l#i@d@7@B#E@=+(+Q@!@(@6@>+j#k@R@B#,+]@^@n+0@h#T+>%,%'%)%!%~%{%]%^%/%(%_%:%<%[%k#d@j#h@R@}%|%1 }#5 - 8$1 - y#O$y#O$O$1 y#O$y#y#l.O$O$1 }#O$O$- y#y#- 1 1 1 1 O$1 1 }#2 }#}#}#O$}#y#1 - { { O$1 2 1 2 1 2 Y Y W =.Y 1@{$", +"-%1%2%> 3%H+>@H+;@0@H+M+>@H+;@H+g#J+P@Q+P@;#K+H+f@l@_#`+]@)#Z+K+8#k@:@N.)+R@h#k+L+/+{@!+c@Z+)@h+<@4%5%6%7%8%9%0%a%b%c%d%l@e%,@n@A@<@f%Y.8$- O$}#}#1 - O$=%8$O$O$1 - 1 1 g%y#- y#O$}#1 g%y#O$- O$d.y#O$1 1 8$O$1 2 9$O$O$1 }#1 O$1 1 } h%O$| 1 1 1 2 W W i.Z Z =.Y {$", +"i%5#2%! j%(#^@M+_#<@H+Q@,@H+D@;@^@L+N@B#d@T+!@0@{@h@y@r+(@N+`+U+]+Y@)#!+<@k@!@X+N.]@]@S@R@8#,@P@R@w@)@k%l%m%n%o%p%q%r%H+i#K+[@{@^@S.~+B#[@u#{ O$g%y#y#1 g%y#y#y#d.y#y#O$) - O$O$1 O$O$O$g%1 O${ O$O$1 y#y#- O$1 O$O$O$1 O$1 O$O$O$1 - 1 1 1 { 1 4 2 | W 2 Y Y =.1@` ", +"s%5#2%t%M+H+,@H+&+N@;@_#A@H+e+<#B@R@e@h#&+8@;+e+N.Z+)# #P+=+D@Q@k@F@M+j@N@D@f@)@{@E@d@i@&+(+O@^@=+S+i+(#;@c@;@f+&+a@<@6@k@>#,@~@W+R@k@>+`+U+x+u%y#1 1 y#8$8$O$g%y#y#y#O$- y#y#O$O$O$y#O$O$O$] - g%y#) d.O$y#1 O$O$O$O$O$O$O$1 g%d.y#v%d.O${ O$O$1 1 1 W W /.i.i.Y .", +"w%; 5#x%8@H+Q@a@y@w@H+H+y@H+E@;@'@&+e@w@6@e@,@b@Y@P+)#X+K+i#]+ #i#T@&+Z+B#r+j+D@l@{+B#;+h#`+Y@D@`+L+>+;+g+R@x@H#{@L+/@_#k+B#`+D@(+Z@ #:@{+~@M.!@y%- O$- }#g%y#) y#- y#d.s.O$O$y#O$O$O$y#g%].O$v%) 1 d.O$y#O$O$1 O$O$O$O$y#O$y#s.1 =%]., g%1 1 O$1 1 1 2 1 W /.Y i.Y ", +"c.5#P z%;@;@H+a@l#f+i+9@7@x@]@H+^@g@K+A@&+E@h#Q@;+<@!@!@)+~@(@_@Z@,+~@l@A@*+h#B# #n@!@l+f@N.B#]@Y+e@N.f@g+k@e+j+)+_#^+&+S.E@n+P+6@n+c@P.B#i#h+Q+Y@A%y#O$s.y#y#) y#) d.d.O$y#O$y#O$s.O$y#e.- g%].d.s.y#y#) 1 O$O$- O$O$O$O$v%O$- ) d.O$e.d.d.s.2 K#1 }#1 1 i.i.i.Y Z ", +"c.2%a$P+H+y@)#x@7@Q@a@Q+^@;@-+,#)@d@B#c@0@W+L+K+ #^@Q+<@'#k+:@R+B#K+!@:#O@~+h+`@B#h#Q+8#C@/@c@;#Y+;#X+_@`@n@(#k@:@P+S.R+`+h+h@G@i#N. #^+C@(+o@T@`@j@B%d.O$y#v%s.y#^.d.v%d.) O$O$O$O$v%) ) d.d.y#s.) d.s.] d.O$d.y#1 1 y#- d.^.e.) v%O$) O${ y#l.O$1 2 2 1 W W Z i.Y ", +"c.5#C%'@H+z@8@H+H+i+;@;@i+T+H+;@F@M+;@H+H+w@J+H+&+'#M+F@E@<@i#g+Z@l@-+)+h#S.7@l@&+)+=+F@,@n+_#=+,+(#T@Q+=+n+f+C@)@<@:#A@n+;#;#,+)#k@,@:@N@_#!@~@)+>+=+D%s.O$y#d.y#y#y#) ) ) d.O$) ) d.^.e.d.v%g%e.) ^.y#y#O$1 O$- O$O$O$O$- O$d.s.y#d.s.g%d.O$O$d.1 O$2 1 W Z W Z Z ", +"F.E%a@I+H+6@x@H+&+_#T+d@'@)@X+(# #`@c@'#P@j#)@j+]+B#'@8#P@B#<@_@]@h@_@`+f@Z+)+o@Z@h#8#8#'#_+j+)+o+{@j@:#8#9#:#T@g@K+V+h+G@n+ #t#N@T@ #h@;#8@e+ #G@(+)+j@F%y#e.].y#e.) d.d.y#{ O$) d.] d.d.e.s.g%s.s.v%) e.d.- ) O$] - 1 O$O$O$y#) y#O$d.d.1 O$1 O$1 O$O$W | W Y Y Y ", +"G%H%l#S+7@w@'@H+6@8@y@0@f+y@d@7@_@*+B@f+H+]@_#>@(+!#!@Z@O@c@8#;@B#i@r+t#[@t+:@^+t#T@,+'+l+Y+j@n+Q.k+^+]@_#{+f+_+ #X+H#d@G@y@]+F@ #!#i@:@H#K+0@e@]@8#n@,+!@I%s.d.O$d.v%y#) ) ) ) O$O$- d.) ) y#s.d.d.) s.) ) e.) y#d.O$O$O$) d.v%d.O$y#s.O$y#d.1 1 1 1 1 | | W Y W Z ", +"J%K%H+P@8@e@B@'@6@_#P@L+M+y@6@;@&+R+y@k#H+N@L+8@8@=+f+N+;#,@'@-#i@B#(+'+`+L%x+H@o@^+M%Y+o+)$G@s#v+;+S.j@i@r+9@]@B#g+n@0@ #N@i#d@B#r+ #;+/@F@K+M+w@e+U+l@R@!#N%) ) ) e.g.^.e.; ) d.d.) ].v%d.) y#s.e.s.) y#d.y#) ) y#O$O$O$O$O$O$O$) X.% d.O$O$1 O$1 1 1 W W W W 4 Z ", +"O%H+H+H+e@;@H+H+(#y@f+,@'@8@)@_#Q+ #N@g#y@)@&+f+`@,@i#(+<@N.j+(+V+^+M.N$M.P%+#Q%R%S%T%P%I#U%V%W%W%^+N$O.s#X%Y+s#)+n@k@h#_+h#t#h@e+:@L+F@O+Q@,@I+e@;@i+j+;+X+!+Y%v%d.e.e.^.e.) O$d.d.) d.O$d.e.O - ) y#y#1 d.e.s.y#d.O$O$O$y#O$d.O$O$s.O$O$y#O$1 O$1 1 1 1 1 W W W Z ", +";@k#H+j#'@B@O+H+E@_@P@P@F@Q@R@e@k+Q@P+c@-#&+e+6@[@d@B#h@h#i@f+ #~+(+Z%`% &.&+&@&#&$&%&&&*&=&-&;&>&,&'&P%)&I#v+!&o+X%O.h#V+9@h@R@ #N+f@[@l+!+O.{@W+M+H+>@/@h@Z+~&) e.e.s.e.e.{&) O$d.) { ) ) O$y#) s.e.O$d.O$s.d.y#d.g%1 y#O$d.O$O$y#O$1 O$y#O$O$1 1 }#1 2 1 | 1 W W ", +"H+H+H+k#H+b@M+6@_#&+f@&+;@e+N@Q@;#0@>#H+H+P@O+6@ #&+)+;#L+j@_#)+(+,+]&^&/&(&_&:&<&[&}&|&1&$&2&3&4&5&5&6&7&N$8&R%X%R%N$l+S.Y@C@,@k@;#Q@h@&+>+f@~@^@k#x@H+x@(@{@H#u%d.d.e.) e.d.e.) ) d.] ) ) y#y#y#O$) s.) O$y#O$) y#y#v%d.O$y#d.d.y#=%s.s.O$O$O$O$O$O$O$2 2 W W W 2 ", +"S+H+;@w@w@H+a@f+Q+;@h+'@H+!@M+K+&+R@[#b@8@_@K+;+O@H+S.H#k@h#/@l+[@t+9&0&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&{ r&s&t&u&v&L%w&.#N$w+Q.*+k+*+O+'#~@U+!@I+M+;@;@'+)+_+x&s.e.e.) ) ) ) {&) O$] ].d.y#s.s.s.y#s.O$s.) y#v%y#O$y#O$O$O$d.O$1 - - y#O$O$y#O$O$1 1 1 2 W W 2 W ", +"A@P@_#7@'@l#;@F@A@>@k+R+R+R@Y@S.C@y@h#M+;@N.;#d@:@d@M.^@_+b@D@o@]+&%y&z&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&S&S&T&U&V&W&)&X&x+Y&V+n+[@s#`+)@!+)+L+{@&+<@S.O.R%r$Z&' e.) ) ) d.) d.^.d.d.) O$' y#y#y#s.y#O$s.y#O$s.O$d.O$y#d.{ d.O$d.O$O$1 O$}#O$O$O$y#O$2 | 1 W W ", +"i+T+w@;@H+N@H+H+;#H+;@H+x@R+;@P+P@7@B@6@a@T+y@W+Q@l#X+y@(+;#{@i#N.'+`& *.*+*@*#*$*%*&***=*-*;*>*,*'*)*!*~*{*]*^*/*} ) (*_*:*<*&%v&)$Q.H#K+!+0@i+N.7@g@9@(@h@`@s#G@[*y#s.s.O$s.v%d.v%d.) ^.) y#) y#s.y#O$y#s.g%y#) g%s.d.O$O$O$O$O$O$O$O$O$y#O$- - y#y#O$1 1 1 W Z 4 ", +"H+;@x@H+H+;#H+Q+,@H+h#;@i#g+f+-+S+,@b@b@<@[@z@N+C@-#k@g@{+h+S@Z+`+N$N$}*|*1*2*3*4*5*6*7*8*9*0*a*b*c*d*e*f*g*h*i*s.O ) j*S&k*l*m*n*o*W%^+n+V+!@h@:@e+r+)+x+.#{+p+U.O ) v%) ) d.e.) ) ) O$] ) O$y#O$y#s.s.s.) y#y#y#y#O$O$O$O$O$1 O$O$O$O$O$O$y#d.O$O$O$O$1 1 1 K#| W ", +"g#w@J+H+R+A@>#<@e+_#;#l#C@O@_@/@,#e+,@'@_#!@=+n@)#)+,+d@D@;#f@!#P.m@+#P%p*q*r*s*t*u*v*w*x*y*z*A*B*C*D*E*F*G*H*I*J*K*g%L*S&S&M*N*O*P*Q*I#w&9#Z+M.n+i#[@[@9#q+o+R*) s.e.e.y#y#) s.e.y#) d.d.) y#v%y#d.y#e.{ O$) d.^.) y#d.d.y#y#d.O$O$s.O$s.O$- g%d.O$O$y#1 1 1 2 | O$", +"w@w@I+H+8@l#6@P+A@8@U+i+]@i+d@h+j#B@,#w@-#O+H+)+8@H+N.;#r$Q@k+[#H#Z+M.S*T*U*V*W*X*Y*Z*`* =.=+=@=#=$=%=&=*===-=;=>=>&,='=S&)=!=) ~={=]=^=Q%S*r+m+/@D@Y+Z@s+`+/=y#d.) y#y#y#v%) ) e.) ) ) d.d.y#s.s.O O$) ) ) s.y#e.O$s.) y#{ s.d.d.y#y#O$O$s.) ) e.O$O$y#O$O$1 | }#| ", +";@;@H+H+Q+H+H+;@6@w@A@J+h+y@<@E@k#e@8@w@)@,@x@e+<@Q@O@&+!+Q@_+A@N+M.Y+(=_=:=<=[=}=|=1=2=3=4=5=6=7=8=9=0=a=b=c=d=e=#&f=g=h=i=j=P k=S&S&l=m=X&s+`+Z@]@~+l+n=w.{&) v%) ) ) ) ! y#s.) s.) e.v%) v%O$O$y#s.) ) v%) s.s.O$y#g%s.O$O$d.O$O$O$O$y#s.s.s.y#y#s.O$O$O$1 1 | | ", +"_#6@&+H+X+T+{@ #k#h#L+=+Z+O@D@]+O@f+d@b@D@f@`@]+:@n+!#,@!@_#M.{@n+h@N.v+W%o=p=q=r=s=t=u=v=w=x=y=z=A=B=C=D=E=F=G=H=I=J=e=K=L=M=I*N=S&O=, P=Q=_=R=(+S=T=s.) ) ) ) ].) v%) y#g.) ) y#e.y#d.d.O$y#- y#y#s.y#e.s.) e.) e.y#s.y#O$d.1 1 g%y#y#s.O$s.s.s.g%s.y#O$1 1 | 2 | ", +"i+N@M+N@N@z@I+_#y@{@A@b@Q@f+f+j#N@w@,#H+i+f+6@A@;@R+e+6@S.a@>+&+R@t#*+m@S*X%U=V=W=X=Y=Z=`= -.-+-@-#-$-%-&-*-=---;->-,-'-)-!-~-{-]-^-/-) (-_-:-<-O.[-d.].].) ) ) e.d.O ) s.) v%y#y#y#y#) O$) v%s.s.s.y#g%) s.y#d.s.O y#g%y#y#d.O$O$- ) d.O$y#y#e.O ! O v%g%O$}#| 2 | ", +"i+M+;@P+>#b@h+d@H+U+Q@Q@_@8@g@_@P@M+>#M+g#;#O@[@R${@!@;#j+;@h@)+i#h@:#'+^+H@}-|-1-2-)*3-4-5-6-7-8-9-0-a-b-c-d-e-f-g-h-i-j-k-l-m->-n-o-p-q-r-_-s-9#t-u-v-Q Q ].{&) s.e.e.g%^.e.y#) e.y#) ) ) ) ] y#y#) e.e.s.O O ) e.e.y#y#g%O$y#1 O$- d.{ O$s.g%P e.O ) O$O$1 K#| | ", +"H+(#H+'@Q+;@A@9@f+B#g+P+=+A@]@_@~@L+w@,@j+0@_#i#f+;+^@<@P.=+D@i+!+(+Q.x+9#x+w-x-y-z-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-k-Y-Z-`- ;.;+;@;R&#;$;%;&;*;, d.d.) ) ) ^.) y#y#s.y#e.y#g%O$- ) d.) s.v%P e.) P s.y#y#O$O$y#y#1 y#) d.O$e.s.s.e.d.d.d.O$1 | K#1 ", +"w@!#W+9@K+l#h+)@<#!@&+Q+_#0@F@,# #E@&+T+=+P@=+'#I+B#d@<@~@g#f@^@I+f@U+;+8#l+t+=;-;;;>;,;';);!;~;{;];^;/;(;_;:;<;[;};|;|;1;2;3;4;5;6;7;8;9;0;a;b;c;d;e;f;g;h;i;%;v-R ].) s.y#e.y#y#e.e.e.d.y#y#s.e.) y#d.O$e.s.s.s.e.s.s.) O$g%d.O$O$O$O$O$s.d.) v%e.d.e.O$1 1 K#W | ", +"H+i+y@H+j+H+a@F@L+]@>#*+O+_#!@K+e+,@&+x@P@w@y@8@Q@K+N@C@H#P+_@'#E@'#g@!+;+O.S@v+j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;A;B;B;C;D;1;2;E;F;G;j-H;I;J;K;L;M;N;O;P;Q;R;g;S;i*< j=, v%e.e.) ) e.s.) O$g%y#s.s.e.{ ' y#e.v%v%].y#s.d.) g%y#O$O$1 y#O$v%s.e.s.y#O$v%{ { | | 1 W ", +"w@6@K+_#_@>@C@y@-#^@f+;+8@;#>+'#D@^@0@e+k+=+H#e+~@!+K+(+U+k@l@Z@~+N.~+S.N.q$s#+#W&T;U;V;W;X;Y;Z;`; >.>+>+>@>#>_;$>%>&>*>=>=>C;->1;2;;>W->>,>'>)>!>~>{>]>^>/>(>_>:><>S;[>}>j=, ) e.s.s.s.e.y#d.O$s.g%d.e.v%e.s.s.s.s.e.d.y#y#s.O$O$O$y#O$y#g%y#O$O$d.y#O$1 | | 1 K#W ", +"y@h+e@_#K+w@`@]@=+:#>#H#<#x@g@8@g+^@l#d@-#f+8#S+g#g@&+&+i+X+S+7@f+0@i+*+e+T@P.S.+#|>1>2>3>4>5>6>7>8>9>0>a>b>c>%-d>e>f>g>h>i>j>=>C;|;k>6;V-l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>K*A>&;B>R e.d.e.) y#e.d.) y#y#y#g%y#s.y#y#y#v%' s.) - O$- 1 O$y#1 d.O$O$O$O$y#O$1 K#| | | | ", +"y@N@8@L+P@f+C@9@B@R+T+X+'@g+&+(#U+g+)#T+i+M+e+w@O+~@,#V+R$!#j+W+D@Q@g@k+P+G@k@`+9#+#C>D>E>F>G>H>I>J>K>L>0>b>#>M>N>O>P>Q>R>S>S>T>=>U>V>W>X>Y>W-Z>`> ,.,+,@,#,$,%,&,*,=,-,g;z>$;[>v-, ].s.e.O s.y#s.y#s.O$O$y#v%g%v%y#s.O$y#O$y#O$g%O$1 O$O$O$O$1 1 O$1 K#| 1 | | W | ", +">#M+H+P@b@7@_#9@{@g@_#i@j#B#>+O@:#F@k+R@(#,@l@P@k+D@N@P.!#O+Y@h@O.i@)+N+]@Q.Z@t+9#M%<*;,>,,,',),!,~,{,],^,/,(,a-_,:,<,e>[,},|,1,2,S>3,4,5,6,7,e-8,9,0,a,b,c,d,e,f,g,h,i,Q;j,k,S;A>B>Q , , ) y#y#y#y#O$y#g%O$d.1 O$y#O$d.y#O$g%1 O$g%O$O$1 1 1 - O$2 { W | V | | V i.", +"z@<@L+{@P+Q+8#a@i#=+0@-+f+R@=+;#S@B# #8#J+T+~@>#'#~@x@{@K+k+7@<#Y@g+P+W+0@)#]@(+n+]+O.X&l,m,n,o,p,q,r,s,t,u,%-v,w,x,y,z,A,B,|,C,D,E,F,h>j>G,H,5,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,K*&;[>*;j=R d.g%O$s.1 O$d.- O$X.{ O$1 1 O$O$O$O$O$1 1 1 } O$1 1 1 1 } | V | [ i.W ", +")@e+e@'#d@L+D@R+0@_@M+ #;@-#_#&+*+,@j+Y@&+a@f+;@,@^@B@k+(#j@,@K+>+R@Z@C@Q@:@h+]+Q.(+S.x+R%Z,`, '.'c=+'r,@'#'$'%'&'*'z*='-'A,;'1,D,>'>','''h>=>=>)'!'~'{']'^'/'('_':'<'['}'|'1'2'3'4'h;5'&;[>}>[>, 1 O$O$O$O$y#y#O$O$O$O$O$1 O$1 2 O$1 1 K#d.1 1 1 | 1 | | V | [ | /.", +"w@Q@H+_@>@B@L+f+c@j+7@n@0@-+]@h#/@f@-+(+d@R@B@;@_@d@0@k+8@;+P@k@_@n@l+V+h+M.9@D@/+k@+#r+X&v&6'7' '8'9'0'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'n'E,F,''p'4,)'5,q'r's't'u'v'w'$,x'y'z'A'B'C'D'E'F'G'H'5'I'####( d.d.O$] O$O$y#1 1 1 O${ O$O$1 }#1 1 1 | 1 1 1 | 1 V V V [ V V ", +"B@P@w@E@ #E@g+h+)#O+0@n+w@!@<@'#`+;#l@n+`@]@<@M+L+;#e+^@;@Y@H+f@w@l#Y@i#i@^@;# #F@i#,+(+n+P%H@J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'`' ).)+)o'>','S>h>4,@)#)$)~'%)&)*)=)-);)>),)')))!)~)O;c;{)])^)/)()_) @}>R { O$O$O$1 O$O$K#O$1 O$1 1 1 1 1 K#1 1 | | | | V | V | V V ", +"g#;#F@R@K+i@&+e+Y@J+_#~@H+d@Q+=+[@!@]@(@!@L+P@J+g#a@(#`@f+R@R$,@n+>#h+^@P+V+c@Y@L+i+*+)+`+O.v+N$:)<)[)})|)1)2)X>k>W>3)4)5)6)7)8)9)0)a)b)c)c)o'E,d)e)U>@)H,f)g)h)i)j)=)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)K*z)A)B): 1 1 1 1 1 1 1 1 { O$1 O$O$1 1 1 1 1 1 { | | _.| V V V ", +"_#)#B@,@R$[#j#j#_@)#Q+)+H+k@B@_@k+=+!#8#i#!#=+)#)@7@;@Q@;@h#S+i@;#_@N.]@(@V+E@m@!+j+,+_+j@9#S*W&)&C)D)E)F)G)H)I)5;k>q'J)K)L)M)N)O)P)Q)R)S)T)c)+)D,U)h>G,V)W)f)X)Y)Z)&)`) !.!#,+!@!#!$!%!&!*!=!-!;!>!,!R&'!)!##}>< O$1 { O$1 1 1 1 1 K#1 1 1 1 1 1 1 | 1 [ V | | _.V ", +"M+N@K+ #M+H#'@)# #H+A@Y@P@ #O+O@]@R@h@k@k@`+;+)@[@!#i@P+>@e+z@ #y@K+e+e+Q+f@O+>+,@A@!#f@n+Z+-+I#o+L%!!~!{!]!^!/!(!5;_!:!E;B!C!D!E!F!G!H!I!J!K!L!M!N!O!`'P!Q!R!S!S!T!U!V!Y)Z)%)W!X!Y!Z!`! ~#,.~~>+~s)@~#~$~{)%~&~^)y)*~=~A)1 { 1 1 | 1 1 | } | | 1 1 | | [ [ V | _._._.", +",@j#a@R+(#)@>#L+B@X+-#E@9@H#f+8#]+<@f@S.d@,+-+P.]@C@Y@:@!#`@i@]+S@-~;~b@f@;+h#~+~+P.[@h@[@m@l+^+,+r$L%X&>~,~'~)~!~~~{~Q-]~1;^~/~(~_~:~<~[~[~}~|~1~2~3~4~5~O!6~7~S!V)8~V!X)9~~'0~a~L,b~u'c~d~e~f~g~h~i~j~k~I*h*6'l~m~q&s!n~( 1 O$1 { 1 1 1 } 1 1 1 / | | _ V _.| V _.", +"w@>@0@{@H+]@8@O@I+H+Q@>@Q@=+k#'@^@!#:@;+A@X+h+X+Z+)@F@A@d@ #i@P.o~{&[*p~&+Q+i+B#O@c@R@(@`@!+j@t#l+S.^+V%q~r~s~t~u~v~1)e-k>]~1;w~x~y~z~A~B~C~D~E~F~G~H~I~J~3~K~L~M~N~S!O~P~U!f)Q~R~S~T~&)U~V~W~d~X~Y~Z~`~ {.{+{@{#{${%{&~&{n~A)A)_./ 1 1 | } | *{| | V [ | V V | _._.", +"8#R@B#/@C@j@H+B#g+O@*+R+,@P.9@8#W+!#R@S@V+!+^@Z@/@N+S.^@~@!@`+Z+={^.^.v%-{y@A@^@Q+{@,@,@:@X+T@t#N.x+/+V%;{Q*>~%&>{,{'{{~5;Q-){!{^~/~~{{{]{^{/{({_{:{<{[{}{|{1{2{3{4{5{6{O~T!T!U!$)c!Q~~'S~]'P'7{8{9{0{c=a{b{c{i!d{e{f{-!g{q!h{)!##U { { { { | _ | | { ^ V V [ _.V _.", +"Q+y@e+,#y@h@N@j#0@]@P+d@0@Y@w@X+7@U+_@T+i@F@L+{@^@0@R@w@`@d@Z@x+i{g.g.^.e.j{y@Q+d@j@:@k+B#&+Y@-+Z@_+N.x+N$R%n*_=k{'>l{m{n{o{S'){!{p{b!q{r{s{/{t{u{v{w{x{y{z{A{1{B{C{D{E{F{6{S!S!G{8~U!f)H{I{J{a~X!K{L{ ~M{N{O{P{Q{]!R{S{T{U{V{W{())!)!A)} } | } | } | _.V V [ V V _.", +"P+i+ #_#;@P.6@i@H+~@N@L+Q@[#k#h@>+{@Z@^@K+(@{@n@E@j+H#A@H#O+j@q+X{g.].g.g.e.Y{8@J+`@i+h#{@;#<@ #H#r+n+x+N$L%w-R=Z{`{H; ]2).]+]6,){1;@])'c!#]$]%]&]u{*]=]-];]>],]%]'])]!]~]{]]]^]S!S!O~/](]f)_]!'E;_!:]<][]}] ]|]1]2]3]4]5]6]7]^)q!8]9]|%i*B)} } _ _._ : _.*{V V _./.", +"h#;#N+X+_#!#H+)+f+P+=+N+U+l@J+D@N+O@B#T@P.<@[#n+`@i@X+_#>+k+r+8&0]g.g.^.].^.a]b]c]h@H#!+P.!+)+S@l+j@s#+#d]<-Q*x+e]f]g]/!h]i]j]K,Q-2;1;@]#)k]l]m]n]o]p]q]r]s]t]u]v]/{)]w]x]y]z]F{A]^]B]N~S!G{)'D;1;){W>_!C]o{D]h]E]F]G]!>j!H]I]U{J]K]L]M]9])!n~N]*{*{_.: : : _.V i.V ", +"Y@N@d@c@W+Y@P@=+k#[#J+8@!@R@e+'#!@<@f@z@M.F@O+U+<@:@O+I+N+W+T@x+O]].g.{&g.].e.O P]Q]l#P.Q@,@h@W+L+'#h#!+O.&%o*r$R]a;S]N{T]U]V]]'W]k>){1;w~X]Y]Z]m]:{`] ^.^+^t],]@^/{#^1{$^%^&^*^=^-^^]F,S>3,=>B;;^w~#)_]>^W>,^'^)^!^9{~^{^]^^^I]/^%~g{(^x)y)_^9] @A)_._ V : _.: _./.", +"(@7@i@K+R+h#w@(+H+!@,@I+A@9@P+{+)@'#/+R+_@D@g+/@F@k@f@O+k@d@_+o+O]{&g.g.s%{&Z&[*a]a]:^<^R@K+l@:@!@;#,@:#:#X%(=[^}^t)|^1^2^T]P'M,.]4;E;2;5,5,f)3^4^5^6^7^8^9^0^u]a^b^c^d^y]&^2~e^f^g^h^^]i^h>j^j^4,G,H,k^w~l^E;Q-:]<]m^n^o^p^q^$~m!r^s^r^t^u^v^w^q!x^B)U _._.V *{_._.", +"g+I+c@6@y@P@T+C@>@'#E@;#i@_@)@P.j+f@]@!+!+N+f@n+8#=+k@j#S@B#Q._+y^e.g.g.e.{&a][*a]s.a]z^A^B^!@g@'#S@i#Z@!#w+N$C^D^E^F^G^o>H^I^J^K^L^5;3;M^:!_]c!N^O^P^Q^Q^0^R^S^@^'])]T^1~e^D{E{2~U^V^=^W^X^3,''Y^9!V)@)D;@]1;Z^W>`^ /1].~./+/@{@/#/$/%/&/%/*/=/-/I@;/>/U V V V /.V ", +"D@K+*+d@/@N+d@[#w@~+=+'#:@e+{@P.C@!#O@-#X+h+Y@)+X+g+R@f+D@D@!+Z+B>g.,/g.g.e.[*[*a]e.a],/{&,/'/)/!/~@0@)+ #S.~/{/]/^///(/_/:/d/|;@]l^){e/f/g/h/~>i/j/j/k/l/m/n/o/p/q/r/s/;/B)t/: _.i.V ", +"_@L+h#H+U+c@M+,@g#_#;@;@O+P@^@)@P+k@=+A@l+R+^@<@k@8#i@N+/@D@r$m@$;,/O ,/P e.P ,/a]u/s%,/g.e.a]P e.v/w/x/y/z/g.].Y,A/B/C/D/I;E/F/O{N{l>G/H/,^_!W>!'c!3^I/J/K/L/L/@^M/5/N/O/D{D{7/7/P/8/Q/R/7/7/S/T/U/V/S!W/j^X/d/|;!{O-'^Y/Z/`/h/ (.(3]+(@(#(#($(%(&(*(=(;/-(U B);(_.", +"[#K+:#;@P+~@;#Z@_@{@]@;+!@*+*+i@n@t+]+:#_+;#h@l@h@r+g+{@o+;+Y&m+>(P P P a],(e.P ,/g.g.].g.,/,(a],/g.g.,/g.'(^.^.].X,T{)(!(~( {{(](^(:/H^W-/(C]_!I,$)((_(:(<(t][(}(|(1(2(2(&^3(4(3(5(6(7/7(5(3(8(%^9($^0(6{j>j^X/d/a()'E;b(U]E]c(d(e(e(f(g(h(i(j(k(j/l(m(n(8])!B)_.a.", +"N+7@]@E@)@C@H+~@P@^@O+E@C@'#^@S@H+V+R@0@,+d@Y@0@P@M.]@<@!+;+9#'+o(Z&u/,/a][*e.g.P g.g.p(t.g.P ,/^.g.e.P g.{&^.^.g.Q ,=q(r(t)k!s(t(u(v(1^w({~o{C]x(y($)z(A(B(x{x{[(C(D(E(F(G(H(2~Q/P/8/*^I(J(Q/Q/Q/7/4(K(9/]]X^L(L(4,G,M(5,6,N(O(M,Z!u'/'('P(Q(R(S(>)T(U(V(x)W{)!-(-(", +"l@*+U+W+N+-+=+0@H+N.7@0@Q@j+<#Z+>#S@Y@R@n+K+D@Y@0@~+d@B#Q.`@X&^+W(a]Z&,/a]a]P ,/P g.^.].Q '(,/e.e.e.e.a]e.^.^.].g.) j=X(Y(Z(`( _._N;+_@_#_ ]$_K,R'6,S'%_z(_(&_*_x{=_-_;_F(G(>_U^,_'_'_)_)_J(J(I(L!J(J('_J(!_~_{_]_S!9!4,4,T!b!^_~'S~s']'/_(___P,e(:_o/<_[_}_|_1_W{2_", +"O+i+;@H+H+M+O@R@i+C@b@;#Q+;#!@h@g@j@c@R@j@)+!#R@H#l+X+k@Y+]+8&q+3_[*v/P P P a]u/Z&g.^.p(++g.g.g.g.e.s.P ,/d.g.^.g.^.s.$;E'3'/&e;4_$~5_6_7_Z/P'L,8_9_q'I,c!0_A(a_z{b_c_d_1(e_f_U^g_g_'_)_)_)_)_V^h_i_T/T/I(j_*^f^k_l_h^S!G,V)G,W)m_!'n_o_p_q_r_s_t_u_v_k/N;[_w_x_J]y_", +"7@!@ #=+k@g+)#X+L+k+)@8#N.9@]@i@)@q+B#C@k+L+Z+d@L+)+)@K+n+N.9#O.z_v/P ,/g.u/a]a]z^e.g.{&t.^.^.{&^.g.e.O ,(e.{&g.e.e.e.,/A_B_X,w)C_X(D_E_F_G_H_N,X!+]`^q'n_I_J_K_k_L_G~*_M_G(N_O_g_g_P_)_)_)_V^i_i_Q_Q_0(R_R_S_f^T_U_N_V_W_X_B]0!G,@)#)!'~'S~Y_Z_`_ :.:+:@:<_l!m!4&#:", +"P.k+f@y@,#E@)@<@w@(+E@0@N+^@ #{@_#k@_#;+`+H+`+K+^@:@]@n@>+:@s+O.$:[*a]g.g.v/z^a]z^g.g.g.p(^.{&^.^.g.[*O O ) e.^.e.g.P s.O z)%:z>h;X,&:*:=:-:;:>:,:b~p_J{q'!'!'V!':k_L_[{):|{!:I~g_P_,_)_)_V^i_Q_0(0(0(~:{:l_]:^:/:U_|{(:U^l__:X^3,L(=>V>#)c!::r'<:[:('}:k(|:1:2:3:4:", +"-#W+)@P@!@f+Q+8#;@)@K+]@K+E@(+Y@ #Z@P+N+l@e+m@=+k+{+J+S.l@Y+I#^+5:v/a]e.P a]a]a]a]a],/u/g.g.g.].].g.a]a],/g.g.,/P P P P e.e.Q 6:7:8:9:0:a:b:c:@,=)d:b~e:J{f:!'b!g:':k_h:}{}{|{i:N_g_,_)_)_j:!_Q_k:k:k:l:m:n:o:^:p:I~I~(:e_g_q:{_r:0!j>U>a(k^b!X)s:t:u:('v:k(l/T(w:x:", +"E@g@ #'@f+R@,@f@-#*+)@S@,+h#t#e+:#]@k+Z@l+B@T@,@[#'+,@M.]@k+s+!+y:z:A:,/a]a]a]a]a]a],/P ,/,/,/p(].g.P e.e.g.,/e.e.Z&a]e.e.P g., B:i{C^3'A'C:%!D:E:O,F:b~s'r'G:c!I_H:m:I:|{M_M_|{N_g_,_)_I(j:U/0(k:~_~_l:{:J:K:I:L:M:N:/:L:g_U^*^O:c/S!j>j^U>M(T!P:c!Q:t:R:S:T:U:V:W:", +"h#)+[#)+:@d@`@P.S+Z@C@ #;+W+/@P+i@H#g#!@{@<@:#S+]@/@e@P.:@(@S*~+o+G.z^a][*a]a],/X:a][*v/,/,/g.].].t.g.e.e.^.,/e.,/P a]e.,/g.g.,/].v-i{Y:Z:`: <;)./<(<_<:<<<[h>h>j>G,H,c<)_q:0(~_k:ub&A<<'B<,_Y@M.j+d@!+Q@8#`@L+T@(#~+8#!@!+<@Y@!+U+l@B#!#j@Z@-+o@V+o+P%i{g.{&].Q '(a]v/v/v/,(,/e.%[g.g.g.,/,/^.a]e.a]P P s%,/P g.g.P P P ^.g.v-i{8:&[j<*[=[-[;[>[,['[)[W<%)Z)Y)![~[{[L_I~U^I(V^j:i_i_V^*^)_^:,_g_U^N_N_e_][^[/[([([_[i::[G(G(O_U^U^U^U^2~G(i_W_<[[[}[|[", +"N.m@:@[#S.*+`+H#k+S.[#h@D@<@M.Y@ #g@^@]+!@)@R@_#S@h#_#)+E@f@.#:#S.v+y^,/{&g.Q ^_O_*Q;Y[Z[`[ }.}u_+}('F:@}%)r'#}$}u[%}&}O_g_f_%},}i:H(2~'}G(G(e_I~N:N:", +"n+k@_@N+l+R+t#[#!# #&+Q@:@F@!+{@)+i@L+_@O@e+f@A@N.<@K+D@K+i#(+(+T@x+Z@d])}!}'(p(g.v/a]a]a]a],/,/g.a]a]g.u/g.g.g.g.g.g.P g.g.g.g.P g.e.g.e.P e.) e.].A>z>(<~}{}]}^}/}(}7[+}__+<@}_}R~f:q'Z):}1~>_L:%<<}/:[}K/>]}}/[H~|{K(3}t.'(e.P ) e.g.g.g.g.a]a]P e.,/g.P u/a],/,/g.^.g.^.g.e.^.^.e.e.,/P g.e.v-C^4}5}6}=[B&o[7}8}9}E:pq'u[a}b}f_p:%W>n_y}~[{[%M}N}m[O}P}Q}R}S}T}U}V}V~W}K,3;E;!'$)c!X}Y}Z}`}w{D}d}i}J}R[ |<(g[.||{e_KI,_]X]>|g:=<,|e[;];]S[J}R['|[()|g}&I,_]||1|2|3|4|g[k}A[w{k}5|k}[(a^C[M_!:E[Kh|i|j|$|k|l|m|n|o|p|.,q|D],^r|s|t|)'u|v|w|x|F[o]y|S['|R[[(,]z|d_|{:[:[O_I~F[A|Q[<{<{B|c_H~C|D|E|F|G|", +")@]@_#O@)@e+{@f@D@)+-+~+`@:#V+9|9|9|9|9|9|9|0|H|H|a|b|H|H|I|J|T@T@^+S.M%;+x+`+Y&O.v/u/^.,/g.,/g.,/a]g.g.{&{&,/,/a]P ,/[*a]P ,/,/,/e.g.a]X:g.{&^.^.g.^.g.e.e.g.].K|L|M|g;N|O|P|Q|R|S|T|U|Y/<]V|W|X|w~Y|7~<[Z|`| 1.1I<+1V[|(g}[{[{):!:F(2~8/'_U^O_e_I~z[2}J<-}@1o]S[q]", +"Q+f@e+`@h@(+^+H#t#_+:@/@M.n+M.9|9|9|#1$1%1&1*1=1-1e|;1>10|0|9|f@`@S@k@t#l@+#T@'$m+M.{&g.g.g.a]g.,/a]^<^+{@Y@;+l@T@l@H#,+k+9|9|9|*+~@[#'+M.P.r+B#l@;#[19|9|}1l@D@s+`+Z@s#[@r+(+M.[-g.g.g.P g.g.a]g.^<'({&g.,/v%g.g.v/v/,/u/P a],/P g.g.g.g.^.^.g.g.g.g.g.g.e.g.g.|1A>S;112131415161o/<><)_P_g_U^8/2~O_f_", +"Y@L+;#P@i+:#8@I+k+L+B#E@k+k+h#9|9|9|!+(@~@:@[#V+[@P.j@L+(+T19|9|U1E@h@`@9|9|V1W19|9|9|0|X1P z^a],/Y1Z1`1`1`1`1`1 2C1,/[*v/[*a]a]`1`1`1`1`1`1`1`1`1`1`1.2+2,/P {&@2#2$2{&g.X[S;%2&2*2=2-2;2r>>2,2'2K,S'!'>|O~S!)2!2~2{2]2^2/2(2_2:2,_e_e_*<*V2W2X2Y2Z2`2~:,_N_N_g_8/ 37(,_j[U^.3D{.3,_", +"0@T+(@P@!@_#7@i@F@d@n+E@`@d@D@9|9|9|T@P.j@,+'#t#l@:@9#`@+39|9|@3<@D@D@D@9|9|9|#3{+`+/@(+s#n+/=$3%3&3*3^3G2,3M<'3_>)3!3~3{3#,[|x}]3^3/3(3_3B]a1<[_1S>:3<3[3}3|3X_13)_N_P_'_P/8/'_K(2{'_P_><><", +">@l#7@H+k+6@>#P@;#f+^@E@ #;#H#9|9|9|/+D@S.]+i#k@/+n+'+239|9|9|33~@,+Z+t+9|9|9|43O.`+r+o@)$`+5363$373v/g.%[^X{d32'e3f3g3h3i3j3-)k3l3m3h2S!^]7~6{n3o3p3q3r3s3''7~t3T/J(J(7(I(><'_U^'_><><><", +")+K+:@b@[@R+]+Z@A@D@Q+!#t#k+/@9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|u3g@]+~@_@(+9|9|9|]+Q.r+r+m@v+t+v3w3x3y3z3,/A3{&,/g.p(A2`1`1B1{&X:,/e.P g.,/u/,/42`1`1`1a],(P P P ,/B3C3D3{&g.g.g.E3a3F3z<[>M)v_M38[N3s:h2O~7~v2Q3R3,<''B]]]S3T3R/R/J('_,_><)_)_)_", +";# #)#,@0@<#7@!@&+N+0@&+E@,@d@9|9|9|9|9|9|9|9|9|9|9|9|9|U3V3N.&+;#S@_#[@9|9|9|P.T@n+/@j@/+,+W39|X3Y3z:,/,/g.,/g.{&g.`1`1B1P ,/g.,/g.g.,/a]B2`1`1`1Z3a]a]e.a],/,/`1`3C3g.{&g.g. 4.4+4^.z<}>7:@4#4$4%4&4*4=4-4C<;4>4z((]/]/],4'4)4!4~4R3{4{4h>]4^4/4(4_42~U^,_><)_)_)_", +"e+!@<#f@P@)#j+D@H+k+-#-#i#P@H#9|9|9|:4<4[4}4|4142434^+>+]+7@T@8#)@ #W+h@9|9|9|D@Q.Z@V+w+Q.t+9|9|0|44z:u/g.g.u/^H2%29404a4k{4p4V2F,q4_4r4s4t4b}D{j[)_)_", +"H+_#H+-#)@M+R@=+R+(@O@h+h#,@k+9|9|9|i@S.Y+:#X+{+P.s+M./@l+*+n+&+'+;+[@r+9|9|9|(+s#M.:#V+_+M.9|9|9|S*u4a]g.g.a]g.^+'+k@n+k@k+Y+'+n+k+j#k+ #B@ #6@)@9|9|9|!+Z+j@Z+k@t#t#9|9|9|m+X4{&u/,/u/,/g.g.Y4`1`1g.,/g.,/g.g. 2`1`1 2g.a],/a]P P P P a]`1`1`1g.^.{&g.Z452E2g.e.g.R `4 5.58:g;3'+5@5#5$5%5&5*5=5~[-5b/;5>5,5'5)5d1S>V2V2]4!5~5{5]5r4r4^5z]y[", +"6@9@_#H+8#H+N@g@;#H#N@`@e+;#U+9|9|9|H#X+`@g@j+H#)+!+(+V+h@h+i#j+R@i#f@;+9|9|9|)+o@:#,+M.`@V+/59|9|S.8&)&i{a]a]P g.g.(5_5C2,/g.g.,/g.A2`1`1 2e.P g.a]P u/e.e.a]P `1`1`1g.e.g.,/:5<5;3g.g.{&].[5}5F3i{ &|515253545556575859505a5b5c5d5e5f55{N~S>''S>g5h5i52!3!j5k5l5l5", +"g#K+{@Q+Y@<#H#g#;#O@&+/@g#,@8#9|9|9|/@j@M.G@Q.8#l+X%V+H@N.~+8#V+S.!+V+T@9|9|9|S.t+t+q+)$G@x+m59|9|n5v+Y&<-o5a]g.g.*3p5q5B1g.P ,/u/A2`1`1`1A2g.,/,/P g.,/g.P ,(u/`1`1`1e.g.g.P 93r5<5e.g.g.^.s5t5u5[>A>K*v5w5x5y5z5A5B5C5D5E5F5G5H5I5J5K5F{L5R!N~P1M5N5O5P5P5Q5R5S5T5", +"9@N+0@'#!@6@~+*+j+]+I+)+'@<#N+0|0|9|)@h@n@:@Y+(@`@^+n+j@j+>+_#7@)@g@f+h@9|9|9|(+[@B#`@(+`@(+W19|9|U5_+r+q$9#V5,/g.W5X5Y5Z5u/,/g.,(`1`1`142g.,/P g.a]g.g.e.,/u/,/`1`1`1,/g.a]g.`5-3 6,/P g.^..6@272v-v-}>+6H292@6#6^}$6%6&6*6=6-6;6>6,6'60/F{L57~N~)6!6~6{6]6^6/66)(6", +",@L+E@c@P+Q@i#K+g#c@y@:@j#_@0@0|0|9|O@Y@H#g@,+R@8#r+[@V%X+,+!#W+>+)@8#h@9|9|9|(+t#n@m@N.Z@o+:#_69|9|:6'+o++#N$z_<6w2[6}6P g.,/P =3`1`1B1e.e.g.a]P ,/g.,/,/,/a]a]`1`1`1,/a]a]a]6483-3,/g.g.g.E2.6|6v-}>*;1626G23646566676869606a6b6c6d6e6f6g6h6b/6{a1i6j6k6l6m6n6O5o6", +"d@S+H+;#-#f+;#W+i#j+0@l@Q@X+)+0|0|0|!@`@/@]+o@!#'+Y+Z+x+O. #/@[@O.l@h@n@9|9|9|Q.t+'+'$9#~+o+{+p69|9|9|q6Y&_+L%r6H|s6&3t6,/g.O =3`1`1`1B1C2C2B1C2C2C2C2B1C242a],/`1`1`1a]g.a]a]`1B3C3P ,/g.,/;3u6v6].v-}>j=w6x6y6z6A6B6C6D6E6F6G6H6I6J6K6L6M6M6a5O3^4a1N6O6P6Q6R6S6T6", +"'@D@_@H#^@)#N.8@)+C@)#:#&+{@<@H|0|0|R@8#(@l@V+g@Z@!+Z@Q.V+,+A@P@X+g+P+~@9|9|9|/@8#:#~+{+~+,+:#j@U69|9|9|9|9|9|0|0|H|V6g.g.^.e.W6`1`1`1`1`1`1`1`1`1`1`1`1`1B1g.g.`1`1`1,(g.a]u/`1`1.2e.,/^.g.X6v452, ].v-i*Y6u5i|Z6`6 7.7+7@7#7$7%7&7*7=7L6-7;7M6a5)5>7,7'7)7!7~7P5n6", +"!#R@'@ #)@0@X+)@<@~@6@Y@T+&+A@w30|0|)#R@=+D@n+h#k@j@h@o+:#s+g+<@h@h#Z@[#9|9|9|`@'+[@T@V+S.9#,+w+G@{7]79|9|9|9|0|^7/7!&9#i{].P (7`1`1`1`1`1`1`1`1`1`1`1`1`1B1g.g.`1`1`1a],/a]P `1`1`1u/P g.g._7:7:7].]., }>}><7[7}7|717273747d&5767H67787t:i)9707a7a5)5M~M~b7c7d7e7e7", +"P@F@H+!@>@7@-#Q@C@D@'@Z@)#:#!@O@X+,@U+:#U+/+j@h#r+Z@l+x+[@^+g@'+k@l+Z+V+^@o@h#;+[@n@v+T@^+x+i@)$!+S.m+s#f7&1g7H@T@8&V%W%R=W(e.g.{&, ,/g.{&^.g.,/,/g.^.^.].^.{&g.g.g.e.g.P P ,/g.e.a]P ,/g.^.^.g.^., , ^., }>%;i{()h7i7O@f@d@h+/@T+^@)+)+P.`+l@T@n+t#M.>+t#T+k@_#y@D@i#i@^@,@i@]@(@{+(+:@M.)+.#(+n+Q.T@m@M.Y+N$S@Y+u+9#L%)$u7e.].{&].^., ].g.e.g.e.g.,/'(g.g.g.g.g.g.g.P g.g.g.P ,(,/g.g.g.{&{&].) , ; , R %;r!r!v7w7J*x7C'y7z7A7B7a=C7D7u:D7u:E7C*F70/o7G7H7I7J7K7", +"^@g+ #_@9@X+P@U+8#)#0@f@H+)@E@F@;+d@g+O@]@!@:@Y@,+H#/+Y&(+!+k#!#m@<# #W+P+V+e+X+<@^@(+]+`+S@i@n@~+:#(+!+Y+n+`+x+`+w+V+Y++#X&8&L7Q ^.].{&g.g.,/e.g.g.g.g.^.t.].{&g.g.g.g.g.g.g.e.,/,/g.P ,/,/g.^.g.].].]., , R 9]M7N78]I@O7P7*/Q7R7S7T7U7L[L[/_V7u:W7X7Y7g6f5Z7P6`7 8", +")@O+P@;#;@h#P@K+8#h#_@:#T+]+8@~@Y@E@F@g@B#k@l@l@l+/@n+9#/@w+h+!+{@B#V+8#l@V+E@m@S.8#Y+9#G@o+T@m+(+v+Q.O.p+H@q$&%w+P%o+H@I#8&(=R=.8O ].g.) {&g.e.g.,/g.g.^.{&^.].g.g.g.,/g.g.P ,/g.g.g.g.^.P ^.) v%^.].]., , ( Z#x^r!r!&{+8@8#8$8%8&8d<*8=8-8=);8>8,8'8$={{)8!8~8{8]8", +"I+7@Q+f@l#Y@'@_@/@M+9@:@_#k+^@f@N+P+k+k+;+S.Z@i@{+/+w+Y+n@m+7@O.=+Y@8#_@)@]@O+>+,@9@(+h@V+!+O@r+E@k@S.k+^+l@n+O.S@9#V+`+v+M.H@p+v+r+v%].].) g.v%g.e.g.].g.{&{&g.].].g.g.g.g.,/g.e.g.g.,/g.g.,/^.^.g.; , , , R u-u-|%^8M7/8(8_8h=:8<8[8}8|8==k)18E=[:28B*-738f648l6Q6", +"Y@S+R+8#H+>+N@[#Z@i@_@E@Q@=+R$)+)@<#[#=+g#n@D@B#H#i@r+`+)+/@e+X+O@Y@H#N.]+k+^@S@-+^@t#D@V+O.~@Z+g@l@D@,+^+D@T@s#Z@u+O.r+'$G@)$v+<-x+58[*^.].^.{&d.d.^.^.].^.^.{&].].g.g.g.g.g.{&^.].{&, ].^.v%^.g., , ].{ R ( u-n~>/68^8^878889808a8b8R{c8d8#(e8f8(_g8,897h8i8j8k8l8"}; diff --git a/src/CVS/Entries b/src/CVS/Entries new file mode 100644 index 0000000..75a78ae --- /dev/null +++ b/src/CVS/Entries @@ -0,0 +1,24 @@ +/BigProZilla01.xpm/1.1/Thu Aug 9 23:22:47 2001// +D/images//// +/Fl_ProgressBox.H/1.2/Wed Aug 1 12:50:16 2001// +/Fl_ProgressBox.cxx/1.2/Thu Aug 2 08:47:38 2001// +/Makefile.am/1.9/Sun Aug 5 09:04:51 2001// +/Makefile.in/1.9/Sun Aug 5 09:04:53 2001// +/dl_win.cxx/1.5/Tue Aug 7 15:14:59 2001// +/dl_win.fl/1.5/Tue Aug 7 15:14:35 2001// +/dl_win.h/1.5/Tue Aug 7 15:14:36 2001// +/download_win.cpp/1.11/Tue Aug 7 23:45:24 2001// +/download_win.h/1.6/Wed Aug 8 09:41:40 2001// +/getopt.c/1.1/Wed Aug 1 10:21:57 2001// +/getopt.h/1.1/Wed Aug 1 10:21:57 2001// +/init.cpp/1.7/Wed Aug 8 09:39:57 2001// +/init.h/1.2/Wed Aug 8 09:39:10 2001// +/main.cpp/1.8/Wed Aug 8 09:54:35 2001// +/main.h/1.5/Mon Aug 6 13:46:57 2001// +/options.cpp/1.7/Wed Aug 8 09:39:38 2001// +/options.h/1.3/Wed Aug 8 09:39:01 2001// +/prefs.cpp/1.3/Mon Aug 6 14:24:18 2001// +/prefs.h/1.2/Wed Aug 8 09:42:10 2001// +/we.cxx/1.8/Tue Aug 7 23:51:35 2001// +/we.fl/1.8/Tue Aug 7 23:51:34 2001// +/we.h/1.6/Tue Aug 7 23:51:35 2001// diff --git a/src/CVS/Repository b/src/CVS/Repository new file mode 100644 index 0000000..5f06963 --- /dev/null +++ b/src/CVS/Repository @@ -0,0 +1 @@ +fltkproz/src diff --git a/src/CVS/Root b/src/CVS/Root new file mode 100644 index 0000000..0e741fc --- /dev/null +++ b/src/CVS/Root @@ -0,0 +1 @@ +:pserver:kalum@cvs.delrom.ro:/home/cvsroot diff --git a/src/Fl_Progress.H b/src/Fl_Progress.H new file mode 100644 index 0000000..91145ce --- /dev/null +++ b/src/Fl_Progress.H @@ -0,0 +1,68 @@ +// +// "$Id: Fl_Progress.H,v 1.1.2.1 2001/08/11 14:49:51 easysw Exp $" +// +// Progress bar widget definitions. +// +// Copyright 2000-2001 by Michael Sweet. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Library General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Library General Public License for more details. +// +// You should have received a copy of the GNU Library General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +// USA. +// +// Please report all bugs and problems to "fltk-bugs@fltk.org". +// + +#ifndef _Fl_Progress_H_ +# define _Fl_Progress_H_ + +// +// Include necessary headers. +// + +#include + + +// +// Progress class... +// + +class Fl_Progress : public Fl_Widget +{ + float value_, + minimum_, + maximum_; + + protected: + + FL_EXPORT virtual void draw(); + + public: + + FL_EXPORT Fl_Progress(int x, int y, int w, int h, const char *l = 0); + + void maximum(float v) { maximum_ = v; redraw(); } + float maximum() const { return (maximum_); } + + void minimum(float v) { minimum_ = v; redraw(); } + float minimum() const { return (minimum_); } + + void value(float v) { value_ = v; redraw(); } + float value() const { return (value_); } +}; + +#endif // !_Fl_Progress_H_ + +// +// End of "$Id: Fl_Progress.H,v 1.1.2.1 2001/08/11 14:49:51 easysw Exp $". +// diff --git a/src/Fl_Progress.cxx b/src/Fl_Progress.cxx new file mode 100644 index 0000000..afc1edd --- /dev/null +++ b/src/Fl_Progress.cxx @@ -0,0 +1,121 @@ +// +// "$Id: Fl_Progress.cxx,v 1.1.2.1 2001/08/11 14:49:51 easysw Exp $" +// +// Progress bar widget routines. +// +// Copyright 2000-2001 by Michael Sweet. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Library General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Library General Public License for more details. +// +// You should have received a copy of the GNU Library General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +// USA. +// +// Please report all bugs and problems to "fltk-bugs@fltk.org". +// +// Contents: +// +// Fl_Progress::draw() - Draw the check button. +// Fl_Progress::Fl_Progress() - Construct a Fl_Progress widget. +// + +// +// Include necessary header files... +// + +#include +#include "Fl_Progress.H" +#include +#include + +// +// Fl_Progress is a progress bar widget based off Fl_Widget that shows a +// standard progress bar... +// + + +// +// 'Fl_Progress::draw()' - Draw the check button. +// + +void Fl_Progress::draw() +{ + int progress; // Size of progress bar... + int bx, by, bw, bh; // Box areas... + + + // Get the box borders... + bx = Fl::box_dx(box()); + by = Fl::box_dy(box()); + bw = Fl::box_dw(box()); + bh = Fl::box_dh(box()); + + // Draw the box... + draw_box(box(), x(), y(), w(), h(), color()); + + // Draw the progress bar... + if (maximum_ > minimum_) + progress = (int)((w() - bw) * (value_ - minimum_) / + (maximum_ - minimum_) + 0.5f); + else + progress = 0; + + if (progress > 0) + { + fl_clip(x() + bx, y() + by, w() - bw, h() - bh); + + //The Next line is for FLTK 1.0.x + // fl_color(active_r() ? color2() : inactive(color2())); + //If you are using FLTK 1.1.x please comment out the above line and uncomment the next + + fl_color(active_r() ? color2() : fl_inactive(color2())); + // + // + fl_polygon(x() + bx, y() + by, + x() + bx, y() + h() - by, + x() + 5 + progress - h() / 4, y() + h() - by, + x() + 2 + progress + h() / 4, y() + by); + + fl_pop_clip(); + } + +char buffer[30]; + sprintf(buffer, "%d%%", (int) (((value_ - minimum_)/(maximum_-minimum_))* 100)); + fl_color(FL_BLUE); + fl_font(this->labelfont(), this->labelsize()); + fl_draw(buffer, x() + (w() - fl_width(buffer))/2, y() + fl_height() + (((h() - 2*by) - fl_height())/2)); + + + // Finally, the label... + draw_label(x() + bx, y() + by, w() - bw, h() - bh); +} + + +// +// 'Fl_Progress::Fl_Progress()' - Construct a Fl_Progress widget. +// + +Fl_Progress::Fl_Progress(int x, int y, int w, int h, const char* l) +: Fl_Widget(x, y, w, h, l) +{ + align(FL_ALIGN_INSIDE); + box(FL_DOWN_BOX); + color(FL_WHITE, FL_GREEN); + minimum(0.0f); + maximum(100.0f); + value(0.0f); +} + + +// +// End of "$Id: Fl_Progress.cxx,v 1.1.2.1 2001/08/11 14:49:51 easysw Exp $". +// diff --git a/src/Fl_ProgressBox.H b/src/Fl_ProgressBox.H new file mode 100644 index 0000000..a64bd9a --- /dev/null +++ b/src/Fl_ProgressBox.H @@ -0,0 +1,30 @@ +#include +#include +#include + +class Fl_ProgressBox : public Fl_Box +{ +protected: + double mMin; + double mMax; + double mPresent; + double mStep; + bool mShowPct; + Fl_Color mTextColor; + FL_EXPORT void draw(); +public: + FL_EXPORT Fl_ProgressBox(int x, int y, int w, int h, const char *lbl); + void range(double min, double max, double step = 1) { mMin = min; mMax = max; mStep = step; }; + void step(double step) { mPresent += step; redraw(); }; + double min() { return mMin; } + double max() { return mMax; } + double position() { return mPresent; } + double step() { return mStep; } + void position(double pos) { mPresent = pos; redraw(); } + void showtext(bool st) { mShowPct = st; } + bool showtext() { return mShowPct; } + void textcolor(Fl_Color col) { mTextColor = col; } + Fl_Color textcolor() { return mTextColor; } +}; + + diff --git a/src/Fl_ProgressBox.cxx b/src/Fl_ProgressBox.cxx new file mode 100644 index 0000000..be65f3a --- /dev/null +++ b/src/Fl_ProgressBox.cxx @@ -0,0 +1,65 @@ +/****************************************************************************** + fltk prozilla - a front end for prozilla, a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +#ifdef HAVE_CONFIG_H +# include +#endif /* + * HAVE_CONFIG_H + */ + +#include "Fl_ProgressBox.H" +#include + +FL_EXPORT Fl_ProgressBox::Fl_ProgressBox(int x, int y, int w, int h, const char *lbl) + : Fl_Box(x,y,w,h,lbl) +{ + mMin = mPresent = 0; + mMax = 100; + mShowPct = true; + box(FL_DOWN_BOX); + selection_color(FL_BLUE); + color(FL_WHITE); + textcolor(FL_RED); +} + +FL_EXPORT void Fl_ProgressBox::draw() +{ + int bdx, bdy; + double pct; + if(damage() & FL_DAMAGE_ALL) + draw_box(); + bdx = Fl::box_dx(box()); + bdy = Fl::box_dy(box()); + fl_color(selection_color()); + if(mPresent > mMax) + mPresent = mMax; + if(mPresent < mMin) + mPresent = mMin; + pct = (mPresent - mMin) / mMax; + fl_rectf(x() + bdx, y() + bdy, (int)(((double)w() - 2*bdx) * pct), h() - 2*bdy); + if(mShowPct) + { + char buffer[30]; + sprintf(buffer, "%d%%", (int) (pct * 100)); + fl_color(textcolor()); + fl_font(this->labelfont(), this->labelsize()); + fl_draw(buffer, x() + (w() - fl_width(buffer))/2, y() + fl_height() + (((h() - 2*bdy) - fl_height())/2)); + } +} + diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..f098957 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,15 @@ +#------------------------------------------------------------------------------ +# Process this file with automake to produce Makefile.in. +#------------------------------------------------------------------------------ + +bin_PROGRAMS = prozgui + +CPPFLAGS = -DLOCALEDIR=\"$(datadir)/locale\" + +prozgui_SOURCES = main.cpp download_win.cpp Fl_Progress.cxx we.cxx init.cpp options.cpp dl_win.cxx prefs.cpp ftps_win.cxx ftpsearch_win.cpp getopt.c savefile.cpp +INCLUDES = -I. -I.. -I../libprozilla/src -I@includedir@ +CFLAGS = @CFLAGS@ -D_REENTRANT -Wall -ggdb +CFLAGS += -DGLOBAL_CONF_FILE="\"@sysconfdir@/prozilla.conf\"" -DLOCALEDIR=\"$(datadir)/locale\" +LDFLAGS = @LDFLAGS@ +LDADD = ../libprozilla/src/libprozilla.la -L@libdir@ -L/usr/X11R6/lib -lfltk +LIBS = @LIBS@ $(THREAD_LIBS) diff --git a/src/Makefile.in b/src/Makefile.in new file mode 100644 index 0000000..4e82f7d --- /dev/null +++ b/src/Makefile.in @@ -0,0 +1,558 @@ +# Makefile.in generated by automake 1.7 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +#------------------------------------------------------------------------------ +# Process this file with automake to produce Makefile.in. +#------------------------------------------------------------------------------ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ -D_REENTRANT -Wall -ggdb -DGLOBAL_CONF_FILE="\"@sysconfdir@/prozilla.conf\"" -DLOCALEDIR=\"$(datadir)/locale\" +CPP = @CPP@ + +CPPFLAGS = -DLOCALEDIR=\"$(datadir)/locale\" +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ $(THREAD_LIBS) +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POFILES = @POFILES@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +THREAD_LIBS = @THREAD_LIBS@ +UNAME = @UNAME@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +subdirs = @subdirs@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +bin_PROGRAMS = prozgui + +prozgui_SOURCES = main.cpp download_win.cpp Fl_Progress.cxx we.cxx init.cpp options.cpp dl_win.cxx prefs.cpp ftps_win.cxx ftpsearch_win.cpp getopt.c savefile.cpp +INCLUDES = -I. -I.. -I../libprozilla/src -I@includedir@ +LDADD = ../libprozilla/src/libprozilla.la -L@libdir@ -L/usr/X11R6/lib -lfltk +subdir = src +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +bin_PROGRAMS = prozgui$(EXEEXT) +PROGRAMS = $(bin_PROGRAMS) + +am_prozgui_OBJECTS = main.$(OBJEXT) download_win.$(OBJEXT) \ + Fl_Progress.$(OBJEXT) we.$(OBJEXT) init.$(OBJEXT) \ + options.$(OBJEXT) dl_win.$(OBJEXT) prefs.$(OBJEXT) \ + ftps_win.$(OBJEXT) ftpsearch_win.$(OBJEXT) getopt.$(OBJEXT) \ + savefile.$(OBJEXT) +prozgui_OBJECTS = $(am_prozgui_OBJECTS) +prozgui_LDADD = $(LDADD) +prozgui_DEPENDENCIES = ../libprozilla/src/libprozilla.la +prozgui_LDFLAGS = + +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/Fl_Progress.Po ./$(DEPDIR)/dl_win.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/download_win.Po ./$(DEPDIR)/ftps_win.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/ftpsearch_win.Po ./$(DEPDIR)/getopt.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/init.Po ./$(DEPDIR)/main.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/options.Po ./$(DEPDIR)/prefs.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/savefile.Po ./$(DEPDIR)/we.Po +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(prozgui_SOURCES) +DIST_COMMON = Makefile.am Makefile.in +SOURCES = $(prozgui_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .cpp .cxx .lo .o .obj +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ + rm -f $(DESTDIR)$(bindir)/$$f; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +prozgui$(EXEEXT): $(prozgui_OBJECTS) $(prozgui_DEPENDENCIES) + @rm -f prozgui$(EXEEXT) + $(CXXLINK) $(prozgui_LDFLAGS) $(prozgui_OBJECTS) $(prozgui_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Fl_Progress.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dl_win.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/download_win.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftps_win.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpsearch_win.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/options.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prefs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/savefile.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/we.Po@am__quote@ + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'`; \ +@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'` + +.c.lo: +@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'`; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +.cxx.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +.cxx.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'`; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'` + +.cxx.lo: +@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCXX_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCXX_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-depend distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am info info-am install \ + install-am install-binPROGRAMS install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-man install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/dl_win.cxx b/src/dl_win.cxx new file mode 100644 index 0000000..804b6e0 --- /dev/null +++ b/src/dl_win.cxx @@ -0,0 +1,273 @@ +// generated by Fast Light User Interface Designer (fluid) version 1.0011 + +#include +#include "dl_win.h" +#include +#include +#include + + +# ifdef HAVE_LIBXPM +# include +# include "images/Pz12.xpm" +# endif + +dl_gui::dl_gui():Fl_Window(547,398) { + Fl_Window* w; + { Fl_Window* o = dl_win = this; + w = o; + o->callback((Fl_Callback*)cb_dl_window, (void*)(this)); + o->align(129); +#ifdef HAVE_LIBXPM // X11 w/Xpm library + Pixmap pixmap, mask; // Icon pixmaps + XpmAttributes attrs; // Attributes of icon + + memset(&attrs, 0, sizeof(attrs)); + + XpmCreatePixmapFromData(fl_display, DefaultRootWindow(fl_display), + Pz12_xpm, &pixmap, &mask, &attrs); + o->icon((char *) pixmap); +#endif + { Fl_Button* o = resume_later_button = new Fl_Button(365, 365, 170, 25, gettext("Abort, Resume Later")); + o->labelsize(12); + o->callback((Fl_Callback*)cb_dlwin_resume_later, (void*)(this)); + o->align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE); + } + { Fl_Button* o = pause_button = new Fl_Button(45, 365, 70, 25, gettext("Pause")); + o->labelsize(12); + o->callback((Fl_Callback*)cb_dlwin_pause, (void*)(this)); + o->align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE); + o->deactivate(); + } + { Fl_Button* o = no_resume_later_button = new Fl_Button(170, 365, 160, 25, gettext("Abort, No Resume Later")); + o->labelsize(12); + o->callback((Fl_Callback*)cb_dlwin_no_resume_later, (void*)(this)); + o->align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE); + o->hide(); + } + { Fl_Output* o = url_box = new Fl_Output(65, 10, 440, 25, gettext("URL:")); + o->box(FL_ENGRAVED_BOX); + o->color(49); + o->labelsize(12); + o->labelcolor(4); + o->textsize(10); + o->textcolor(4); + o->align(132); + } + { Fl_Output* o = resume_status_box = new Fl_Output(25, 185, 225, 25); + o->box(FL_BORDER_BOX); + o->color(49); + o->labelsize(12); + o->textsize(12); + } + { Fl_Output* o = file_size_box = new Fl_Output(25, 155, 225, 25); + o->box(FL_BORDER_BOX); + o->color(49); + o->labelsize(12); + o->textsize(12); + } + { Fl_Output* o = bytes_recv_box = new Fl_Output(25, 215, 225, 25); + o->box(FL_BORDER_BOX); + o->color(49); + o->labelsize(12); + o->textsize(12); + } + { Fl_Browser* o = browser = new Fl_Browser(10, 275, 530, 85); + o->box(FL_EMBOSSED_BOX); + o->labelsize(12); + o->textsize(12); + o->textcolor(4); + } + { Fl_Output* o = dl_speed_box = new Fl_Output(25, 245, 225, 25); + o->box(FL_BORDER_BOX); + o->color(49); + o->labelsize(12); + o->textsize(12); + } + { Fl_Output* o = est_time_box = new Fl_Output(295, 245, 200, 25, gettext("Estimated Time Left")); + o->box(FL_BORDER_BOX); + o->color(49); + o->labelsize(12); + o->textsize(12); + o->align(FL_ALIGN_TOP_LEFT); + o->hide(); + } + { Fl_Scroll* o = scroll_win = new Fl_Scroll(20, 45, 510, 105); + o->box(FL_ENGRAVED_BOX); + o->labelsize(12); + o->end(); + } + progress_box = new Fl_Progress(270,180,170,20,0); + o->show(); + o->end(); + } +} + +void dl_gui::set_pause_button_label(char *label) { + assert(label!=NULL); +strncpy(pause_button_label,label, 100-1); +pause_button_label[100-1]=0; +pause_button->label(pause_button_label); +} + +dl_join_gui::dl_join_gui() { + Fl_Window* w; + { Fl_Window* o = win = new Fl_Window(372, 168, gettext("Creating file..............")); + w = o; + o->labelsize(12); + o->user_data((void*)(this)); + { Fl_Button* o = join_button = new Fl_Button(150, 140, 85, 25, gettext("Cancel")); + o->labelsize(12); + o->callback((Fl_Callback*)cb_join_jbutton, (void*)(this)); + } + { Fl_Group* o = new Fl_Group(10, 10, 350, 125); + o->box(FL_EMBOSSED_BOX); + { Fl_Box* o = out_join_box = new Fl_Box(25, 20, 315, 105); + o->labelsize(12); + o->align(FL_ALIGN_WRAP|FL_ALIGN_INSIDE); + } + o->end(); + } + progress_box = new Fl_Progress(50,20,270,20,0); + o->end(); + } + button_pressed = 0; + running = FALSE; +} + +void dl_join_gui::set_box_label(char *label) { + assert(label!=NULL); +strncpy(box_label,label, MAX_MSG_SIZE-1); +box_label[MAX_MSG_SIZE-1]=0; +out_join_box->label(box_label); +} + +void dl_join_gui::set_button_label(char *label) { + assert(label!=NULL); +strncpy(button_label,label, 100-1); +button_label[100-1]=0; +join_button->label(button_label); +} + +flproz_message::flproz_message() { + Fl_Window* w; + { Fl_Window* o = win = new Fl_Window(372, 143, gettext("Attention!")); + w = o; + o->labelsize(12); + o->user_data((void*)(this)); + { Fl_Button* o = ok_button = new Fl_Button(135, 110, 85, 25, gettext("Ok")); + o->labelsize(12); + o->callback((Fl_Callback*)cb_message_ok_button, (void*)(this)); + } + { Fl_Group* o = new Fl_Group(10, 10, 350, 95); + o->box(FL_EMBOSSED_BOX); + { Fl_Box* o = out_msg_box = new Fl_Box(25, 20, 315, 75); + o->color(0); + o->labelsize(12); + o->labelcolor(4); + o->align(132|FL_ALIGN_INSIDE); + } + o->end(); + } + o->end(); + } + ok_button_pressed = 0; + running = FALSE; +} + +void flproz_message::set_label(char *label) { + assert(label!=NULL); +strncpy(buffer,label, MAX_MSG_SIZE-1); +buffer[MAX_MSG_SIZE-1]=0; +out_msg_box->label(buffer); +} + +flproz_ask::flproz_ask() { + Fl_Window* w; + { Fl_Window* o = win = new Fl_Window(372, 143, gettext("Attention!")); + w = o; + o->labelsize(12); + o->user_data((void*)(this)); + { Fl_Button* o = yes_button = new Fl_Button(105, 110, 85, 25, gettext("Yes")); + o->labelsize(12); + o->callback((Fl_Callback*)cb_ask_yes_button, (void*)(this)); + } + { Fl_Button* o = no_button = new Fl_Button(215, 110, 85, 25, gettext("No")); + o->labelsize(12); + o->callback((Fl_Callback*)cb_ask_no_button, (void*)(this)); + } + { Fl_Group* o = new Fl_Group(10, 10, 350, 95); + o->box(FL_EMBOSSED_BOX); + { Fl_Box* o = out_msg_box = new Fl_Box(25, 20, 315, 75); + o->color(0); + o->labelsize(12); + o->labelcolor(4); + o->align(132|FL_ALIGN_INSIDE); + } + o->end(); + } + o->end(); + } + yes_button_pressed = 0; + no_button_pressed = 0; + running = FALSE; +} + +void flproz_ask::set_label(char *label) { + assert(label!=NULL); +strncpy(buffer,label, MAX_MSG_SIZE-1); +buffer[MAX_MSG_SIZE-1]=0; +out_msg_box->label(buffer); +} + +flproz_choice::flproz_choice() { + Fl_Window* w; + { Fl_Window* o = win = new Fl_Window(372, 143, gettext("Attention!")); + w = o; + o->labelsize(12); + o->user_data((void*)(this)); + { Fl_Button* o = button1 = new Fl_Button(105, 110, 85, 25, gettext("Yes")); + o->labelsize(12); + o->callback((Fl_Callback*)cb_ask_yes_button, (void*)(this)); + } + { Fl_Button* o = button2 = new Fl_Button(215, 110, 85, 25, gettext("No")); + o->labelsize(12); + o->callback((Fl_Callback*)cb_ask_no_button, (void*)(this)); + } + { Fl_Group* o = new Fl_Group(10, 10, 350, 95); + o->box(FL_EMBOSSED_BOX); + { Fl_Box* o = out_msg_box = new Fl_Box(25, 20, 315, 75); + o->color(0); + o->labelsize(12); + o->labelcolor(4); + o->align(132|FL_ALIGN_INSIDE); + } + o->end(); + } + o->end(); + } + button1_pressed = 0; + button2_pressed = 0; + running = FALSE; +} + +void flproz_choice::set_label(char *label) { + assert(label!=NULL); +strncpy(buffer,label, MAX_MSG_SIZE-1); +buffer[MAX_MSG_SIZE-1]=0; +out_msg_box->label(buffer); +} + +void flproz_choice::set_button1_label(char *label) { + assert(label!=NULL); +strncpy(button1_label,label, 100-1); +button1_label[100-1]=0; +button1->label(button1_label); +} + +void flproz_choice::set_button2_label(char *label) { + assert(label!=NULL); +strncpy(button2_label,label, 100-1); +button2_label[100-1]=0; +button2->label(button2_label); +} diff --git a/src/dl_win.fl b/src/dl_win.fl new file mode 100644 index 0000000..9f2833b --- /dev/null +++ b/src/dl_win.fl @@ -0,0 +1,288 @@ +# data file for the Fltk User Interface Designer (fluid) +version 1.0011 +i18n_type 1 +i18n_include +i18n_function gettext +header_name {.h} +code_name {.cxx} +gridx 5 +gridy 5 +snap 3 +decl {\#include "Fl_Progress.H"} {public +} + +decl {\#include "prozilla.h"} {public +} + +decl {\#include } {} + +decl {\#include } {} + +class dl_gui {open : {public Fl_Window} +} { + Function {dl_gui():Fl_Window(547,398)} {open + } { + Fl_Window dl_win { + callback cb_dl_window open selected + xywh {204 94 547 398} align 129 + code0 {progress_box = new Fl_Progress(270,180,170,20,0);} + code1 {o->show();} xclass dl_gui visible + } { + Fl_Button resume_later_button { + label {Abort, Resume Later} + user_data this + callback cb_dlwin_resume_later + xywh {365 365 170 25} labelsize 12 align 144 + } + Fl_Button pause_button { + label Pause + user_data this + callback cb_dlwin_pause + xywh {45 365 70 25} labelsize 12 align 144 deactivate + } + Fl_Button no_resume_later_button { + label {Abort, No Resume Later} + user_data this + callback cb_dlwin_no_resume_later + xywh {170 365 160 25} labelsize 12 align 16 hide + } + Fl_Output url_box { + label {URL:} + xywh {65 10 440 25} box ENGRAVED_BOX color 49 labelsize 12 labelcolor 4 align 132 textsize 10 textcolor 4 + } + Fl_Output resume_status_box { + xywh {25 185 225 25} box BORDER_BOX color 49 labelsize 12 textsize 12 + } + Fl_Output file_size_box { + xywh {25 155 225 25} box BORDER_BOX color 49 labelsize 12 textsize 12 + } + Fl_Output bytes_recv_box { + xywh {25 215 225 25} box BORDER_BOX color 49 labelsize 12 textsize 12 + } + Fl_Browser browser { + xywh {10 275 530 85} box EMBOSSED_BOX labelsize 12 textsize 12 textcolor 4 + } + Fl_Output dl_speed_box { + xywh {25 245 225 25} box BORDER_BOX color 49 labelsize 12 textsize 12 + } + Fl_Output est_time_box { + label {Estimated Time Left} + xywh {295 245 200 25} box BORDER_BOX color 49 labelsize 12 align 5 textsize 12 hide + } + Fl_Scroll scroll_win { + xywh {20 45 510 105} box ENGRAVED_BOX labelsize 12 + } {} + } + } + decl {Fl_Progress * progress_box;} {public + } + decl {char pause_button_label[100];} {public + } + Function {set_pause_button_label(char *label)} {} { + code {assert(label!=NULL); +strncpy(pause_button_label,label, 100-1); +pause_button_label[100-1]=0; +pause_button->label(pause_button_label);} {} + } +} + +class dl_join_gui {open +} { + Function {dl_join_gui()} {open + } { + Fl_Window win { + label {Creating file..............} open + xywh {269 454 372 168} labelsize 12 + code0 {progress_box = new Fl_Progress(50,20,270,20,0);} visible + } { + Fl_Button join_button { + label Cancel + user_data this + callback cb_join_jbutton + xywh {150 140 85 25} labelsize 12 + } + Fl_Group {} {open + xywh {10 10 350 125} box EMBOSSED_BOX + } { + Fl_Box out_join_box { + xywh {25 20 315 105} labelsize 12 align 144 + } + } + } + code {button_pressed = 0;} {} + code {running = FALSE;} {} + } + decl {int running;} {public + } + decl {Fl_Progress * progress_box;} {public + } + decl {int button_pressed;} {public + } + decl {char box_label[MAX_MSG_SIZE];} {public + } + decl {char button_label[100];} {public + } + Function {set_box_label(char *label)} {} { + code {assert(label!=NULL); +strncpy(box_label,label, MAX_MSG_SIZE-1); +box_label[MAX_MSG_SIZE-1]=0; +out_join_box->label(box_label);} {} + } + Function {set_button_label(char *label)} {} { + code {assert(label!=NULL); +strncpy(button_label,label, 100-1); +button_label[100-1]=0; +join_button->label(button_label);} {} + } +} + +class flproz_message {} { + Function {flproz_message()} {open + } { + Fl_Window win { + label {Attention!} open + xywh {392 479 372 143} labelsize 12 visible + } { + Fl_Button ok_button { + label Ok + user_data this + callback cb_message_ok_button + xywh {135 110 85 25} labelsize 12 + } + Fl_Group {} {open + xywh {10 10 350 95} box EMBOSSED_BOX + } { + Fl_Box out_msg_box { + xywh {25 20 315 75} color 0 labelsize 12 labelcolor 4 align 148 + } + } + } + code {ok_button_pressed = 0;} {} + code {running = FALSE;} {} + } + decl {int running;} {public + } + decl {int ok_button_pressed;} {public + } + decl {char buffer[MAX_MSG_SIZE];} {public + } + Function {set_label(char *label)} {open + } { + code {assert(label!=NULL); +strncpy(buffer,label, MAX_MSG_SIZE-1); +buffer[MAX_MSG_SIZE-1]=0; +out_msg_box->label(buffer);} {} + } +} + +class flproz_ask {} { + Function {flproz_ask()} {open + } { + Fl_Window win { + label {Attention!} open + xywh {334 479 372 143} labelsize 12 visible + } { + Fl_Button yes_button { + label Yes + user_data this + callback cb_ask_yes_button + xywh {105 110 85 25} labelsize 12 + } + Fl_Button no_button { + label No + user_data this + callback cb_ask_no_button + xywh {215 110 85 25} labelsize 12 + } + Fl_Group {} {open + xywh {10 10 350 95} box EMBOSSED_BOX + } { + Fl_Box out_msg_box { + xywh {25 20 315 75} color 0 labelsize 12 labelcolor 4 align 148 + } + } + } + code {yes_button_pressed = 0;} {} + code {no_button_pressed = 0;} {} + code {running = FALSE;} {} + } + decl {int yes_button_pressed;} {public + } + decl {char buffer[MAX_MSG_SIZE];} {public + } + decl {int no_button_pressed;} {public + } + Function {set_label(char *label)} {open + } { + code {assert(label!=NULL); +strncpy(buffer,label, MAX_MSG_SIZE-1); +buffer[MAX_MSG_SIZE-1]=0; +out_msg_box->label(buffer);} {} + } + decl {int running;} {public + } +} + +class flproz_choice {} { + Function {flproz_choice()} {open + } { + Fl_Window win { + label {Attention!} open + xywh {428 479 372 143} labelsize 12 visible + } { + Fl_Button button1 { + label Yes + user_data this + callback cb_ask_yes_button + xywh {105 110 85 25} labelsize 12 + } + Fl_Button button2 { + label No + user_data this + callback cb_ask_no_button + xywh {215 110 85 25} labelsize 12 + } + Fl_Group {} {open + xywh {10 10 350 95} box EMBOSSED_BOX + } { + Fl_Box out_msg_box { + xywh {25 20 315 75} color 0 labelsize 12 labelcolor 4 align 148 + } + } + } + code {button1_pressed = 0;} {} + code {button2_pressed = 0;} {} + code {running = FALSE;} {} + } + decl {int button1_pressed;} {public + } + decl {char buffer[MAX_MSG_SIZE];} {public + } + decl {int button2_pressed;} {public + } + decl {char button1_label[100];} {public + } + decl {char button2_label[100];} {public + } + Function {set_label(char *label)} {} { + code {assert(label!=NULL); +strncpy(buffer,label, MAX_MSG_SIZE-1); +buffer[MAX_MSG_SIZE-1]=0; +out_msg_box->label(buffer);} {} + } + Function {set_button1_label(char *label)} {} { + code {assert(label!=NULL); +strncpy(button1_label,label, 100-1); +button1_label[100-1]=0; +button1->label(button1_label);} {} + } + Function {set_button2_label(char *label)} {open + } { + code {assert(label!=NULL); +strncpy(button2_label,label, 100-1); +button2_label[100-1]=0; +button2->label(button2_label);} {} + } + decl {int running;} {public + } +} diff --git a/src/dl_win.h b/src/dl_win.h new file mode 100644 index 0000000..dcbeafb --- /dev/null +++ b/src/dl_win.h @@ -0,0 +1,102 @@ +// generated by Fast Light User Interface Designer (fluid) version 1.0011 + +#ifndef dl_win_h +#define dl_win_h +#include +#include "Fl_Progress.H" +#include "prozilla.h" +#include +extern void cb_dl_window(Fl_Window*, void*); +#include +extern void cb_dlwin_resume_later(Fl_Button*, void*); +extern void cb_dlwin_pause(Fl_Button*, void*); +extern void cb_dlwin_no_resume_later(Fl_Button*, void*); +#include +#include +#include + +class dl_gui : public Fl_Window { +public: + dl_gui(); + Fl_Window *dl_win; + Fl_Button *resume_later_button; + Fl_Button *pause_button; + Fl_Button *no_resume_later_button; + Fl_Output *url_box; + Fl_Output *resume_status_box; + Fl_Output *file_size_box; + Fl_Output *bytes_recv_box; + Fl_Browser *browser; + Fl_Output *dl_speed_box; + Fl_Output *est_time_box; + Fl_Scroll *scroll_win; + Fl_Progress * progress_box; + char pause_button_label[100]; + void set_pause_button_label(char *label); +}; +extern void cb_join_jbutton(Fl_Button*, void*); +#include +#include + +class dl_join_gui { +public: + dl_join_gui(); + Fl_Window *win; + Fl_Button *join_button; + Fl_Box *out_join_box; + int running; + Fl_Progress * progress_box; + int button_pressed; + char box_label[MAX_MSG_SIZE]; + char button_label[100]; + void set_box_label(char *label); + void set_button_label(char *label); +}; +extern void cb_message_ok_button(Fl_Button*, void*); + +class flproz_message { +public: + flproz_message(); + Fl_Window *win; + Fl_Button *ok_button; + Fl_Box *out_msg_box; + int running; + int ok_button_pressed; + char buffer[MAX_MSG_SIZE]; + void set_label(char *label); +}; +extern void cb_ask_yes_button(Fl_Button*, void*); +extern void cb_ask_no_button(Fl_Button*, void*); + +class flproz_ask { +public: + flproz_ask(); + Fl_Window *win; + Fl_Button *yes_button; + Fl_Button *no_button; + Fl_Box *out_msg_box; + int yes_button_pressed; + char buffer[MAX_MSG_SIZE]; + int no_button_pressed; + void set_label(char *label); + int running; +}; + +class flproz_choice { +public: + flproz_choice(); + Fl_Window *win; + Fl_Button *button1; + Fl_Button *button2; + Fl_Box *out_msg_box; + int button1_pressed; + char buffer[MAX_MSG_SIZE]; + int button2_pressed; + char button1_label[100]; + char button2_label[100]; + void set_label(char *label); + void set_button1_label(char *label); + void set_button2_label(char *label); + int running; +}; +#endif diff --git a/src/download_win.cpp b/src/download_win.cpp new file mode 100644 index 0000000..cb1f343 --- /dev/null +++ b/src/download_win.cpp @@ -0,0 +1,953 @@ +/****************************************************************************** + fltk prozilla - a front end for prozilla, a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +#if HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include +#include +#include "main.h" +#include "download_win.h" +#include "dl_win.h" + + + + +void cb_dl_window(Fl_Window * widget, void *) +{ + + DL_Window *dl_window = (DL_Window *) widget; + + if (dl_window->status != DL_IDLING) + { + if (fl_ask(_("Are you Sure You want to quit?")) == 1) + { + dl_window->cleanup(FALSE); + } + } else + dl_window->cleanup(FALSE); +} + + +void DL_Window::cleanup(boolean erase_dlparts) +{ + + /*handle cleanup */ + if (status == DL_DOWNLOADING) + { + proz_download_stop_downloads(download); + if (erase_dlparts == TRUE) + { + proz_download_delete_dl_file(download); + proz_log_delete_logfile(download); + } + } else if (status == DL_GETTING_INFO) + { + /*terminate info thread */ + pthread_cancel(info_thread); + pthread_join(info_thread, NULL); + } else if (status == DL_JOINING) + { + /*terminate joining thread */ + proz_download_cancel_joining_thread(download); + pthread_join(download->join_thread, NULL); + join_gui->win->hide(); + } + else if (status== DL_FTPSEARCHING) + { + ftpsearch_win->cleanup(); + } + + hide(); + join_gui->win->hide(); + message_gui->win->hide(); + ask_gui->win->hide();; + choice_gui->win->hide(); + ftpsearch_win->hide(); + + status= DL_ABORTED; +} + +DL_Window::DL_Window(urlinfo * url_data, Fl_Boxtype b, int x, int y, + const char *l):dl_gui() +{ + box(b); + key = 0; + got_info = FALSE; + got_dl = FALSE; + status = DL_IDLING; + + + memcpy(&u, url_data, sizeof(u)); + memset(&update_time, 0, sizeof(struct timeval)); + num_connections = rt.num_connections; + + join_gui = new dl_join_gui(); + message_gui = new flproz_message(); + ask_gui = new flproz_ask(); + choice_gui = new flproz_choice(); + ftpsearch_win = new FTPS_Window(); + //join_win->hide(); + message_gui->running = FALSE; + ask_gui->running = FALSE; + choice_gui->running = FALSE; + join_gui->running = FALSE; + joining_thread_running = FALSE; + do_ftpsearch = FALSE; + using_ftpsearch = FALSE; + end(); + +} + +void DL_Window::scroll_browser_to_end() +{ + if (browser->size() > 0) + browser->bottomline(browser->size()); + +} + +void DL_Window::my_cb() +{ + if (status == DL_GETTING_INFO) + { + handle_info_thread(); + return; + } + + + // if ((got_info == TRUE && status == DL_IDLING && got_dl == FALSE) + if((status == DL_RESTARTING && got_info == TRUE)||status== DL_DLPRESTART) + { + do_download(); + } + + if (status == DL_DOWNLOADING) + { + handle_download_thread(); + return; + } + + if (status == DL_JOINING) + { + handle_joining_thread(); + return; + } + + if (status == DL_FATALERR) + { + handle_dl_fatal_error(); + return; + } + + if (status == DL_PAUSED) + { + //TODO what to do when paused + return; + } + if (status == DL_FTPSEARCHING) + { + handle_ftpsearch(); + return; + } + + +} + + + +void DL_Window::dl_start(int num_connections, boolean ftpsearch) +{ + + do_ftpsearch = ftpsearch; + + connection = proz_connection_init(&u, &getinfo_mutex); + proz_connection_set_msg_proc(connection, ms, this); + + url_box->value(u.url); + browser->add(_("Creating the thread that gets info about file..")); + + + proz_get_url_info_loop(connection, &info_thread); + + status = DL_GETTING_INFO; +} + + +void DL_Window::do_download() +{ + char buffer[MAX_MSG_SIZE]; + logfile lf; + + status= DL_DLPRESTART; + + if (ask_gui->running == TRUE) + { + if (ask_gui->yes_button_pressed == TRUE) /*delete the file then */ + { + ask_gui->win->hide(); + ask_gui->running = FALSE; + if (proz_download_delete_target(download) == -1) + { + browser->add(_("I am unable to delete the target file!")); + } + handle_prev_download(); + return; + } + if (ask_gui->no_button_pressed == TRUE) + { + ask_gui->win->hide(); + ask_gui->running = FALSE; + /*TODO abort the dl */ + status = DL_ABORTED; + cleanup(FALSE); + // handle_prev_download(); + return; + } + return; + } + + + if (choice_gui->running == TRUE) + { + /*The choice gui is running..monitor whats hapenning */ + if (choice_gui->button1_pressed == TRUE) //Button 1 is Resume + { + choice_gui->win->hide(); + choice_gui->running = FALSE; + /*Resume selected */ + //Read the logfile structure + if (proz_log_read_logfile(&lf, download, FALSE) != 1) + { + browser-> + add + (_ + ("A error occured while processing the logfile! Assuming default number of connections")); + } + // validate the info returned + //TODO check whether files size is the same and if not prompt the user what to do. + if (lf.num_connections != num_connections) + { + browser-> + add + (_ + ("The previous download used a different number of connections than the default! so I will use the previous number of threads")); + num_connections = lf.num_connections; + assert(num_connections > 0); + // cleanup(FALSE); + } + download->resume_mode = TRUE; + start_download(); + return; + } else if (choice_gui->button2_pressed == TRUE) //button 2 is overwrite + { + choice_gui->win->hide(); + choice_gui->running = FALSE; + + /*Overwrite selected */ + /*delete the downloads */ + if (proz_log_read_logfile(&lf, download, FALSE) != 1) + { + browser-> + add + (_ + ("A error occured while processing the logfile! Assuming default number of connections to delete")); + download->num_connections = 4; + } else + proz_download_delete_dl_file(download); + download->resume_mode = FALSE; + // cleanup(FALSE); + start_download(); + return; + } else + return; /*Just return if nothing has been pressed */ + } + + + /*setup the download */ + download = proz_download_init(&connection->u); + proz_download_set_msg_proc(download, ms, this); + + /*Check and see whether the target exists and whether to overwrite it */ + + if (proz_download_target_exist(download) == 1) + { + + snprintf(buffer, MAX_MSG_SIZE, + _ + ("The target file %s exists, would you like to overwrite it?"), + connection->u.file); + + ask_gui->set_label(buffer); + ask_gui->win->show(); + ask_gui_type = DLG_TARGETERASE; + ask_gui->running = TRUE; + return; + } + + handle_prev_download(); +} + +void DL_Window::handle_prev_download() +{ + char buffer[MAX_MSG_SIZE]; + /*Check for a prior download */ + int previous_dl = proz_download_prev_download_exists(download); + if (previous_dl == 1) + { + + /*TODO: Check if the server supports resume */ + + if (connection->resume_support) + { + + snprintf(buffer, MAX_MSG_SIZE, + _ + ("Previous download of %s exists, would you like to resume it or overwrite it?"), + connection->u.file); + + choice_gui->set_label(buffer); + choice_gui->set_button1_label(_("Resume")); + choice_gui->set_button2_label(_("Overwrite")); + choice_gui->win->show(); + choice_gui_type = DLG_PREVRESUME; + choice_gui->running = TRUE; + return; + } + } + + start_download(); +} + + + +void DL_Window::start_download() +{ + + char buffer[MAX_MSG_SIZE]; + int ret=0; + + if (using_ftpsearch != TRUE) + ret = num_connections = proz_download_setup_connections_no_ftpsearch + (download, connection, num_connections); + else + ret = proz_download_setup_connections_ftpsearch(download, + connection, + ftpsearch_win->request, + num_connections); + + if(ret==-1) + { + fl_message(_("There doesnt seem to be enough free space or a disk write failed when attempting to create output file")); + status = DL_ABORTED; + return; + } + + fls = new Fl_Output *[num_connections]; + + /* Add the scrolling info display */ + for (int i = 0; i < num_connections; i++) + { + fls[i] = new Fl_Output(22, 48 + (20 * i + 5), 465, 20); + fls[i]->value(""); + fls[i]->box(FL_FLAT_BOX); + fls[i]->show(); + fls[i]->color(FL_GRAY); + scroll_win->add(fls[i]); + } + scroll_win->end(); + + /*Display resume status */ + if (download->resume_support) + { + sprintf(buffer, _("RESUME supported")); + resume_status_box->textcolor(FL_BLUE); + resume_status_box->value(buffer); + + resume_later_button->show(); + no_resume_later_button->show(); + } else + { + sprintf(buffer, _("RESUME NOT supported")); + resume_status_box->textcolor(FL_RED); + resume_status_box->value(buffer); + resume_later_button->hide(); + + no_resume_later_button->show(); + + } + resume_status_box->value(buffer); + + if (download->resume_support) + { + set_pause_button_label(_("Pause")); + pause_button->show(); + pause_button->activate(); + } else + { + pause_button->deactivate(); + } + + gettimeofday(&update_time, NULL); + this->redraw(); + proz_download_start_downloads(download, download->resume_mode); + status = DL_DOWNLOADING; + return; + +} + + +void DL_Window::unpause_download() +{ + + assert(status = DL_PAUSED); + + if (got_info == FALSE) + { + dl_start(4, do_ftpsearch); + return; + } + + if (got_info == TRUE && got_dl == FALSE) + { + /*setup the download */ + download = proz_download_init(&connection->u); + proz_download_set_msg_proc(download, ms, this); + download->resume_mode = TRUE; + start_download(); + return; + } +} + + +void DL_Window::pause_download() +{ + + /*TODO: Check and see if download is not resumable dont pause */ + if (status == DL_DOWNLOADING) + { + proz_download_stop_downloads(download); + + } else if (status == DL_GETTING_INFO) + { + /*terminate info thread */ + pthread_cancel(info_thread); + pthread_join(info_thread, NULL); + } + set_pause_button_label(_("UnPause")); + this->redraw(); + status = DL_PAUSED; +} + + + + +void DL_Window::handle_info_thread() +{ + char buffer[MAX_MSG_SIZE]; + + if (message_gui->running == TRUE) + { + if (message_gui->ok_button_pressed == TRUE) + { + message_gui->win->hide(); + message_gui->running = FALSE; + got_info = FALSE; + status = DL_IDLING; + cleanup(FALSE); + return; + } else + return; + } + + bool getting_info =proz_connection_running(connection); + + + if (getting_info == FALSE) + { + browser->add(_("waiting for thread to end")); + pthread_join(info_thread, NULL); + browser->add(_("Thread ended")); + + if (connection->err == HOK || connection->err == FTPOK) + { + got_info = TRUE; + url_box->value(connection->u.url); + this->label(strdup(connection->u.url)); + + browser->add(_("Got info succesfully")); + if (connection->main_file_size != -1) + { + sprintf(buffer, _("File Size = %ld Kb"), + connection->main_file_size / 1024); + progress_box->show(); + } else + sprintf(buffer, _("File Size is UNKOWN")); + file_size_box->value(buffer); + + //TODO CHANGED by me + if (connection->main_file_size != -1 && do_ftpsearch == TRUE) + { + status = DL_FTPSEARCHING; + ftpsearch_win->show(); + if(rt.ftpsearch_server_id==0) + { + ftpsearch_win->fetch_mirror_info(&connection->u, + connection->main_file_size, + "http://www.filesearching.com/cgi-bin/s", + FILESEARCH_RU, rt.ftps_mirror_req_n); + } + else if(rt.ftpsearch_server_id==1) + { + ftpsearch_win->fetch_mirror_info(&connection->u, + connection->main_file_size, + "http://ftpsearch.uniovi.es:8000/ftpsearch", + LYCOS, rt.ftps_mirror_req_n); + } + else if(rt.ftpsearch_server_id==2) + { + ftpsearch_win->fetch_mirror_info(&connection->u, + connection->main_file_size, + "http://download.lycos.com/swadv/AdvResults.asp", + LYCOS, rt.ftps_mirror_req_n); + } + } + else + { + do_download(); + } + + } else + { + + if (connection->err == FTPNSFOD || connection->err == HTTPNSFOD) + { + char buffer[MAX_MSG_SIZE]; + snprintf(buffer, MAX_MSG_SIZE, _("The URL %s doesnt exist!"), + connection->u.url); + message_gui->set_label(buffer); + message_gui->win->show(); + message_gui_type = DLG_URLNSFOD; + message_gui->running = TRUE; + + } else + { + message_gui->set_label(proz_strerror(connection->err)); + message_gui->win->show(); + message_gui_type = DLG_UNKNOWNERR; + message_gui->running = TRUE; + } + + } + } +} + + +void DL_Window::handle_ftpsearch() +{ + + uerr_t err; + err = ftpsearch_win->callback(); + if (err == MASSPINGDONE) + { + if (ftpsearch_win->request->num_mirrors == 0) + { + browser-> + add(_ + ("No suitable mirrors were found, downloading from original server")); + using_ftpsearch = FALSE; + // status = DL_IDLING; + ftpsearch_win->hide(); + do_download(); + return; + } + using_ftpsearch = TRUE; + // status = DL_IDLING; + ftpsearch_win->exit_ftpsearch_button->hide(); + do_download(); + return; + } + if (err == FTPSFAIL) + { + + using_ftpsearch = FALSE; + // status = DL_IDLING; + do_download(); + return; + } + + if(ftpsearch_win->exit_ftpsearch_button_pressed==TRUE) + { + if(ftpsearch_win->got_mirror_info ==TRUE) + { + using_ftpsearch = TRUE; + } + else + { + using_ftpsearch = FALSE; + } + do_download(); + } +} + +void DL_Window::handle_download_thread() +{ + + char buf[1000]; + uerr_t err; + struct timeval cur_time; + struct timeval diff_time; + + err = proz_download_handle_threads(download); + + + gettimeofday(&cur_time, NULL); + + proz_timeval_subtract(&diff_time, &cur_time, &update_time); + + if ((((diff_time.tv_sec * 1000) + (diff_time.tv_usec / 1000)) > 200) + || err == DLDONE) + { + for (int i = 0; i < download->num_connections; i++) + { + + sprintf(buf, "%d %10s %15s %10ld", i + 1, + download->pconnections[i]->u.host, + proz_connection_get_status_string(download->pconnections[i]), + proz_connection_get_total_bytes_got(download-> + pconnections[i])); + fls[i]->value(buf); + } + + sprintf(buf, _("Total Bytes received %ld Kb"), + proz_download_get_total_bytes_got(download) / 1024); + + bytes_recv_box->value(buf); + + sprintf(buf, _("Average Speed = %.3f Kb/sec"), + proz_download_get_average_speed(download) / 1024); + dl_speed_box->value(buf); + + int secs_left; + + if ((secs_left = proz_download_get_est_time_left(download)) != -1) + { + if (secs_left < 60) + sprintf(buf, _("%d Seconds"), secs_left); + else if (secs_left < 3600) + sprintf(buf, _("%d Minutes %d Seconds"), secs_left / 60, + secs_left % 60); + else + sprintf(buf, _("%d Hours %d minutes"), secs_left / 3600, + (secs_left % 3600) / 60); + est_time_box->show(); + est_time_box->value(buf); + } + + if (download->main_file_size != -1) + { + // progress_box->value(50.0); + progress_box-> + value((((double) proz_download_get_total_bytes_got(download) / + download->main_file_size) * 100)); + } + + /*The time of the current screen */ + gettimeofday(&update_time, NULL); + } + + if (err == DLDONE) + { + char *label = (char *) malloc(PATH_MAX + 40); + /*Wait till all are completed */ + browser->add(_("Waiting till all threads terminate")); + /* Now set the progress abr to 100% */ + + progress_box->value(100); + + browser->add(_("Got DL succesfully, now building file")); + got_dl = TRUE; + + /* TODO Should we close the main window here or disable just the buttons */ + resume_later_button->hide(); + no_resume_later_button->hide(); + pause_button->hide(); + snprintf(label, PATH_MAX + 40, _("Building file %s ....."), + download->u.file); + join_gui->set_box_label(label); + /*TODO add a function to set he wins label */ + join_gui->win->label(label); + join_gui->win->redraw(); + join_gui->progress_box->show(); + join_gui->running = TRUE; + join_gui->win->show(); + + // free(label); + status = DL_JOINING; + proz_download_join_downloads(download); + joining_thread_running = TRUE; + } + + if (err == CANTRESUME) + { + /*FIXME Free the conections array and the download struct */ + browser-> + add + (_ + ("Error the server/proxy lied about resuming so I have to restart this from the beginning!")); + + for (int i = 0; i < num_connections; i++) + { + scroll_win->remove(fls[i]); + delete(fls[i]); + } + /*We can only use one connections and we cant resume */ + num_connections = 1; + connection->resume_support = FALSE; + got_dl = FALSE; + status = DL_RESTARTING; + } + + if (err == DLLOCALFATAL) + { + + char buffer[MAX_MSG_SIZE]; + snprintf(buffer, MAX_MSG_SIZE, + _ + ("One connection of the download %s encountered a unrecoverable local error, usually lack of free space, or a write to bad medium, or a problem with permissions,so please fix this and retry"), + connection->u.url); + message_gui->set_label(buffer); + message_gui->win->show(); + message_gui_type = DLG_ABORT; + message_gui->running = TRUE; + got_dl = FALSE; + status = DL_FATALERR; + } + + + if (err == DLREMOTEFATAL) + { + + char buffer[MAX_MSG_SIZE]; + snprintf(buffer, MAX_MSG_SIZE, + _ + ("A connection(s) of the download %s encountered a unrecoverable remote error, usually the file not being present in the remote server, therefore the download had to be aborted!"), + connection->u.url); + message_gui->set_label(buffer); + message_gui->win->show(); + message_gui_type = DLG_ABORT; + message_gui->running = TRUE; + got_dl = FALSE; + status = DL_FATALERR; + } + +} + + +void DL_Window::handle_joining_thread() +{ + + uerr_t building_status = proz_download_get_join_status(download); + + if (building_status == JOININPROGRESS) + { + + join_gui->progress_box->value(proz_download_get_file_build_percentage(download)); + + /*has the user pressed cancel */ + if (join_gui->button_pressed == 1) + { + /*End the joining thread */ + proz_download_cancel_joining_thread(download); + joining_thread_running = FALSE; + status = DL_IDLING; + /*Close the window */ + join_gui->win->hide(); + join_gui->running = FALSE; + this->hide(); + ftpsearch_win->hide(); + } + join_gui->win->redraw(); + } + + if (building_status == JOINERR) + { + if (joining_thread_running == TRUE) + { + proz_download_wait_till_end_joining_thread(download); + joining_thread_running = FALSE; + join_gui->win->show(); + join_gui->set_box_label(download->file_build_msg); + join_gui->set_button_label(_("Close")); + join_gui->win->redraw(); + } + /*has the user pressed OK at the end of the download */ + if (join_gui->button_pressed == 1) + { + proz_download_free_download(download, 0); + /*TODO ugly kludge below */ + status = DL_IDLING; + /*Close the window */ + join_gui->win->hide(); + join_gui->running = FALSE; + this->hide(); + ftpsearch_win->hide(); + + } + } + + if (building_status == JOINDONE) + { + + if (joining_thread_running == TRUE) + { + proz_download_wait_till_end_joining_thread(download); + joining_thread_running = FALSE; + join_gui->progress_box->value(100.0); + join_gui->set_box_label("All Done"); + join_gui->set_button_label(_("Close")); + join_gui->win->redraw(); + + } + /*has the user pressed OK at the end of the download */ + if (join_gui->button_pressed == 1) + { + proz_download_delete_dl_file(download); + proz_download_free_download(download, 0); + /*TODO ugly kludge below */ + status = DL_IDLING; + /*Close the window */ + join_gui->win->hide(); + join_gui->running = FALSE; + this->hide(); + ftpsearch_win->hide(); + } + } +} + + +void DL_Window::handle_dl_fatal_error() +{ + + if (message_gui->running == TRUE) + { + if (message_gui->ok_button_pressed == TRUE) + { + message_gui->win->hide(); + message_gui->running = FALSE; + status=DL_FATALERR; + cleanup(FALSE); + return; + } else + return; + } +} + + + +void DL_Window::display_message(const char *msg) +{ + browser->add(msg, 0); + + if (browser->size() > 0) + { + browser->middleline(browser->size()); + } +} + + + + +void DL_Window::draw() +{ + + Fl_Window::draw(); +} + + +/*Callback for the button that appears in the joining dialog */ +void cb_join_jbutton(Fl_Button * button, void *data) +{ + dl_join_gui *dgui = (dl_join_gui *) data; + dgui->button_pressed = TRUE; +} + + +/*Callback for the button that appears in the joining dialog */ +void cb_dlwin_no_resume_later(Fl_Button * button, void *data) +{ + DL_Window *dl_window = (DL_Window *) data; + dl_window->cleanup(TRUE); + dl_window->status=DL_ABORTED; +} + + +/*Callback for the button that appears in the joining dialog */ +void cb_dlwin_resume_later(Fl_Button * button, void *data) +{ + DL_Window *dl_window = (DL_Window *) data; + dl_window->cleanup(FALSE); + dl_window->status=DL_ABORTED; +} + +/*Callback for the pause button */ +void cb_dlwin_pause(Fl_Button * button, void *data) +{ + DL_Window *dl_window = (DL_Window *) data; + + //TODO look carefully here *' + if (dl_window->status != DL_PAUSED) + { + dl_window->pause_download(); + return; + } else if (dl_window->status == DL_PAUSED) + { + dl_window->unpause_download(); + return; + } +} + + + + +/*Callback for the button that appears in the message dialog */ +void cb_message_ok_button(Fl_Button * button, void *data) +{ + flproz_message *gui = (flproz_message *) data; + gui->ok_button_pressed = TRUE; +} + + +/*Callback for the button that appears in the message dialog */ +void cb_ask_yes_button(Fl_Button * button, void *data) +{ + flproz_ask *gui = (flproz_ask *) data; + gui->yes_button_pressed = TRUE; +} + +/*Callback for the button that appears in the message dialog */ +void cb_ask_no_button(Fl_Button * button, void *data) +{ + flproz_ask *gui = (flproz_ask *) data; + gui->no_button_pressed = TRUE; +} diff --git a/src/download_win.h b/src/download_win.h new file mode 100644 index 0000000..c66edb9 --- /dev/null +++ b/src/download_win.h @@ -0,0 +1,111 @@ +#ifndef DOWNLOAD_WIN_H +#define DOWNLOAD_WIN_H + +#include +#include +#include +#include +#include // Fl_Group header file +#include // FLTK convenience functions +#include +#include +#include + +#include +#include +#include +#include "prozilla.h" +#include "dl_win.h" +#include "ftpsearch_win.h" + + +void ms(const char *msg, void *cb_data); +void info_callback(void *); + + +typedef enum { + DL_IDLING, + DL_GETTING_INFO, + DL_FTPSEARCHING, + DL_DLPRESTART, + DL_DOWNLOADING, + DL_JOINING, + DL_RESTARTING, + DL_PAUSED, + DL_ABORTED, + DL_FATALERR, +} dlwin_status_t; + + +//The running dialog type +typedef enum { + DLG_GENERIC, + DLG_URLNSFOD, + DLG_TARGETERASE, + DLG_JOININING, + DLG_PREVRESUME, + DLG_ABORT, + DLG_UNKNOWNERR, +} dlg_class; + +class DL_Window:public dl_gui { + + void draw(); + int cx, cy; + char key; +public: + DL_Window(urlinfo * url_data, Fl_Boxtype b, int x, int y, + const char *l); + + void dl_start(int num_connections, boolean ftpsearch); + void my_cb(); + void display_message(const char *msg); + + void handle_info_thread(); + void handle_ftpsearch(); + void handle_download_thread(); + + void start_download(); + + void pause_download(); + void unpause_download(); + + void handle_joining_thread(); + void handle_dl_fatal_error(); + void scroll_browser_to_end(); + void cleanup(boolean erase_dlparts); + + Fl_Output **fls; + dl_join_gui *join_gui; + flproz_message *message_gui; + flproz_ask *ask_gui; + flproz_choice *choice_gui; + connection_t *connection; + download_t *download; + urlinfo u; + boolean got_info; + boolean got_dl; + + dlg_class message_gui_type; + dlg_class choice_gui_type; + dlg_class ask_gui_type; + dlg_class join_gui_type; + + dlwin_status_t status; + + pthread_t info_thread; + pthread_mutex_t getinfo_mutex; + int num_connections; + /*The time elapsed since the last update */ + struct timeval update_time; + +private: + void do_download(); + void handle_prev_download(); + boolean joining_thread_running; + boolean do_ftpsearch; + boolean using_ftpsearch; + FTPS_Window *ftpsearch_win; +}; + +#endif diff --git a/src/ftps_win.cxx b/src/ftps_win.cxx new file mode 100644 index 0000000..c031d44 --- /dev/null +++ b/src/ftps_win.cxx @@ -0,0 +1,46 @@ +// generated by Fast Light User Interface Designer (fluid) version 1.0100 + +#include +#include "ftps_win.h" +#include +#include + +ftps_gui::ftps_gui():Fl_Window(300,389) { + Fl_Window* w; + { Fl_Window* o = ftps_win = this; + w = o; + o->user_data((void*)(this)); + { Fl_Output* o = ftps_file_box = new Fl_Output(70, 10, 220, 25, gettext("Filename::")); + o->box(FL_ENGRAVED_BOX); + o->color(49); + o->labelsize(12); + o->labelcolor(4); + o->textsize(12); + o->textcolor(4); + o->align(132); + } + { Fl_Browser* o = mirror_browser = new Fl_Browser(15, 60, 275, 245); + o->labelsize(12); + o->textsize(12); + o->align(129); + } + { Fl_Return_Button* o = exit_ftpsearch_button = new Fl_Return_Button(110, 365, 115, 20, gettext("Start Download")); + o->labelsize(12); + o->callback((Fl_Callback*)cb_exit_ftpsearch, (void*)(this)); + } + { Fl_Browser* o = message_browser = new Fl_Browser(15, 310, 275, 50); + o->labelsize(12); + o->textsize(12); + } + { Fl_Box* o = new Fl_Box(15, 45, 70, 15, gettext("Mirrors")); + o->labelsize(12); + o->align(132|FL_ALIGN_INSIDE); + } + { Fl_Box* o = new Fl_Box(215, 45, 75, 15, gettext("Ping Time")); + o->labelsize(12); + o->align(132|FL_ALIGN_INSIDE); + } + o->show(); + o->end(); + } +} diff --git a/src/ftps_win.fl b/src/ftps_win.fl new file mode 100644 index 0000000..b2c0084 --- /dev/null +++ b/src/ftps_win.fl @@ -0,0 +1,52 @@ +# data file for the Fltk User Interface Designer (fluid) +version 1.0100 +i18n_type 1 +i18n_include +i18n_function gettext +header_name {.h} +code_name {.cxx} +gridx 5 +gridy 5 +snap 3 +decl {\#include "prozilla.h"} {public +} + +decl {\#include } {} + +decl {\#include } {} + +class ftps_gui {open : {public Fl_Window} +} { + Function {ftps_gui():Fl_Window(300,389)} {open + } { + Fl_Window ftps_win {open + xywh {220 85 300 389} + code0 {o->show();} visible + } { + Fl_Output ftps_file_box { + label {Filename::} + xywh {70 10 220 25} box ENGRAVED_BOX color 49 labelsize 12 labelcolor 4 align 132 textsize 12 textcolor 4 + } + Fl_Browser mirror_browser { + xywh {15 60 275 245} labelsize 12 align 129 textsize 12 + } + Fl_Return_Button exit_ftpsearch_button { + label {Start Download} + user_data this + callback cb_exit_ftpsearch selected + xywh {110 365 115 20} labelsize 12 + } + Fl_Browser message_browser { + xywh {15 310 275 50} labelsize 12 textsize 12 + } + Fl_Box {} { + label Mirrors + xywh {15 45 70 15} labelsize 12 align 148 + } + Fl_Box {} { + label {Ping Time} + xywh {215 45 75 15} labelsize 12 align 148 + } + } + } +} diff --git a/src/ftps_win.h b/src/ftps_win.h new file mode 100644 index 0000000..a331e11 --- /dev/null +++ b/src/ftps_win.h @@ -0,0 +1,23 @@ +// generated by Fast Light User Interface Designer (fluid) version 1.0100 + +#ifndef ftps_win_h +#define ftps_win_h +#include +#include "prozilla.h" +#include +#include +#include +#include +extern void cb_exit_ftpsearch(Fl_Return_Button*, void*); +#include + +class ftps_gui : public Fl_Window { +public: + ftps_gui(); + Fl_Window *ftps_win; + Fl_Output *ftps_file_box; + Fl_Browser *mirror_browser; + Fl_Return_Button *exit_ftpsearch_button; + Fl_Browser *message_browser; +}; +#endif diff --git a/src/ftpsearch_win.cpp b/src/ftpsearch_win.cpp new file mode 100644 index 0000000..0362a1b --- /dev/null +++ b/src/ftpsearch_win.cpp @@ -0,0 +1,235 @@ +/****************************************************************************** + fltk prozilla - a front end for prozilla, a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +#if HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include +#include +#include "main.h" +#include "ftpsearch_win.h" + +void ftps_win_message_proc(const char *msg, void *cb_data); + + + +FTPS_Window::FTPS_Window():ftps_gui() +{ + memset(&request, 0, sizeof(request)); + + request_running = FALSE; + ping_running = FALSE; + got_mirror_info = FALSE; + exit_ftpsearch_button_pressed = FALSE; + hide(); +} + + +void FTPS_Window::fetch_mirror_info(urlinfo *u, long file_size, + char *ftps_loc, + ftpsearch_server_type_t server_type, + int num_req_mirrors) +{ + assert(u->file); + ftps_file_box->value(u->file); + + request=proz_ftps_request_init(u, file_size, ftps_loc, + server_type, num_req_mirrors); + proz_connection_set_msg_proc(request->connection, ftps_win_message_proc, + this); + proz_get_complete_mirror_list(request); + + request_running = TRUE; +} + + +void ftps_win_message_proc(const char *msg, void *cb_data) +{ + + FTPS_Window *win = (FTPS_Window *) cb_data; + win->message_browser->add(msg, 0); + + if (win->message_browser->size() > 0) + win->message_browser->bottomline(win->message_browser->size()); + +} + +uerr_t FTPS_Window::callback() +{ + + if (request_running == TRUE) + { + if (proz_request_info_running(request) == FALSE) + { + pthread_join(request->info_thread, NULL); + if (request->err != MIRINFOK) + { + message_browser->add("Unable to get mirror info", 0); + message_browser->add(proz_strerror(request->err)); + request_running = FALSE; + got_mirror_info = FALSE; + exit_ftpsearch_button->hide(); + return FTPSFAIL; + } else + { + message_browser->add("got mirror info", 0); + for (int i = 0; i < request->num_mirrors; i++) + { + mirror_browser->add(request->mirrors[i].server_name); + + } + } + + request_running = FALSE; + got_mirror_info = TRUE; + + request->max_simul_pings=rt.max_simul_pings; + request->ping_timeout.tv_sec=rt.max_ping_wait; + request->ping_timeout.tv_usec=0; + + /*Launch the pinging thread */ + proz_mass_ping(request); + ping_running = TRUE; + return MASSPINGINPROGRESS; + } + return FTPSINPROGRESS; + } + + if (ping_running == TRUE) + { + longstring buf; + for (int i = 0; i < request->num_mirrors; i++) + { + pthread_mutex_lock(&request->access_mutex); + ftp_mirror_stat_t status = request->mirrors[i].status; + pthread_mutex_unlock(&request->access_mutex); + switch (status) + { + case UNTESTED: + snprintf(buf, sizeof(longstring), "%s %20s", + request->mirrors[i].server_name, "NOT TESTED"); + break; + case RESPONSEOK: + snprintf(buf, sizeof(longstring), "%s %20dms", + request->mirrors[i].server_name, + request->mirrors[i].milli_secs); + break; + case NORESPONSE: + case ERROR: + snprintf(buf, sizeof(longstring), "%s %20s", + request->mirrors[i].server_name, "NO REPONSE"); + break; + default: + snprintf(buf, sizeof(longstring), "%s %20s", + request->mirrors[i].server_name, "Unkown condition!!"); + break; + } + mirror_browser->text(i + 1, buf); + // mirror_browser->data(i,strdup(buf)); + } + + if (proz_request_mass_ping_running(request) == FALSE) + { + ping_done = TRUE; + ping_running = FALSE; + message_browser->add("Ping run completed", 0); + message_browser->add("Sorting list", 0); + proz_sort_mirror_list(request->mirrors, request->num_mirrors); + + /* We should have a seprate func to display this */ + for (int i = 0; i < request->num_mirrors; i++) + { + pthread_mutex_lock(&request->access_mutex); + ftp_mirror_stat_t status = request->mirrors[i].status; + pthread_mutex_unlock(&request->access_mutex); + switch (status) + { + case UNTESTED: + snprintf(buf, sizeof(longstring), "%s %20s", + request->mirrors[i].server_name, "NOT TESTED"); + break; + case RESPONSEOK: + snprintf(buf, sizeof(longstring), "%s %20dms", + request->mirrors[i].server_name, + request->mirrors[i].milli_secs); + break; + case NORESPONSE: + case ERROR: + snprintf(buf, sizeof(longstring), "%s %20s", + request->mirrors[i].server_name, "NO REPONSE"); + break; + default: + snprintf(buf, sizeof(longstring), "%s %20s", + request->mirrors[i].server_name, "Unkown condition!!"); + break; + } + mirror_browser->text(i + 1, buf); + + // mirror_browser->data(i,strdup(buf)); + } + // this->redraw(); + return MASSPINGDONE; + } + // this->redraw(); + return MASSPINGINPROGRESS; + } + return MASSPINGINPROGRESS; +} + + + +void FTPS_Window::cleanup() +{ + if(request_running==TRUE) + { + proz_cancel_mirror_list_request(request); + return; + } + + if(ping_running==TRUE) + { + proz_cancel_mass_ping(request); + return; + } +} + + +void cb_exit_ftpsearch(Fl_Return_Button *button, void * data) +{ + + FTPS_Window *window=(FTPS_Window *) data; + + window->exit_ftpsearch_button_pressed = TRUE; + + if(window->request_running==TRUE) + { + proz_cancel_mirror_list_request(window->request); + } + + if(window->ping_running==TRUE) + { + proz_cancel_mass_ping(window->request); + } + window->hide(); +} diff --git a/src/ftpsearch_win.h b/src/ftpsearch_win.h new file mode 100644 index 0000000..e2701a7 --- /dev/null +++ b/src/ftpsearch_win.h @@ -0,0 +1,67 @@ +/****************************************************************************** + fltk prozilla - a front end for prozilla, a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +#ifndef FTPSEARCH_WIN_H +#define FTPSEARCH_WIN_H + +#include +#include +#include +#include +#include // Fl_Group header file +#include // FLTK convenience functions +#include +#include +#include + +#include +#include +#include +#include "prozilla.h" +#include "ftps_win.h" + + + +class FTPS_Window:public ftps_gui { +public: + FTPS_Window(); + void fetch_mirror_info(urlinfo *u, long file_size, char *ftps_loc, + ftpsearch_server_type_t server_type, + int num_req_mirrors); + + void cleanup(); + + uerr_t callback(); + void ping_list(); + + ftps_request_t *request; + + boolean request_running; + boolean ping_running; + boolean got_mirror_info; + boolean ping_done; + boolean exit_ftpsearch_button_pressed; + +private: + // ftp_mirror_t *arranged_mirrors; + + +}; + +#endif diff --git a/src/getopt.c b/src/getopt.c new file mode 100644 index 0000000..6abedc3 --- /dev/null +++ b/src/getopt.c @@ -0,0 +1,1156 @@ +/* Getopt for GNU. + NOTE: getopt is now part of the C library, so if you don't know what + "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu + before changing it! + + Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97 + Free Software Foundation, Inc. + + NOTE: The canonical source of this file is maintained with the GNU C Library. + Bugs can be reported to bug-glibc@prep.ai.mit.edu. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +/* This tells Alpha OSF/1 not to define a getopt prototype in . + Ditto for AIX 3.2 and . */ +#ifndef _NO_PROTO +#define _NO_PROTO +#endif + +#ifdef HAVE_CONFIG_H +#include +#endif + +#if !defined (__STDC__) || !__STDC__ +/* This is a separate conditional since some stdc systems + reject `defined (const)'. */ +#ifndef const +#define const +#endif +#endif + +#include + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#define GETOPT_INTERFACE_VERSION 2 +#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2 +#include +#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION +#define ELIDE_CODE +#endif +#endif + +#ifndef ELIDE_CODE + + +/* This needs to come after some library #include + to get __GNU_LIBRARY__ defined. */ +#ifdef __GNU_LIBRARY__ +/* Don't include stdlib.h for non-GNU C libraries because some of them + contain conflicting prototypes for getopt. */ +#include +#include +#endif /* + * GNU C library. + */ + +#ifdef VMS +#include +#if HAVE_STRING_H - 0 +#include +#endif +#endif + +#ifndef _ +/* This is for other GNU distributions with internationalized messages. + When compiling libc, the _ macro is predefined. */ +#ifdef HAVE_LIBINTL_H +# include +# define _(msgid) gettext (msgid) +#else +# define _(msgid) (msgid) +#endif +#endif + +/* This version of `getopt' appears to the caller like standard Unix `getopt' + but it behaves differently for the user, since it allows the user + to intersperse the options with the other arguments. + + As `getopt' works, it permutes the elements of ARGV so that, + when it is done, all the options precede everything else. Thus + all application programs are extended to handle flexible argument order. + + Setting the environment variable POSIXLY_CORRECT disables permutation. + Then the behavior is completely standard. + + GNU application programs can use a third alternative mode in which + they can distinguish the relative order of options and other arguments. */ + +#include "getopt.h" + +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + +char *optarg = NULL; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns -1, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +/* 1003.2 says this must be 1 before any call. */ +int optind = 1; + +/* Formerly, initialization of getopt depended on optind==0, which + causes problems with re-calling getopt as programs generally don't + know that. */ + +int __getopt_initialized = 0; + +/* The next char to be scanned in the option-element + in which the last option character we returned was found. + This allows us to pick up the scan where we left off. + + If this is zero, or a null string, it means resume the scan + by advancing to the next ARGV-element. */ + +static char *nextchar; + +/* Callers store zero here to inhibit the error message + for unrecognized options. */ + +int opterr = 1; + +/* Set to an option character which was unrecognized. + This must be initialized on some systems to avoid linking in the + system's own getopt implementation. */ + +int optopt = '?'; + +/* Describe how to deal with options that follow non-option ARGV-elements. + + If the caller did not specify anything, + the default is REQUIRE_ORDER if the environment variable + POSIXLY_CORRECT is defined, PERMUTE otherwise. + + REQUIRE_ORDER means don't recognize them as options; + stop option processing when the first non-option is seen. + This is what Unix does. + This mode of operation is selected by either setting the environment + variable POSIXLY_CORRECT, or using `+' as the first character + of the list of option characters. + + PERMUTE is the default. We permute the contents of ARGV as we scan, + so that eventually all the non-options are at the end. This allows options + to be given in any order, even with programs that were not written to + expect this. + + RETURN_IN_ORDER is an option available to programs that were written + to expect options and other ARGV-elements in any order and that care about + the ordering of the two. We describe each non-option ARGV-element + as if it were the argument of an option with character code 1. + Using `-' as the first character of the list of option characters + selects this mode of operation. + + The special argument `--' forces an end of option-scanning regardless + of the value of `ordering'. In the case of RETURN_IN_ORDER, only + `--' can cause `getopt' to return -1 with `optind' != ARGC. */ + +static enum { + REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER +} ordering; + +/* Value of POSIXLY_CORRECT environment variable. */ +static char *posixly_correct; + +#ifdef __GNU_LIBRARY__ +/* We want to avoid inclusion of string.h with non-GNU libraries + because there are many ways it can cause trouble. + On some systems, it contains special magic macros that don't work + in GCC. */ +#include +#define my_index strchr +#else + +/* Avoid depending on library functions or files + whose names are inconsistent. */ + +char *getenv(); + +static char *my_index(str, chr) +const char *str; +int chr; +{ + while (*str) + { + if (*str == chr) + return (char *) str; + str++; + } + return 0; +} + +/* If using GCC, we can safely declare strlen this way. + If not using GCC, it is ok not to declare it. */ +#ifdef __GNUC__ +/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. + That was relevant to code that was here before. */ +#if !defined (__STDC__) || !__STDC__ +/* gcc with -traditional declares the built-in strlen to return int, + and has done so at least since version 2.4.5. -- rms. */ +extern int strlen(const char *); +#endif /* + * not __STDC__ + */ +#endif /* + * __GNUC__ + */ + +#endif /* + * not __GNU_LIBRARY__ + */ + +/* Handle permutation of arguments. */ + +/* Describe the part of ARGV that contains non-options that have + been skipped. `first_nonopt' is the index in ARGV of the first of them; + `last_nonopt' is the index after the last of them. */ + +static int first_nonopt; +static int last_nonopt; + +#ifdef _LIBC +/* Bash 2.0 gives us an environment variable containing flags + indicating ARGV elements that should not be considered arguments. */ + +/* Defined in getopt_init.c */ +extern char *__getopt_nonoption_flags; + +static int nonoption_flags_max_len; +static int nonoption_flags_len; + +static int original_argc; +static char *const *original_argv; + +/* Make sure the environment variable bash 2.0 puts in the environment + is valid for the getopt call we must make sure that the ARGV passed + to getopt is that one passed to the process. */ +static void + __attribute__ ((unused)) +store_args_and_env(int argc, char *const *argv) +{ + /* + * XXX This is no good solution. We should rather copy the args so + * that we can compare them later. But we must not use malloc(3). + */ + original_argc = argc; + original_argv = argv; +} + +# ifdef text_set_element +text_set_element(__libc_subinit, store_args_and_env); +# endif /* + * text_set_element + */ + +# define SWAP_FLAGS(ch1, ch2) \ + if (nonoption_flags_len > 0) \ + { \ + char __tmp = __getopt_nonoption_flags[ch1]; \ + __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ + __getopt_nonoption_flags[ch2] = __tmp; \ + } +#else /* + * !_LIBC + */ +# define SWAP_FLAGS(ch1, ch2) +#endif /* + * _LIBC + */ + +/* Exchange two adjacent subsequences of ARGV. + One subsequence is elements [first_nonopt,last_nonopt) + which contains all the non-options that have been skipped so far. + The other is elements [last_nonopt,optind), which contains all + the options processed since those non-options were skipped. + + `first_nonopt' and `last_nonopt' are relocated so that they describe + the new indices of the non-options in ARGV after they are moved. */ + +#if defined (__STDC__) && __STDC__ +static void exchange(char **); +#endif + +static void exchange(argv) +char **argv; +{ + int bottom = first_nonopt; + int middle = last_nonopt; + int top = optind; + char *tem; + + /* + * Exchange the shorter segment with the far end of the longer segment. + * That puts the shorter segment into the right place. + * It leaves the longer segment in the right place overall, + * but it consists of two parts that need to be swapped next. + */ + +#ifdef _LIBC + /* + * First make sure the handling of the `__getopt_nonoption_flags' + * string can work normally. Our top argument must be in the range + * of the string. + */ + if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) + { + /* + * We must extend the array. The user plays games with us and + * presents new arguments. + */ + char *new_str = malloc(top + 1); + if (new_str == NULL) + nonoption_flags_len = nonoption_flags_max_len = 0; + else + { + memset(__mempcpy(new_str, __getopt_nonoption_flags, + nonoption_flags_max_len), + '\0', top + 1 - nonoption_flags_max_len); + nonoption_flags_max_len = top + 1; + __getopt_nonoption_flags = new_str; + } + } +#endif + + while (top > middle && middle > bottom) + { + if (top - middle > middle - bottom) + { + /* + * Bottom segment is the short one. + */ + int len = middle - bottom; + register int i; + + /* + * Swap it with the top part of the top segment. + */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[top - (middle - bottom) + i]; + argv[top - (middle - bottom) + i] = tem; + SWAP_FLAGS(bottom + i, top - (middle - bottom) + i); + } + /* + * Exclude the moved bottom segment from further swapping. + */ + top -= len; + } else + { + /* + * Top segment is the short one. + */ + int len = top - middle; + register int i; + + /* + * Swap it with the bottom part of the bottom segment. + */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[middle + i]; + argv[middle + i] = tem; + SWAP_FLAGS(bottom + i, middle + i); + } + /* + * Exclude the moved top segment from further swapping. + */ + bottom += len; + } + } + + /* + * Update records for the slots the non-options now occupy. + */ + + first_nonopt += (optind - last_nonopt); + last_nonopt = optind; +} + +/* Initialize the internal data when the first call is made. */ + +#if defined (__STDC__) && __STDC__ +static const char *_getopt_initialize(int, char *const *, const char *); +#endif +static const char *_getopt_initialize(argc, argv, optstring) +int argc; +char *const *argv; +const char *optstring; +{ + /* + * Start processing options with ARGV-element 1 (since ARGV-element 0 + * is the program name); the sequence of previously skipped + * non-option ARGV-elements is empty. + */ + + first_nonopt = last_nonopt = optind; + + nextchar = NULL; + + posixly_correct = getenv("POSIXLY_CORRECT"); + + /* + * Determine how to handle the ordering of options and nonoptions. + */ + + if (optstring[0] == '-') + { + ordering = RETURN_IN_ORDER; + ++optstring; + } else if (optstring[0] == '+') + { + ordering = REQUIRE_ORDER; + ++optstring; + } else if (posixly_correct != NULL) + ordering = REQUIRE_ORDER; + else + ordering = PERMUTE; + +#ifdef _LIBC + if (posixly_correct == NULL + && argc == original_argc && argv == original_argv) + { + if (nonoption_flags_max_len == 0) + { + if (__getopt_nonoption_flags == NULL + || __getopt_nonoption_flags[0] == '\0') + nonoption_flags_max_len = -1; + else + { + const char *orig_str = __getopt_nonoption_flags; + int len = nonoption_flags_max_len = strlen(orig_str); + if (nonoption_flags_max_len < argc) + nonoption_flags_max_len = argc; + __getopt_nonoption_flags = + (char *) malloc(nonoption_flags_max_len); + if (__getopt_nonoption_flags == NULL) + nonoption_flags_max_len = -1; + else + memset(__mempcpy + (__getopt_nonoption_flags, orig_str, len), '\0', + nonoption_flags_max_len - len); + } + } + nonoption_flags_len = nonoption_flags_max_len; + } else + nonoption_flags_len = 0; +#endif + + return optstring; +} + +/* Scan elements of ARGV (whose length is ARGC) for option characters + given in OPTSTRING. + + If an element of ARGV starts with '-', and is not exactly "-" or "--", + then it is an option element. The characters of this element + (aside from the initial '-') are option characters. If `getopt' + is called repeatedly, it returns successively each of the option characters + from each of the option elements. + + If `getopt' finds another option character, it returns that character, + updating `optind' and `nextchar' so that the next call to `getopt' can + resume the scan with the following option character or ARGV-element. + + If there are no more option characters, `getopt' returns -1. + Then `optind' is the index in ARGV of the first ARGV-element + that is not an option. (The ARGV-elements have been permuted + so that those that are not options now come last.) + + OPTSTRING is a string containing the legitimate option characters. + If an option character is seen that is not listed in OPTSTRING, + return '?' after printing an error message. If you set `opterr' to + zero, the error message is suppressed but we still return '?'. + + If a char in OPTSTRING is followed by a colon, that means it wants an arg, + so the following text in the same ARGV-element, or the text of the following + ARGV-element, is returned in `optarg'. Two colons mean an option that + wants an optional arg; if there is text in the current ARGV-element, + it is returned in `optarg', otherwise `optarg' is set to zero. + + If OPTSTRING starts with `-' or `+', it requests different methods of + handling the non-option ARGV-elements. + See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. + + Long-named options begin with `--' instead of `-'. + Their names may be abbreviated as long as the abbreviation is unique + or is an exact match for some defined option. If they have an + argument, it follows the option name in the same ARGV-element, separated + from the option name by a `=', or else the in next ARGV-element. + When `getopt' finds a long-named option, it returns 0 if that option's + `flag' field is nonzero, the value of the option's `val' field + if the `flag' field is zero. + + The elements of ARGV aren't really const, because we permute them. + But we pretend they're const in the prototype to be compatible + with other systems. + + LONGOPTS is a vector of `struct option' terminated by an + element containing a name which is zero. + + LONGIND returns the index in LONGOPT of the long-named option found. + It is only valid when a long-named option has been found by the most + recent call. + + If LONG_ONLY is nonzero, '-' as well as '--' can introduce + long-named options. */ + +int _getopt_internal(argc, argv, optstring, longopts, longind, long_only) +int argc; +char *const *argv; +const char *optstring; +const struct option *longopts; +int *longind; +int long_only; +{ + optarg = NULL; + + if (optind == 0 || !__getopt_initialized) + { + if (optind == 0) + optind = 1; /* + * Don't scan ARGV[0], the program name. + */ + optstring = _getopt_initialize(argc, argv, optstring); + __getopt_initialized = 1; + } + + /* + * Test whether ARGV[optind] points to a non-option argument. + * Either it does not have option syntax, or there is an environment flag + * from the shell indicating it is not an option. The later information + * is only used when the used in the GNU libc. + */ +#ifdef _LIBC +#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ + || (optind < nonoption_flags_len \ + && __getopt_nonoption_flags[optind] == '1')) +#else +#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') +#endif + + if (nextchar == NULL || *nextchar == '\0') + { + /* + * Advance to the next ARGV-element. + */ + + /* + * Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been + * moved back by the user (who may also have changed the arguments). + */ + if (last_nonopt > optind) + last_nonopt = optind; + if (first_nonopt > optind) + first_nonopt = optind; + + if (ordering == PERMUTE) + { + /* + * If we have just processed some options following some non-options, + * exchange them so that the options come first. + */ + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange((char **) argv); + else if (last_nonopt != optind) + first_nonopt = optind; + + /* + * Skip any additional non-options + * and extend the range of non-options previously skipped. + */ + + while (optind < argc && NONOPTION_P) + optind++; + last_nonopt = optind; + } + + /* + * The special ARGV-element `--' means premature end of options. + * Skip it like a null option, + * then exchange with previous non-options as if it were an option, + * then skip everything else like a non-option. + */ + + if (optind != argc && !strcmp(argv[optind], "--")) + { + optind++; + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange((char **) argv); + else if (first_nonopt == last_nonopt) + first_nonopt = optind; + last_nonopt = argc; + + optind = argc; + } + + /* + * If we have done all the ARGV-elements, stop the scan + * and back over any non-options that we skipped and permuted. + */ + + if (optind == argc) + { + /* + * Set the next-arg-index to point at the non-options + * that we previously skipped, so the caller will digest them. + */ + if (first_nonopt != last_nonopt) + optind = first_nonopt; + return -1; + } + + /* + * If we have come to a non-option and did not permute it, + * either stop the scan or describe it to the caller and pass it by. + */ + + if (NONOPTION_P) + { + if (ordering == REQUIRE_ORDER) + return -1; + optarg = argv[optind++]; + return 1; + } + + /* + * We have found another option-ARGV-element. + * Skip the initial punctuation. + */ + + nextchar = (argv[optind] + 1 + + (longopts != NULL && argv[optind][1] == '-')); + } + + /* + * Decode the current option-ARGV-element. + */ + + /* + * Check whether the ARGV-element is a long option. + * + * If long_only and the ARGV-element has the form "-f", where f is + * a valid short option, don't consider it an abbreviated form of + * a long option that starts with f. Otherwise there would be no + * way to give the -f short option. + * + * On the other hand, if there's a long option "fubar" and + * the ARGV-element is "-fu", do consider that an abbreviation of + * the long option, just like "--fu", and not "-f" with arg "u". + * + * This distinction seems to be the most useful approach. + */ + + if (longopts != NULL + && (argv[optind][1] == '-' + || (long_only + && (argv[optind][2] + || !my_index(optstring, argv[optind][1]))))) + { + char *nameend; + const struct option *p; + const struct option *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = -1; + int option_index; + + for (nameend = nextchar; *nameend && *nameend != '='; nameend++) + /* + * Do nothing. + */ ; + + /* + * Test all long options for either exact match + * or abbreviated matches. + */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!strncmp(p->name, nextchar, nameend - nextchar)) + { + if ((unsigned int) (nameend - nextchar) + == (unsigned int) strlen(p->name)) + { + /* + * Exact match found. + */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } else if (pfound == NULL) + { + /* + * First nonexact match found. + */ + pfound = p; + indfound = option_index; + } else + /* + * Second or later nonexact match found. + */ + ambig = 1; + } + + if (ambig && !exact) + { + if (opterr) + fprintf(stderr, _("%s: option `%s' is ambiguous\n"), + argv[0], argv[optind]); + nextchar += strlen(nextchar); + optind++; + optopt = 0; + return '?'; + } + + if (pfound != NULL) + { + option_index = indfound; + optind++; + if (*nameend) + { + /* + * Don't test has_arg with >, because some C compilers don't + * allow it to be used on enums. + */ + if (pfound->has_arg) + optarg = nameend + 1; + else + { + if (opterr) + if (argv[optind - 1][1] == '-') + /* + * --option + */ + fprintf(stderr, + _("%s: option `--%s' doesn't allow an argument\n"), + argv[0], pfound->name); + else + /* + * +option or -option + */ + fprintf(stderr, + _("%s: option `%c%s' doesn't allow an argument\n"), + argv[0], argv[optind - 1][0], pfound->name); + + nextchar += strlen(nextchar); + + optopt = pfound->val; + return '?'; + } + } else if (pfound->has_arg == 1) + { + if (optind < argc) + optarg = argv[optind++]; + else + { + if (opterr) + fprintf(stderr, + _("%s: option `%s' requires an argument\n"), + argv[0], argv[optind - 1]); + nextchar += strlen(nextchar); + optopt = pfound->val; + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += strlen(nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + + /* + * Can't find it as a long option. If this is not getopt_long_only, + * or the option starts with '--' or is not a valid short + * option, then it's an error. + * Otherwise interpret it as a short option. + */ + if (!long_only || argv[optind][1] == '-' + || my_index(optstring, *nextchar) == NULL) + { + if (opterr) + { + if (argv[optind][1] == '-') + /* + * --option + */ + fprintf(stderr, _("%s: unrecognized option `--%s'\n"), + argv[0], nextchar); + else + /* + * +option or -option + */ + fprintf(stderr, _("%s: unrecognized option `%c%s'\n"), + argv[0], argv[optind][0], nextchar); + } + nextchar = (char *) ""; + optind++; + optopt = 0; + return '?'; + } + } + + /* + * Look at and handle the next short option-character. + */ + + { + char c = *nextchar++; + char *temp = my_index(optstring, c); + + /* + * Increment `optind' when we start to process its last character. + */ + if (*nextchar == '\0') + ++optind; + + if (temp == NULL || c == ':') + { + if (opterr) + { + if (posixly_correct) + /* + * 1003.2 specifies the format of this message. + */ + fprintf(stderr, _("%s: illegal option -- %c\n"), argv[0], c); + else + fprintf(stderr, _("%s: invalid option -- %c\n"), argv[0], c); + } + optopt = c; + return '?'; + } + /* + * Convenience. Treat POSIX -W foo same as long option --foo + */ + if (temp[0] == 'W' && temp[1] == ';') + { + char *nameend; + const struct option *p; + const struct option *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = 0; + int option_index; + + /* + * This is an option that requires an argument. + */ + if (*nextchar != '\0') + { + optarg = nextchar; + /* + * If we end this ARGV-element by taking the rest as an arg, + * we must advance to the next element now. + */ + optind++; + } else if (optind == argc) + { + if (opterr) + { + /* + * 1003.2 specifies the format of this message. + */ + fprintf(stderr, + _("%s: option requires an argument -- %c\n"), + argv[0], c); + } + optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + return c; + } else + /* + * We already incremented `optind' once; + * increment it again when taking next ARGV-elt as argument. + */ + optarg = argv[optind++]; + + /* + * optarg is now the argument, see if it's in the + * table of longopts. + */ + + for (nextchar = nameend = optarg; *nameend && *nameend != '='; + nameend++) + /* + * Do nothing. + */ ; + + /* + * Test all long options for either exact match + * or abbreviated matches. + */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!strncmp(p->name, nextchar, nameend - nextchar)) + { + if ((unsigned int) (nameend - nextchar) == strlen(p->name)) + { + /* + * Exact match found. + */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } else if (pfound == NULL) + { + /* + * First nonexact match found. + */ + pfound = p; + indfound = option_index; + } else + /* + * Second or later nonexact match found. + */ + ambig = 1; + } + if (ambig && !exact) + { + if (opterr) + fprintf(stderr, _("%s: option `-W %s' is ambiguous\n"), + argv[0], argv[optind]); + nextchar += strlen(nextchar); + optind++; + return '?'; + } + if (pfound != NULL) + { + option_index = indfound; + if (*nameend) + { + /* + * Don't test has_arg with >, because some C compilers don't + * allow it to be used on enums. + */ + if (pfound->has_arg) + optarg = nameend + 1; + else + { + if (opterr) + fprintf(stderr, _("\ +%s: option `-W %s' doesn't allow an argument\n"), argv[0], pfound->name); + + nextchar += strlen(nextchar); + return '?'; + } + } else if (pfound->has_arg == 1) + { + if (optind < argc) + optarg = argv[optind++]; + else + { + if (opterr) + fprintf(stderr, + _("%s: option `%s' requires an argument\n"), + argv[0], argv[optind - 1]); + nextchar += strlen(nextchar); + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += strlen(nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + nextchar = NULL; + return 'W'; /* + * Let the application handle it. + */ + } + if (temp[1] == ':') + { + if (temp[2] == ':') + { + /* + * This is an option that accepts an argument optionally. + */ + if (*nextchar != '\0') + { + optarg = nextchar; + optind++; + } else + optarg = NULL; + nextchar = NULL; + } else + { + /* + * This is an option that requires an argument. + */ + if (*nextchar != '\0') + { + optarg = nextchar; + /* + * If we end this ARGV-element by taking the rest as an arg, + * we must advance to the next element now. + */ + optind++; + } else if (optind == argc) + { + if (opterr) + { + /* + * 1003.2 specifies the format of this message. + */ + fprintf(stderr, + _("%s: option requires an argument -- %c\n"), + argv[0], c); + } + optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + } else + /* + * We already incremented `optind' once; + * increment it again when taking next ARGV-elt as argument. + */ + optarg = argv[optind++]; + nextchar = NULL; + } + } + return c; + } +} + +int getopt(argc, argv, optstring) +int argc; +char *const *argv; +const char *optstring; +{ + return _getopt_internal(argc, argv, optstring, + (const struct option *) 0, (int *) 0, 0); +} + +#endif /* + * Not ELIDE_CODE. + */ + +#ifdef TEST + +/* Compile with -DTEST to make an executable for use in testing + the above definition of `getopt'. */ + +int main(argc, argv) +int argc; +char **argv; +{ + int c; + int digit_optind = 0; + + while (1) + { + int this_option_optind = optind ? optind : 1; + + c = getopt(argc, argv, "abc:d:0123456789"); + if (c == -1) + break; + + switch (c) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (digit_optind != 0 && digit_optind != this_option_optind) + printf(_("digits occur in two different argv-elements.\n")); + digit_optind = this_option_optind; + printf("option %c\n", c); + break; + + case 'a': + printf(_("option a\n")); + break; + + case 'b': + printf(_("option b\n")); + break; + + case 'c': + printf(_("option c with value `%s'\n"), optarg); + break; + + case '?': + break; + + default: + printf(_("?? getopt returned character code 0%o ??\n"), c); + } + } + + if (optind < argc) + { + printf(_("non-option ARGV-elements: ")); + while (optind < argc) + printf("%s ", argv[optind++]); + printf("\n"); + } + + exit(0); +} + +#endif /* + * TEST + */ diff --git a/src/getopt.h b/src/getopt.h new file mode 100644 index 0000000..6eb4bd4 --- /dev/null +++ b/src/getopt.h @@ -0,0 +1,142 @@ +/* Declarations for getopt. + Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc. + + NOTE: The canonical source of this file is maintained with the GNU C Library. + Bugs can be reported to bug-glibc@prep.ai.mit.edu. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA. */ + +#ifndef _GETOPT_H +#define _GETOPT_H 1 + +#ifdef __cplusplus +extern "C" { +#endif +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + extern char *optarg; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns -1, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + + extern int optind; + +/* Callers store zero here to inhibit the error message `getopt' prints + for unrecognized options. */ + + extern int opterr; + +/* Set to an option character which was unrecognized. */ + + extern int optopt; + +/* Describe the long-named options requested by the application. + The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector + of `struct option' terminated by an element containing a name which is + zero. + + The field `has_arg' is: + no_argument (or 0) if the option does not take an argument, + required_argument (or 1) if the option requires an argument, + optional_argument (or 2) if the option takes an optional argument. + + If the field `flag' is not NULL, it points to a variable that is set + to the value given in the field `val' when the option is found, but + left unchanged if the option is not found. + + To have a long-named option do something other than set an `int' to + a compiled-in constant, such as set a value from `optarg', set the + option's `flag' field to zero and its `val' field to a nonzero + value (the equivalent single-letter option character, if there is + one). For long options that have a zero `flag' field, `getopt' + returns the contents of the `val' field. */ + + struct option { +#if defined (__STDC__) && __STDC__ + const char *name; +#else + char *name; +#endif + /* + * has_arg can't be an enum because some compilers complain about + * type mismatches in all the code that assumes it is an int. + */ + int has_arg; + int *flag; + int val; + }; + +/* Names for the values of the `has_arg' field of `struct option'. */ + +#define no_argument 0 +#define required_argument 1 +#define optional_argument 2 + +#if defined (__STDC__) && __STDC__ +#ifdef __GNU_LIBRARY__ +/* Many other libraries have conflicting prototypes for getopt, with + differences in the consts, in stdlib.h. To avoid compilation + errors, only prototype getopt for the GNU C library. */ + extern int getopt(int argc, char *const *argv, const char *shortopts); +#else /* + * not __GNU_LIBRARY__ + */ + extern int getopt(); +#endif /* + * __GNU_LIBRARY__ + */ + extern int getopt_long(int argc, char *const *argv, + const char *shortopts, + const struct option *longopts, int *longind); + extern int getopt_long_only(int argc, char *const *argv, + const char *shortopts, + const struct option *longopts, int *longind); + +/* Internal only. Users should not call this directly. */ + extern int _getopt_internal(int argc, char *const *argv, + const char *shortopts, + const struct option *longopts, + int *longind, int long_only); +#else /* + * not __STDC__ + */ + extern int getopt(); + extern int getopt_long(); + extern int getopt_long_only(); + + extern int _getopt_internal(); +#endif /* + * __STDC__ + */ + +#ifdef __cplusplus +} +#endif +#endif /* + * getopt.h + */ diff --git a/src/images/BigProZilla01.xpm b/src/images/BigProZilla01.xpm new file mode 100644 index 0000000..e2c219a --- /dev/null +++ b/src/images/BigProZilla01.xpm @@ -0,0 +1,3496 @@ +/* XPM */ +static char * BigProZilla01_xpm[] = { +"130 130 3363 2", +" c None", +". c #838C83", +"+ c #858C84", +"@ c #868E84", +"# c #868D84", +"$ c #878E86", +"% c #898E86", +"& c #888D86", +"* c #8A8F86", +"= c #8A8E86", +"- c #8A8E87", +"; c #8C8E87", +"> c #8C8F87", +", c #8C8E88", +"' c #8A8D86", +") c #8B8D87", +"! c #8B8D86", +"~ c #8C8F88", +"{ c #8B8E88", +"] c #8B8E87", +"^ c #8B8F88", +"/ c #8A8F88", +"( c #8C8F89", +"_ c #8B8F89", +": c #8B8F8A", +"< c #8C8E8A", +"[ c #8A8F89", +"} c #8B8E89", +"| c #8A8E89", +"1 c #8A8E88", +"2 c #898E88", +"3 c #898F88", +"4 c #888E88", +"5 c #888D88", +"6 c #878E88", +"7 c #868D88", +"8 c #878D88", +"9 c #868C88", +"0 c #858C87", +"a c #848C88", +"b c #848C87", +"c c #848C86", +"d c #838B86", +"e c #828B86", +"f c #828A86", +"g c #808A86", +"h c #7F8A86", +"i c #7E8986", +"j c #7E8985", +"k c #7E8A85", +"l c #808A87", +"m c #818A86", +"n c #828B87", +"o c #828C87", +"p c #828C88", +"q c #838C87", +"r c #848D88", +"s c #848E88", +"t c #868D89", +"u c #868E89", +"v c #868E88", +"w c #878F8A", +"x c #878E8B", +"y c #868E8B", +"z c #858D8A", +"A c #838C8B", +"B c #828B88", +"C c #7E8783", +"D c #899189", +"E c #8A9289", +"F c #8B928A", +"G c #8B9189", +"H c #8C918A", +"I c #8A9088", +"J c #8C9087", +"K c #8C9088", +"L c #8B9087", +"M c #8B8F87", +"N c #8B8E86", +"O c #8A8C86", +"P c #8B8C86", +"Q c #8D8E88", +"R c #8C8E89", +"S c #8C9089", +"T c #8B9089", +"U c #8B908A", +"V c #8A8E8A", +"W c #898E89", +"X c #888F89", +"Y c #888E8A", +"Z c #888E89", +"` c #878E8A", +" . c #878E89", +".. c #868E8A", +"+. c #858E89", +"@. c #848E8A", +"#. c #858E8A", +"$. c #848F8A", +"%. c #878F88", +"&. c #868F8A", +"*. c #878F89", +"=. c #888F8A", +"-. c #88908B", +";. c #888F8C", +">. c #878F8C", +",. c #868E8C", +"'. c #8A9288", +"). c #8A928A", +"!. c #8B9289", +"~. c #8C9189", +"{. c #8B8F86", +"]. c #8C8D88", +"^. c #8C8D87", +"/. c #898F8A", +"(. c #898F89", +"_. c #8A8F8A", +":. c #89908A", +"<. c #88908A", +"[. c #89908B", +"}. c #878F8B", +"|. c #87908B", +"1. c #868F8B", +"2. c #86908A", +"3. c #87908A", +"4. c #889089", +"5. c #879089", +"6. c #888F88", +"7. c #888F8B", +"8. c #88908C", +"9. c #838C88", +"0. c #899089", +"a. c #8A908A", +"b. c #8B918A", +"c. c #8C8E86", +"d. c #8B8D88", +"e. c #8B8C87", +"f. c #898B85", +"g. c #8C8C87", +"h. c #8B9088", +"i. c #898E8A", +"j. c #899088", +"k. c #888F87", +"l. c #898E87", +"m. c #898F8B", +"n. c #889088", +"o. c #8A9089", +"p. c #8A8F87", +"q. c #898B86", +"r. c #898A84", +"s. c #8A8C87", +"t. c #8D8D88", +"u. c #848580", +"v. c #8D8E89", +"w. c #898A86", +"x. c #848681", +"y. c #898D86", +"z. c #868F88", +"A. c #898F87", +"B. c #868D8A", +"C. c #858C88", +"D. c #889087", +"E. c #899087", +"F. c #8D8E87", +"G. c #898A85", +"H. c #898A82", +"I. c #868682", +"J. c #848581", +"K. c #666764", +"L. c #6E6E6D", +"M. c #848484", +"N. c #696969", +"O. c #8C8C8C", +"P. c #656565", +"Q. c #888888", +"R. c #636362", +"S. c #808080", +"T. c #868785", +"U. c #858683", +"V. c #91948F", +"W. c #888A85", +"X. c #898C87", +"Y. c #888B86", +"Z. c #888B85", +"`. c #8A8E85", +" + c #878E8C", +".+ c #898F86", +"++ c #8E8E88", +"@+ c #898984", +"#+ c #757874", +"$+ c #525350", +"%+ c #464645", +"&+ c #262626", +"*+ c #5D5D5D", +"=+ c #444444", +"-+ c #616161", +";+ c #666666", +">+ c #636363", +",+ c #747474", +"'+ c #818181", +")+ c #606060", +"!+ c #7C7C7C", +"~+ c #6F6F6F", +"{+ c #7B7B7B", +"]+ c #6D6D6D", +"^+ c #8A8A8A", +"/+ c #757575", +"(+ c #767676", +"_+ c #858585", +":+ c #7C7C7B", +"<+ c #868885", +"[+ c #828480", +"}+ c #868D87", +"|+ c #858C86", +"1+ c #848D87", +"2+ c #878C87", +"3+ c #878D87", +"4+ c #878E87", +"5+ c #878D86", +"6+ c #888E85", +"7+ c #8B8E85", +"8+ c #8A8E84", +"9+ c #8B8C84", +"0+ c #8A8C83", +"a+ c #8B8E84", +"b+ c #898E8C", +"c+ c #7C7E78", +"d+ c #494A48", +"e+ c #383838", +"f+ c #222222", +"g+ c #3D3D3D", +"h+ c #3B3B3B", +"i+ c #181818", +"j+ c #535353", +"k+ c #5A5A5A", +"l+ c #777777", +"m+ c #8D8D8D", +"n+ c #727272", +"o+ c #909090", +"p+ c #9C9C9C", +"q+ c #939393", +"r+ c #828282", +"s+ c #959595", +"t+ c #8F8F8F", +"u+ c #979797", +"v+ c #989898", +"w+ c #929292", +"x+ c #969696", +"y+ c #9B9C9A", +"z+ c #888B87", +"A+ c #8B8C82", +"B+ c #8A8D83", +"C+ c #8A8F84", +"D+ c #898F8C", +"E+ c #888E8C", +"F+ c #5F605C", +"G+ c #50504E", +"H+ c #000000", +"I+ c #131313", +"J+ c #1F1F1F", +"K+ c #363636", +"L+ c #2E2E2E", +"M+ c #101010", +"N+ c #555555", +"O+ c #353535", +"P+ c #393939", +"Q+ c #333333", +"R+ c #2B2B2B", +"S+ c #272727", +"T+ c #141414", +"U+ c #4D4D4D", +"V+ c #7E7E7E", +"W+ c #3F3F3F", +"X+ c #585858", +"Y+ c #8E8E8E", +"Z+ c #797979", +"`+ c #7A7A7A", +" @ c #8E908C", +".@ c #858E88", +"+@ c #858D86", +"@@ c #868C86", +"#@ c #868C87", +"$@ c #888C86", +"%@ c #8A9085", +"&@ c #8C8F86", +"*@ c #868982", +"=@ c #545652", +"-@ c #3E3E3D", +";@ c #050505", +">@ c #0D0D0D", +",@ c #323232", +"'@ c #202020", +")@ c #3C3C3C", +"!@ c #4E4E4E", +"~@ c #474747", +"{@ c #4A4A4A", +"]@ c #525252", +"^@ c #3E3E3E", +"/@ c #6C6C6C", +"(@ c #5F5F5F", +"_@ c #424242", +":@ c #5E5E5E", +"<@ c #404040", +"[@ c #717171", +"}@ c #949694", +"|@ c #888E87", +"1@ c #888E8B", +"2@ c #8B8F84", +"3@ c #8C9086", +"4@ c #898C85", +"5@ c #595B57", +"6@ c #121212", +"7@ c #1A1A1A", +"8@ c #1C1C1C", +"9@ c #313131", +"0@ c #2C2C2C", +"a@ c #070707", +"b@ c #212121", +"c@ c #373737", +"d@ c #3A3A3A", +"e@ c #0C0C0C", +"f@ c #4C4C4C", +"g@ c #4F4F4F", +"h@ c #6E6E6E", +"i@ c #5B5B5B", +"j@ c #787878", +"k@ c #6A6A6A", +"l@ c #626262", +"m@ c #868686", +"n@ c #6B6B6B", +"o@ c #8B8B8B", +"p@ c #7E807C", +"q@ c #8C8E84", +"r@ c #8C9085", +"s@ c #8D9086", +"t@ c #8A8D85", +"u@ c #7F827C", +"v@ c #363836", +"w@ c #0A0A0A", +"x@ c #171717", +"y@ c #161616", +"z@ c #080808", +"A@ c #292929", +"B@ c #1B1B1B", +"C@ c #494949", +"D@ c #5C5C5C", +"E@ c #343434", +"F@ c #454545", +"G@ c #7F7F7F", +"H@ c #9E9E9E", +"I@ c #949792", +"J@ c #89908C", +"K@ c #8B9086", +"L@ c #656863", +"M@ c #0D0E0D", +"N@ c #1E1E1E", +"O@ c #434343", +"P@ c #242424", +"Q@ c #2A2A2A", +"R@ c #464646", +"S@ c #737373", +"T@ c #7D7D7D", +"U@ c #8A8C82", +"V@ c #8C8F84", +"W@ c #8A8F85", +"X@ c #585955", +"Y@ c #545454", +"Z@ c #707070", +"`@ c #646464", +" # c #505050", +".# c #878787", +"+# c #9A9A9A", +"@# c #A3A3A3", +"## c #8D908A", +"$# c #858D88", +"%# c #858D87", +"&# c #878D89", +"*# c #888B82", +"=# c #696A66", +"-# c #2D2D2D", +";# c #303030", +"># c #111111", +",# c #232323", +"'# c #414141", +")# c #2F2F2F", +"!# c #575757", +"~# c #7E7F7E", +"{# c #898B80", +"]# c #8D8F84", +"^# c #8D9084", +"/# c #8B8D84", +"(# c #0F0F0F", +"_# c #282828", +":# c #676767", +"<# c #191919", +"[# c #4B4B4B", +"}# c #898D88", +"|# c #878C88", +"1# c #888A7E", +"2# c #8D8E84", +"3# c #8D9085", +"4# c #8D8F86", +"5# c #8D8F88", +"6# c #8B8C85", +"7# c #222220", +"8# c #686868", +"9# c #949494", +"0# c #787978", +"a# c #878B85", +"b# c #868E87", +"c# c #86877B", +"d# c #8E8F85", +"e# c #8D8F87", +"f# c #585A56", +"g# c #1D1D1D", +"h# c #484848", +"i# c #515151", +"j# c #252525", +"k# c #151515", +"l# c #0E0E0E", +"m# c #7B7C7B", +"n# c #888C87", +"o# c #888D87", +"p# c #888D82", +"q# c #8A8C85", +"r# c #141413", +"s# c #898989", +"t# c #838383", +"u# c #767876", +"v# c #8D9088", +"w# c #6E6F6A", +"x# c #7E807E", +"y# c #8A8D87", +"z# c #8D9087", +"A# c #444544", +"B# c #565656", +"C# c #575452", +"D# c #564A47", +"E# c #4E423D", +"F# c #6A6261", +"G# c #535251", +"H# c #595959", +"I# c #AAAAAA", +"J# c #474847", +"K# c #8A8D89", +"L# c #898D84", +"M# c #767872", +"N# c #232020", +"O# c #5F3D2C", +"P# c #5C2412", +"Q# c #A98C76", +"R# c #8A725E", +"S# c #675042", +"T# c #5E3028", +"U# c #402920", +"V# c #383030", +"W# c #7F807F", +"X# c #747673", +"Y# c #868A86", +"Z# c #8C8F8A", +"`# c #8A8D84", +" $ c #3A3B39", +".$ c #5E4C4C", +"+$ c #795A51", +"@$ c #825846", +"#$ c #A57B66", +"$$ c #C0A288", +"%$ c #BEA78C", +"&$ c #8D7A65", +"*$ c #796554", +"=$ c #8A7771", +"-$ c #A39A95", +";$ c #4C2923", +">$ c #706160", +",$ c #3A393A", +"'$ c #9B9B9B", +")$ c #9D9D9D", +"!$ c #5B5C5B", +"~$ c #7A7E7A", +"{$ c #878D8A", +"]$ c #898D83", +"^$ c #888C85", +"/$ c #8E605A", +"($ c #C27C64", +"_$ c #BF9377", +":$ c #BD9F83", +"<$ c #C1AA8F", +"[$ c #766655", +"}$ c #85715D", +"|$ c #AA9C8E", +"1$ c #E3D9CE", +"2$ c #AE9C90", +"3$ c #3B180E", +"4$ c #401D1B", +"5$ c #584136", +"6$ c #403E3C", +"7$ c #7C807C", +"8$ c #898D87", +"9$ c #898D89", +"0$ c #878C83", +"a$ c #70726D", +"b$ c #98564A", +"c$ c #BC7C62", +"d$ c #BE997C", +"e$ c #BEA488", +"f$ c #AE9A81", +"g$ c #867260", +"h$ c #7E6856", +"i$ c #3A2926", +"j$ c #867A68", +"k$ c #482E27", +"l$ c #594132", +"m$ c #674C3F", +"n$ c #755B49", +"o$ c #3F2829", +"p$ c #362320", +"q$ c #A0A0A0", +"r$ c #919191", +"s$ c #8E8F8E", +"t$ c #878B83", +"u$ c #373936", +"v$ c #727271", +"w$ c #130E0E", +"x$ c #754434", +"y$ c #9A593B", +"z$ c #CE9D81", +"A$ c #C0A68A", +"B$ c #8E7A66", +"C$ c #867160", +"D$ c #725645", +"E$ c #3C2919", +"F$ c #2E221E", +"G$ c #5D4439", +"H$ c #735947", +"I$ c #806752", +"J$ c #A17E60", +"K$ c #391C15", +"L$ c #320A07", +"M$ c #5F5552", +"N$ c #A6A6A6", +"O$ c #8A8D88", +"P$ c #898C84", +"Q$ c #0F0F0E", +"R$ c #0B0B0B", +"S$ c #443937", +"T$ c #9B6049", +"U$ c #AD856B", +"V$ c #86705F", +"W$ c #6E5340", +"X$ c #523A2C", +"Y$ c #543C33", +"Z$ c #654C3E", +"`$ c #785E4B", +" % c #927760", +".% c #C9A68A", +"+% c #D2A688", +"@% c #B37F5D", +"#% c #4F1E0B", +"$% c #3C1405", +"%% c #342C29", +"&% c #A5A5A5", +"*% c #878B86", +"=% c #898C88", +"-% c #8B8D85", +";% c #7B7E78", +">% c #2A1C1C", +",% c #905746", +"'% c #966551", +")% c #6F4F3E", +"!% c #60473E", +"~% c #5A4036", +"{% c #866D55", +"]% c #9C8069", +"^% c #DCB4A1", +"/% c #D4A694", +"(% c #B7846C", +"_% c #9B5E42", +":% c #965A3E", +"<% c #58382F", +"[% c #522E16", +"}% c #5A5C5A", +"|% c #8E918D", +"1% c #8E8F87", +"2% c #8E9088", +"3% c #3C3D3A", +"4% c #3A302E", +"5% c #775644", +"6% c #9F6E5D", +"7% c #AD8570", +"8% c #B7957D", +"9% c #C69784", +"0% c #C48F7F", +"a% c #AC725F", +"b% c #A05F4C", +"c% c #8C4F3D", +"d% c #4E3223", +"e% c #787676", +"f% c #7B7F79", +"g% c #8A8C88", +"h% c #8B8D89", +"i% c #8C8D85", +"j% c #2F2F2E", +"k% c #3E3636", +"l% c #5C4C45", +"m% c #796359", +"n% c #6E4B3A", +"o% c #816155", +"p% c #7D5445", +"q% c #582E20", +"r% c #726665", +"s% c #8C8D86", +"t% c #757872", +"u% c #7A7C78", +"v% c #8B8C88", +"w% c #8D8D86", +"x% c #454543", +"y% c #818280", +"z% c #121312", +"A% c #787977", +"B% c #808280", +"C% c #363634", +"D% c #6C6E6B", +"E% c #82847E", +"F% c #676866", +"G% c #8D8E86", +"H% c #4B4C49", +"I% c #828280", +"J% c #82837C", +"K% c #303130", +"L% c #A9A9A9", +"M% c #999999", +"N% c #858782", +"O% c #3F423D", +"P% c #ACACAC", +"Q% c #BCBCBC", +"R% c #AEAEAE", +"S% c #ACAEAE", +"T% c #B7B8B8", +"U% c #BDBDBD", +"V% c #A7A7A7", +"W% c #B1B1B1", +"X% c #A2A2A2", +"Y% c #82847F", +"Z% c #767675", +"`% c #8C8D8B", +" & c #92938E", +".& c #9E9D9A", +"+& c #A3A29E", +"@& c #B0AEAB", +"#& c #BDBEBB", +"$& c #CED6D4", +"%& c #CFD8D6", +"&& c #BCBDBB", +"*& c #DCF1F2", +"=& c #D8EEEF", +"-& c #BCC9C8", +";& c #A8ADAB", +">& c #ACADAA", +",& c #BAC5C5", +"'& c #B8BCBC", +")& c #B0B0B0", +"!& c #B6B6B6", +"~& c #5C5C5A", +"{& c #8C8C88", +"]& c #9E9E9B", +"^& c #9A9A97", +"/& c #9E9E9A", +"(& c #A5A4A0", +"_& c #B0AEAA", +":& c #BCB8B4", +"<& c #C9C6C1", +"[& c #D0CDC8", +"}& c #D5D3CD", +"|& c #D5D4CE", +"1& c #D9DED9", +"2& c #B1B2AE", +"3& c #A8AAA5", +"4& c #A2A4A0", +"5& c #DBF7F7", +"6& c #CCE2E0", +"7& c #A9ACA9", +"8& c #A4A4A4", +"9& c #A3A5A2", +"0& c #A8A9A6", +"a& c #AEACA8", +"b& c #B5B3AE", +"c& c #BDBBB6", +"d& c #C7C5BE", +"e& c #D3D1C8", +"f& c #DAD9CE", +"g& c #DEDDD3", +"h& c #DFE0D5", +"i& c #DCDED4", +"j& c #D2D4CE", +"k& c #C6C8C3", +"l& c #BDC0BB", +"m& c #B6BAB4", +"n& c #D8ECEA", +"o& c #DFF8F6", +"p& c #A4ABA6", +"q& c #949790", +"r& c #D4F0F0", +"s& c #D0E0E0", +"t& c #B6BBBB", +"u& c #C4C4C4", +"v& c #C0C0C0", +"w& c #B7B7B7", +"x& c #7D7E7D", +"y& c #BCC2C3", +"z& c #BABEBC", +"A& c #C0BEB9", +"B& c #CCC8C2", +"C& c #D3D1C7", +"D& c #D8D6C9", +"E& c #DEDDCD", +"F& c #E5E4D4", +"G& c #E6E6D6", +"H& c #E6E9D8", +"I& c #E6E9DA", +"J& c #E4E8DA", +"K& c #DCE0D4", +"L& c #D4D8CD", +"M& c #CCD2C8", +"N& c #CDD4CB", +"O& c #C0C5BC", +"P& c #ADB4AB", +"Q& c #A1A69E", +"R& c #939590", +"S& c #D8F8F8", +"T& c #CEE7E7", +"U& c #ACB1B0", +"V& c #ACADAD", +"W& c #BBBBBB", +"X& c #A8A8A8", +"Y& c #A1A1A1", +"Z& c #8A8B87", +"`& c #A8A9A9", +" * c #D4E6E6", +".* c #C9CBC6", +"+* c #D3D2CA", +"@* c #DDDDD0", +"#* c #E0E2D1", +"$* c #E0E2CE", +"%* c #E3E4D0", +"&* c #E6E8D4", +"** c #E9ECDA", +"=* c #EAEDDE", +"-* c #EAEEE0", +";* c #E8EEE0", +">* c #E3E9DC", +",* c #DEE4D8", +"'* c #DBE2D7", +")* c #D5DCD1", +"!* c #C4CCC0", +"~* c #B3B8AE", +"{* c #A3A79F", +"]* c #BED2D0", +"^* c #B3C5C2", +"/* c #929894", +"(* c #AFBEBB", +"_* c #CBDEDE", +":* c #B9BEBE", +"<* c #BFBFBF", +"[* c #8A8B86", +"}* c #CED6D6", +"|* c #C2C4BF", +"1* c #CACDC4", +"2* c #DADBCC", +"3* c #E2E3D2", +"4* c #E4E7D1", +"5* c #E1E5CD", +"6* c #E2E7CE", +"7* c #E4ECD5", +"8* c #E8F0DD", +"9* c #EAF1E1", +"0* c #ECF2E6", +"a* c #EDF1E6", +"b* c #EBF0E4", +"c* c #EAEEE2", +"d* c #E7ECDE", +"e* c #DBE2D3", +"f* c #C8CDC0", +"g* c #B6BAAF", +"h* c #A6A8A2", +"i* c #8E908B", +"j* c #B2C3C0", +"k* c #D8F7F7", +"l* c #CCE3E3", +"m* c #B2B8B8", +"n* c #C3C3C3", +"o* c #AFAFAF", +"p* c #BCBEB9", +"q* c #C4C7BF", +"r* c #D1D6C7", +"s* c #DCE2D0", +"t* c #E8E9D5", +"u* c #E6E9D2", +"v* c #E3E8CE", +"w* c #DFEBD0", +"x* c #E1EED8", +"y* c #E6F1DE", +"z* c #EAF4E6", +"A* c #ECF4E8", +"B* c #F3F4E8", +"C* c #F3F3E7", +"D* c #F1F2E4", +"E* c #E8EBDD", +"F* c #DCDED1", +"G* c #CCCEC3", +"H* c #BABCB6", +"I* c #ACAEA8", +"J* c #9B9C98", +"K* c #91928D", +"L* c #B1C2C0", +"M* c #CDE9E9", +"N* c #939994", +"O* c #A4A5A2", +"P* c #BFC5C5", +"Q* c #CACACA", +"R* c #949592", +"S* c #9F9F9F", +"T* c #B0B1B0", +"U* c #BFC5BC", +"V* c #CCD2C6", +"W* c #D8DED0", +"X* c #E4E8D8", +"Y* c #E8ECD8", +"Z* c #E8EDD5", +"`* c #E2EDD3", +" = c #E1EED7", +".= c #E1F2DA", +"+= c #E4F4E2", +"@= c #E8F6E7", +"#= c #F2F6E8", +"$= c #F4F6E8", +"%= c #F5F6E8", +"&= c #F2F2E4", +"*= c #E6E7DB", +"== c #DBDCD2", +"-= c #CECEC8", +";= c #BEC0BB", +">= c #B4B5B2", +",= c #9E9F9A", +"'= c #B3C4C1", +")= c #BACECC", +"!= c #939894", +"~= c #B1C2BF", +"{= c #D7F7F7", +"]= c #CDE0E0", +"^= c #B5B6B6", +"/= c #888886", +"(= c #B5B5B5", +"_= c #C6C6C6", +":= c #C7CEC9", +"<= c #D8E6DC", +"[= c #D4DDD0", +"}= c #DEE7D9", +"|= c #E2ECDD", +"1= c #E7EEE0", +"2= c #E3EEDE", +"3= c #E1EEDB", +"4= c #E0F1DB", +"5= c #E2F4E0", +"6= c #E5F7E3", +"7= c #F0F8E3", +"8= c #F1F7E4", +"9= c #F4F8E6", +"0= c #F4F5E6", +"a= c #ECECE1", +"b= c #E3E4DB", +"c= c #D9DAD4", +"d= c #CDCDCA", +"e= c #C4C5C2", +"f= c #B6B7B4", +"g= c #B6BBB7", +"h= c #A6A8A3", +"i= c #9A9C96", +"j= c #8D8F89", +"k= c #B2C2C0", +"l= c #D0EAEA", +"m= c #C8CBCB", +"n= c #8C8D8C", +"o= c #B3B6B6", +"p= c #E4FAF3", +"q= c #D2D9CC", +"r= c #DBE4D7", +"s= c #DFE8DC", +"t= c #E4ECE0", +"u= c #E4EEE1", +"v= c #E0EDDE", +"w= c #DEEEDE", +"x= c #E1F2E1", +"y= c #E3F4E1", +"z= c #E6F3E0", +"A= c #E8F5E1", +"B= c #ECF7E2", +"C= c #F0F6E4", +"D= c #EFF2E4", +"E= c #EAEBE2", +"F= c #E3E4DF", +"G= c #DADBD8", +"H= c #D4D4D2", +"I= c #CFD0CE", +"J= c #C9CAC8", +"K= c #C0C2BF", +"L= c #BBBDBA", +"M= c #B6B8B4", +"N= c #B9CAC7", +"O= c #949994", +"P= c #969894", +"Q= c #BEC3C3", +"R= c #B2B2B2", +"S= c #8B8C8B", +"T= c #7C7E79", +"U= c #BFC6C2", +"V= c #C5CAC0", +"W= c #D6DDD3", +"X= c #DCE4D9", +"Y= c #DEE7DA", +"Z= c #E0E8DD", +"`= c #DCE8D9", +" - c #D9E8D8", +".- c #DCECDD", +"+- c #DFEFDE", +"@- c #E4F0DC", +"#- c #E4F1DE", +"$- c #E7F3E0", +"%- c #EBF6E4", +"&- c #EDF6E5", +"*- c #EDF2E7", +"=- c #ECEDE9", +"-- c #E6E7E5", +";- c #E1E1E0", +">- c #DCDCDB", +",- c #D8D8D7", +"'- c #D5D5D4", +")- c #D3D3D2", +"!- c #D1D2D0", +"~- c #CED0CE", +"{- c #CCCDCA", +"]- c #D5DDDC", +"^- c #B4BAB6", +"/- c #999B96", +"(- c #A0AAA6", +"_- c #D4F2F2", +":- c #AFB4B4", +"<- c #B4B4B4", +"[- c #9C9C9A", +"}- c #B2B3B2", +"|- c #B1B5AD", +"1- c #C3CAC0", +"2- c #CFD6CD", +"3- c #D4DDD3", +"4- c #D6DFD3", +"5- c #D4E2D4", +"6- c #D7E7D8", +"7- c #DCEADA", +"8- c #E1ECDA", +"9- c #E2EFDC", +"0- c #E6F2DE", +"a- c #E8F4E1", +"b- c #ECF8E5", +"c- c #ECF7E6", +"d- c #F0F4EB", +"e- c #F0F0EE", +"f- c #ECECEB", +"g- c #E8E8E8", +"h- c #E6E6E6", +"i- c #E4E4E3", +"j- c #E2E2E1", +"k- c #E0E0DE", +"l- c #DFDFDE", +"m- c #DEDEDD", +"n- c #DADBD9", +"o- c #D2D3D1", +"p- c #C1C2BE", +"q- c #C3D1CF", +"r- c #DAF8F8", +"s- c #BCBEBD", +"t- c #9B9C99", +"u- c #8D8F8A", +"v- c #8E8F8A", +"w- c #BEBEBE", +"x- c #BCC2BF", +"y- c #D6EAE5", +"z- c #E3FAF6", +"A- c #D6E4DC", +"B- c #C7CFC6", +"C- c #CAD2C8", +"D- c #CCD7CC", +"E- c #D0E0D2", +"F- c #D8E5D5", +"G- c #DEEAD8", +"H- c #E3EFDC", +"I- c #E6F4DF", +"J- c #E8F5E3", +"K- c #ECF8E6", +"L- c #EFFBEA", +"M- c #F2FAEB", +"N- c #F4F8F1", +"O- c #F6F7F5", +"P- c #F4F5F4", +"Q- c #F4F4F3", +"R- c #F2F2F2", +"S- c #EEEEEE", +"T- c #ECEDEC", +"U- c #EBEBEB", +"V- c #EAEAE9", +"W- c #E9E9E8", +"X- c #E8E8E7", +"Y- c #D5D5D2", +"Z- c #D9E3E0", +"`- c #E4FAF9", +" ; c #CEDEDD", +".; c #A7A8A3", +"+; c #A6A7A5", +"@; c #9D9E9A", +"#; c #91928E", +"$; c #90918C", +"%; c #8F908C", +"&; c #8F908B", +"*; c #8E8E89", +"=; c #B4B5B5", +"-; c #D4EBE9", +";; c #DEF9F5", +">; c #CBDBD3", +",; c #BAC1B8", +"'; c #BEC4BC", +"); c #C2CAC1", +"!; c #C9D5C9", +"~; c #D3DECE", +"{; c #DCE8D7", +"]; c #E4F1DD", +"^; c #E9F7E2", +"/; c #EBF8E5", +"(; c #EDF9E8", +"_; c #F0FBE9", +":; c #F2FDEC", +"<; c #F5FDF0", +"[; c #F9FDF6", +"}; c #FAFCFA", +"|; c #FAFAFA", +"1; c #F8F8F8", +"2; c #F6F6F6", +"3; c #F4F4F4", +"4; c #F3F3F2", +"5; c #F2F2F1", +"6; c #EFEFEE", +"7; c #E6E6E5", +"8; c #DCDCDA", +"9; c #D6DAD8", +"0; c #D0D7D4", +"a; c #BABBB6", +"b; c #B3B3AF", +"c; c #AAABA6", +"d; c #A4A59E", +"e; c #A0A09B", +"f; c #9C9D98", +"g; c #989893", +"h; c #959691", +"i; c #92948F", +"j; c #C2C7C7", +"k; c #D9F6F4", +"l; c #C2D4CE", +"m; c #ADB3AB", +"n; c #B3B9B2", +"o; c #B9C0B8", +"p; c #C4CCC3", +"q; c #D0D9CA", +"r; c #D9E6D5", +"s; c #E4F0DD", +"t; c #ECF8E4", +"u; c #EDF9E7", +"v; c #ECF9E7", +"w; c #EDF8E6", +"x; c #F0FBE8", +"y; c #F4FDEC", +"z; c #F8FEF2", +"A; c #FBFEF8", +"B; c #FBFCFA", +"C; c #FAFBFA", +"D; c #FAFAF9", +"E; c #F6F6F5", +"F; c #F2F3F2", +"G; c #ECECEC", +"H; c #D7D8D5", +"I; c #CBCCC8", +"J; c #C1C2BD", +"K; c #BEBFBA", +"L; c #BDBDB7", +"M; c #BABAB4", +"N; c #B6B6B0", +"O; c #B2B2AB", +"P; c #AAAAA3", +"Q; c #A2A19C", +"R; c #9D9E98", +"S; c #92928E", +"T; c #CEDCDC", +"U; c #BBCCC8", +"V; c #A4A8A2", +"W; c #ACB1AB", +"X; c #B5BAB3", +"Y; c #C0C7BF", +"Z; c #CFD6CA", +"`; c #D8E3D3", +" > c #E3EDDB", +".> c #EBF5E2", +"+> c #EAF8E8", +"@> c #EAF7E5", +"#> c #EAF6E4", +"$> c #F6FEEF", +"%> c #FBFEF5", +"&> c #FCFEF9", +"*> c #FCFDFA", +"=> c #FCFCFA", +"-> c #F9FAF9", +";> c #F0F0F0", +">> c #E0E0E0", +",> c #D6D6D4", +"'> c #CECFCC", +")> c #CBCBC8", +"!> c #CBCCC6", +"~> c #CCCDC6", +"{> c #CCCDC5", +"]> c #CBCBC4", +"^> c #C5C4BE", +"/> c #BCBBB4", +"(> c #B1B0AA", +"_> c #A7A6A0", +":> c #9B9C95", +"<> c #969690", +"[> c #8F908A", +"}> c #8E908A", +"|> c #989999", +"1> c #AEB6B3", +"2> c #9CA09A", +"3> c #A6ABA4", +"4> c #BEC7C2", +"5> c #D2E0DA", +"6> c #DBE9DF", +"7> c #D7E0D2", +"8> c #E0EADA", +"9> c #E6F1DF", +"0> c #E8F6E5", +"a> c #E8F8E6", +"b> c #EBF7E5", +"c> c #E7F5E2", +"d> c #F1FAEB", +"e> c #F8FDF1", +"f> c #FBFEF6", +"g> c #FDFEF9", +"h> c #FEFEFA", +"i> c #FDFEFA", +"j> c #FDFDFA", +"k> c #F5F5F4", +"l> c #E3E3E2", +"m> c #DDDDDC", +"n> c #DADAD7", +"o> c #D9D9D6", +"p> c #DADAD4", +"q> c #DBDBD4", +"r> c #DCDCD4", +"s> c #D9D8D0", +"t> c #D1D0C8", +"u> c #C5C3BC", +"v> c #B8B7B0", +"w> c #ABA9A3", +"x> c #A1A19B", +"y> c #989993", +"z> c #94948F", +"A> c #90908B", +"B> c #8E8E8A", +"C> c #B9BAB9", +"D> c #B2BFBC", +"E> c #C0D1CE", +"F> c #E0FAF8", +"G> c #E4FAF4", +"H> c #CDD6CA", +"I> c #D7DFD2", +"J> c #E1EADC", +"K> c #E5EEDF", +"L> c #E7F3E4", +"M> c #E8F3E0", +"N> c #EBF5E5", +"O> c #F1F9EA", +"P> c #F7FCF2", +"Q> c #FAFEF4", +"R> c #FCFFF7", +"S> c #FEFEF8", +"T> c #FCFEF8", +"U> c #FCFCFB", +"V> c #FAFBF9", +"W> c #F6F6F4", +"X> c #F1F1F0", +"Y> c #ECEDEB", +"Z> c #E6E6E4", +"`> c #E5E5E3", +" , c #E5E5E2", +"., c #E6E6E1", +"+, c #E7E7E0", +"@, c #E4E4DC", +"#, c #DEDED6", +"$, c #D6D5CD", +"%, c #CDCAC3", +"&, c #BDBBB4", +"*, c #B1AFA9", +"=, c #A6A6A0", +"-, c #9E9E98", +";, c #C6CBCA", +">, c #D9F5F3", +",, c #DFFAF8", +"', c #DEF2EC", +"), c #CAD0C5", +"!, c #D9DED5", +"~, c #E2E8DF", +"{, c #E7EDE4", +"], c #E9F2E6", +"^, c #E8F4E4", +"/, c #E9F5E4", +"(, c #EAF5E4", +"_, c #E6F2E1", +":, c #EBF5E6", +"<, c #F2FAEE", +"[, c #FCFEF5", +"}, c #FEFFF7", +"|, c #FEFFF6", +"1, c #FEFEF3", +"2, c #FEFEF4", +"3, c #FDFDF9", +"4, c #FCFCF9", +"5, c #F8F8F6", +"6, c #F5F5F2", +"7, c #F1F2EF", +"8, c #EFF0EE", +"9, c #EFEFEC", +"0, c #EEEFEB", +"a, c #EDEDE7", +"b, c #EAEAE4", +"c, c #E8E8DF", +"d, c #E3E3DA", +"e, c #DDDBD4", +"f, c #D0CEC7", +"g, c #C3C0BA", +"h, c #B6B4AE", +"i, c #ABAAA5", +"j, c #9C9B97", +"k, c #969691", +"l, c #BCC5C4", +"m, c #DCF8F6", +"n, c #C8D3CC", +"o, c #C8CBC2", +"p, c #D7DAD3", +"q, c #E1E3DD", +"r, c #E8EAE4", +"s, c #EAEEE6", +"t, c #EBF2E7", +"u, c #EAF5E6", +"v, c #EAF5E3", +"w, c #E8F2E2", +"x, c #E9F2E4", +"y, c #EEF7EA", +"z, c #F6FBEE", +"A, c #FAFDF3", +"B, c #FDFEF6", +"C, c #FFFFF4", +"D, c #FFFFF2", +"E, c #FFFFF3", +"F, c #FEFEF7", +"G, c #FCFCF8", +"H, c #FAFAF6", +"I, c #F7F7F4", +"J, c #F5F5F1", +"K, c #F2F2EE", +"L, c #F0F0EB", +"M, c #EEEEE8", +"N, c #ECECE6", +"O, c #E9E9E0", +"P, c #E6E6DC", +"Q, c #DCD9D2", +"R, c #D2CFC8", +"S, c #C4C2BB", +"T, c #B8B6AF", +"U, c #ACAAA6", +"V, c #A5A39E", +"W, c #A09F9B", +"X, c #9A9A95", +"Y, c #959690", +"Z, c #C8D2D2", +"`, c #B0B1A8", +" ' c #C2C3B8", +".' c #CECFC6", +"+' c #E2E4DE", +"@' c #ECEEE7", +"#' c #EDF3E8", +"$' c #EEF6E8", +"%' c #EDF6E7", +"&' c #ECF4E6", +"*' c #E9F3E3", +"=' c #F0F8E8", +"-' c #F6FBEF", +";' c #FEFEF5", +">' c #FFFFF1", +",' c #FFFFF6", +"'' c #FEFEF9", +")' c #FAFAF8", +"!' c #F8F8F4", +"~' c #F6F6F0", +"{' c #F2F3ED", +"]' c #F1F1EA", +"^' c #EFEFE9", +"/' c #ECECE4", +"(' c #EAEAE0", +"_' c #E3E0D8", +":' c #D9D8CE", +"<' c #CDCAC4", +"[' c #C1BEB8", +"}' c #B5B4AE", +"|' c #AEACA7", +"1' c #AAA9A4", +"2' c #A6A4A0", +"3' c #9F9F9A", +"4' c #9A9994", +"5' c #92948E", +"6' c #A3A49F", +"7' c #B2B4A8", +"8' c #D0D1C7", +"9' c #DCDCD6", +"0' c #ECF1EC", +"a' c #EDF0EA", +"b' c #EEF0E9", +"c' c #F2F4ED", +"d' c #F3F6EE", +"e' c #F2F6EE", +"f' c #EEF6EA", +"g' c #ECF4E5", +"h' c #EDF6E6", +"i' c #F2F8EA", +"j' c #F6FAEE", +"k' c #FBFCF0", +"l' c #FEFEF0", +"m' c #FEFEF1", +"n' c #FFFFF0", +"o' c #FFFFEF", +"p' c #FDFDFB", +"q' c #F6F6F2", +"r' c #F5F5EE", +"s' c #F3F3EC", +"t' c #F0F0E8", +"u' c #EEEEE6", +"v' c #EAE9E0", +"w' c #E2E1D8", +"x' c #CBCAC3", +"y' c #C1C0BA", +"z' c #B8B6B2", +"A' c #B2B2AC", +"B' c #B0B0AA", +"C' c #AEADA8", +"D' c #A7A7A1", +"E' c #A0A09C", +"F' c #9B9C96", +"G' c #989892", +"H' c #949590", +"I' c #90928C", +"J' c #BCC1BE", +"K' c #E2F9F6", +"L' c #E8FBF7", +"M' c #EEFCF8", +"N' c #F2FDF9", +"O' c #EEF2EE", +"P' c #ECECE7", +"Q' c #F1F1EC", +"R' c #F4F4F1", +"S' c #F6F6F3", +"T' c #F4F7F0", +"U' c #F0F6EB", +"V' c #EEF5E6", +"W' c #EEF6E6", +"X' c #F1F7E8", +"Y' c #F8F9EA", +"Z' c #FBFAEB", +"`' c #FCFCEC", +" ) c #FEFDED", +".) c #FEFEED", +"+) c #FEFFEE", +"@) c #FBFBF8", +"#) c #F9F9F6", +"$) c #F8F8F3", +"%) c #F4F4EC", +"&) c #F2F2EA", +"*) c #EFEEE5", +"=) c #E8E8E0", +"-) c #E0DFD6", +";) c #D6D6CD", +">) c #CECDC5", +",) c #C6C5BE", +"') c #C0BFBA", +")) c #BEBCB7", +"!) c #BFBDB7", +"~) c #BABAB2", +"{) c #A2A49E", +"]) c #9C9C98", +"^) c #969893", +"/) c #929490", +"() c #90928D", +"_) c #8F918C", +":) c #C2D0CE", +"<) c #E2F9F7", +"[) c #E8FBF6", +"}) c #EEFCF9", +"|) c #EAF0EC", +"1) c #E8E8E4", +"2) c #EEEEEB", +"3) c #F4F7EE", +"4) c #F1F6EA", +"5) c #EEF5E3", +"6) c #EEF6E2", +"7) c #EEF6E5", +"8) c #F2F7E6", +"9) c #F5F9E8", +"0) c #F9FAEA", +"a) c #FBFBEA", +"b) c #FDFDEC", +"c) c #FEFEEC", +"d) c #FFFFF9", +"e) c #FEFEFB", +"f) c #F9F9F3", +"g) c #F6F7EE", +"h) c #F5F5ED", +"i) c #F4F4EA", +"j) c #F0F0E7", +"k) c #E0E0D8", +"l) c #DADAD1", +"m) c #D4D4CB", +"n) c #CFCFC6", +"o) c #CDCDC5", +"p) c #CFCEC6", +"q) c #CDCCC4", +"r) c #C7C6BE", +"s) c #C0C0BA", +"t) c #B3B4AE", +"u) c #A8A8A3", +"v) c #9DA09A", +"w) c #9A9B96", +"x) c #969993", +"y) c #949690", +"z) c #8F918B", +"A) c #8C908A", +"B) c #8C908B", +"C) c #D3DDDD", +"D) c #E0F6F4", +"E) c #E8FBF8", +"F) c #D8DAD6", +"G) c #E3E4DD", +"H) c #E9EAE6", +"I) c #EEEEEC", +"J) c #F4F6F0", +"K) c #F2F7EC", +"L) c #F0F6E6", +"M) c #ECF5E5", +"N) c #ECF6E4", +"O) c #EDF6E3", +"P) c #F0F8E5", +"Q) c #F2F8E6", +"R) c #F6FAE8", +"S) c #FAFBEA", +"T) c #FCFCEB", +"U) c #FFFFF7", +"V) c #FCFCF7", +"W) c #FAFBF6", +"X) c #F8F8F1", +"Y) c #F7F7EE", +"Z) c #F6F6ED", +"`) c #EBEBE3", +" ! c #E5E5DD", +".! c #E2E1DA", +"+! c #DDDCD4", +"@! c #DCDCD2", +"#! c #DCDAD1", +"$! c #D8D8D0", +"%! c #D4D4CC", +"&! c #C7C7C0", +"*! c #B8BAB3", +"=! c #AEAFA9", +"-! c #A7A8A2", +";! c #A1A29D", +">! c #9B9D96", +",! c #989A94", +"'! c #90938C", +")! c #8E918C", +"!! c #BEC2C1", +"~! c #D2E2E1", +"{! c #C5C7BF", +"]! c #D3D4CC", +"^! c #DEDFDA", +"/! c #E4E4E2", +"(! c #EBEBEA", +"_! c #F5F5F3", +":! c #F6F7F4", +"~ c #D0D0D0", +",~ c #C7D1CE", +"'~ c #E5FAF3", +")~ c #ECFCF6", +"!~ c #F0FCFA", +"~~ c #E8EAE8", +"{~ c #ECECEA", +"]~ c #F6F7F6", +"^~ c #F8F9F7", +"/~ c #F8F9F4", +"(~ c #F4F8ED", +"_~ c #F0F4E5", +":~ c #EFF3E0", +"<~ c #F1F2DF", +"[~ c #F0F2DE", +"}~ c #F4F3DF", +"|~ c #F4F4DF", +"1~ c #F6F4E0", +"2~ c #F7F6E2", +"3~ c #FAF8E4", +"4~ c #FAF9E6", +"5~ c #FCFAE8", +"6~ c #FCFCEF", +"7~ c #FCFCF4", +"8~ c #FAFBF5", +"9~ c #F8F8F0", +"0~ c #F4F5EE", +"a~ c #F2F2ED", +"b~ c #F0F0E9", +"c~ c #E7E7DF", +"d~ c #E0E0D9", +"e~ c #D9DAD3", +"f~ c #D4D4CE", +"g~ c #D1D1C9", +"h~ c #CACCC4", +"i~ c #C4C6BD", +"j~ c #BABBB5", +"k~ c #B0B3AD", +"l~ c #A1A29C", +"m~ c #9B9E97", +"n~ c #8D908B", +"o~ c #757574", +"p~ c #474745", +"q~ c #D4D4D4", +"r~ c #C5C5C5", +"s~ c #D8E1DF", +"t~ c #E6FAF6", +"u~ c #E8F5F2", +"v~ c #DDDEDA", +"w~ c #F9F9F7", +"x~ c #F7F9F4", +"y~ c #F6F7ED", +"z~ c #F2F5E6", +"A~ c #F2F4E2", +"B~ c #F2F4DF", +"C~ c #F2F2DD", +"D~ c #F2F2DC", +"E~ c #F2F1DC", +"F~ c #F4F1DC", +"G~ c #F5F2DD", +"H~ c #F8F2DE", +"I~ c #F8F4E0", +"J~ c #FAF7E2", +"K~ c #FAF9E5", +"L~ c #FBFAEA", +"M~ c #FCFCF0", +"N~ c #FDFDF5", +"O~ c #FCFCF5", +"P~ c #FAFBF4", +"Q~ c #F7F7F1", +"R~ c #F5F5F0", +"S~ c #F4F4EE", +"T~ c #F3F3ED", +"U~ c #EFEFE7", +"V~ c #E9EAE2", +"W~ c #E4E5DE", +"X~ c #DCDCD5", +"Y~ c #D6D7CF", +"Z~ c #D1D2CB", +"`~ c #CACCC5", +" { c #C2C3BF", +".{ c #BDBEB9", +"+{ c #B8B9B4", +"@{ c #B4B6AF", +"#{ c #B2B3AC", +"${ c #ADAEA8", +"%{ c #A2A29D", +"&{ c #90938F", +"*{ c #8B8E8A", +"={ c #797976", +"-{ c #555553", +";{ c #C9C9C9", +">{ c #CACCC7", +",{ c #D6D6D2", +"'{ c #E2E2DE", +"){ c #F7F7F6", +"!{ c #F9F9F8", +"~{ c #F7F8EE", +"{{ c #F6F7EA", +"]{ c #F3F4E1", +"^{ c #F3F3DE", +"/{ c #F3F2DC", +"({ c #F3F1DC", +"_{ c #F3F0DB", +":{ c #F5EFDB", +"<{ c #F8F0DC", +"[{ c #F6F2DC", +"}{ c #F7F3DD", +"|{ c #F8F4DE", +"1{ c #F6F4DE", +"2{ c #F7F6E1", +"3{ c #F9F8E4", +"4{ c #FAFAE9", +"5{ c #FCFBEF", +"6{ c #FCFCF3", +"7{ c #E9EAE4", +"8{ c #E6E7E0", +"9{ c #E1E2DB", +"0{ c #DDDED6", +"a{ c #D4D5D2", +"b{ c #CED0CC", +"c{ c #C9CAC6", +"d{ c #C6C7BE", +"e{ c #C2C2BC", +"f{ c #B7B7B1", +"g{ c #999C96", +"h{ c #8E928C", +"i{ c #90908C", +"j{ c #444542", +"k{ c #C5C5C2", +"l{ c #DDDDD8", +"m{ c #E9E9E6", +"n{ c #F0F0ED", +"o{ c #F2F2F0", +"p{ c #F9FAF7", +"q{ c #F8F9F2", +"r{ c #F5F6E7", +"s{ c #F2F2DE", +"t{ c #F4F2DC", +"u{ c #F4EFDB", +"v{ c #F4EEDB", +"w{ c #F6EEDB", +"x{ c #F5F0DB", +"y{ c #F7F1DC", +"z{ c #F6F2DD", +"A{ c #F5F4DC", +"B{ c #F6F6DF", +"C{ c #F5F5DF", +"D{ c #F6F6E2", +"E{ c #F6F6E3", +"F{ c #F9F9EC", +"G{ c #FBFCF6", +"H{ c #F7F8F1", +"I{ c #F6F6EF", +"J{ c #F4F4EF", +"K{ c #EDEEE8", +"L{ c #E9EAE3", +"M{ c #E2E2DF", +"N{ c #DEDEDC", +"O{ c #D9DAD6", +"P{ c #D8D9D2", +"Q{ c #D8D8CF", +"R{ c #C9C8C2", +"S{ c #B9B8B3", +"T{ c #A8A9A4", +"U{ c #9C9E98", +"V{ c #949791", +"W{ c #90948F", +"X{ c #93938F", +"Y{ c #575855", +"Z{ c #CCCCCA", +"`{ c #C7C8C4", +" ] c #E7E8E4", +".] c #F0F1EC", +"+] c #F3F3EE", +"@] c #F9F9F9", +"#] c #F4F3E5", +"$] c #F2F0DB", +"%] c #F4F1DA", +"&] c #F4F0DA", +"*] c #F2ECDB", +"=] c #F6EBDA", +"-] c #F8ECDA", +";] c #F6EED9", +">] c #F7EFD9", +",] c #F6F1DA", +"'] c #F4F4DC", +")] c #F4F4DE", +"!] c #F6F5DC", +"~] c #F7F6E0", +"{] c #F8F8E8", +"]] c #FBFAF0", +"^] c #FDFCF5", +"/] c #FBFBF3", +"(] c #FAFAF2", +"_] c #F8F8F5", +":] c #F2F3F0", +"<] c #EFF0EC", +"[] c #ECEDEA", +"}] c #EAEAE7", +"|] c #E5E6E2", +"1] c #E3E4DE", +"2] c #DEDFD9", +"3] c #D4D5CC", +"4] c #C5C6BE", +"5] c #B5B6B0", +"6] c #A5A6A0", +"7] c #9B9D97", +"8] c #90938E", +"9] c #8F928D", +"0] c #989995", +"a] c #8B8B86", +"b] c #747471", +"c] c #2D2D2C", +"d] c #ABABAB", +"e] c #BDBDBC", +"f] c #C1C1BE", +"g] c #D2D2D0", +"h] c #ECECE8", +"i] c #EFF0EB", +"j] c #F0F1EA", +"k] c #F8F8EF", +"l] c #F3F3E2", +"m] c #F4F0DC", +"n] c #F5F0DA", +"o] c #F6F0DC", +"p] c #F4EDDB", +"q] c #F5ECDA", +"r] c #F5EBD9", +"s] c #F4ECD8", +"t] c #F6EFD9", +"u] c #F5F0D9", +"v] c #F3F0DA", +"w] c #F6F4DD", +"x] c #F6F5DD", +"y] c #F5F4DF", +"z] c #F6F6E4", +"A] c #FBFBF2", +"B] c #FDFDF6", +"C] c #F4F4F2", +"D] c #EFEFED", +"E] c #E8E9E4", +"F] c #E4E4DE", +"G] c #DADBD4", +"H] c #AFB1A9", +"I] c #A3A49E", +"J] c #989A95", +"K] c #959891", +"L] c #919590", +"M] c #91948E", +"N] c #8C8F8B", +"O] c #939490", +"P] c #7F807C", +"Q] c #5B5B5A", +"R] c #ADAEAA", +"S] c #CCCCC9", +"T] c #E8E8E6", +"U] c #EDEDE9", +"V] c #EFEFE8", +"W] c #F3F3F0", +"X] c #F9F9F5", +"Y] c #F8F7EC", +"Z] c #F4F3E3", +"`] c #F4EDDC", +" ^ c #F5EDDA", +".^ c #F4ECD9", +"+^ c #F3ECD8", +"@^ c #F5F2DA", +"#^ c #F3F4DD", +"$^ c #F6F5DF", +"%^ c #F6F6E0", +"&^ c #F6F6E1", +"*^ c #F8F6E4", +"=^ c #FAF8EB", +"-^ c #FCFBF2", +";^ c #FAFBF8", +">^ c #F7F8F4", +",^ c #F3F3F1", +"'^ c #F0F1EE", +")^ c #EEEEEA", +"!^ c #EAEAE5", +"~^ c #D3D4CE", +"{^ c #C4C6BE", +"]^ c #B7B9B1", +"^^ c #ACACA5", +"/^ c #9EA19A", +"(^ c #999B95", +"_^ c #919490", +":^ c #6B6C68", +"<^ c #4D4D4B", +"[^ c #8E8F8D", +"}^ c #A2A39D", +"|^ c #C6C6C2", +"1^ c #D8D8D5", +"2^ c #E2E2E0", +"3^ c #F7F6EC", +"4^ c #F5F2E4", +"5^ c #F4EFDD", +"6^ c #F6EEDC", +"7^ c #F4EDDA", +"8^ c #F3ECD9", +"9^ c #F3ECD7", +"0^ c #F4EED8", +"a^ c #F6F2DB", +"b^ c #F4F3DC", +"c^ c #F4F3DD", +"d^ c #F5F2DE", +"e^ c #F6F5E2", +"f^ c #F8F5E3", +"g^ c #FAF8E8", +"h^ c #FCFAEF", +"i^ c #FEFDF9", +"j^ c #FDFDFC", +"k^ c #FAFAF7", +"l^ c #F8F8F7", +"m^ c #E9E9E2", +"n^ c #DADBD5", +"o^ c #CCCDC7", +"p^ c #C0C1B9", +"q^ c #B2B5AD", +"r^ c #A6A7A2", +"s^ c #A6A7A0", +"t^ c #A4A5A0", +"u^ c #A1A29E", +"v^ c #9C9F99", +"w^ c #989B95", +"x^ c #8E928D", +"y^ c #939390", +"z^ c #8B8A86", +"A^ c #80817D", +"B^ c #575755", +"C^ c #959590", +"D^ c #9E9F98", +"E^ c #ACADA7", +"F^ c #BFBFBA", +"G^ c #D0D0CE", +"H^ c #E1E1DF", +"I^ c #E7E7E4", +"J^ c #E8E9E5", +"K^ c #EBECE6", +"L^ c #EEEEED", +"M^ c #F5F6F4", +"N^ c #F8F6EC", +"O^ c #F5F2E5", +"P^ c #F2EDDE", +"Q^ c #F3EDDA", +"R^ c #F3EDD7", +"S^ c #F3EED8", +"T^ c #F5F3DE", +"U^ c #F8F6E2", +"V^ c #F9F7E5", +"W^ c #FCFAF2", +"X^ c #FDFCF6", +"Y^ c #FDFDF8", +"Z^ c #F7F7F7", +"`^ c #F4F4F0", +" / c #EEEFEA", +"./ c #C9CAC4", +"+/ c #BCBEB8", +"@/ c #B3B3AC", +"#/ c #B2B4AC", +"$/ c #B4B4AD", +"%/ c #B7B6B0", +"&/ c #BAB9B3", +"*/ c #B0B0AB", +"=/ c #A8AAA4", +"-/ c #9DA099", +";/ c #8F928E", +">/ c #8D908C", +",/ c #8C8C86", +"'/ c #888883", +")/ c #7A7A76", +"!/ c #4A4A48", +"~/ c #979894", +"{/ c #91928C", +"]/ c #9A9B95", +"^/ c #A6A7A1", +"// c #B7B8B4", +"(/ c #C8C9C6", +"_/ c #D1D2CF", +":/ c #D8D8D6", +"( c #989895", +",( c #8B8B87", +"'( c #8D8D87", +")( c #B5B5B1", +"!( c #BBBCB6", +"~( c #BEBFBB", +"{( c #C5C5C0", +"]( c #CACAC7", +"^( c #D0D1CD", +"/( c #F0F1EF", +"(( c #F8F7F0", +"_( c #F8F6E8", +":( c #F6F2E0", +"<( c #F5EEDA", +"[( c #F6F0DA", +"}( c #F7F2DB", +"|( c #F7F3DC", +"1( c #F7F5DE", +"2( c #F7F5E0", +"3( c #F5F7E2", +"4( c #F5F7E3", +"5( c #F6F8E2", +"6( c #F7F8E2", +"7( c #F6F7E4", +"8( c #F6F8E1", +"9( c #F6F5DE", +"0( c #F9F8E8", +"a( c #FBFBFA", +"b( c #F2F2EF", +"c( c #E5E6E0", +"d( c #E2E3DB", +"e( c #E2E2D8", +"f( c #E3E4D8", +"g( c #E2E3D8", +"h( c #E1E2D8", +"i( c #DEDFD4", +"j( c #DBDCD1", +"k( c #D1D2C8", +"l( c #AEB1AA", +"m( c #9EA19C", +"n( c #949892", +"o( c #8B8B88", +"p( c #8D8C88", +"q( c #ABABA6", +"r( c #B1B2AB", +"s( c #B6B7B1", +"t( c #BABAB6", +"u( c #C2C2BD", +"v( c #CCCDC8", +"w( c #E2E3E1", +"x( c #F5F6F3", +"y( c #F7F7F3", +"z( c #F8F8EE", +"A( c #F8F6E9", +"B( c #F6F4E1", +"C( c #F8F2DB", +"D( c #FBF4DC", +"E( c #F8F5DD", +"F( c #F8F6DF", +"G( c #F8F6E0", +"H( c #F7F5E1", +"I( c #F8F7E4", +"J( c #F8F7E3", +"K( c #F7F7E1", +"L( c #FDFCFA", +"M( c #FBFBF9", +"N( c #F1F1ED", +"O( c #EFF0EA", +"P( c #E7E7DC", +"Q( c #E3E4D9", +"R( c #E1E1D6", +"S( c #DADAD0", +"T( c #BEBFB7", +"U( c #ADAEA7", +"V( c #9FA19C", +"W( c #929290", +"X( c #A2A39E", +"Y( c #A9AAA3", +"Z( c #A8AAA3", +"`( c #A8A9A2", +" _ c #AAABA4", +"._ c #ADAEA9", +"+_ c #C2C3BD", +"@_ c #D0D0CB", +"#_ c #DCDCD9", +"$_ c #F0F0EC", +"%_ c #F8F7F2", +"&_ c #F6F3E1", +"*_ c #F5F1DC", +"=_ c #F7F1DB", +"-_ c #F9F4DD", +";_ c #F7F5DD", +">_ c #F7F4E1", +",_ c #F9F6E3", +"'_ c #F8F7E2", +")_ c #F9F7E4", +"!_ c #F9F7E6", +"~_ c #F9F8EA", +"{_ c #FAF9EE", +"]_ c #FBFAF2", +"^_ c #F6F7F1", +"/_ c #EEEFE6", +"(_ c #ECECE3", +"__ c #E9E9DF", +":_ c #D7D6CF", +"<_ c #B7B8B0", +"[_ c #AAACA6", +"}_ c #9FA09C", +"|_ c #979995", +"1_ c #939691", +"2_ c #8E928E", +"3_ c #989896", +"4_ c #A4A49F", +"5_ c #B7B8B2", +"6_ c #C6C6C0", +"7_ c #D4D4CF", +"8_ c #F2F3EE", +"9_ c #F4F5F0", +"0_ c #F9F8EF", +"a_ c #F7F4E2", +"b_ c #F6F1DD", +"c_ c #F7F2DD", +"d_ c #F6F4DC", +"e_ c #F8F5E0", +"f_ c #F8F5E1", +"g_ c #F9F6E2", +"h_ c #F9F8E5", +"i_ c #F9F8E6", +"j_ c #F8F7E6", +"k_ c #F8F5E4", +"l_ c #FAF8E9", +"m_ c #F9FAF6", +"n_ c #F7F7F2", +"o_ c #F5F5EF", +"p_ c #F2F2EB", +"q_ c #F1F1E8", +"r_ c #EEEFE5", +"s_ c #ECECE2", +"t_ c #E8E9DE", +"u_ c #E1E0D6", +"v_ c #D5D4CC", +"w_ c #A0A29D", +"x_ c #9A9C97", +"y_ c #949793", +"z_ c #969694", +"A_ c #91918B", +"B_ c #9B9B96", +"C_ c #9C9D97", +"D_ c #AEAEA9", +"E_ c #BEBEB7", +"F_ c #CDCEC7", +"G_ c #DCDDD6", +"H_ c #E7E7E2", +"I_ c #F9F8F3", +"J_ c #F9F8F0", +"K_ c #F9F7EC", +"L_ c #F6F2DE", +"M_ c #F7F4DD", +"N_ c #F9F6E1", +"O_ c #F8F6E1", +"P_ c #F9F7E2", +"Q_ c #F9F8E7", +"R_ c #F9F7E8", +"S_ c #F8F6E5", +"T_ c #F6F2DF", +"U_ c #F7F4DE", +"V_ c #FAF8E6", +"W_ c #FBFAEE", +"X_ c #FCFCF2", +"Y_ c #F3F3EA", +"Z_ c #F1F2E7", +"`_ c #EFEFE4", +" : c #EAE9DD", +".: c #E0E0D6", +"+: c #D4D4CA", +"@: c #C4C5BC", +"#: c #9EA09B", +"$: c #8A8B89", +"%: c #959490", +"&: c #A4A49E", +"*: c #B4B4AE", +"=: c #C6C6BF", +"-: c #D5D5CD", +";: c #E2E2DA", +">: c #E8E9E1", +",: c #ECECE5", +"': c #F9F8EC", +"): c #F6F3DD", +"!: c #F8F5DF", +"~: c #FAF8EA", +"{: c #F9F7E9", +"]: c #FAF7E6", +"^: c #F9F6E4", +"/: c #F8F4E1", +"(: c #F7F4DF", +"_: c #FCFAF0", +":: c #F7F7EF", +"<: c #F2F3EA", +"[: c #F0F0E6", +"}: c #E0E0D5", +"|: c #C3C5BC", +"1: c #B9BAB2", +"2: c #B4B5AE", +"3: c #B0B1AB", +"4: c #AEAFA8", +"5: c #A6A6A5", +"6: c #91918C", +"7: c #92928D", +"8: c #949490", +"9: c #9C9B96", +"0: c #A9AAA4", +"a: c #BEBEB8", +"b: c #CDCEC6", +"c: c #DCDCD3", +"d: c #ECEDE5", +"e: c #F3F2ED", +"f: c #F6F6F1", +"g: c #FAF9F2", +"h: c #F7F3DE", +"i: c #F8F4DF", +"j: c #F8F7E5", +"k: c #F9F8E9", +"l: c #F9F7EB", +"m: c #F9F7EA", +"n: c #FAF7E9", +"o: c #FAF6E6", +"p: c #F9F5E2", +"q: c #FAF8E7", +"r: c #FCFBF4", +"s: c #F6F6EE", +"t: c #F4F4EB", +"u: c #F2F2E8", +"v: c #DEDED2", +"w: c #B9BAB4", +"x: c #BABCB5", +"y: c #8F8F8E", +"z: c #8A8A85", +"A: c #8B8B85", +"B: c #8F8F8A", +"C: c #C5C4BD", +"D: c #DEDED4", +"E: c #E5E5DC", +"F: c #EDEDE4", +"G: c #F7F6F1", +"H: c #F9F9F0", +"I: c #F9F5E4", +"J: c #FAF7E8", +"K: c #F9F6E6", +"L: c #F8F5E2", +"M: c #F9F5E1", +"N: c #F9F4E1", +"O: c #FAF9EA", +"P: c #F9FAF5", +"Q: c #F7F7F0", +"R: c #EAEAE1", +"S: c #DEDFD6", +"T: c #D3D3CA", +"U: c #C9CAC2", +"V: c #C2C2BB", +"W: c #C3C2BC", +"X: c #8C8B87", +"Y: c #989793", +"Z: c #A6A6A1", +"`: c #BAB9B2", +" < c #CCCAC4", +".< c #DFE0D6", +"+< c #EDEDE5", +"@< c #F3F3EB", +"#< c #F5F4ED", +"$< c #FAF9F0", +"%< c #F8F4E2", +"&< c #F8F4DD", +"*< c #F9F6E0", +"=< c #F9F6EA", +"-< c #F9F6E9", +";< c #FAF5E2", +">< c #F9F7E3", +",< c #FEFEFC", +"'< c #E8E9E2", +")< c #D7D8CF", +"!< c #D2D1C8", +"~< c #D1CEC6", +"{< c #8D8D89", +"]< c #8B8A85", +"^< c #8D8C87", +"/< c #93948E", +"(< c #9E9D98", +"_< c #B0AEA9", +":< c #C3C1BB", +"<< c #D0CDC6", +"[< c #D9D7CF", +"}< c #E7E7DD", +"|< c #F9F9F1", +"1< c #F7F5E3", +"2< c #F5F3DF", +"3< c #FAF7E3", +"4< c #F9F7E7", +"5< c #F8F7EA", +"6< c #F8F8E2", +"7< c #F8F7E1", +"8< c #F9F8E2", +"9< c #F7F7E6", +"0< c #FBF9EC", +"a< c #FDFBF4", +"b< c #FEFDF8", +"c< c #F5F6F1", +"d< c #E1E0D8", +"e< c #E0DED6", +"f< c #8A8B88", +"g< c #8A8B85", +"h< c #90918B", +"i< c #969792", +"j< c #A5A49E", +"k< c #B7B5AF", +"l< c #C8C4BE", +"m< c #D2D0C9", +"n< c #DAD8D0", +"o< c #E1E1D8", +"p< c #E9E9E1", +"q< c #F3F2EA", +"r< c #F5F4EC", +"s< c #F9F8F2", +"t< c #F8F6EA", +"u< c #F8F7E9", +"v< c #FCFBF3", +"w< c #FEFCF6", +"x< c #EBEBE1", +"y< c #8D8D8B", +"z< c #8E8F89", +"A< c #C2BFBA", +"B< c #D6D4CC", +"C< c #DDDCD3", +"D< c #E8E8DE", +"E< c #EFEFE5", +"F< c #F9F8EE", +"G< c #F7F4E0", +"H< c #F8F7E8", +"I< c #F7F2E0", +"J< c #F8F3E0", +"K< c #F9F4E0", +"L< c #FAF9EB", +"M< c #93938E", +"N< c #989894", +"O< c #A2A29C", +"P< c #AEACA6", +"Q< c #BAB8B2", +"R< c #D3D0C9", +"S< c #DAD6CE", +"T< c #E1DFD6", +"U< c #E8E7DD", +"V< c #EEEEE4", +"W< c #F2F1E8", +"X< c #F8F5E5", +"Y< c #FAF6E2", +"Z< c #F7F0DF", +"`< c #F6F0DE", +" [ c #F8F1DE", +".[ c #F9F2DE", +"+[ c #F8F3DE", +"@[ c #F9F7E1", +"#[ c #FBFAEC", +"$[ c #FBFAF3", +"%[ c #8D8C86", +"&[ c #9B9A96", +"*[ c #B4B0AC", +"=[ c #C4C0BA", +"-[ c #CFCBC4", +";[ c #D9D5CE", +">[ c #E2DFD7", +",[ c #E7E5DC", +"'[ c #EAEADF", +")[ c #EEEDE2", +"![ c #F8F7EE", +"~[ c #F7F6EA", +"{[ c #F7F4E4", +"][ c #F9F2E0", +"^[ c #F8F1DF", +"/[ c #F8F0DD", +"([ c #F7F0DC", +"_[ c #F8F2DD", +":[ c #F9F5DF", +"<[ c #FDFCF3", +"[[ c #FEFDF6", +"}[ c #FEFCF4", +"|[ c #FDFBF2", +"1[ c #91918D", +"2[ c #979792", +"3[ c #A0A09A", +"4[ c #C3BFBA", +"5[ c #CFCBC5", +"6[ c #DAD7D0", +"7[ c #E2E0D6", +"8[ c #E6E4DA", +"9[ c #F4F3EB", +"0[ c #F6F6EC", +"a[ c #F7F5E9", +"b[ c #F5F5E2", +"c[ c #F8F2DF", +"d[ c #F6F0DB", +"e[ c #F7EFDB", +"f[ c #F7F0DB", +"g[ c #F8F2DC", +"h[ c #F8F3DD", +"i[ c #F8F6DE", +"j[ c #F8F6E3", +"k[ c #FAF7E7", +"l[ c #A3A19C", +"m[ c #B5B2AE", +"n[ c #C6C1BD", +"o[ c #D4CEC8", +"p[ c #DEDAD2", +"q[ c #E2DFD6", +"r[ c #E5E4DA", +"s[ c #EEEEE5", +"t[ c #F5F6EC", +"u[ c #F7F6ED", +"v[ c #F8F5EA", +"w[ c #F8F4E4", +"x[ c #F4F4E2", +"y[ c #F7F6E4", +"z[ c #F7F3E0", +"A[ c #F6EFDA", +"B[ c #F8F0DB", +"C[ c #F7F4DC", +"D[ c #F8F5DE", +"E[ c #F9F5E0", +"F[ c #F9F4DF", +"G[ c #ABABA9", +"H[ c #AAA7A2", +"I[ c #BDB8B4", +"J[ c #CBC6C0", +"K[ c #D8D3CC", +"L[ c #EDEEE5", +"M[ c #F5F5EC", +"N[ c #F7F6EF", +"O[ c #F5F6E6", +"P[ c #F5F5E3", +"Q[ c #F8F1DC", +"R[ c #F8F0DA", +"S[ c #F6EEDA", +"T[ c #F7F2DA", +"U[ c #F6F2DA", +"V[ c #F7F2DC", +"W[ c #8D8C89", +"X[ c #90908A", +"Y[ c #B4B1AC", +"Z[ c #C4BFBA", +"`[ c #D1CCC7", +" } c #D9D4CD", +".} c #DED9D2", +"+} c #E5E5DB", +"@} c #F1F1E9", +"#} c #F7F6F2", +"$} c #F7F6F0", +"%} c #F6F5E6", +"&} c #F6F5E1", +"*} c #F9F1DC", +"=} c #FAF2DF", +"-} c #F8F3DF", +";} c #F5EFDA", +">} c #FAF2DB", +",} c #F6F1DC", +"'} c #F7F7E0", +")} c #959594", +"!} c #8F8E88", +"~} c #ADAAA6", +"{} c #BCB9B4", +"]} c #CAC6C1", +"^} c #D3CEC8", +"/} c #DAD4CD", +"(} c #DDDAD2", +"_} c #F4F4ED", +":} c #F7F5E6", +"<} c #F8F4E3", +"[} c #F4EEDC", +"}} c #F8EFDB", +"|} c #F7EFDA", +"1} c #F9F1DB", +"2} c #F9F3E0", +"3} c #8E8D88", +"4} c #9D9B96", +"5} c #A9A7A2", +"6} c #B7B4AF", +"7} c #DAD6CF", +"8} c #DEDCD2", +"9} c #E1E1D7", +"0} c #F1F1EB", +"a} c #F6F5E7", +"b} c #F6F4E2", +"c} c #F8F2E0", +"d} c #F6EDD9", +"e} c #F6EDDA", +"f} c #F7EEDB", +"g} c #F8F3DC", +"h} c #F6EFDC", +"i} c #F7EEDA", +"j} c #F8EEDA", +"k} c #F7F0DA", +"l} c #F9F2DF", +"m} c #868681", +"n} c #9D9B97", +"o} c #A6A49F", +"p} c #B3B0AA", +"q} c #BEB9B5", +"r} c #C7C3BC", +"s} c #CDC7C1", +"t} c #D2CDC7", +"u} c #D8D4CC", +"v} c #DAD9D0", +"w} c #DFDFD5", +"x} c #E4E4DB", +"y} c #F8F7EF", +"z} c #F6F2E1", +"A} c #F8F0E0", +"B} c #F5EDDB", +"C} c #F5ECD9", +"D} c #F6ECD9", +"E} c #F6ECDA", +"F} c #F8F1DA", +"G} c #F7F0DE", +"H} c #F8EFDC", +"I} c #F8F1DB", +"J} c #F8EEDB", +"K} c #F7EEDC", +"L} c #6D6D6C", +"M} c #A19F9A", +"N} c #ACA8A5", +"O} c #BDB9B4", +"P} c #C1BCB7", +"Q} c #C6C2BB", +"R} c #CEC9C2", +"S} c #D2D0C8", +"T} c #D7D6CD", +"U} c #DDDED4", +"V} c #E4E4DA", +"W} c #EDEDE8", +"X} c #FAF8EE", +"Y} c #F8F5E8", +"Z} c #F7F2E2", +"`} c #FAF1E0", +" | c #F6EFD8", +".| c #F9F4DE", +"+| c #F7EFDC", +"@| c #F7F1DA", +"#| c #F4EBD9", +"$| c #A2A09B", +"%| c #A9A6A2", +"&| c #AFACA8", +"*| c #BAB7B1", +"=| c #C0BBB5", +"-| c #C8C4BC", +";| c #D7D7CE", +">| c #FAFAF5", +",| c #FAF2E0", +"'| c #F8F0D9", +")| c #F6F1DB", +"!| c #F7F1DE", +"~| c #F6EAD9", +"{| c #F8EBD9", +"]| c #9E9B96", +"^| c #A5A29D", +"/| c #B0ACA8", +"(| c #B9B4AE", +"_| c #C4C0B8", +":| c #CFCEC4", +"<| c #D9D8CF", +"[| c #E1E1D9", +"}| c #EBEBE7", +"|| c #FAF9F8", +"1| c #FBFAF7", +"2| c #FAF8F2", +"3| c #FBF7E9", +"4| c #FAF4E1", +"5| c #F9F1DA", +"6| c #F5EAD9", +"7| c #F6E9D9", +"8| c #F8E9D9", +"9| c #E3C5C3", +"0| c #E2C4C2", +"a| c #E1C3C1", +"b| c #E1C2C0", +"c| c #E0C2C0", +"d| c #817271", +"e| c #A89998", +"f| c #7E7776", +"g| c #787876", +"h| c #B38888", +"i| c #B08484", +"j| c #AB7E7E", +"k| c #AAA6A2", +"l| c #B7B2AC", +"m| c #C4C1B8", +"n| c #7F3C4C", +"o| c #76203F", +"p| c #741839", +"q| c #EAEBE9", +"r| c #6A0030", +"s| c #6B0A30", +"t| c #6B102E", +"u| c #FBFAF6", +"v| c #FCFAF1", +"w| c #FCF9EB", +"x| c #FAF7E5", +"y| c #F5EEDB", +"z| c #F6F3DB", +"A| c #F9F2DD", +"B| c #F8F1DD", +"C| c #F9F1DD", +"D| c #F7EDDB", +"E| c #F7EBDA", +"F| c #F7E9D9", +"G| c #F8E8D8", +"H| c #E2C3C2", +"I| c #C6B0AE", +"J| c #958D8D", +"K| c #B4898A", +"L| c #B18585", +"M| c #AD8080", +"N| c #9E9C98", +"O| c #ABA8A2", +"P| c #BBB7B0", +"Q| c #864A52", +"R| c #7B2A44", +"S| c #781A3D", +"T| c #E3E3DC", +"U| c #E6E6E2", +"V| c #6A002C", +"W| c #6A002B", +"X| c #69002C", +"Y| c #FBFAF8", +"Z| c #FDFBF0", +"`| c #FDFAED", +" 1 c #FCF8EA", +".1 c #FAF5E5", +"+1 c #F5F2DC", +"@1 c #F7F2DE", +"#1 c #B7A8A7", +"$1 c #C0B1B0", +"%1 c #BAABAA", +"&1 c #B9AAA9", +"*1 c #BEAEAE", +"=1 c #AB9C9B", +"-1 c #C2B2B2", +";1 c #B2A2A2", +">1 c #CAB4B2", +",1 c #B68B8A", +"'1 c #B28686", +")1 c #B1AFA8", +"!1 c #8B5157", +"~1 c #813A4C", +"{1 c #7B2342", +"]1 c #E0E0D7", +"^1 c #6A0027", +"/1 c #660027", +"(1 c #640028", +"_1 c #FEFDF5", +":1 c #FEFCF5", +"<1 c #FEFBF3", +"[1 c #B59E9D", +"}1 c #CAB3B2", +"|1 c #8F8E8A", +"11 c #999893", +"21 c #A6A69F", +"31 c #915A60", +"41 c #864853", +"51 c #7E2C46", +"61 c #DDDCD1", +"71 c #EAEAE3", +"81 c #660022", +"91 c #640022", +"01 c #600020", +"a1 c #FDFDF4", +"b1 c #FFFEF6", +"c1 c #FFFEF7", +"d1 c #FEFDF4", +"e1 c #FDFCF2", +"f1 c #FCF9ED", +"g1 c #FAF6E7", +"h1 c #F9F3DE", +"i1 c #AA9492", +"j1 c #9C9C96", +"k1 c #996566", +"l1 c #90575C", +"m1 c #85434F", +"n1 c #DAD8CD", +"o1 c #DFDED4", +"p1 c #68101A", +"q1 c #640018", +"r1 c #5E001C", +"s1 c #F7F7F5", +"t1 c #FFFFF8", +"u1 c #FFFEF8", +"v1 c #FCFBF0", +"w1 c #FBF8EA", +"x1 c #726262", +"y1 c #4B4443", +"z1 c #ACA4A4", +"A1 c #9C938E", +"B1 c #AA9896", +"C1 c #9C928F", +"D1 c #8F8E89", +"E1 c #9F6D6E", +"F1 c #986366", +"G1 c #90585C", +"H1 c #CECEC4", +"I1 c #DAD8CF", +"J1 c #E2E3DC", +"K1 c #6A151E", +"L1 c #651517", +"M1 c #5F0517", +"N1 c #F8F7F5", +"O1 c #FBFBF5", +"P1 c #FEFEF6", +"Q1 c #B28A97", +"R1 c #B28A95", +"S1 c #D8C5C6", +"T1 c #827372", +"U1 c #948684", +"V1 c #A09090", +"W1 c #8A8282", +"X1 c #B6A7A4", +"Y1 c #9B928F", +"Z1 c #BAA09E", +"`1 c #C8A4A4", +" 2 c #B99E9D", +".2 c #C7A3A2", +"+2 c #C5A09F", +"@2 c #BB9292", +"#2 c #B88F8F", +"$2 c #B58A8A", +"%2 c #A47272", +"&2 c #A06E6F", +"*2 c #9A6668", +"=2 c #BCBCB4", +"-2 c #CECDC4", +";2 c #D6D5CE", +">2 c #6E1530", +",2 c #680A1E", +"'2 c #600A15", +")2 c #D6BEC4", +"!2 c #8A4561", +"~2 c #651532", +"{2 c #661034", +"]2 c #681532", +"^2 c #661530", +"/2 c #671730", +"(2 c #6A1E34", +"_2 c #6D2439", +":2 c #D8C4BF", +"<2 c #847C7C", +"[2 c #BEB0AE", +"}2 c #82827F", +"|2 c #9E9592", +"12 c #D0AEAD", +"22 c #CDAAA9", +"32 c #C9A6A5", +"42 c #9A928E", +"52 c #BE9696", +"62 c #BA9291", +"72 c #B88E8E", +"82 c #A67474", +"92 c #A47373", +"02 c #A26F70", +"a2 c #AAA9A2", +"b2 c #B9B9B1", +"c2 c #760A39", +"d2 c #6E002B", +"e2 c #670517", +"f2 c #EFEFEA", +"g2 c #F4F3EF", +"h2 c #FAFAF3", +"i2 c #D3BCC1", +"j2 c #5D0027", +"k2 c #610027", +"l2 c #63002C", +"m2 c #65002D", +"n2 c #680A30", +"o2 c #68152C", +"p2 c #66152A", +"q2 c #671828", +"r2 c #6A1E2E", +"s2 c #6C2333", +"t2 c #B58E91", +"u2 c #9A9292", +"v2 c #B0A8A8", +"w2 c #D6B4B4", +"x2 c #D2B1B1", +"y2 c #CFADAD", +"z2 c #9C938F", +"A2 c #9B928E", +"B2 c #9A918E", +"C2 c #AA9895", +"D2 c #C09A9A", +"E2 c #BD9695", +"F2 c #BA9292", +"G2 c #A87878", +"H2 c #A67575", +"I2 c #A47473", +"J2 c #A7A7A0", +"K2 c #B8B8B0", +"L2 c #CAC9C0", +"M2 c #803646", +"N2 c #771939", +"O2 c #720E34", +"P2 c #E8E9E3", +"Q2 c #F1F1E7", +"R2 c #D0B8B9", +"S2 c #5E0028", +"T2 c #630029", +"U2 c #D7BEC2", +"V2 c #FFFFFA", +"W2 c #B28A90", +"X2 c #681722", +"Y2 c #681C26", +"Z2 c #6C1F2D", +"`2 c #FBFAEF", +" 3 c #F5F7E4", +".3 c #F7F6E3", +"+3 c #AAA2A2", +"@3 c #C2ABAA", +"#3 c #B3A4A3", +"$3 c #D7B7B6", +"%3 c #D6B6B6", +"&3 c #D5B4B3", +"*3 c #9D9490", +"=3 c #B99E9C", +"-3 c #C39E9D", +";3 c #BE9796", +">3 c #AB7C7C", +",3 c #A67676", +"'3 c #9B9B95", +")3 c #B8B6B0", +"!3 c #8A4E54", +"~3 c #823F48", +"{3 c #7D3444", +"]3 c #E8E7DE", +"^3 c #A98181", +"/3 c #620A29", +"(3 c #620027", +"_3 c #B07E90", +":3 c #FFFEFB", +"<3 c #8E4F56", +"[3 c #69151F", +"}3 c #6C1523", +"|3 c #D9C4C3", +"13 c #FBF9EB", +"23 c #AC9C9C", +"33 c #615A59", +"43 c #867E7E", +"53 c #ACA5A4", +"63 c #DABABA", +"73 c #B0A09D", +"83 c #C6A1A1", +"93 c #C49F9E", +"03 c #C29C9C", +"a3 c #B08382", +"b3 c #AB7D7C", +"c3 c #A87978", +"d3 c #9A9A94", +"e3 c #965F62", +"f3 c #8E5458", +"g3 c #894B51", +"h3 c #D2D2CA", +"i3 c #D5D6CD", +"j3 c #DADAD2", +"k3 c #AB7F84", +"l3 c #AA8183", +"m3 c #8A3C58", +"n3 c #FDFCF4", +"o3 c #FEFDF7", +"p3 c #B68990", +"q3 c #6C1526", +"r3 c #6B1024", +"s3 c #B58A91", +"t3 c #FAF9EC", +"u3 c #A29A9A", +"v3 c #B2A3A2", +"w3 c #E1C2C1", +"x3 c #D9B8B8", +"y3 c #9C9590", +"z3 c #8A8A84", +"A3 c #8D8B86", +"B3 c #C8A4A3", +"C3 c #C6A1A0", +"D3 c #C49E9E", +"E3 c #B48A89", +"F3 c #AC7D7D", +"G3 c #9A9993", +"H3 c #9E6A6B", +"I3 c #986465", +"J3 c #935A5D", +"K3 c #C8C6BF", +"L3 c #C9C9C1", +"M3 c #DDDBD2", +"N3 c #EFEDE4", +"O3 c #FAFAF0", +"P3 c #B68393", +"Q3 c #6D102F", +"R3 c #B68A95", +"S3 c #F9F9E9", +"T3 c #F7F7E5", +"U3 c #D1BBB9", +"V3 c #463E3E", +"W3 c #AFA09F", +"X3 c #DFC0BE", +"Y3 c #888984", +"Z3 c #9A928D", +"`3 c #C7A3A3", +" 4 c #BA9190", +".4 c #B68B8B", +"+4 c #B18584", +"@4 c #A37172", +"#4 c #9F6C6C", +"$4 c #9C6668", +"%4 c #B8B5B0", +"&4 c #BCBBB5", +"*4 c #C1BFB9", +"=4 c #C9C7C1", +"-4 c #D3D1CA", +";4 c #E8E6DC", +">4 c #F2F1E6", +",4 c #D8BCC2", +"'4 c #B57C91", +")4 c #943E63", +"!4 c #700534", +"~4 c #6F1534", +"{4 c #FFFFFC", +"]4 c #FDFEF7", +"^4 c #FBFCF1", +"/4 c #F7F9E9", +"(4 c #F4F6E4", +"_4 c #F4F7E4", +":4 c #968786", +"<4 c #9D8E8D", +"[4 c #988888", +"}4 c #9B8C8B", +"|4 c #A19291", +"14 c #BCADAC", +"24 c #998A89", +"34 c #9B9493", +"44 c #8A8A88", +"54 c #9A918D", +"64 c #C8A3A3", +"74 c #BB9393", +"84 c #B78E8E", +"94 c #A16F6E", +"04 c #A8A5A0", +"a4 c #AFADA8", +"b4 c #C1BFBA", +"c4 c #CCCAC3", +"d4 c #D5D3CC", +"e4 c #B18B8B", +"f4 c #B58E90", +"g4 c #954E69", +"h4 c #74053B", +"i4 c #72003A", +"j4 c #710037", +"k4 c #73003A", +"l4 c #74003A", +"m4 c #740038", +"n4 c #731536", +"o4 c #B78995", +"p4 c #FFFFFB", +"q4 c #FAFBEF", +"r4 c #F2F5E2", +"s4 c #F4F5E1", +"t4 c #F5F4E1", +"u4 c #949491", +"v4 c #BE9797", +"w4 c #BC9493", +"x4 c #AA7A7A", +"y4 c #A77676", +"z4 c #A57372", +"A4 c #A3A29C", +"B4 c #ABA9A4", +"C4 c #B6B3AE", +"D4 c #C5C1BC", +"E4 c #BDACA8", +"F4 c #7F3C44", +"G4 c #79303A", +"H4 c #78303C", +"I4 c #782E3F", +"J4 c #792640", +"K4 c #771042", +"L4 c #74003E", +"M4 c #963F6A", +"N4 c #983F6A", +"O4 c #76003B", +"P4 c #750038", +"Q4 c #B88292", +"R4 c #FCFDF5", +"S4 c #F5F8E8", +"T4 c #F0F5E2", +"U4 c #F1F5E1", +"V4 c #F4F5E2", +"W4 c #F6F5E3", +"X4 c #ACACAB", +"Y4 c #C8A5A5", +"Z4 c #C09998", +"`4 c #AE8081", +" 5 c #AA7A7B", +".5 c #A77776", +"+5 c #A8A6A0", +"@5 c #AD9E9A", +"#5 c #8D5458", +"$5 c #81414A", +"%5 c #7C3644", +"&5 c #98616A", +"*5 c #B59092", +"=5 c #B78F94", +"-5 c #F9F9EE", +";5 c #B97D98", +">5 c #78003E", +",5 c #77003D", +"'5 c #B87C93", +")5 c #FAFAEF", +"!5 c #F6FAEC", +"~5 c #F0F5E1", +"{5 c #F0F4E2", +"]5 c #F1F5E2", +"^5 c #F4F6E3", +"/5 c #A49594", +"(5 c #CCA8A8", +"_5 c #C9A4A4", +":5 c #C19B9B", +"<5 c #BF9898", +"[5 c #B48989", +"}5 c #AF8282", +"|5 c #979892", +"15 c #9C9C97", +"25 c #9E6B6C", +"35 c #966062", +"45 c #8B5256", +"55 c #CAB6B2", +"65 c #EBE7DE", +"75 c #EEEBE0", +"85 c #F1ECE1", +"95 c #F4F1E5", +"05 c #F6F5E9", +"a5 c #F8F8ED", +"b5 c #BA829A", +"c5 c #7B0046", +"d5 c #7A0044", +"e5 c #B97C96", +"f5 c #F9F9EB", +"g5 c #F9FCF0", +"h5 c #EFF6E2", +"i5 c #ECF5E1", +"j5 c #F0F5E3", +"k5 c #F2F6E4", +"l5 c #F5F6E4", +"m5 c #AE9F9E", +"n5 c #A79F9F", +"o5 c #90908D", +"p5 c #CEACAB", +"q5 c #CBA7A7", +"r5 c #C29B9B", +"s5 c #B99190", +"t5 c #B58B8B", +"u5 c #B28585", +"v5 c #9A8E8A", +"w5 c #A37171", +"x5 c #9E6C6C", +"y5 c #AE9290", +"z5 c #D4CFC9", +"A5 c #E6E0DA", +"B5 c #ECE8E0", +"C5 c #EDEAE0", +"D5 c #EDEBDF", +"E5 c #EEECE0", +"F5 c #F1F1E4", +"G5 c #BA8E9A", +"H5 c #801C4D", +"I5 c #7D0549", +"J5 c #BA7C98", +"K5 c #F7F8E8", +"L5 c #FBFBF0", +"M5 c #FBFEF3", +"N5 c #F4FAE9", +"O5 c #ECF6E2", +"P5 c #ECF6E1", +"Q5 c #ECF7E1", +"R5 c #EEF7E2", +"S5 c #F0F6E3", +"T5 c #F2F6E3", +"U5 c #B0A1A0", +"V5 c #8D8D8A", +"W5 c #B09F9C", +"X5 c #D1AFAF", +"Y5 c #CEABAB", +"Z5 c #9B938E", +"`5 c #C6A2A1", +" 6 c #C19B9A", +".6 c #BC9494", +"+6 c #9B8380", +"@6 c #A88E8C", +"#6 c #C0BCB7", +"$6 c #E0DCD5", +"%6 c #E4E0D8", +"&6 c #E4E2D8", +"*6 c #E6E5DA", +"=6 c #EAE9DE", +"-6 c #863B55", +";6 c #863251", +">6 c #81184A", +",6 c #BB7C98", +"'6 c #F7F7EA", +")6 c #FDFEF5", +"!6 c #FAFDF1", +"~6 c #F4F9EA", +"{6 c #EDF6E2", +"]6 c #EDF7E0", +"^6 c #EEF8E2", +"/6 c #EDF6E1", +"(6 c #EFF6E3", +"_6 c #CFB9B7", +":6 c #BAB2B2", +"<6 c #9F9794", +"[6 c #D3B2B1", +"}6 c #D0AEAE", +"|6 c #BC9393", +"16 c #968A86", +"26 c #A97A7A", +"36 c #A48C89", +"46 c #ADABA6", +"56 c #BDBAB4", +"66 c #CBC7C1", +"76 c #D4D1CA", +"86 c #D8D6CE", +"96 c #DBDACF", +"06 c #B8999A", +"a6 c #8C465A", +"b6 c #883855", +"c6 c #852750", +"d6 c #BC859A", +"e6 c #F6F7EC", +"f6 c #F6F7EB", +"g6 c #F8F8EC", +"h6 c #F8F9EE", +"i6 c #FDFEF4", +"j6 c #FAFCF1", +"k6 c #F4F8EA", +"l6 c #EDF4E1", +"m6 c #EAF4DF", +"n6 c #EBF6E1", +"o6 c #EEF6E3", +"p6 c #908988", +"q6 c #B5AEAD", +"r6 c #B7AFAF", +"s6 c #DCBDBB", +"t6 c #9E9591", +"u6 c #BD9696", +"v6 c #BD9595", +"w6 c #AE8181", +"x6 c #AC7E7E", +"y6 c #AB7D7D", +"z6 c #A7908C", +"A6 c #ABAAA4", +"B6 c #BAB6B1", +"C6 c #C4C1BC", +"D6 c #C2B4AF", +"E6 c #AA8384", +"F6 c #986268", +"G6 c #915260", +"H6 c #8C4359", +"I6 c #883153", +"J6 c #BC8A9B", +"K6 c #F4F5EB", +"L6 c #F5F6EB", +"M6 c #F6F6EA", +"N6 c #FDFEF3", +"O6 c #FAFBF0", +"P6 c #F4F6E7", +"Q6 c #ECF4E0", +"R6 c #EBF6E0", +"S6 c #EAF6E1", +"T6 c #EBF6E2", +"U6 c #968F8E", +"V6 c #ABA4A2", +"W6 c #C9A5A4", +"X6 c #BF9897", +"Y6 c #978D89", +"Z6 c #AE8180", +"`6 c #AC7F80", +" 7 c #AA7E7E", +".7 c #A77879", +"+7 c #A27474", +"@7 c #A07073", +"#7 c #A98283", +"$7 c #C4B4B0", +"%7 c #8F4B5C", +"&7 c #883854", +"*7 c #A05A74", +"=7 c #F3F4EA", +"-7 c #F5F6EA", +";7 c #F5F5EA", +">7 c #FCFCF1", +",7 c #FDFDF2", +"'7 c #FCFDF1", +")7 c #F8F9EB", +"!7 c #EFF4E1", +"~7 c #EAF3DE", +"{7 c #8E8786", +"]7 c #C9B2B1", +"^7 c #D3BCBB", +"/7 c #ADA6A5", +"(7 c #CAA6A6", +"_7 c #C09A99", +":7 c #C09898", +"<7 c #988E8A", +"[7 c #B48888", +"}7 c #B28584", +"|7 c #AF8382", +"17 c #AE8282", +"27 c #AC7E7F", +"37 c #A67879", +"47 c #B19896", +"57 c #D1D0C6", +"67 c #A4757C", +"77 c #862B4F", +"87 c #F2F2E9", +"97 c #F3F4E9", +"07 c #F3F4E7", +"a7 c #F4F5E9", +"b7 c #FAFCEE", +"c7 c #F4F8E7", +"d7 c #ECF3DD", +"e7 c #EBF5DE", +"f7 c #B6AEAE", +"g7 c #A09998", +"h7 c #A28E8A", +"i7 c #A48F8C", +"j7 c #ADACA8", +"k7 c #BAB7B2", +"l7 c #CFCCC5", +"m7 c #F2F3E9", +"n7 c #F2F3E6", +"o7 c #FAFAED", +"p7 c #FBFBEF", +"q7 c #FAFBEE", +"r7 c #F8FAEC", +"s7 c #EBF3DD", +"t7 c #EAF3DC", +"u7 c #969794", +"v7 c #91938E", +"w7 c #949692", +"x7 c #A3A39E", +"y7 c #BDBAB6", +"z7 c #CCC9C4", +"A7 c #D9D7D0", +"B7 c #E2E1D7", +"C7 c #F0F1E7", +"D7 c #F1F2E8", +"E7 c #F1F2E6", +"F7 c #F6F6E9", +"G7 c #F9FAEC", +"H7 c #F8FAEB", +"I7 c #F2F7E5", +"J7 c #EEF6E0", +"K7 c #EAF2DB", +"L7 c #A3A3A2", +"M7 c #90928F", +"N7 c #90938D", +"O7 c #989B97", +"P7 c #A2A39F", +"Q7 c #C4C2BD", +"R7 c #D8D4CE", +"S7 c #E2E0D8", +"T7 c #EBEAE0", +"U7 c #EEEFE3", +"V7 c #F0F1E8", +"W7 c #F2F4E7", +"X7 c #F4F5E7", +"Y7 c #F6F7E8", +"Z7 c #F8F8EB", +"`7 c #F2F6E2", +" 8 c #EFF6E0", +".8 c #A7A7A6", +"+8 c #929691", +"@8 c #989B96", +"#8 c #A4A4A2", +"$8 c #B6B4B1", +"%8 c #CCC8C3", +"&8 c #D9D8D2", +"*8 c #E2E4DA", +"=8 c #E3E4DA", +"-8 c #E4E6DC", +";8 c #EBECE4", +">8 c #EFF0E6", +",8 c #F2F3E8", +"'8 c #F4F4E7", +")8 c #F7F8EC", +"!8 c #F6F8EC", +"~8 c #F3F6E7", +"{8 c #EFF4E2", +"]8 c #EEF6E1", +"^8 c #8F928F", +"/8 c #909390", +"(8 c #939693", +"_8 c #9A9C98", +":8 c #B7B7B2", +"<8 c #C6C6C1", +"[8 c #D0D0C9", +"}8 c #D6D6CE", +"|8 c #D8DAD2", +"18 c #E5E6DF", +"28 c #F2F3E7", +"38 c #F6F6EB", +"48 c #F3F6E6", +"58 c #80807F", +"68 c #8E908D", +"78 c #909490", +"88 c #949794", +"98 c #9A9C9A", +"08 c #A6A7A4", +"a8 c #B3B4B0", +"b8 c #C0C2BC", +"c8 c #CFCEC7", +"d8 c #D2D4CA", +"e8 c #E0E1D8", +"f8 c #E6E8DE", +"g8 c #F0F1E6", +"h8 c #F4F5EA", +"i8 c #F4F6E9", +"j8 c #F1F6E6", +"k8 c #EDF4E0", +"l8 c #ECF3DF", +". + @ # $ % & % * = = = = - ; > ; ; , ; ; ; , ' ' ) ! , , , , , , ~ , ~ ~ { { ~ ~ ~ { ] ^ ^ ^ ^ { / , ^ ^ ( ~ _ : ( < _ [ } | / 1 / 2 2 3 2 4 2 4 5 4 5 6 7 8 7 9 0 a b 0 b c d d e f g g g h i j j h g k h g g l m n o p q a r r s t u u v v 7 7 u u w x y z A B C ", +"D E F F G H I J K L L M N M ~ ~ , , ; , , ] , O O O P , ; ] Q , R , , ~ ~ { , ^ ~ , ^ { ^ ( ^ ^ ( ^ , S ( ~ ~ S S ~ ( T U [ _ ^ [ [ V [ / [ W 1 W | W W V X X Y Z Y X Z w ` .u .u ..u u +.@.#.#.@.$.#.@.+.@...+.#.u u %.` &.*.*...*.=. .X X 4 4 =.=.-.;.>.>.,.@.e ", +"'.).F !.~.H {.J J > {.M > , ~ ~ , > , , Q ].{ ' O ! ^.; ]., ]., Q ~ ~ , ~ , ~ , ( ^ ~ ^ _ ^ ^ ( ^ ^ ~ ( ( R ^ ( ~ } U _ [ _ _ : [ [ _ [ [ [ [ [ /.(._.V /./._./.:./.<./.=./.[.Y <.w =.<.w }.|.1.|.2.w w <.3.}.<.=.w <.X X X X 4.5.6.X X 4 3 4 4 4 2 X /.7.8.;.,.#.9.", +"0.a.b.U b.~.= {.> > ~ > > c.> , ; ; , ~ Q d.e.O f.P g., , ) , , , , , ^ ~ , , ~ ~ ~ , { , ~ ^ ( _ ^ ^ ( T _ : h.( : ( _ _ _ { _ } [ [ [ [ [ [ [ [ _._.[ [ i.V /.Y /./././././.=././.<.=.<.-.-.7.-.<.=.=.<.<.<.:././.X 6.:.3 j.3 6./ / j.3 k.- l.l.- 2 _.m.7.;.>.z q ", +"n.o.o.o.T I p.] M ^ ^ ~ { , ] , ; ]., , Q , ) q.r.s.e.t.c.^., , u.v.w.x.R y., ~ M ~ , K , ^ { K ( ~ ^ S ( _ { ( ( ^ ^ ^ ^ ^ ^ ^ ^ / , _ ^ ( ~ _ : _ ( T _.| [ [ W | 2 Z Z Z 4 Z .*.z.*.z.&.Z . .6 X .X 6.n.(.3 6.3 3 / / 3 3 3 l.p.p.A.- = = = - - [ :.[.;.>.B.C.", +"$ D.6.6.p.E.- L ~ K h.~ { , , > , ].; , Q F.].G.H.O P I.J.K.L.M.N.M.O.P.Q.R.S.T.U.V.W.X.Y.Z.{ ( } _ ~ ~ T ^ ( ^ ^ { ^ | ^ K ^ _ T ^ { S ~ ( ~ S S ~ S T a.[ | [ (.W W W =.(.Z Z Z Z Y X X .Z X Z 4 6.6.2 6.4 2 2 A.* p.A.3 2 p.1 % - p.= = `.= `.`.= p.[ _.m. +z a ", +".+j.I I h.I { L K K ^ K ~ M ; , ; ^.Q , ++, ^.@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+,+]+^+>+/+(+]+!+_+:+<+[+~ S _ ( ( } ^ ^ { _ ^ ^ ( / ^ ^ _ _ ( _ _ : [ ^ | 1 [ W 2 3 Z 6.W 4 4 4 4 6 6 .7 7 v 7 7 7 }+}+|+b 0 b b b c 1+b }+2+3+4+3+5+6+% .+N 7+8+9+0+a+N [ :.m.b+B.C.", +"j.j.I I T h.= ~ ^ ~ ^ > ~ c.; , ; ; , , Q c+d+e+f+g+h+i+)+j+k+N.]+l+{+_+m+n+_+o+(+p+{+q+r+s+t+u+v+w+x+y+z+( ( ( ( _ ( } _ ^ _ ( ~ ~ ^ S ( ( : o._ : _ [ o.[ [ [ / | [ (.| 3 Z (.W =.=./.Z X Z =.X X .Z u .Y Z .%.%.Z 4 6.3 2 4 4 p.* = N `.a+A+B+C+N / V D+E+..7 ", +"* * L p.I L = > ~ M > ^ ] ; ; ; N ^.G.F+G+H+H+I+J+K+L+M+N+O+P+K+O+Q+R+H+S+T+U+e+K+V+W+r+X+P.Y+Z+,+`+n+O.V+ @~ ~ ( K ~ ~ ~ ^ ~ S ( ~ ^ ~ ( : _ _ _ / V [ [ [ _.[ [ [ (.Y W (.i.(.X (./.:.<.Z 4 Y 4 Z 4 6 6 6 6 t .@C.a b c b b a 0 b +@@@@@#@& $@& $@& 4 4 Y =.x y u ", +"%@J K K J J {.J &@; ; , , , ] , *@=@-@;@;@T+>@,@'@)@)@L+!@M+~@,@{@]@^@L+,+&+/@,@]@(@Q+_@:@<@[@!+Z+/@n+Q.{+Y+}@, ~ ~ ~ , ~ _ _ _ _ _ ^ [ _ [ _ ^ [ [ [ | (._.(.[ W [ | [ /.W [ 3 i.| /.(.Z W 3 [ X X Z (.Z 4 w X 6 X Z ` .u u =.6 6 4 6 A.|@|@|@l.- 1 2 Z /.-.1@y 6 ", +"2@3@J J J 3@= &@> ; ^ > M = 4@5@6@7@8@9@0@a@b@<@c@9@d@e@~@6@f@d@g@h@;+i@/+9@j@g+:@,+-+;+(@i@h@k@l@m@n@^+'+o@v+p@~ ( ~ ^ ~ ~ ( _ ~ ^ ~ K ( [ ^ 1 | ^ [ [ / 1 1 / / 1 [ (.2 / W 4 Z 4 5 5 4 8 8 v 6 8 Z 6 6 6.4 4 X w Z 6 ` .Z w .u 6 4+#@4 2 / 2 2 / 4 /.=.7.7.,.8 ", +"q@r@s@&@7+&@t@c.^ ~ ; , , u@v@L+w@8@i+H+x@;@y@0@,@x@8@z@A@'@K+Q+0@^@x@B@C@&+D@E@S+)+x@^@K+L+H+^@<@>+F@l+,+G@H@M.I@K K ^ ~ ^ ( _ / _ _ [ | [ | 1 ^ [ [ / (.1 / | 1 / [ [ / [ | (.W W Z Z Y Y Z Z 4 X X Z Z 6.(.X Y 6.X 6.X =.=.=.7.7.Y .7 3 / 3 3 2 1 W /.7.J@;.y 8 ", +"B+r@s@r@{.K@N &@> M ] ; L@M@H+;@;@N@e@H+M+H+z@T+c@P+c@&+O@y@X+=+E@c@9@i+)+J+)+)@P@0@7@)@Q@<@,+i+,@i@R@)@N+{+S@T@^+Y.^ ^ ~ ^ K T _ ~ ^ } ^ / _ _ [ [ I [ [ ^ [ [ [ [ [ | | | 3 2 2 4 Z 4 .4 5 4 4 4 4 6 6 4 4 4 Z 4 4 4 Z Z =.Z Y Y ` v #@|@4 2 4 4 W X Y =.E+7. +}+", +"U@V@r@7+2@W@N > > ; ; X@I+N@N@8@'@)@7@6@_@;@L+'@P+Y@S+6@h@;@Z@g+l+~+;+f@:@E@,+P+h@{+F@M.>+`@Q.!+l@]@S.`+ #O..#!++#@###| [ / ^ o.[ ^ } ^ _ } [ } [ _ [ [ _ [ [ [ [ | [ 2 (.W W 4 4 Z 4 6 6 8 7 $#$#r 7 $#$#%#v $#9 $#C.7 7 7 7 7 &#u .t t u 6 6 4 4 Z *.Y 7.;.7.,.7 ", +"*#2@r@8+8+8+t@> > ~ =#H+y@;@H+9@H+'@>@H+-#e@;#>#H+j+;#J+!@H+j+,#i+Y@d@B@'#d@*+,@)#(@>#k+L+E@Y@e+-#)#a@(+0@K+!#)+n+O.~#$@( _ ( [ [ [ / / _ _ } [ { [ [ [ | 1 1 1 [ W W W 1 W 2 W 4 6.4 Z Z Z 4 u v .w *. . . .6 6 Z Z Z 4 4 4 Z W =.Y . . . .6 8 |@Z Y =.=.-.;. +2+", +"{#]#^#a+/#a+t@> > c+w@H+H+y@;@R+H+6@(#z@-#;@g+)#H+c@I+L+;+H+l+K+9@Z@0@d@9@_#,+S+ #:#H+)#<#E@L+!#^@_#^@[#g@d@e+d@`@Q.m@-+}#I { [ | } / } ^ / ~ | | | [ 1 | 1 W Z W W W W 2 2 4 Z (./ X X (.2 X X 6.=.Z Y Y Y X Z 6.X 6.6.2 4 2 4 (.X =.Y Y Z Z 4 4 X =.=.Y :.[.;.>.|#", +"1#2#3#2#q@4#N 5#6#7#H+H+z@z@,#P@;@f+I+Q@K+T+K+O+R+O@'@<@(+I+S@f@)@k@P@N+:#'#:@d@{@n@*+j@{@8#>+<#8#R@:@h@'#O@S+{@h@V+9#Q.0#a#o._.| _ | _ _ / _ } | V | [ (.2 | 2 2 2 l.2 2 4 Z 2 4 2 2 Z 2 4 Z X Z Z =.W Z Z X 6.4 2 A.4 6.2 6.2 2 3 (.X Z Z 6 8 b#6 6 .w Y 1@>.,.9 ", +"c#U@]#V@d#s@c.e#f#(#M+T+e+M+x@f+T+`@g#L+T+H+h#T+>#'#Q@_#X+>@i#<@=+)+Q+!@)#0@)+,@g+g@;@h#j#Q@Y@8@S+k#M+l#k#=+(@l@N.'+m@V+~+m#n#_ _ _._ | [ | [ [ / V | W W 4 Z 4 4 4 Z 4 4 6 4 4 4 o#6 6 4 6 4 Z 4 4 4 4 6 4 2 4 4 4 6.4 2 2 l.2 2 3 W (.Z Z Y 4 Z 4 Z X =.1@-.;. +9 ", +"p#8+= * M ~ ] q#r#d@w@;@6@e@;@H+H+g#;@)@e+H+W+i+T+R+O+U+P+H+X+_@,#E@&+O@_@P@Q+&+k+/+)#n@P+R+;#g+h+[#^@N+ #Y+s#q+,+r+t#q+r+n+u#1 : ( | / _ 1 | | 1 | 1 (.4 2 4 4 4 5 4 4 6 Z 6 4 4 5 6 6 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 l.|@4 |@l.2 4 Z 4 W Z Z 4 4 4 W W /.m.[.J@7.&#", +"`.v#v#K K K ] w#H+H+;@8@e@w@,#<#'@Q+e@'@O+;@)+T+'@X+6@n+!@`@V+P+!+W+:#l@-+*+!+U+;+T@6@'#;#Y@-+h@S@8#T@Q.h@v+M.Q.m@o+Y+G@S.!@^+x#}#_ [ / | 1 1 1 | 2 [ 2 2 2 | 2 4 2 2 2 2 2 4 Z 4 4 4 4 4 4 4 4 4 4 4 2 4 4 4 4 5 4 4 |@2 l.l.% y#2 4 3 4 (.W 4 4 W 2 2 /.=.:.7.7.&#", +"8+z#v#J ^ S - A#H+T+w@&+7@;@)@H+,@8@w@f+_@>@]@e@7@`@&+l+h+H+k+g#)@O@0@'#<@B#~@P+)#`@&+j+X+l+n+/+C#D#E#F#G#)+U+H#Z@k@I#m@u+Z+:@`@J#n#| 1 K#| 1 2 [ 2 1 1 1 2 2 2 | 2 W 2 (.2 W W 4 2 2 4 2 1 3 4 2 2 2 2 3 2 Z 4 2 W |@2 2 l.y#l.2 1 1 W 2 2 4 4 2 2 4 Z Z X Y m.1@&#", +"L#J J M ^ K M#-#H+f+a@<#,#6@k#(#;#x@H+y@;#0@Q@;@_#!@H+f@ #x@X+H+,#;@H+e@;@M+h#6@:@D@k#S.]@Q.k+N#O#P#Q#R#S#T#U#V#O+6@Y+[@V+_+B#[@_@W#X#Y#Z#| 1 1 1 2 W 2 2 2 2 W 2 1 2 W Z 2 W 2 2 2 }#2 2 2 2 1 W 2 2 4 2 4 4 4 4 4 4 4 o#4 |@|@l.}#2 4 4 4 4 4 4 2 4 W X =.=.7.Y .", +"`#&@J J ~ K $B@H+e@H+i+H+i+P@H+x@h+6@,@R+,@^@f+0@l@T+*+Y@L+:#g#g+,+i#Y@e+K+U+'@g@`@-#r+ #.$+$@$#$$$%$&$*$=$-$;$>$,$G@m@'$u+.#)$)+N+/+e+S.!$~$2 2 2 2 4 2 4 4 W | 1 2 2 2 Z 4 4 2 4 2 l.4 2 2 2 2 2 2 2 2 4 2 4 4 2 4 4 2 4 4 l.2 2 2 2 4 2 4 4 4 4 Z Z Y Y =.Y Y {$", +"]$N {.{.L ^$r#<#6@E@b@B@f+H+[#0@K+h#j#g@j#a@W+e+Y@Z@N@)@c@K+U+P@f@c@'@;+h#9@g+E@E@Z@d@f@)#/$($_$:$<$[$}$|$1$2$3$4$5$6$P+Y+w+T@H@Z+w+r+k@M.8#:#7$4 W 2 4 4 4 4 2 }#2 W 1 2 5 2 2 }#2 5 5 8$2 4 2 5 2 l.l.l.8$2 2 2 |@2 4 2 2 2 2 2 1 1 1 1 9$4 2 4 2 X Z =.Y 7.-.}.` ", +"0$`.N > M a$T+g#;@_#L+_#b@z@)#6@E@h+>#e@a@l#f+l#O+R@-#K+Q@P@B#;@R+R@>@y@T+;#P+K+M+l@g#X+H+b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$/@,+G@9#S.q$q$r$@#n+n@s$2 2 2 2 }#4 }#2 2 1 8$}#1 2 l.2 2 2 2 4 1 1 2 2 y#1 }#l.2 2 1 4 4 }#5 4 2 2 2 1 2 1 2 4 2 2 1 2 2 2 2 Z Y Y =.Y Y ..", +"t$N > > { u$i+M+;@L+;#,#'@H+_#8@B#'@K+F@y@h+d@,@Y@i#,@*+c@Q+~+b@h@`@W+/@^@*+i#-+!#Q.Q+v$w$x$y$z$A$B$C$D$E$F$G$H$I$J$K$L$M$h#,+N$~+9#Z+,+M.~+{+`@2 O$1 1 1 O$O$1 1 1 | 1 - 2 }#}#2 1 }#1 1 l.1 1 8$y#1 1 1 2 1 2 1 }#4 l.2 2 1 O$}#2 2 2 1 2 2 }#2 2 Z Z Z Y =./.=.` ", +"P$&@J ; ' Q$g#8@w@g+R+b@k#H+g+;@&+0@R$[#,#9@X+e+!#h#e+P.:@{@/@<@N+,+E@T@h#g@X+<@{@f@)@j@N@P+S$T$U$V$W$X$Y$Z$`$ %.%+%@%#%$%%%,#n+e+n+i@]+&%h@y+*%2 O$y#1 O$8$l.1 1 1 - 1 1 O$y#2 2 }#l.2 y#=%8$- l.}#8$1 2 1 2 }#}#2 }#}#2 5 }#2 2 8$2 l.2 2 2 5 }#2 Z Z Z Y Y Y Y B.", +"-%&@J > ;%'@>#e@b@=+J+c@P@;@!@f+P@8@y@R@Q@P@w@l#i@d@7@B#E@=+(+Q@!@(@6@>+j#k@R@B#,+]@^@n+0@h#T+>%,%'%)%!%~%{%]%^%/%(%_%:%<%[%k#d@j#h@R@}%|%1 }#5 - 8$1 - y#O$y#O$O$1 y#O$y#y#l.O$O$1 }#O$O$- y#y#- 1 1 1 1 O$1 1 }#2 }#}#}#O$}#y#1 - { { O$1 2 1 2 1 2 Y Y W =.Y 1@{$", +"-%1%2%> 3%H+>@H+;@0@H+M+>@H+;@H+g#J+P@Q+P@;#K+H+f@l@_#`+]@)#Z+K+8#k@:@N.)+R@h#k+L+/+{@!+c@Z+)@h+<@4%5%6%7%8%9%0%a%b%c%d%l@e%,@n@A@<@f%Y.8$- O$}#}#1 - O$=%8$O$O$1 - 1 1 g%y#- y#O$}#1 g%y#O$- O$d.y#O$1 1 8$O$1 2 9$O$O$1 }#1 O$1 1 } h%O$| 1 1 1 2 W W i.Z Z =.Y {$", +"i%5#2%! j%(#^@M+_#<@H+Q@,@H+D@;@^@L+N@B#d@T+!@0@{@h@y@r+(@N+`+U+]+Y@)#!+<@k@!@X+N.]@]@S@R@8#,@P@R@w@)@k%l%m%n%o%p%q%r%H+i#K+[@{@^@S.~+B#[@u#{ O$g%y#y#1 g%y#y#y#d.y#y#O$) - O$O$1 O$O$O$g%1 O${ O$O$1 y#y#- O$1 O$O$O$1 O$1 O$O$O$1 - 1 1 1 { 1 4 2 | W 2 Y Y =.1@` ", +"s%5#2%t%M+H+,@H+&+N@;@_#A@H+e+<#B@R@e@h#&+8@;+e+N.Z+)# #P+=+D@Q@k@F@M+j@N@D@f@)@{@E@d@i@&+(+O@^@=+S+i+(#;@c@;@f+&+a@<@6@k@>#,@~@W+R@k@>+`+U+x+u%y#1 1 y#8$8$O$g%y#y#y#O$- y#y#O$O$O$y#O$O$O$] - g%y#) d.O$y#1 O$O$O$O$O$O$O$1 g%d.y#v%d.O${ O$O$1 1 1 W W /.i.i.Y .", +"w%; 5#x%8@H+Q@a@y@w@H+H+y@H+E@;@'@&+e@w@6@e@,@b@Y@P+)#X+K+i#]+ #i#T@&+Z+B#r+j+D@l@{+B#;+h#`+Y@D@`+L+>+;+g+R@x@H#{@L+/@_#k+B#`+D@(+Z@ #:@{+~@M.!@y%- O$- }#g%y#) y#- y#d.s.O$O$y#O$O$O$y#g%].O$v%) 1 d.O$y#O$O$1 O$O$O$O$y#O$y#s.1 =%]., g%1 1 O$1 1 1 2 1 W /.Y i.Y ", +"c.5#P z%;@;@H+a@l#f+i+9@7@x@]@H+^@g@K+A@&+E@h#Q@;+<@!@!@)+~@(@_@Z@,+~@l@A@*+h#B# #n@!@l+f@N.B#]@Y+e@N.f@g+k@e+j+)+_#^+&+S.E@n+P+6@n+c@P.B#i#h+Q+Y@A%y#O$s.y#y#) y#) d.d.O$y#O$y#O$s.O$y#e.- g%].d.s.y#y#) 1 O$O$- O$O$O$O$v%O$- ) d.O$e.d.d.s.2 K#1 }#1 1 i.i.i.Y Z ", +"c.2%a$P+H+y@)#x@7@Q@a@Q+^@;@-+,#)@d@B#c@0@W+L+K+ #^@Q+<@'#k+:@R+B#K+!@:#O@~+h+`@B#h#Q+8#C@/@c@;#Y+;#X+_@`@n@(#k@:@P+S.R+`+h+h@G@i#N. #^+C@(+o@T@`@j@B%d.O$y#v%s.y#^.d.v%d.) O$O$O$O$v%) ) d.d.y#s.) d.s.] d.O$d.y#1 1 y#- d.^.e.) v%O$) O${ y#l.O$1 2 2 1 W W Z i.Y ", +"c.5#C%'@H+z@8@H+H+i+;@;@i+T+H+;@F@M+;@H+H+w@J+H+&+'#M+F@E@<@i#g+Z@l@-+)+h#S.7@l@&+)+=+F@,@n+_#=+,+(#T@Q+=+n+f+C@)@<@:#A@n+;#;#,+)#k@,@:@N@_#!@~@)+>+=+D%s.O$y#d.y#y#y#) ) ) d.O$) ) d.^.e.d.v%g%e.) ^.y#y#O$1 O$- O$O$O$O$- O$d.s.y#d.s.g%d.O$O$d.1 O$2 1 W Z W Z Z ", +"F.E%a@I+H+6@x@H+&+_#T+d@'@)@X+(# #`@c@'#P@j#)@j+]+B#'@8#P@B#<@_@]@h@_@`+f@Z+)+o@Z@h#8#8#'#_+j+)+o+{@j@:#8#9#:#T@g@K+V+h+G@n+ #t#N@T@ #h@;#8@e+ #G@(+)+j@F%y#e.].y#e.) d.d.y#{ O$) d.] d.d.e.s.g%s.s.v%) e.d.- ) O$] - 1 O$O$O$y#) y#O$d.d.1 O$1 O$1 O$O$W | W Y Y Y ", +"G%H%l#S+7@w@'@H+6@8@y@0@f+y@d@7@_@*+B@f+H+]@_#>@(+!#!@Z@O@c@8#;@B#i@r+t#[@t+:@^+t#T@,+'+l+Y+j@n+Q.k+^+]@_#{+f+_+ #X+H#d@G@y@]+F@ #!#i@:@H#K+0@e@]@8#n@,+!@I%s.d.O$d.v%y#) ) ) ) O$O$- d.) ) y#s.d.d.) s.) ) e.) y#d.O$O$O$) d.v%d.O$y#s.O$y#d.1 1 1 1 1 | | W Y W Z ", +"J%K%H+P@8@e@B@'@6@_#P@L+M+y@6@;@&+R+y@k#H+N@L+8@8@=+f+N+;#,@'@-#i@B#(+'+`+L%x+H@o@^+M%Y+o+)$G@s#v+;+S.j@i@r+9@]@B#g+n@0@ #N@i#d@B#r+ #;+/@F@K+M+w@e+U+l@R@!#N%) ) ) e.g.^.e.; ) d.d.) ].v%d.) y#s.e.s.) y#d.y#) ) y#O$O$O$O$O$O$O$) X.% d.O$O$1 O$1 1 1 W W W W 4 Z ", +"O%H+H+H+e@;@H+H+(#y@f+,@'@8@)@_#Q+ #N@g#y@)@&+f+`@,@i#(+<@N.j+(+V+^+M.N$M.P%+#Q%R%S%T%P%I#U%V%W%W%^+N$O.s#X%Y+s#)+n@k@h#_+h#t#h@e+:@L+F@O+Q@,@I+e@;@i+j+;+X+!+Y%v%d.e.e.^.e.) O$d.d.) d.O$d.e.O - ) y#y#1 d.e.s.y#d.O$O$O$y#O$d.O$O$s.O$O$y#O$1 O$1 1 1 1 1 W W W Z ", +";@k#H+j#'@B@O+H+E@_@P@P@F@Q@R@e@k+Q@P+c@-#&+e+6@[@d@B#h@h#i@f+ #~+(+Z%`% &.&+&@&#&$&%&&&*&=&-&;&>&,&'&P%)&I#v+!&o+X%O.h#V+9@h@R@ #N+f@[@l+!+O.{@W+M+H+>@/@h@Z+~&) e.e.s.e.e.{&) O$d.) { ) ) O$y#) s.e.O$d.O$s.d.y#d.g%1 y#O$d.O$O$y#O$1 O$y#O$O$1 1 }#1 2 1 | 1 W W ", +"H+H+H+k#H+b@M+6@_#&+f@&+;@e+N@Q@;#0@>#H+H+P@O+6@ #&+)+;#L+j@_#)+(+,+]&^&/&(&_&:&<&[&}&|&1&$&2&3&4&5&5&6&7&N$8&R%X%R%N$l+S.Y@C@,@k@;#Q@h@&+>+f@~@^@k#x@H+x@(@{@H#u%d.d.e.) e.d.e.) ) d.] ) ) y#y#y#O$) s.) O$y#O$) y#y#v%d.O$y#d.d.y#=%s.s.O$O$O$O$O$O$O$2 2 W W W 2 ", +"S+H+;@w@w@H+a@f+Q+;@h+'@H+!@M+K+&+R@[#b@8@_@K+;+O@H+S.H#k@h#/@l+[@t+9&0&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&{ r&s&t&u&v&L%w&.#N$w+Q.*+k+*+O+'#~@U+!@I+M+;@;@'+)+_+x&s.e.e.) ) ) ) {&) O$] ].d.y#s.s.s.y#s.O$s.) y#v%y#O$y#O$O$O$d.O$1 - - y#O$O$y#O$O$1 1 1 2 W W 2 W ", +"A@P@_#7@'@l#;@F@A@>@k+R+R+R@Y@S.C@y@h#M+;@N.;#d@:@d@M.^@_+b@D@o@]+&%y&z&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&S&S&T&U&V&W&)&X&x+Y&V+n+[@s#`+)@!+)+L+{@&+<@S.O.R%r$Z&' e.) ) ) d.) d.^.d.d.) O$' y#y#y#s.y#O$s.y#O$s.O$d.O$y#d.{ d.O$d.O$O$1 O$}#O$O$O$y#O$2 | 1 W W ", +"i+T+w@;@H+N@H+H+;#H+;@H+x@R+;@P+P@7@B@6@a@T+y@W+Q@l#X+y@(+;#{@i#N.'+`& *.*+*@*#*$*%*&***=*-*;*>*,*'*)*!*~*{*]*^*/*} ) (*_*:*<*&%v&)$Q.H#K+!+0@i+N.7@g@9@(@h@`@s#G@[*y#s.s.O$s.v%d.v%d.) ^.) y#) y#s.y#O$y#s.g%y#) g%s.d.O$O$O$O$O$O$O$O$O$y#O$- - y#y#O$1 1 1 W Z 4 ", +"H+;@x@H+H+;#H+Q+,@H+h#;@i#g+f+-+S+,@b@b@<@[@z@N+C@-#k@g@{+h+S@Z+`+N$N$}*|*1*2*3*4*5*6*7*8*9*0*a*b*c*d*e*f*g*h*i*s.O ) j*S&k*l*m*n*o*W%^+n+V+!@h@:@e+r+)+x+.#{+p+U.O ) v%) ) d.e.) ) ) O$] ) O$y#O$y#s.s.s.) y#y#y#y#O$O$O$O$O$1 O$O$O$O$O$O$y#d.O$O$O$O$1 1 1 K#| W ", +"g#w@J+H+R+A@>#<@e+_#;#l#C@O@_@/@,#e+,@'@_#!@=+n@)#)+,+d@D@;#f@!#P.m@+#P%p*q*r*s*t*u*v*w*x*y*z*A*B*C*D*E*F*G*H*I*J*K*g%L*S&S&M*N*O*P*Q*I#w&9#Z+M.n+i#[@[@9#q+o+R*) s.e.e.y#y#) s.e.y#) d.d.) y#v%y#d.y#e.{ O$) d.^.) y#d.d.y#y#d.O$O$s.O$s.O$- g%d.O$O$y#1 1 1 2 | O$", +"w@w@I+H+8@l#6@P+A@8@U+i+]@i+d@h+j#B@,#w@-#O+H+)+8@H+N.;#r$Q@k+[#H#Z+M.S*T*U*V*W*X*Y*Z*`* =.=+=@=#=$=%=&=*===-=;=>=>&,='=S&)=!=) ~={=]=^=Q%S*r+m+/@D@Y+Z@s+`+/=y#d.) y#y#y#v%) ) e.) ) ) d.d.y#s.s.O O$) ) ) s.y#e.O$s.) y#{ s.d.d.y#y#O$O$s.) ) e.O$O$y#O$O$1 | }#| ", +";@;@H+H+Q+H+H+;@6@w@A@J+h+y@<@E@k#e@8@w@)@,@x@e+<@Q@O@&+!+Q@_+A@N+M.Y+(=_=:=<=[=}=|=1=2=3=4=5=6=7=8=9=0=a=b=c=d=e=#&f=g=h=i=j=P k=S&S&l=m=X&s+`+Z@]@~+l+n=w.{&) v%) ) ) ) ! y#s.) s.) e.v%) v%O$O$y#s.) ) v%) s.s.O$y#g%s.O$O$d.O$O$O$O$y#s.s.s.y#y#s.O$O$O$1 1 | | ", +"_#6@&+H+X+T+{@ #k#h#L+=+Z+O@D@]+O@f+d@b@D@f@`@]+:@n+!#,@!@_#M.{@n+h@N.v+W%o=p=q=r=s=t=u=v=w=x=y=z=A=B=C=D=E=F=G=H=I=J=e=K=L=M=I*N=S&O=, P=Q=_=R=(+S=T=s.) ) ) ) ].) v%) y#g.) ) y#e.y#d.d.O$y#- y#y#s.y#e.s.) e.) e.y#s.y#O$d.1 1 g%y#y#s.O$s.s.s.g%s.y#O$1 1 | 2 | ", +"i+N@M+N@N@z@I+_#y@{@A@b@Q@f+f+j#N@w@,#H+i+f+6@A@;@R+e+6@S.a@>+&+R@t#*+m@S*X%U=V=W=X=Y=Z=`= -.-+-@-#-$-%-&-*-=---;->-,-'-)-!-~-{-]-^-/-) (-_-:-<-O.[-d.].].) ) ) e.d.O ) s.) v%y#y#y#y#) O$) v%s.s.s.y#g%) s.y#d.s.O y#g%y#y#d.O$O$- ) d.O$y#y#e.O ! O v%g%O$}#| 2 | ", +"i+M+;@P+>#b@h+d@H+U+Q@Q@_@8@g@_@P@M+>#M+g#;#O@[@R${@!@;#j+;@h@)+i#h@:#'+^+H@}-|-1-2-)*3-4-5-6-7-8-9-0-a-b-c-d-e-f-g-h-i-j-k-l-m->-n-o-p-q-r-_-s-9#t-u-v-Q Q ].{&) s.e.e.g%^.e.y#) e.y#) ) ) ) ] y#y#) e.e.s.O O ) e.e.y#y#g%O$y#1 O$- d.{ O$s.g%P e.O ) O$O$1 K#| | ", +"H+(#H+'@Q+;@A@9@f+B#g+P+=+A@]@_@~@L+w@,@j+0@_#i#f+;+^@<@P.=+D@i+!+(+Q.x+9#x+w-x-y-z-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-k-Y-Z-`- ;.;+;@;R&#;$;%;&;*;, d.d.) ) ) ^.) y#y#s.y#e.y#g%O$- ) d.) s.v%P e.) P s.y#y#O$O$y#y#1 y#) d.O$e.s.s.e.d.d.d.O$1 | K#1 ", +"w@!#W+9@K+l#h+)@<#!@&+Q+_#0@F@,# #E@&+T+=+P@=+'#I+B#d@<@~@g#f@^@I+f@U+;+8#l+t+=;-;;;>;,;';);!;~;{;];^;/;(;_;:;<;[;};|;|;1;2;3;4;5;6;7;8;9;0;a;b;c;d;e;f;g;h;i;%;v-R ].) s.y#e.y#y#e.e.e.d.y#y#s.e.) y#d.O$e.s.s.s.e.s.s.) O$g%d.O$O$O$O$O$s.d.) v%e.d.e.O$1 1 K#W | ", +"H+i+y@H+j+H+a@F@L+]@>#*+O+_#!@K+e+,@&+x@P@w@y@8@Q@K+N@C@H#P+_@'#E@'#g@!+;+O.S@v+j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;A;B;B;C;D;1;2;E;F;G;j-H;I;J;K;L;M;N;O;P;Q;R;g;S;i*< j=, v%e.e.) ) e.s.) O$g%y#s.s.e.{ ' y#e.v%v%].y#s.d.) g%y#O$O$1 y#O$v%s.e.s.y#O$v%{ { | | 1 W ", +"w@6@K+_#_@>@C@y@-#^@f+;+8@;#>+'#D@^@0@e+k+=+H#e+~@!+K+(+U+k@l@Z@~+N.~+S.N.q$s#+#W&T;U;V;W;X;Y;Z;`; >.>+>+>@>#>_;$>%>&>*>=>=>C;->1;2;;>W->>,>'>)>!>~>{>]>^>/>(>_>:><>S;[>}>j=, ) e.s.s.s.e.y#d.O$s.g%d.e.v%e.s.s.s.s.e.d.y#y#s.O$O$O$y#O$y#g%y#O$O$d.y#O$1 | | 1 K#W ", +"y@h+e@_#K+w@`@]@=+:#>#H#<#x@g@8@g+^@l#d@-#f+8#S+g#g@&+&+i+X+S+7@f+0@i+*+e+T@P.S.+#|>1>2>3>4>5>6>7>8>9>0>a>b>c>%-d>e>f>g>h>i>j>=>C;|;k>6;V-l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>K*A>&;B>R e.d.e.) y#e.d.) y#y#y#g%y#s.y#y#y#v%' s.) - O$- 1 O$y#1 d.O$O$O$O$y#O$1 K#| | | | ", +"y@N@8@L+P@f+C@9@B@R+T+X+'@g+&+(#U+g+)#T+i+M+e+w@O+~@,#V+R$!#j+W+D@Q@g@k+P+G@k@`+9#+#C>D>E>F>G>H>I>J>K>L>0>b>#>M>N>O>P>Q>R>S>S>T>=>U>V>W>X>Y>W-Z>`> ,.,+,@,#,$,%,&,*,=,-,g;z>$;[>v-, ].s.e.O s.y#s.y#s.O$O$y#v%g%v%y#s.O$y#O$y#O$g%O$1 O$O$O$O$1 1 O$1 K#| 1 | | W | ", +">#M+H+P@b@7@_#9@{@g@_#i@j#B#>+O@:#F@k+R@(#,@l@P@k+D@N@P.!#O+Y@h@O.i@)+N+]@Q.Z@t+9#M%<*;,>,,,',),!,~,{,],^,/,(,a-_,:,<,e>[,},|,1,2,S>3,4,5,6,7,e-8,9,0,a,b,c,d,e,f,g,h,i,Q;j,k,S;A>B>Q , , ) y#y#y#y#O$y#g%O$d.1 O$y#O$d.y#O$g%1 O$g%O$O$1 1 1 - O$2 { W | V | | V i.", +"z@<@L+{@P+Q+8#a@i#=+0@-+f+R@=+;#S@B# #8#J+T+~@>#'#~@x@{@K+k+7@<#Y@g+P+W+0@)#]@(+n+]+O.X&l,m,n,o,p,q,r,s,t,u,%-v,w,x,y,z,A,B,|,C,D,E,F,h>j>G,H,5,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,K*&;[>*;j=R d.g%O$s.1 O$d.- O$X.{ O$1 1 O$O$O$O$O$1 1 1 } O$1 1 1 1 } | V | [ i.W ", +")@e+e@'#d@L+D@R+0@_@M+ #;@-#_#&+*+,@j+Y@&+a@f+;@,@^@B@k+(#j@,@K+>+R@Z@C@Q@:@h+]+Q.(+S.x+R%Z,`, '.'c=+'r,@'#'$'%'&'*'z*='-'A,;'1,D,>'>','''h>=>=>)'!'~'{']'^'/'('_':'<'['}'|'1'2'3'4'h;5'&;[>}>[>, 1 O$O$O$O$y#y#O$O$O$O$O$1 O$1 2 O$1 1 K#d.1 1 1 | 1 | | V | [ | /.", +"w@Q@H+_@>@B@L+f+c@j+7@n@0@-+]@h#/@f@-+(+d@R@B@;@_@d@0@k+8@;+P@k@_@n@l+V+h+M.9@D@/+k@+#r+X&v&6'7' '8'9'0'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'n'E,F,''p'4,)'5,q'r's't'u'v'w'$,x'y'z'A'B'C'D'E'F'G'H'5'I'####( d.d.O$] O$O$y#1 1 1 O${ O$O$1 }#1 1 1 | 1 1 1 | 1 V V V [ V V ", +"B@P@w@E@ #E@g+h+)#O+0@n+w@!@<@'#`+;#l@n+`@]@<@M+L+;#e+^@;@Y@H+f@w@l#Y@i#i@^@;# #F@i#,+(+n+P%H@J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'`' ).)+)o'>','S>h>4,@)#)$)~'%)&)*)=)-);)>),)')))!)~)O;c;{)])^)/)()_) @}>R { O$O$O$1 O$O$K#O$1 O$1 1 1 1 1 K#1 1 | | | | V | V | V V ", +"g#;#F@R@K+i@&+e+Y@J+_#~@H+d@Q+=+[@!@]@(@!@L+P@J+g#a@(#`@f+R@R$,@n+>#h+^@P+V+c@Y@L+i+*+)+`+O.v+N$:)<)[)})|)1)2)X>k>W>3)4)5)6)7)8)9)0)a)b)c)c)o'E,d)e)U>@)H,f)g)h)i)j)=)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)K*z)A)B): 1 1 1 1 1 1 1 1 { O$1 O$O$1 1 1 1 1 1 { | | _.| V V V ", +"_#)#B@,@R$[#j#j#_@)#Q+)+H+k@B@_@k+=+!#8#i#!#=+)#)@7@;@Q@;@h#S+i@;#_@N.]@(@V+E@m@!+j+,+_+j@9#S*W&)&C)D)E)F)G)H)I)5;k>q'J)K)L)M)N)O)P)Q)R)S)T)c)+)D,U)h>G,V)W)f)X)Y)Z)&)`) !.!#,+!@!#!$!%!&!*!=!-!;!>!,!R&'!)!##}>< O$1 { O$1 1 1 1 1 K#1 1 1 1 1 1 1 | 1 [ V | | _.V ", +"M+N@K+ #M+H#'@)# #H+A@Y@P@ #O+O@]@R@h@k@k@`+;+)@[@!#i@P+>@e+z@ #y@K+e+e+Q+f@O+>+,@A@!#f@n+Z+-+I#o+L%!!~!{!]!^!/!(!5;_!:!E;B!C!D!E!F!G!H!I!J!K!L!M!N!O!`'P!Q!R!S!S!T!U!V!Y)Z)%)W!X!Y!Z!`! ~#,.~~>+~s)@~#~$~{)%~&~^)y)*~=~A)1 { 1 1 | 1 1 | } | | 1 1 | | [ [ V | _._._.", +",@j#a@R+(#)@>#L+B@X+-#E@9@H#f+8#]+<@f@S.d@,+-+P.]@C@Y@:@!#`@i@]+S@-~;~b@f@;+h#~+~+P.[@h@[@m@l+^+,+r$L%X&>~,~'~)~!~~~{~Q-]~1;^~/~(~_~:~<~[~[~}~|~1~2~3~4~5~O!6~7~S!V)8~V!X)9~~'0~a~L,b~u'c~d~e~f~g~h~i~j~k~I*h*6'l~m~q&s!n~( 1 O$1 { 1 1 1 } 1 1 1 / | | _ V _.| V _.", +"w@>@0@{@H+]@8@O@I+H+Q@>@Q@=+k#'@^@!#:@;+A@X+h+X+Z+)@F@A@d@ #i@P.o~{&[*p~&+Q+i+B#O@c@R@(@`@!+j@t#l+S.^+V%q~r~s~t~u~v~1)e-k>]~1;w~x~y~z~A~B~C~D~E~F~G~H~I~J~3~K~L~M~N~S!O~P~U!f)Q~R~S~T~&)U~V~W~d~X~Y~Z~`~ {.{+{@{#{${%{&~&{n~A)A)_./ 1 1 | } | *{| | V [ | V V | _._.", +"8#R@B#/@C@j@H+B#g+O@*+R+,@P.9@8#W+!#R@S@V+!+^@Z@/@N+S.^@~@!@`+Z+={^.^.v%-{y@A@^@Q+{@,@,@:@X+T@t#N.x+/+V%;{Q*>~%&>{,{'{{~5;Q-){!{^~/~~{{{]{^{/{({_{:{<{[{}{|{1{2{3{4{5{6{O~T!T!U!$)c!Q~~'S~]'P'7{8{9{0{c=a{b{c{i!d{e{f{-!g{q!h{)!##U { { { { | _ | | { ^ V V [ _.V _.", +"Q+y@e+,#y@h@N@j#0@]@P+d@0@Y@w@X+7@U+_@T+i@F@L+{@^@0@R@w@`@d@Z@x+i{g.g.^.e.j{y@Q+d@j@:@k+B#&+Y@-+Z@_+N.x+N$R%n*_=k{'>l{m{n{o{S'){!{p{b!q{r{s{/{t{u{v{w{x{y{z{A{1{B{C{D{E{F{6{S!S!G{8~U!f)H{I{J{a~X!K{L{ ~M{N{O{P{Q{]!R{S{T{U{V{W{())!)!A)} } | } | } | _.V V [ V V _.", +"P+i+ #_#;@P.6@i@H+~@N@L+Q@[#k#h@>+{@Z@^@K+(@{@n@E@j+H#A@H#O+j@q+X{g.].g.g.e.Y{8@J+`@i+h#{@;#<@ #H#r+n+x+N$L%w-R=Z{`{H; ]2).]+]6,){1;@])'c!#]$]%]&]u{*]=]-];]>],]%]'])]!]~]{]]]^]S!S!O~/](]f)_]!'E;_!:]<][]}] ]|]1]2]3]4]5]6]7]^)q!8]9]|%i*B)} } _ _._ : _.*{V V _./.", +"h#;#N+X+_#!#H+)+f+P+=+N+U+l@J+D@N+O@B#T@P.<@[#n+`@i@X+_#>+k+r+8&0]g.g.^.].^.a]b]c]h@H#!+P.!+)+S@l+j@s#+#d]<-Q*x+e]f]g]/!h]i]j]K,Q-2;1;@]#)k]l]m]n]o]p]q]r]s]t]u]v]/{)]w]x]y]z]F{A]^]B]N~S!G{)'D;1;){W>_!C]o{D]h]E]F]G]!>j!H]I]U{J]K]L]M]9])!n~N]*{*{_.: : : _.V i.V ", +"Y@N@d@c@W+Y@P@=+k#[#J+8@!@R@e+'#!@<@f@z@M.F@O+U+<@:@O+I+N+W+T@x+O]].g.{&g.].e.O P]Q]l#P.Q@,@h@W+L+'#h#!+O.&%o*r$R]a;S]N{T]U]V]]'W]k>){1;w~X]Y]Z]m]:{`] ^.^+^t],]@^/{#^1{$^%^&^*^=^-^^]F,S>3,=>B;;^w~#)_]>^W>,^'^)^!^9{~^{^]^^^I]/^%~g{(^x)y)_^9] @A)_._ V : _.: _./.", +"(@7@i@K+R+h#w@(+H+!@,@I+A@9@P+{+)@'#/+R+_@D@g+/@F@k@f@O+k@d@_+o+O]{&g.g.s%{&Z&[*a]a]:^<^R@K+l@:@!@;#,@:#:#X%(=[^}^t)|^1^2^T]P'M,.]4;E;2;5,5,f)3^4^5^6^7^8^9^0^u]a^b^c^d^y]&^2~e^f^g^h^^]i^h>j^j^4,G,H,k^w~l^E;Q-:]<]m^n^o^p^q^$~m!r^s^r^t^u^v^w^q!x^B)U _._.V *{_._.", +"g+I+c@6@y@P@T+C@>@'#E@;#i@_@)@P.j+f@]@!+!+N+f@n+8#=+k@j#S@B#Q._+y^e.g.g.e.{&a][*a]s.a]z^A^B^!@g@'#S@i#Z@!#w+N$C^D^E^F^G^o>H^I^J^K^L^5;3;M^:!_]c!N^O^P^Q^Q^0^R^S^@^'])]T^1~e^D{E{2~U^V^=^W^X^3,''Y^9!V)@)D;@]1;Z^W>`^ /1].~./+/@{@/#/$/%/&/%/*/=/-/I@;/>/U V V V /.V ", +"D@K+*+d@/@N+d@[#w@~+=+'#:@e+{@P.C@!#O@-#X+h+Y@)+X+g+R@f+D@D@!+Z+B>g.,/g.g.e.[*[*a]e.a],/{&,/'/)/!/~@0@)+ #S.~/{/]/^///(/_/:/d/|;@]l^){e/f/g/h/~>i/j/j/k/l/m/n/o/p/q/r/s/;/B)t/: _.i.V ", +"_@L+h#H+U+c@M+,@g#_#;@;@O+P@^@)@P+k@=+A@l+R+^@<@k@8#i@N+/@D@r$m@$;,/O ,/P e.P ,/a]u/s%,/g.e.a]P e.v/w/x/y/z/g.].Y,A/B/C/D/I;E/F/O{N{l>G/H/,^_!W>!'c!3^I/J/K/L/L/@^M/5/N/O/D{D{7/7/P/8/Q/R/7/7/S/T/U/V/S!W/j^X/d/|;!{O-'^Y/Z/`/h/ (.(3]+(@(#(#($(%(&(*(=(;/-(U B);(_.", +"[#K+:#;@P+~@;#Z@_@{@]@;+!@*+*+i@n@t+]+:#_+;#h@l@h@r+g+{@o+;+Y&m+>(P P P a],(e.P ,/g.g.].g.,/,(a],/g.g.,/g.'(^.^.].X,T{)(!(~( {{(](^(:/H^W-/(C]_!I,$)((_(:(<(t][(}(|(1(2(2(&^3(4(3(5(6(7/7(5(3(8(%^9($^0(6{j>j^X/d/a()'E;b(U]E]c(d(e(e(f(g(h(i(j(k(j/l(m(n(8])!B)_.a.", +"N+7@]@E@)@C@H+~@P@^@O+E@C@'#^@S@H+V+R@0@,+d@Y@0@P@M.]@<@!+;+9#'+o(Z&u/,/a][*e.g.P g.g.p(t.g.P ,/^.g.e.P g.{&^.^.g.Q ,=q(r(t)k!s(t(u(v(1^w({~o{C]x(y($)z(A(B(x{x{[(C(D(E(F(G(H(2~Q/P/8/*^I(J(Q/Q/Q/7/4(K(9/]]X^L(L(4,G,M(5,6,N(O(M,Z!u'/'('P(Q(R(S(>)T(U(V(x)W{)!-(-(", +"l@*+U+W+N+-+=+0@H+N.7@0@Q@j+<#Z+>#S@Y@R@n+K+D@Y@0@~+d@B#Q.`@X&^+W(a]Z&,/a]a]P ,/P g.^.].Q '(,/e.e.e.e.a]e.^.^.].g.) j=X(Y(Z(`( _._N;+_@_#_ ]$_K,R'6,S'%_z(_(&_*_x{=_-_;_F(G(>_U^,_'_'_)_)_J(J(I(L!J(J('_J(!_~_{_]_S!9!4,4,T!b!^_~'S~s']'/_(___P,e(:_o/<_[_}_|_1_W{2_", +"O+i+;@H+H+M+O@R@i+C@b@;#Q+;#!@h@g@j@c@R@j@)+!#R@H#l+X+k@Y+]+8&q+3_[*v/P P P a]u/Z&g.^.p(++g.g.g.g.e.s.P ,/d.g.^.g.^.s.$;E'3'/&e;4_$~5_6_7_Z/P'L,8_9_q'I,c!0_A(a_z{b_c_d_1(e_f_U^g_g_'_)_)_)_)_V^h_i_T/T/I(j_*^f^k_l_h^S!G,V)G,W)m_!'n_o_p_q_r_s_t_u_v_k/N;[_w_x_J]y_", +"7@!@ #=+k@g+)#X+L+k+)@8#N.9@]@i@)@q+B#C@k+L+Z+d@L+)+)@K+n+N.9#O.z_v/P ,/g.u/a]a]z^e.g.{&t.^.^.{&^.g.e.O ,(e.{&g.e.e.e.,/A_B_X,w)C_X(D_E_F_G_H_N,X!+]`^q'n_I_J_K_k_L_G~*_M_G(N_O_g_g_P_)_)_)_V^i_i_Q_Q_0(R_R_S_f^T_U_N_V_W_X_B]0!G,@)#)!'~'S~Y_Z_`_ :.:+:@:<_l!m!4&#:", +"P.k+f@y@,#E@)@<@w@(+E@0@N+^@ #{@_#k@_#;+`+H+`+K+^@:@]@n@>+:@s+O.$:[*a]g.g.v/z^a]z^g.g.g.p(^.{&^.^.g.[*O O ) e.^.e.g.P s.O z)%:z>h;X,&:*:=:-:;:>:,:b~p_J{q'!'!'V!':k_L_[{):|{!:I~g_P_,_)_)_V^i_Q_0(0(0(~:{:l_]:^:/:U_|{(:U^l__:X^3,L(=>V>#)c!::r'<:[:('}:k(|:1:2:3:4:", +"-#W+)@P@!@f+Q+8#;@)@K+]@K+E@(+Y@ #Z@P+N+l@e+m@=+k+{+J+S.l@Y+I#^+5:v/a]e.P a]a]a]a]a],/u/g.g.g.].].g.a]a],/g.g.,/P P P P e.e.Q 6:7:8:9:0:a:b:c:@,=)d:b~e:J{f:!'b!g:':k_h:}{}{|{i:N_g_,_)_)_j:!_Q_k:k:k:l:m:n:o:^:p:I~I~(:e_g_q:{_r:0!j>U>a(k^b!X)s:t:u:('v:k(l/T(w:x:", +"E@g@ #'@f+R@,@f@-#*+)@S@,+h#t#e+:#]@k+Z@l+B@T@,@[#'+,@M.]@k+s+!+y:z:A:,/a]a]a]a]a]a],/P ,/,/,/p(].g.P e.e.g.,/e.e.Z&a]e.e.P g., B:i{C^3'A'C:%!D:E:O,F:b~s'r'G:c!I_H:m:I:|{M_M_|{N_g_,_)_I(j:U/0(k:~_~_l:{:J:K:I:L:M:N:/:L:g_U^*^O:c/S!j>j^U>M(T!P:c!Q:t:R:S:T:U:V:W:", +"h#)+[#)+:@d@`@P.S+Z@C@ #;+W+/@P+i@H#g#!@{@<@:#S+]@/@e@P.:@(@S*~+o+G.z^a][*a]a],/X:a][*v/,/,/g.].].t.g.e.e.^.,/e.,/P a]e.,/g.g.,/].v-i{Y:Z:`: <;)./<(<_<:<<<[h>h>j>G,H,c<)_q:0(~_k:ub&A<<'B<,_Y@M.j+d@!+Q@8#`@L+T@(#~+8#!@!+<@Y@!+U+l@B#!#j@Z@-+o@V+o+P%i{g.{&].Q '(a]v/v/v/,(,/e.%[g.g.g.,/,/^.a]e.a]P P s%,/P g.g.P P P ^.g.v-i{8:&[j<*[=[-[;[>[,['[)[W<%)Z)Y)![~[{[L_I~U^I(V^j:i_i_V^*^)_^:,_g_U^N_N_e_][^[/[([([_[i::[G(G(O_U^U^U^U^2~G(i_W_<[[[}[|[", +"N.m@:@[#S.*+`+H#k+S.[#h@D@<@M.Y@ #g@^@]+!@)@R@_#S@h#_#)+E@f@.#:#S.v+y^,/{&g.Q ^_O_*Q;Y[Z[`[ }.}u_+}('F:@}%)r'#}$}u[%}&}O_g_f_%},}i:H(2~'}G(G(e_I~N:N:", +"n+k@_@N+l+R+t#[#!# #&+Q@:@F@!+{@)+i@L+_@O@e+f@A@N.<@K+D@K+i#(+(+T@x+Z@d])}!}'(p(g.v/a]a]a]a],/,/g.a]a]g.u/g.g.g.g.g.g.P g.g.g.g.P g.e.g.e.P e.) e.].A>z>(<~}{}]}^}/}(}7[+}__+<@}_}R~f:q'Z):}1~>_L:%<<}/:[}K/>]}}/[H~|{K(3}t.'(e.P ) e.g.g.g.g.a]a]P e.,/g.P u/a],/,/g.^.g.^.g.e.^.^.e.e.,/P g.e.v-C^4}5}6}=[B&o[7}8}9}E:pq'u[a}b}f_p:%W>n_y}~[{[%M}N}m[O}P}Q}R}S}T}U}V}V~W}K,3;E;!'$)c!X}Y}Z}`}w{D}d}i}J}R[ |<(g[.||{e_KI,_]X]>|g:=<,|e[;];]S[J}R['|[()|g}&I,_]||1|2|3|4|g[k}A[w{k}5|k}[(a^C[M_!:E[Kh|i|j|$|k|l|m|n|o|p|.,q|D],^r|s|t|)'u|v|w|x|F[o]y|S['|R[[(,]z|d_|{:[:[O_I~F[A|Q[<{<{B|c_H~C|D|E|F|G|", +")@]@_#O@)@e+{@f@D@)+-+~+`@:#V+9|9|9|9|9|9|9|0|H|H|a|b|H|H|I|J|T@T@^+S.M%;+x+`+Y&O.v/u/^.,/g.,/g.,/a]g.g.{&{&,/,/a]P ,/[*a]P ,/,/,/e.g.a]X:g.{&^.^.g.^.g.e.e.g.].K|L|M|g;N|O|P|Q|R|S|T|U|Y/<]V|W|X|w~Y|7~<[Z|`| 1.1I<+1V[|(g}[{[{):!:F(2~8/'_U^O_e_I~z[2}J<-}@1o]S[q]", +"Q+f@e+`@h@(+^+H#t#_+:@/@M.n+M.9|9|9|#1$1%1&1*1=1-1e|;1>10|0|9|f@`@S@k@t#l@+#T@'$m+M.{&g.g.g.a]g.,/a]^<^+{@Y@;+l@T@l@H#,+k+9|9|9|*+~@[#'+M.P.r+B#l@;#[19|9|}1l@D@s+`+Z@s#[@r+(+M.[-g.g.g.P g.g.a]g.^<'({&g.,/v%g.g.v/v/,/u/P a],/P g.g.g.g.^.^.g.g.g.g.g.g.e.g.g.|1A>S;112131415161o/<><)_P_g_U^8/2~O_f_", +"Y@L+;#P@i+:#8@I+k+L+B#E@k+k+h#9|9|9|!+(@~@:@[#V+[@P.j@L+(+T19|9|U1E@h@`@9|9|V1W19|9|9|0|X1P z^a],/Y1Z1`1`1`1`1`1 2C1,/[*v/[*a]a]`1`1`1`1`1`1`1`1`1`1`1.2+2,/P {&@2#2$2{&g.X[S;%2&2*2=2-2;2r>>2,2'2K,S'!'>|O~S!)2!2~2{2]2^2/2(2_2:2,_e_e_*<*V2W2X2Y2Z2`2~:,_N_N_g_8/ 37(,_j[U^.3D{.3,_", +"0@T+(@P@!@_#7@i@F@d@n+E@`@d@D@9|9|9|T@P.j@,+'#t#l@:@9#`@+39|9|@3<@D@D@D@9|9|9|#3{+`+/@(+s#n+/=$3%3&3*3^3G2,3M<'3_>)3!3~3{3#,[|x}]3^3/3(3_3B]a1<[_1S>:3<3[3}3|3X_13)_N_P_'_P/8/'_K(2{'_P_><><", +">@l#7@H+k+6@>#P@;#f+^@E@ #;#H#9|9|9|/+D@S.]+i#k@/+n+'+239|9|9|33~@,+Z+t+9|9|9|43O.`+r+o@)$`+5363$373v/g.%[^X{d32'e3f3g3h3i3j3-)k3l3m3h2S!^]7~6{n3o3p3q3r3s3''7~t3T/J(J(7(I(><'_U^'_><><><", +")+K+:@b@[@R+]+Z@A@D@Q+!#t#k+/@9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|u3g@]+~@_@(+9|9|9|]+Q.r+r+m@v+t+v3w3x3y3z3,/A3{&,/g.p(A2`1`1B1{&X:,/e.P g.,/u/,/42`1`1`1a],(P P P ,/B3C3D3{&g.g.g.E3a3F3z<[>M)v_M38[N3s:h2O~7~v2Q3R3,<''B]]]S3T3R/R/J('_,_><)_)_)_", +";# #)#,@0@<#7@!@&+N+0@&+E@,@d@9|9|9|9|9|9|9|9|9|9|9|9|9|U3V3N.&+;#S@_#[@9|9|9|P.T@n+/@j@/+,+W39|X3Y3z:,/,/g.,/g.{&g.`1`1B1P ,/g.,/g.g.,/a]B2`1`1`1Z3a]a]e.a],/,/`1`3C3g.{&g.g. 4.4+4^.z<}>7:@4#4$4%4&4*4=4-4C<;4>4z((]/]/],4'4)4!4~4R3{4{4h>]4^4/4(4_42~U^,_><)_)_)_", +"e+!@<#f@P@)#j+D@H+k+-#-#i#P@H#9|9|9|:4<4[4}4|4142434^+>+]+7@T@8#)@ #W+h@9|9|9|D@Q.Z@V+w+Q.t+9|9|0|44z:u/g.g.u/^H2%29404a4k{4p4V2F,q4_4r4s4t4b}D{j[)_)_", +"H+_#H+-#)@M+R@=+R+(@O@h+h#,@k+9|9|9|i@S.Y+:#X+{+P.s+M./@l+*+n+&+'+;+[@r+9|9|9|(+s#M.:#V+_+M.9|9|9|S*u4a]g.g.a]g.^+'+k@n+k@k+Y+'+n+k+j#k+ #B@ #6@)@9|9|9|!+Z+j@Z+k@t#t#9|9|9|m+X4{&u/,/u/,/g.g.Y4`1`1g.,/g.,/g.g. 2`1`1 2g.a],/a]P P P P a]`1`1`1g.^.{&g.Z452E2g.e.g.R `4 5.58:g;3'+5@5#5$5%5&5*5=5~[-5b/;5>5,5'5)5d1S>V2V2]4!5~5{5]5r4r4^5z]y[", +"6@9@_#H+8#H+N@g@;#H#N@`@e+;#U+9|9|9|H#X+`@g@j+H#)+!+(+V+h@h+i#j+R@i#f@;+9|9|9|)+o@:#,+M.`@V+/59|9|S.8&)&i{a]a]P g.g.(5_5C2,/g.g.,/g.A2`1`1 2e.P g.a]P u/e.e.a]P `1`1`1g.e.g.,/:5<5;3g.g.{&].[5}5F3i{ &|515253545556575859505a5b5c5d5e5f55{N~S>''S>g5h5i52!3!j5k5l5l5", +"g#K+{@Q+Y@<#H#g#;#O@&+/@g#,@8#9|9|9|/@j@M.G@Q.8#l+X%V+H@N.~+8#V+S.!+V+T@9|9|9|S.t+t+q+)$G@x+m59|9|n5v+Y&<-o5a]g.g.*3p5q5B1g.P ,/u/A2`1`1`1A2g.,/,/P g.,/g.P ,(u/`1`1`1e.g.g.P 93r5<5e.g.g.^.s5t5u5[>A>K*v5w5x5y5z5A5B5C5D5E5F5G5H5I5J5K5F{L5R!N~P1M5N5O5P5P5Q5R5S5T5", +"9@N+0@'#!@6@~+*+j+]+I+)+'@<#N+0|0|9|)@h@n@:@Y+(@`@^+n+j@j+>+_#7@)@g@f+h@9|9|9|(+[@B#`@(+`@(+W19|9|U5_+r+q$9#V5,/g.W5X5Y5Z5u/,/g.,(`1`1`142g.,/P g.a]g.g.e.,/u/,/`1`1`1,/g.a]g.`5-3 6,/P g.^..6@272v-v-}>+6H292@6#6^}$6%6&6*6=6-6;6>6,6'60/F{L57~N~)6!6~6{6]6^6/66)(6", +",@L+E@c@P+Q@i#K+g#c@y@:@j#_@0@0|0|9|O@Y@H#g@,+R@8#r+[@V%X+,+!#W+>+)@8#h@9|9|9|(+t#n@m@N.Z@o+:#_69|9|:6'+o++#N$z_<6w2[6}6P g.,/P =3`1`1B1e.e.g.a]P ,/g.,/,/,/a]a]`1`1`1,/a]a]a]6483-3,/g.g.g.E2.6|6v-}>*;1626G23646566676869606a6b6c6d6e6f6g6h6b/6{a1i6j6k6l6m6n6O5o6", +"d@S+H+;#-#f+;#W+i#j+0@l@Q@X+)+0|0|0|!@`@/@]+o@!#'+Y+Z+x+O. #/@[@O.l@h@n@9|9|9|Q.t+'+'$9#~+o+{+p69|9|9|q6Y&_+L%r6H|s6&3t6,/g.O =3`1`1`1B1C2C2B1C2C2C2C2B1C242a],/`1`1`1a]g.a]a]`1B3C3P ,/g.,/;3u6v6].v-}>j=w6x6y6z6A6B6C6D6E6F6G6H6I6J6K6L6M6M6a5O3^4a1N6O6P6Q6R6S6T6", +"'@D@_@H#^@)#N.8@)+C@)#:#&+{@<@H|0|0|R@8#(@l@V+g@Z@!+Z@Q.V+,+A@P@X+g+P+~@9|9|9|/@8#:#~+{+~+,+:#j@U69|9|9|9|9|9|0|0|H|V6g.g.^.e.W6`1`1`1`1`1`1`1`1`1`1`1`1`1B1g.g.`1`1`1,(g.a]u/`1`1.2e.,/^.g.X6v452, ].v-i*Y6u5i|Z6`6 7.7+7@7#7$7%7&7*7=7L6-7;7M6a5)5>7,7'7)7!7~7P5n6", +"!#R@'@ #)@0@X+)@<@~@6@Y@T+&+A@w30|0|)#R@=+D@n+h#k@j@h@o+:#s+g+<@h@h#Z@[#9|9|9|`@'+[@T@V+S.9#,+w+G@{7]79|9|9|9|0|^7/7!&9#i{].P (7`1`1`1`1`1`1`1`1`1`1`1`1`1B1g.g.`1`1`1a],/a]P `1`1`1u/P g.g._7:7:7].]., }>}><7[7}7|717273747d&5767H67787t:i)9707a7a5)5M~M~b7c7d7e7e7", +"P@F@H+!@>@7@-#Q@C@D@'@Z@)#:#!@O@X+,@U+:#U+/+j@h#r+Z@l+x+[@^+g@'+k@l+Z+V+^@o@h#;+[@n@v+T@^+x+i@)$!+S.m+s#f7&1g7H@T@8&V%W%R=W(e.g.{&, ,/g.{&^.g.,/,/g.^.^.].^.{&g.g.g.e.g.P P ,/g.e.a]P ,/g.^.^.g.^., , ^., }>%;i{()h7i7O@f@d@h+/@T+^@)+)+P.`+l@T@n+t#M.>+t#T+k@_#y@D@i#i@^@,@i@]@(@{+(+:@M.)+.#(+n+Q.T@m@M.Y+N$S@Y+u+9#L%)$u7e.].{&].^., ].g.e.g.e.g.,/'(g.g.g.g.g.g.g.P g.g.g.P ,(,/g.g.g.{&{&].) , ; , R %;r!r!v7w7J*x7C'y7z7A7B7a=C7D7u:D7u:E7C*F70/o7G7H7I7J7K7", +"^@g+ #_@9@X+P@U+8#)#0@f@H+)@E@F@;+d@g+O@]@!@:@Y@,+H#/+Y&(+!+k#!#m@<# #W+P+V+e+X+<@^@(+]+`+S@i@n@~+:#(+!+Y+n+`+x+`+w+V+Y++#X&8&L7Q ^.].{&g.g.,/e.g.g.g.g.^.t.].{&g.g.g.g.g.g.g.e.,/,/g.P ,/,/g.^.g.].].]., , R 9]M7N78]I@O7P7*/Q7R7S7T7U7L[L[/_V7u:W7X7Y7g6f5Z7P6`7 8", +")@O+P@;#;@h#P@K+8#h#_@:#T+]+8@~@Y@E@F@g@B#k@l@l@l+/@n+9#/@w+h+!+{@B#V+8#l@V+E@m@S.8#Y+9#G@o+T@m+(+v+Q.O.p+H@q$&%w+P%o+H@I#8&(=R=.8O ].g.) {&g.e.g.,/g.g.^.{&^.].g.g.g.,/g.g.P ,/g.g.g.g.^.P ^.) v%^.].]., , ( Z#x^r!r!&{+8@8#8$8%8&8d<*8=8-8=);8>8,8'8$={{)8!8~8{8]8", +"I+7@Q+f@l#Y@'@_@/@M+9@:@_#k+^@f@N+P+k+k+;+S.Z@i@{+/+w+Y+n@m+7@O.=+Y@8#_@)@]@O+>+,@9@(+h@V+!+O@r+E@k@S.k+^+l@n+O.S@9#V+`+v+M.H@p+v+r+v%].].) g.v%g.e.g.].g.{&{&g.].].g.g.g.g.,/g.e.g.g.,/g.g.,/^.^.g.; , , , R u-u-|%^8M7/8(8_8h=:8<8[8}8|8==k)18E=[:28B*-738f648l6Q6", +"Y@S+R+8#H+>+N@[#Z@i@_@E@Q@=+R$)+)@<#[#=+g#n@D@B#H#i@r+`+)+/@e+X+O@Y@H#N.]+k+^@S@-+^@t#D@V+O.~@Z+g@l@D@,+^+D@T@s#Z@u+O.r+'$G@)$v+<-x+58[*^.].^.{&d.d.^.^.].^.^.{&].].g.g.g.g.g.{&^.].{&, ].^.v%^.g., , ].{ R ( u-n~>/68^8^878889808a8b8R{c8d8#(e8f8(_g8,897h8i8j8k8l8"}; diff --git a/src/images/CVS/Entries b/src/images/CVS/Entries new file mode 100644 index 0000000..274e541 --- /dev/null +++ b/src/images/CVS/Entries @@ -0,0 +1,4 @@ +/BigProZilla01.xpm/1.1/Fri Jul 20 11:05:31 2001// +/Pz12.xpm/1.1/Thu Aug 2 08:15:15 2001// +/Pzdlwin.xpm/1.1/Thu Aug 2 09:38:39 2001// +D diff --git a/src/images/CVS/Repository b/src/images/CVS/Repository new file mode 100644 index 0000000..9eb734b --- /dev/null +++ b/src/images/CVS/Repository @@ -0,0 +1 @@ +fltkproz/src/images diff --git a/src/images/CVS/Root b/src/images/CVS/Root new file mode 100644 index 0000000..0e741fc --- /dev/null +++ b/src/images/CVS/Root @@ -0,0 +1 @@ +:pserver:kalum@cvs.delrom.ro:/home/cvsroot diff --git a/src/images/Pz12.xpm b/src/images/Pz12.xpm new file mode 100644 index 0000000..0fee1e3 --- /dev/null +++ b/src/images/Pz12.xpm @@ -0,0 +1,225 @@ +/* XPM */ +static char * Pz12_xpm[] = { +"48 48 174 2", +" c None", +". c #D6D6CE", +"+ c #6B6B6B", +"@ c #292929", +"# c #212121", +"$ c #181818", +"% c #393939", +"& c #313131", +"* c #424242", +"= c #636363", +"- c #4A4A4A", +"; c #525252", +"> c #5A5A5A", +", c #737373", +"' c #848484", +") c #8C8C8C", +"! c #8C8C84", +"~ c #C6C6C6", +"{ c #000000", +"] c #7B7B7B", +"^ c #8C948C", +"/ c #182118", +"( c #94948C", +"_ c #9C9C9C", +": c #A5A5A5", +"< c #949494", +"[ c #4A4242", +"} c #5A5252", +"| c #6B6363", +"1 c #423131", +"2 c #6B3921", +"3 c #9C7B63", +"4 c #8C7363", +"5 c #634239", +"6 c #4A3129", +"7 c #B5B5B5", +"8 c #6B5A52", +"9 c #945A4A", +"0 c #A5735A", +"a c #BD9C84", +"b c #BDA584", +"c c #947B73", +"d c #C6BDBD", +"e c #5A3931", +"f c #5A4242", +"g c #423939", +"h c #6B4A42", +"i c #BD7B5A", +"j c #BD9C7B", +"k c #BDA58C", +"l c #7B6B5A", +"m c #7B6352", +"n c #9C8C7B", +"o c #948473", +"p c #4A2118", +"q c #635242", +"r c #392929", +"s c #9C6342", +"t c #CEA584", +"u c #AD947B", +"v c #6B5242", +"w c #291810", +"x c #423121", +"y c #846B52", +"z c #6B5239", +"A c #290000", +"B c #524A42", +"C c #735A42", +"D c #523929", +"E c #5A4239", +"F c #7B634A", +"G c #CEA58C", +"H c #C69473", +"I c #734221", +"J c #391000", +"K c #393129", +"L c #7B5A52", +"M c #7B5242", +"N c #8C6352", +"O c #846352", +"P c #A5846B", +"Q c #DEAD9C", +"R c #C68C7B", +"S c #A56352", +"T c #8C5239", +"U c #524239", +"V c #84635A", +"W c #946B5A", +"X c #845242", +"Y c #734A39", +"Z c #292921", +"` c #312929", +" . c #ADADAD", +".. c #B5B5AD", +"+. c #C6CECE", +"@. c #CEDEDE", +"#. c #BDC6C6", +"$. c #ADB5B5", +"%. c #C6C6BD", +"&. c #CECEC6", +"*. c #D6DED6", +"=. c #A5ADA5", +"-. c #BDCECE", +";. c #DEF7F7", +">. c #9CA59C", +",. c #BDBDB5", +"'. c #DEDECE", +"). c #DEDED6", +"!. c #C6CEC6", +"~. c #D6E7DE", +"{. c #BDCEC6", +"]. c #D6EFEF", +"^. c #C6D6D6", +"/. c #BDBDBD", +"(. c #D6D6C6", +"_. c #E7E7CE", +":. c #E7E7D6", +"<. c #E7EFDE", +"[. c #E7E7DE", +"}. c #D6DECE", +"|. c #CED6CE", +"1. c #BDC6B5", +"2. c #C6DEDE", +"3. c #ADBDB5", +"4. c #9CADA5", +"5. c #E7EFD6", +"6. c #EFEFE7", +"7. c #E7EFE7", +"8. c #ADADA5", +"9. c #D6F7F7", +"0. c #CEE7E7", +"a. c #DEEFD6", +"b. c #EFF7E7", +"c. c #A5ADAD", +"d. c #B5BDBD", +"e. c #DEE7D6", +"f. c #E7F7DE", +"g. c #E7F7E7", +"h. c #F7F7E7", +"i. c #B5BDB5", +"j. c #DEEFE7", +"k. c #DEE7DE", +"l. c #DEEFDE", +"m. c #EFEFDE", +"n. c #D6D6D6", +"o. c #CECECE", +"p. c #BDC6BD", +"q. c #D6E7D6", +"r. c #E7E7E7", +"s. c #DEDEDE", +"t. c #CED6D6", +"u. c #949C94", +"v. c #CEDECE", +"w. c #EFEFEF", +"x. c #C6D6CE", +"y. c #F7F7EF", +"z. c #F7F7F7", +"A. c #F7526B", +"B. c #F74263", +"C. c #EFFFE7", +"D. c #F75263", +"E. c #FFFFF7", +"F. c #F7FFF7", +"G. c #DEEFEF", +"H. c #F7FFEF", +"I. c #F74A63", +"J. c #EFF7EF", +"K. c #FFFFEF", +"L. c #E7F7F7", +"M. c #D6E7E7", +"N. c #DEF7EF", +"O. c #EFFFF7", +"P. c #9C9C94", +"Q. c #73736B", +" . + @ # $ $ $ @ % $ @ & & # % * * = % - ; > * % ; > , + + ' ) ) ! ", +" ~ % $ $ $ { { $ & % $ $ @ * # * % & - & - & ; & & * $ ; * > , ] ) ' ^ ", +" ~ / { $ $ $ { { $ $ - $ & % * % * % & * & ; - & % & - + % * > - + , ] ) ( ", +" ~ { { { $ @ { $ $ $ $ * $ $ * & & - > - * & * & > % - - > - @ * = % = + ' ) ", +"~ $ { { $ $ $ $ { # % # @ @ % - % % % * - & - > > = $ & - * = @ % > > % ; , _ : ", +"$ { { { $ $ $ $ $ # & & # # & > % - * - * ; % * * ; ; * > - % % ; ; * @ * + ) ) ", +"$ $ $ { { $ & @ $ $ & $ @ % * % % - * > ; % % ; - ; # * % % @ $ $ $ % + , , ) ' ~ ", +"$ $ $ $ $ $ # $ # @ * $ & $ ; - - % - % ; * % ; - , & & * * = ; + , ] ' < ' < ] ' < ", +"{ $ $ { $ # $ $ $ @ * $ @ & = & * & - % - % - > @ > @ * + + , [ } | > ; = + < ' ) = , ) ", +"$ $ $ $ $ @ $ { $ - @ $ & @ - - & @ @ $ $ $ $ * % > & = ' > 1 2 3 4 5 6 1 % - ' ' ' , - , 7 ", +"$ $ { { # $ & $ $ # @ @ & & % - @ & & - > @ $ - @ ; & ; 8 9 0 a b 4 c d e f g = ' ) ) ] , ] = ) ", +"$ @ $ $ @ & * @ @ $ # @ * * % % % @ % & & & % ; $ = % % h i j k l m n o p e q r ] ) ) ' ) ) ' + ", +"& & $ $ @ * @ & @ & & % * - - * * & > > * % - = - , % [ 6 s t u 4 v w x v y z A B > ) ] ) ' ] ] ", +"& @ { { & $ $ $ & % % * & ; ; > > - - = - - - = * * * ; @ 1 9 3 C D E F 3 G H I J K % * = > ] ", +"% # $ { @ @ $ & & * $ $ % - ; - - - = + ; - - = > , ; + = & 1 L M N O P Q R S T 8 U % @ * + ", +"@ $ $ $ @ # # @ & @ * @ % - = > * ; ; - ; - - > * - * = ; & @ $ & E V W N X Y Z % > * ; , ] + ", +"$ $ $ $ @ # & $ & @ - * = ; - ; * ; = - - % > + & - * ; = - * % @ $ $ & @ ` @ @ > @ * * - + > > ", +"$ $ $ $ & @ & # $ # & % % > - ; % > - + % - = = % + * > ; - > - - - % @ * * * % ; > * > + = > > ", +"$ $ $ $ % $ @ % $ % @ @ @ & @ > & - > + * % > + - > - + = ; > - > ; > * > + - > + ; = - + = ; = ", +"$ { # $ $ % # # $ $ # @ * * - - ; > + = > > = - * > & ; = % ; - = % = % * - * ; = * > * ; - & * ", +"@ $ @ & % @ > & & @ @ - * * - % % % - + ; ; + , + ; > = = > = = , > + = , - % > = = ; * , = * @ ", +"$ $ $ $ @ # % # $ @ # $ - > = ; & & ; ] ' ' < ) ] ) ] < ) ] ' , ' = ; * + = - > > % ; ; ; = % * ", +"& % & @ & & * $ $ & @ % @ > ; * & ; = , ] ' _ ._ _ : : : _ _ ) ) ' ] ] + = - = = * - * = = % - ", +"& $ & @ & & @ & @ @ @ # - > > > & ; + ] ' ( _ : ..+.~ +.@.#. .$.7 : _ : : ) ' > + - ; > ; = > + ", +"& % $ & @ $ * # $ $ % @ % > * * = - ] ' _ _ : ..%.&.. . *.7 =.-.;.-.>. .$.: .< ' = * = % % - ; ", +"$ @ # % % & @ & { @ @ * % - - ; > = + < ...,.%.&.'.).).*.&.%.!.~.=.( {.].^./.7 7 _ < _ ] = , - ", +"{ $ $ @ & * & # $ $ % * * * * = - = , < +.~ (.'.'._.:.:.<.[.).}.|.1.=.#.2.3.4.: +./. . .' > = + ", +"{ & & % & % & $ & * # * ; % - > ; = ] < #.!.&.'._._._.5.<.6.7.<.[.}.1.8.( ! ! 4.9.0.#./.7 _ ' , ", +"$ @ @ & % % @ $ & # * ; % > - ; ; - + ) : 7 %.(.:.:._.a.<.7.b.b.6.[.}.%...>.( 4.9.].c.>.+.d.7 < ", +"$ - * & * * $ @ @ # @ - % % * , = % > ] _ 7 %.|.e.:.5.a.a.f.g.b.h.6.[.. ~ i. .$.-._ ! c.9.0.+.: ", +"@ % * & * - $ @ & & - - = * @ * * - > + ) .!.j.*.k.<.l.l.l.f.f.b.b.m.[.n.o.~ p.,...: $.].c.: 7 ", +"% % # & @ % $ # $ $ & & & @ & = % * ; ] ] < : p.|.*.e.k.q.l.l.<.<.g.b.6.r.s.*.n.. o.o.t./.u.u.0.", +"- - @ % * - $ $ @ $ & > & & % ; % ; > = ] ] _ 7 1.*.*.|.v.q.e.a.<.f.b.b.w.w.r.r.r.[.s.s.s.|.~ ", +"& * $ # @ % # $ # & * % % & * % # * * = ] ' ' 7 ^.;.x.p.!.|.q.a.f.g.b.b.y.z.z.z.z.w.w.w.r.s.n.j.", +"- - A.A.A.A.A.& # # # @ % # - = @ ; & - = + ] ) 7 ].{...i.B.B.a.f.B.B.b.C.B.B.z.z.z.z.z.w.r.n.&.", +"% % A.A.A.A.D.D.& - - & * * ; - - = > > = + ) ) _ +.d.=...B.B.e.<.B.B.g.b.B.B.E.E.F.z.z.z.w.r.n.", +"& @ A.A.& - D.D.D.& * @ & - - & ; * % - * - , ] ) : c.>.{.j.*.e.<.B.B.g.f.B.B.F.E.E.E.z.z.z.w.r.", +"; % A.A.- - * D.D.@ - @ % % > % @ = = * % ; ] ' ] _ /.0.;.G.&.e.<.B.B.g.f.B.B.H.F.E.E.E.E.z.z.w.", +"* & A.A.* - A.D.D.$ % D.D.D.% ; D.D.I.* % % I.B.B.B.B.7 ].B.B.).[.B.B.g.g.B.B.J.H.B.B.B.B.B.E.z.", +"* * A.A.A.A.D.D.; & D.D.D.* - D.D.I.I.I.> * I.B.B.B.B.: d.B.B.&.).B.B.b.b.B.B.b.y.B.B.B.B.B.E.E.", +"% & A.A.A.A.D.> > - D.D.$ - D.D.D.* I.I.I.- - % B.B.B.' .B.B.*.r.B.B.6.J.B.B.b.b.h.y.K.B.B.K.K.", +"@ @ A.A.- - ; ; ; > D.D.$ @ D.D.& & - I.I.> + > B.B.+ ] ' B.B.G.L.B.B.6.w.B.B.b.b.B.B.B.B.B.K.K.", +"% % A.A.& * ; > > = D.D.& $ D.D.& * % I.I.; = I.B.- + ' ] B.B.~ M.B.B.[.6.B.B.y.B.B.b.b.B.B.h.h.", +"$ $ A.A.% @ % ; - = D.D.- > D.D.D.& I.I.I.* I.I.B.% ; = + B.B._ $.B.B.k.r.B.B.z.B.B.b.b.B.B.m.h.", +"> & A.A.* = > = , ; D.D.; > > D.D.D.I.I.@ - I.B.B.B.B.+ ] B.B.< : B.B.N.O.B.B.w.B.B.B.B.B.B.m.m.", +"$ $ A.A.$ # > - = % D.D.; * @ & D.I.I.s._ # I.B.B.B.B.+ = B.B.] ' B.B.t.L.B.B.w.z.B.B.B.B.B.m.m.", +"% % % - % % > * + + * > > = % % , , ] ! # $ * - * - ; , ] ] ] : ~ ~ |.&.n.r.w.y.z.z.y.y.h.m.", +"* % * - @ - ; > % ; ; - = * & ; = ' P. Q.$ - = > - * ; , , ] _ ./.~ ~ o.[.6.w.y.z.z.z.y.m."}; diff --git a/src/images/Pzdlwin.xpm b/src/images/Pzdlwin.xpm new file mode 100644 index 0000000..492a85a --- /dev/null +++ b/src/images/Pzdlwin.xpm @@ -0,0 +1,308 @@ +/* XPM */ +static char * Pzdlwin_xpm[] = { +"48 48 257 2", +" c None", +". c #000000", +"+ c #101010", +"@ c #181818", +"# c #212121", +"$ c #290000", +"% c #292118", +"& c #292121", +"* c #292929", +"= c #312929", +"- c #313129", +"; c #313131", +"> c #391000", +", c #392929", +"' c #393931", +") c #393939", +"! c #422110", +"~ c #423121", +"{ c #423131", +"] c #423939", +"^ c #424239", +"/ c #424242", +"( c #4A3129", +"_ c #4A3929", +": c #4A4A42", +"< c #4A4A4A", +"[ c #524231", +"} c #524239", +"| c #524242", +"1 c #524A42", +"2 c #52524A", +"3 c #525252", +"4 c #5A3931", +"5 c #5A4239", +"6 c #5A5A5A", +"7 c #635242", +"8 c #63635A", +"9 c #6B5242", +"0 c #6B5A52", +"a c #734221", +"b c #734239", +"c c #8C4A39", +"d c #845239", +"e c #7B5242", +"f c #7B634A", +"g c #846352", +"h c #84635A", +"i c #84735A", +"j c #906756", +"k c #635A63", +"l c #636363", +"m c #6B6363", +"n c #6B6B63", +"o c #736363", +"p c #9C7B63", +"q c #6B636B", +"r c #6B6B6B", +"s c #73736B", +"t c #8C6B6B", +"u c #736B73", +"v c #737373", +"w c #7B7B73", +"x c #8C7B73", +"y c #948473", +"z c #7B737B", +"A c #52738C", +"B c #527394", +"C c #5A7394", +"D c #5A7B94", +"E c #637394", +"F c #637B94", +"G c #637B9C", +"H c #67849C", +"I c #738C9C", +"J c #739494", +"K c #7B7B7B", +"L c #7B8C9C", +"M c #847B84", +"N c #84847B", +"O c #848484", +"P c #848C84", +"Q c #84948C", +"R c #849494", +"S c #8C848C", +"T c #8C8C84", +"U c #8C8C8C", +"V c #8C948C", +"W c #8C9494", +"X c #94847B", +"Y c #948C8C", +"Z c #948C94", +"` c #94948C", +" . c #949494", +".. c #949C94", +"+. c #9C8C84", +"@. c #9C9494", +"#. c #9C9C94", +"$. c #738CA5", +"%. c #73A5A5", +"&. c #7B949C", +"*. c #7B94A5", +"=. c #7BA5A5", +"-. c #7BA5AD", +";. c #8494A5", +">. c #8494AD", +",. c #849CA5", +"'. c #94989C", +"). c #84A5AD", +"!. c #84ADAD", +"~. c #94A5A5", +"{. c #9C949C", +"]. c #9C9C9C", +"^. c #9CA59C", +"/. c #739CBD", +"(. c #739CC6", +"_. c #7B9CBD", +":. c #84ADB5", +"<. c #94ADAD", +"[. c #8CA9B9", +"}. c #8CB5B5", +"|. c #94B1BD", +"1. c #7B9CC6", +"2. c #7FA5C6", +"3. c #8CA5C6", +"4. c #8CADC6", +"5. c #90ADCA", +"6. c #90B3E6", +"7. c #6FADFF", +"8. c #87B5F5", +"9. c #B58168", +"0. c #F79C41", +"a. c #F7A529", +"b. c #F99457", +"c. c #FF904E", +"d. c #FF9452", +"e. c #FF8C5A", +"f. c #FF995D", +"g. c #EFAD18", +"h. c #F1A736", +"i. c #F7A54A", +"j. c #F9A560", +"k. c #E2AD73", +"l. c #F3AB6D", +"m. c #F7AD73", +"n. c #F6D275", +"o. c #A59C8C", +"p. c #A2A49F", +"q. c #D2A990", +"r. c #D3AF9C", +"s. c #E7AD7B", +"t. c #E4AF86", +"u. c #DEAF96", +"v. c #DEBD9C", +"w. c #EFAD7B", +"x. c #EFB57F", +"y. c #EBB98C", +"z. c #E7BA96", +"A. c #F7D086", +"B. c #E9C899", +"C. c #FFE67F", +"D. c #F3E094", +"E. c #A59CA5", +"F. c #A5A5A5", +"G. c #ADA5A5", +"H. c #ADA5AD", +"I. c #A5ADA5", +"J. c #ADADA5", +"K. c #A5ADAD", +"L. c #ADADAD", +"M. c #A5B5A5", +"N. c #A5B5AD", +"O. c #9CB5B5", +"P. c #A0B9B9", +"Q. c #ADB5AD", +"R. c #ADB5B5", +"S. c #ADBDB5", +"T. c #B5ADB5", +"U. c #B5B5AD", +"V. c #B5B5B5", +"W. c #BDADB9", +"X. c #BDB5BD", +"Y. c #B5BDB5", +"Z. c #B9C1B1", +"`. c #BDBDB5", +" + c #BDBDBD", +".+ c #CBAFAA", +"++ c #C6B5B5", +"@+ c #D0B7AF", +"#+ c #D8BBA9", +"$+ c #BDC6BD", +"%+ c #D8CAAF", +"&+ c #E4D0A7", +"*+ c #E1DBAD", +"=+ c #9CB5C6", +"-+ c #9CBDC8", +";+ c #B2AFCB", +">+ c #ADC1CA", +",+ c #A5ADD6", +"'+ c #9FB2E1", +")+ c #A5C1E7", +"!+ c #AFBDDA", +"~+ c #BDB9C6", +"{+ c #C6BDBD", +"]+ c #C6BDC6", +"^+ c #BDC6C6", +"/+ c #BDBDCE", +"(+ c #BDC6CE", +"_+ c #B5C6D6", +":+ c #B5C6DE", +"<+ c #9CCED6", +"[+ c #9CD6DE", +"}+ c #A5D6DE", +"|+ c #A5D6E7", +"1+ c #A5DEDE", +"2+ c #A5DEE7", +"3+ c #ADCEDE", +"4+ c #ADDEDE", +"5+ c #B5CECE", +"6+ c #BDCECE", +"7+ c #B5CED6", +"8+ c #B5D6D6", +"9+ c #ADDEE7", +"0+ c #BDCED6", +"a+ c #B5CEDE", +"b+ c #B9DEE2", +"c+ c #C6C6BD", +"d+ c #C6C6C6", +"e+ c #C6CEC1", +"f+ c #CECABD", +"g+ c #C6C6CE", +"h+ c #C6CECE", +"i+ c #CECACA", +"j+ c #CECECE", +"k+ c #CAD6CA", +"l+ c #CED6CE", +"m+ c #CEDEC6", +"n+ c #C6D6D6", +"o+ c #D6D3C5", +"p+ c #D6D6CE", +"q+ c #D6E7BD", +"r+ c #E1E6C8", +"s+ c #CEDEDE", +"t+ c #D6D6D6", +"u+ c #D6E2D6", +"v+ c #DEE1D8", +"w+ c #C6E7DE", +"x+ c #D4E9E6", +"y+ c #DEE7DE", +"z+ c #DBF1E9", +"A+ c #E7E7D6", +"B+ c #E7E7DE", +"C+ c #E7EFD6", +"D+ c #E7F3DE", +"E+ c #E7EBE7", +"F+ c #EFEFE2", +"G+ c #DEF9F7", +"H+ c #F3F7E7", +"T T T T P 6 # # @ @ @ * ) @ * ; ; # ) / / l ) q r r / ) 3 6 v r r O U U T T T T T T T T T T T U ", +"T T e.e.e.e.f.@ . . @ * ) @ @ # ) # ) ) * q l Z U .l k / n.n./ 6 C.C.U O C.C.T T T T T T T T T ", +"T T e.e.e.b.f.f.. . @ @ < @ ; ) / ) / ) l Z L ;.Z U Z U q A.A./ 6 A.C.v K D.C.T T T T U T T T T ", +"T 8 c.d.. @ f.f.j.@ @ @ / @ @ ) ; * / 6 q Z l l L ,.Z .Z .q k / D.D.l r D.D.P U T T T T T T T ", +"s @ c.d.@ @ @ j.j.# ) # # # ) < ) ) ) / q U ; r r u I L Z Z {.U l B.&+) < &+*+l T T T T T T T T ", +"@ . c.d.@ @ j.j.j.# * l.l.m.; 6 x.x.x.< l .y.y.z.B.B.l ;.B.B.l ) &+&+# / *+*+K K *+*+q+q+q+T T ", +"@ @ 0.0.i.b.j.j.@ @ l.l.l.) ) s.x.t.t.y.q Z z.z.v.v.v.l Z v.%+k . %+%+r v %+f+O K o+m+m+m+m+T T ", +"@ @ 0.0.i.i.j.@ # * l.l.* @ s.t.t.) t.z.z.Z l ;.v.v.#+l Z #+%+r < f+f+O .f+e+K K l O T h+6+T T ", +". @ h.0.@ # @ @ @ * k.k.* ; t.t.) ; / u.u.Z ) r #+#+E l ].@+{+m ] c+c+3 l ^+(+O U (+_+7+7+a+T T ", +"@ @ h.h.@ # @ . @ < k.s.; * t.t.; # # r.r.U k @+@+H L u E.{+{+o 9 ~+/+( { _+_+O !+!+v < )+)+N P ", +"@ @ a.h.# @ * @ @ # k.k.; * t.u.u.; r.r.r.U .+.+++F L r @.~+~++.i ;+!+{+4 !+!+l )+)+U K 6.6.l r ", +"@ # g.h.# ; ) # # @ k.k./ ) ) q.r.r.r..+@ l .+++W.W.X.l @.;+;++.1 ,+,+y ! '+'+, 6.6.8.8.8.8.O r ", +"; * g.h.# / * * # * k.k./ < < ) r.r..+6 / * W.W.W.W.;+q Y ;+,+X 7 '+'+~ 9 6.6.$ | 8.8.7.7.7.K K ", +"; # . . * @ @ @ * ) ) / ; < 3 6 6 < < l < < < / ; l J ;.U Y t x [ _ 5 f p q.9.a > , ) / l 6 K N ", +") # @ . * * @ ; * / @ @ ) / 3 < < < l r < < < l 6 3 ) v u l % 5 e j g y r.9.j c 0 } ) * / r N T ", +"* @ @ @ * # # # ; * / # ) < l 6 / < < < < < < 6 / / / / ) # # @ - 5 h j j d b & ) 6 / < v K r O ", +"@ @ @ @ # # * @ * # < / l < < 3 / < l < / ) 6 r ; < / < u ) ) ) # @ @ = * * # # 6 * ) / / r 6 6 ", +"@ @ @ @ * # * # @ # ; ) ) 6 < 3 ) 6 < r ) < 6 l ) r / 6 r ) 6 < / < ) * ) ) ) ) < 6 / 6 r l 6 6 ", +"@ @ @ @ ) @ * ) @ ) # # * * # 6 ; < 6 r / ) 6 r / 6 < r v ) 6 < 6 3 6 / 6 r < 6 r 3 l < r l 3 l ", +"@ . # @ @ ) # # @ @ # # / / / < < 6 r l 6 6 l < ) 6 ; 3 u * < < l ) l ) / < / < l ) 6 / 3 < * ) ", +"# @ # ; ) # 6 * ; k k q q l q l l l q v r r v z v r r :.H F v u z r v v z q l u v u r l v l / * ", +"@ @ @ @ # # ) # k @ @ . ) / / ) # # ) 6 6 6 r l 6 l 3 |.|.$.6 3 6 / ) ; < / ) / / * ) ) q l ) / ", +"; ) * * ; ; / @ k # * ) * 6 3 / ; 3 l v K O ].L.].].F.v v r r U U O K K r 6 / l l / < l / l ) < ", +"; @ * # ; * * ; k @ * # / 6 6 6 * 3 r K O ` ].F.U.h+d+h+s+^+L.R.V.F.].F.F.U O 6 r < 3 r ) 6 6 r ", +"* ) @ ; * @ / # k . ) * ) 6 / / l < K O #.].F.U.c+i+p+p+t+V.I.6+G+6+p.L.R.F.L. .O l / u * ) < 3 ", +"@ # # ) ) * # ; k @ # ) ) < / < 6 l r .Q.U.`.c+o+p+v+v+u+j+c+e+s+I.` ^+z+n+ +V.V.]. .U 6 l v < ", +". k k =.=.-.l k k . ) ) ) / / v q !.}.-+K.F.J.U.U.U.U.`.w+w+b+Q.J.p. .F.N.'.-+-+7+]. . .l 6 l r ", +". @ # C =.C # . # * # / 3 ) < / ) H }.>.U V ` #.^.#.^.p.5+w+_+I.p.#.T w n l *.-+3+~.Q O O ].O v ", +"@ # * ; l * @ @ ; # / < ) 6 < 3 3 < v l K V.c+p+A+A+r+C+D+`.J.J.F+B+p+c+U.^.` W O.<.K.^.h+V.V. .", +"@ / / * l ; @ * # # * < ) ) / v 6 ) u 6 ].V.c+l+v+A+C+C+C+Y.I.H+H+F+B+p+d+Y.L.'.Q ..T K.G+x+d+F.", +"* ) / ; l ; @ # * ; < / l / # / / < r < U L.d+y+u+y+B+y+y+Y.I.D+F+H+F+B+t+j+d+].K U.F.R.x+K.F.V.", +") ) # * k * @ # @ @ * * * * * 6 ) / q 6 K .F.$+k+u+y+y+u+Y.p.D+D+D+F+F+E+v+v+F.O j+j+t+ +....w+", +"Z Z U Z Z Z U U U U ; 6 ; U Z .Z . .{.E.E.L.V.$+u+d+d+d+h+j+j+j+j+l+j+j+i+i+d+d+d+d+d+d+j+d+G+", +"U l k k k l k k k U l ) ) U l l k l q v K K F.].n+G+d+p.F.I.J.J.J.J.I.i+].].{. . . . .{.d+{.t+z+", +"Z q =.-.-.-.=.=.%.U %.k ) U q :.%.).=.-.!.:.E.|.].z+ +'.|.|.=+=+=+=+4+d+4+U 4+}+1.1.2.2.]+4+ .i+", +"Z l %.=.-.).=.=.=.Z ; # ; Z r -.-.!.).).!.:.H.l v W +Y [.[.|.5.4.3.4+]+/ ^ ' }+/././.1.]+< 3 l ", +"U k k k k -.=.k k l -.U # Z q l q l =.).l q K }.F.v V.U 4.5.3.3.2.2.O O }+ +& M /././././.1.]+3 ", +" .l -.).).).-.).%.%.-.U * Z r =.=.!.:.-.-.).}.|.E.r +F.5.4.2.2.1.1.}+}+}+X.@ [+/./././././.]+: ", +"Z k k l -.q q r -.k l U @ Z l q k =.r q l -.l v E.< T.U 4.2._._././.}+M M X.@ [+/./././././. +) ", +"Z l =.=.-.-.).!.).=.%.U . Z q =.-.).).).!.-.).).E.< L.O _._._./././.[+[+[+X.@ [+/./././././.X.- ", +"Z C C C F C C r r q k U . Z k %.k q A F F F F F {.) T.K <+M M M }+M M M M X.@ M M [+M K M M X.& ", +"U A C C F F F ).).).%.U . U r %.=.=.F C C H H H {.@ T.K <+[+[+}+}+[+[+[+[+X.@ [+[+[+[+[+[+[+X.& ", +"Z C C F C C F ).u :.l U # U k k l l C C C F H G E.* T.K K M M [+M [+M [+M X.@ M [+M [+M [+M X.* ", +"U A C C C C C ).).!.).Z ; .k %.=.=.A A F C F H E.# L.z <+[+[+[+[+[+[+[+[+X.@ [+[+[+[+[+[+[+X.& ", +"{.C F F C H F !.z ).v {.) .r l u -.F A A F F G E.; T.z K K [+K M [+M [+M X.@ [+M M [+M [+M +- ", +"U A C C A A H -.!.=.-. .) Z k =.:.).I *.F A C D ].* H.z <+<+[+[+[+[+[+[+}+ +# }+}+}+}+}+}+}+{+^ ", +"Z Z Z .Z Z .Z {.].Z {./ {.Z Z ].].p.F.F.{.U Z {.* F.H.T.T.X.X.X.X.X.X.X.X.; + +]+]+]+]+]+]+2 ", +"; * ; ; @ ; ) / * ) ) ; / ; # ) / 6 r l l l / . ; / ; * # * ; ; * ; ) / / / / : < < 2 3 3 6 l n "}; diff --git a/src/images/pause.xpm b/src/images/pause.xpm new file mode 100644 index 0000000..5adb381 --- /dev/null +++ b/src/images/pause.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char * pause_xpm[] = { +"34 17 5 1", +" c None", +". c #EEF2EE", +"+ c #CDCECD", +"@ c #626562", +"# c #000000", +".++++++++++++++++++++++++++++++++@", +".++++++++++++++++++++++++++++++++@", +".++++++++++++##+++##+++++++++++++@", +".++++++++++++##+++##+++++++++++++@", +".++++++++++++##+++##+++++++++++++@", +".++++++++++++##+++##+++++++++++++@", +".++++++++++++##+++##+++++++++++++@", +".++++++++++++##+++##+++++++++++++@", +".++++++++++++##+++##+++++++++++++@", +".++++++++++++##+++##+++++++++++++@", +".++++++++++++##+++##+++++++++++++@", +".++++++++++++##+++##+++++++++++++@", +".++++++++++++##+++##+++++++++++++@", +".++++++++++++##+++##+++++++++++++@", +".++++++++++++##+++##+++++++++++++@", +".++++++++++++++++++++++++++++++++@", +".++++++++++++++++++++++++++++++++@"}; diff --git a/src/images/play.xpm b/src/images/play.xpm new file mode 100644 index 0000000..3e7b528 --- /dev/null +++ b/src/images/play.xpm @@ -0,0 +1,27 @@ +/* XPM */ +static char * play_xpm[] = { +"44 20 4 1", +" c None", +". c #EEF2EE", +"+ c #CDCECD", +"@ c #000000", +"............................................", +".+++++++++++++++++++++++++++++++++++++++++++", +".+++++++++++++++++++++++++++++++++++++++++++", +".+++++++++++++++++++++++++++++++++++++++++++", +".+++++++++++++++++++@@@+++++++++++++++++++++", +".+++++++++++++++++++@@@@++++++++++++++++++++", +".+++++++++++++++++++@@@@@+++++++++++++++++++", +".+++++++++++++++++++@@+@@@++++++++++++++++++", +".+++++++++++++++++++@@++@@@+++++++++++++++++", +".+++++++++++++++++++@@+++@@@++++++++++++++++", +".+++++++++++++++++++@@++++@@@+++++++++++++++", +".+++++++++++++++++++@@+++@@@++++++++++++++++", +".+++++++++++++++++++@@++@@@+++++++++++++++++", +".+++++++++++++++++++@@+@@@++++++++++++++++++", +".+++++++++++++++++++@@@@@+++++++++++++++++++", +".+++++++++++++++++++@@@@++++++++++++++++++++", +".+++++++++++++++++++@@@+++++++++++++++++++++", +".+++++++++++++++++++++++++++++++++++++++++++", +".+++++++++++++++++++++++++++++++++++++++++++", +".+++++++++++++++++++++++++++++++++++++++++++"}; diff --git a/src/init.cpp b/src/init.cpp new file mode 100644 index 0000000..5e2bfc0 --- /dev/null +++ b/src/init.cpp @@ -0,0 +1,179 @@ +/****************************************************************************** + fltk prozilla - a front end for prozilla, a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +#ifdef HAVE_CONFIG_H +# include +#endif /* + * HAVE_CONFIG_H + */ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "prozilla.h" +#include "main.h" +#include "init.h" +#include "options.h" + + + +extern struct runtime rt; + +/* Sets the default config */ +void set_defaults(int *argc, char ***argv) +{ + + struct stat st; + char cwd[PATH_MAX]; + /* + * Zero the structure which holds the config data + */ + memset(&rt, 0, sizeof(rt)); + + if (getcwd(cwd, sizeof(cwd)) == NULL) + { + proz_debug("Failed to get the current working directory"); + strcpy(cwd, "."); + } + + rt.home_dir = strdup(libprozrtinfo.home_dir); + + /*TODO what to do if the homedir is NULL */ + rt.config_dir = (char *) malloc(PATH_MAX); + snprintf(rt.config_dir, PATH_MAX, "%s/%s", rt.home_dir, PRZCONFDIR); + /* Make the ~/.prozilla directory if necessary */ + + if (stat(rt.config_dir, &st) == -1) + { + /*error has hapenned */ + if (errno == ENOENT) + { + /*Create the dir then */ + if (mkdir(rt.config_dir, S_IRWXU) != 0) + { + perror + ("unable to create the directory to store the config info in"); + exit(0); + } + } else + perror("Error while stating the config info directory"); + } + + /*Output the file to the directory , cwd by default */ + rt.output_dir = strdup(cwd); + rt.dl_dir = strdup(cwd); + rt.logfile_dir = strdup(rt.config_dir); + + + /* + * The default no of connections and maximum redirections allowed + */ + rt.num_connections = 4; + rt.max_redirections = 10; + /* Uses PASV by default + */ + rt.ftp_use_pasv = libprozrtinfo.ftp_use_pasv; + /* + * The force option, off by default when enabled + * cause Prozilla not to prompt the user about overwriting existent + * files etc.. + */ + rt.force_mode = FALSE; + /* + * .netrc options + */ + rt.use_netrc = TRUE; + + + /* + * The max number of trys and the delay between each + */ + rt.max_attempts = 0; /*TODO it is currently UNLIMITED */ + rt.retry_delay = 15; /* + * delay in seconds + */ + + /*Default is to not log any debug info */ + rt.debug_mode = FALSE; + rt.ftp_search = FALSE; + rt.max_simul_pings = 5; + rt.max_ping_wait = 8; + rt.ftps_mirror_req_n = 40; + + rt.max_bps_per_dl = 0; /* 0= No throttling */ + // rt.ftpsearch_url = + //nstrdup("http://download.lycos.com/swadv/AdvResults.asp"); + + rt.http_proxy = (proxy_info *) malloc(sizeof(proxy_info)); + rt.http_proxy->username = strdup(""); + rt.http_proxy->passwd = strdup(""); + rt.http_proxy->type = HTTPPROXY; + proz_parse_url("localhost:3128", &rt.http_proxy->proxy_url, 0); + rt.use_http_proxy = FALSE; + + rt.ftp_proxy = (proxy_info *) malloc(sizeof(proxy_info)); + rt.ftp_proxy->username = strdup(""); + rt.ftp_proxy->passwd = strdup(""); + rt.ftp_proxy->type = HTTPPROXY; + proz_parse_url("localhost:3128", &rt.ftp_proxy->proxy_url, 0); + rt.use_ftp_proxy = FALSE; + rt.http_no_cache = FALSE; + rt.timeout.tv_sec = 90; + rt.timeout.tv_usec = 0; + rt.use_ftpsearch=FALSE; + rt.ftpsearch_server_id = 0; + /*Set the values necessary for libprozilla */ + set_runtime_values(); +} + + + +/*This sets the runtime values to libprozilla from the runtime structure */ +void set_runtime_values() +{ + struct timeval tv; + + proz_set_connection_timeout(&rt.timeout); + tv.tv_sec = rt.retry_delay; + tv.tv_usec = 0; + proz_set_connection_retry_delay(&tv); + libprozrtinfo.ftp_use_pasv = rt.ftp_use_pasv; + libprozrtinfo.http_no_cache = rt.http_no_cache; + proz_set_output_dir(rt.output_dir); + /*FIXME */ + proz_set_download_dir(rt.output_dir); + proz_set_logfile_dir(rt.logfile_dir); + + proz_set_http_proxy(rt.http_proxy); + proz_use_http_proxy(rt.use_http_proxy); + proz_set_ftp_proxy(rt.ftp_proxy); + proz_use_ftp_proxy(rt.use_ftp_proxy); + + libprozrtinfo.max_bps_per_dl = rt.max_bps_per_dl; + +} diff --git a/src/init.h b/src/init.h new file mode 100644 index 0000000..c2874f9 --- /dev/null +++ b/src/init.h @@ -0,0 +1,27 @@ +/* Declarations for initialising runtime variables + + Copyright (C) 2000 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + + +#ifndef INIT_H +#define INIT_H + + +/*Initialises the default runtime values */ +void set_defaults(int *argc, char ***argv); +void set_runtime_values(); +#endif diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..c53e275 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,508 @@ +/****************************************************************************** + fltk prozilla - a front end for prozilla, a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ +#if HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include +#include +#include // Fl_Group header file +#include // FLTK convenience functions +#include +#include +#include +#include +#include +#include +#include + +# ifdef HAVE_LIBXPM +# include +# include "images/Pz12.xpm" +# endif + + +#include "prozilla.h" + +#include "download_win.h" +#include "main.h" +#include "init.h" +#include "we.h" +#include "options.h" +#include "prefs.h" +#include "getopt.h" +#include "savefile.h" + +struct runtime rt; +Fl_Hold_Browser *browser = 0; + + +/* structure for options parsing, + currently doesnt contain anything +*/ + +struct option long_opts[] = { + {0, 0, 0, 0} +}; + + +void open_new_dl_win(urlinfo * url_data, boolean ftpsearch); +void menu_download_start(); +void menu_download_stop(); +void menu_download_remove(); + +class Main_Window:public Fl_Window { +public: + Main_Window::Main_Window(int w, int h, const char *l); + int handle(int); + +}; + +Main_Window::Main_Window(int w, int h, const char *l):Fl_Window(w, h, l) +{ + +} + +int Main_Window::handle(int e) +{ + + if (e == FL_PASTE) + { + // printf("%s\n", Fl::event_text()); + return 1; + } + + if (Fl_Window::handle(e)) + return 1; + + return 0; +} + + + +Main_Window *window; +Fl_Window *url_input_win; + + +DL_Window **dl_wins = NULL; +int num_dl_wins = 0; + +Fl_Menu_Bar *menubar; +//Fl_Input *new_url; +//Fl_Output *t1; + + +void ms(const char *msg, void *cb_data) +{ + + DL_Window *win = (DL_Window *) cb_data; + win->browser->add(msg, 0); + if (win->browser->size() > 0) + win->browser->bottomline(win->browser->size()); + +} + + +void info_callback(void *) +{ + + int i; + +// Fl::paste(*window); + + for (i = 0; i < num_dl_wins; i++) + { + dl_wins[i]->my_cb(); + } + + Fl::repeat_timeout(0.05, info_callback, 0); +} + + + +void open_new_url() +{ + + in_url->value(""); + do_ftpsearch_button->value(rt.use_ftpsearch==TRUE?1:0); + url_input_win->show(); + /* + val = fl_input(_("Enter URL (CTRL+V to paste from clipboard)"), 0); + if (val == 0) + { + return; + // User entered a string - go find it! + // strcpy(search, val); + // find2_cb(); + // t1->value(val); + } + + err = proz_parse_url(val, url_data, 0); + if (err != URLOK) + { + fl_message(_("%s does not seem to be a valid URL"), val); + return; + } + open_new_dl_win(url_data); + + */ +} + + +void paste_new_url(char *url) +{ + +} + + +void open_new_dl_win(urlinfo * url_data, boolean ftpsearch) +{ + num_dl_wins++; + dl_wins = + (DL_Window **) realloc(dl_wins, + (sizeof(DL_Window **) * num_dl_wins)); + + dl_wins[num_dl_wins - 1] = + new DL_Window(url_data, FL_DOWN_BOX, 70, 70, ""); + + dl_wins[num_dl_wins - 1]->label(strdup(url_data->url)); + + dl_wins[num_dl_wins - 1]->show(); + + /*Search and see if DL is already in list */ + boolean in_list=FALSE; + + for (int i=0;isize();i++) + { + if(strcmp(url_data->url, browser->text(i+1))==0) + { + in_list=TRUE; + } + } + if(in_list==FALSE) + { + /*Add the URL to the browser if not already in list*/ + browser->add(url_data->url, 0); + } + + dl_wins[num_dl_wins - 1]->dl_start(4, ftpsearch); + +} + + + +void show_prefs() +{ + pref_panel_setup(); + rt.prefs_win->show(); +} + +void show_about() +{ + win_about->show(); +} + + +void quit_cb(Fl_Widget *, void *) +{ + create_savefile(browser); + exit(0); +} + + +/*Callback for the ok button that appears in the open new url dialog*/ +void cb_url_input_ok(Fl_Return_Button * button, void *data) +{ + uerr_t err; + urlinfo *url_data; + + url_data = (urlinfo *) malloc(sizeof(urlinfo)); + memset(url_data, 0, sizeof(urlinfo)); + + err = proz_parse_url(in_url->value(), url_data, 0); + if (err != URLOK) + { + fl_message(_("%s does not seem to be a valid URL"), in_url->value()); + return; + } + + /*Search and see if DL is already in list */ + + for (int i=0;isize();i++) + { + if(strcmp(url_data->url, browser->text(i+1))==0) + { + fl_message(_("%s is already in the list of downloads"), in_url->value()); + return; + } + } + + /*Search and se eif DL is already running*/ + for (int i = 0; i < num_dl_wins; i++) + { + if(strcmp( url_data->url,dl_wins[i]->u.url)==0) + { + if(dl_wins[i]->status!= DL_ABORTED && + dl_wins[i]->status!=DL_FATALERR && + dl_wins[i]->status!=DL_IDLING) + { + fl_message(_("%s is already running!"), in_url->value()); + return; + } + } + } + + if (strlen(url_data->file) == 0) + { + fl_message(_ + ("%s contains just a hostname, it does not contain a file to download!"), + url_data->url); + return; + } + + open_new_dl_win(url_data, do_ftpsearch_button->value()); + + url_input_win->hide(); + +} + +/*Callback for the cancel button that appears in the open new url dialog*/ +void cb_url_input_cancel(Fl_Button * button, void *data) +{ + url_input_win->hide(); +} + + +void cb_main_win(Fl_Window * widget, void *) +{ + quit_cb(widget, 0); +} + + + + /* kov: FIXME?: + I brought this here because it was not being affected by gettext + */ + Fl_Menu_Item menuitems[] = { + {_("&File"), FL_CTRL + 'F', 0, 0, FL_SUBMENU}, + {_("&New URL"), FL_CTRL + 'N', (Fl_Callback *) open_new_url, + (void *) 0}, + {_("&Preferences"), FL_CTRL + 'P', (Fl_Callback *) show_prefs, + (void *) 0}, + {_("&Quit"), FL_CTRL + 'q', quit_cb, (void *) 0}, + {0}, + {_("&Download"), FL_CTRL + 'D', 0, 0, FL_SUBMENU}, + {_("&Start"), FL_CTRL + 'S', (Fl_Callback *) menu_download_start, (void *) 0, FL_MENU_INACTIVE}, + {_("&Stop"), FL_CTRL + 'P', (Fl_Callback *) menu_download_stop, (void *) 0, FL_MENU_INACTIVE}, + {_("&Remove from list"), FL_CTRL + 'R', (Fl_Callback *) menu_download_remove, (void *) 0, FL_MENU_INACTIVE}, + {0}, + {_("&Help"), FL_CTRL + 'H', 0, 0, FL_SUBMENU}, + {_("&About"), FL_CTRL + 'A', (Fl_Callback *) show_about, (void *) 0}, + {0}, + {0} + }; + + +void menu_download_start() +{ + int select=browser->value(); + boolean running=FALSE; + + int i; + /*Search and se eif DL is in list */ + for ( i = 0; i < num_dl_wins; i++) + { + if(strcmp(dl_wins[i]->u.url, browser->text(select))==0) + { + if(dl_wins[i]->status!= DL_ABORTED && + dl_wins[i]->status!=DL_FATALERR && + dl_wins[i]->status!=DL_IDLING) + running=TRUE; + } + } + + if(running==TRUE) + { + /*what to do if it is in the list of already started dl's */ + return; + } + else + { + /*Ok lets start it then */ + uerr_t err; + urlinfo *url_data; + + url_data = (urlinfo *) malloc(sizeof(urlinfo)); + memset(url_data, 0, sizeof(urlinfo)); + + err = proz_parse_url(browser->text(select), url_data, 0); + if (err != URLOK) + { + fl_message(_("%s does not seem to be a valid URL"), in_url->value()); + return; + } + + if (strlen(url_data->file) == 0) + { + fl_message(_ + ("%s contains just a hostname, it does not contain a file to download!"), + url_data->url); + return; + } + + open_new_dl_win(url_data, rt.use_ftpsearch); + } +} + +void menu_download_stop() +{ + int select=browser->value(); +} + +void menu_download_remove() +{ + int select=browser->value(); + browser->remove(select); + menuitems[6].deactivate(); + menuitems[7].deactivate(); + menuitems[8].deactivate(); +} + +void browser_cb(Fl_Widget * o, void *) +{ +/* printf("callback, selection = %d, event_clicks = %d\n", + ((Fl_Browser*)o)->value(), Fl::event_clicks()); */ + /* Now to enable the menus */ + + int value=((Fl_Browser*)o)->value(); + +if(value==0) + { + /*Check and enable the menus appropriately */ + menuitems[6].deactivate(); + // menuitems[7].deactivate(); + menuitems[8].deactivate(); + } + + if(value>0) + { + /*Check and enable the menus appropriately */ + menuitems[6].activate(); + // menuitems[7].activate(); + menuitems[8].activate(); + } +} + +int main(int argc, char **argv) +{ + int c; +#ifndef FL_NORMAL_SIZE + FL_NORMAL_SIZE = 12; +#endif + + /* kov: + This function has to come before the gettext stuff + as it is making it ineffective + */ + proz_init(argc, argv); + + /* Gettext stuff */ + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + set_defaults(&argc, &argv); + load_prefs(); + set_runtime_values(); + + /*delete the ~/.prozilla/debug.log file if present at the start of each run */ + proz_debug_delete_log(); + + /*Parse options */ + while ((c = getopt_long(argc, argv, "", long_opts, NULL)) != EOF) + { + switch (c) + { + default: + printf(_("Error: Invalid option\n")); + exit(0); + } + } + + window = new Main_Window(500, 340, _("Prozilla - Download Accelerator")); + +#ifdef HAVE_LIBXPM // X11 w/Xpm library + fl_open_display(); + Pixmap pixmap, mask; // Icon pixmaps + XpmAttributes attrs; // Attributes of icon + + memset(&attrs, 0, sizeof(attrs)); + + XpmCreatePixmapFromData(fl_display, DefaultRootWindow(fl_display), + Pz12_xpm, &pixmap, &mask, &attrs); + window->icon((char *) pixmap); + +#endif + + Fl_Menu_Bar *menubar = new Fl_Menu_Bar(0, 0, 640, 30); + menubar->labelfont(FL_TIMES); + + { + //NOTE Removed the menu to place above... + + menubar->menu(menuitems); + } + + /*The browser window */ + browser = new Fl_Hold_Browser(2, 250, 495, 80); + browser->callback(browser_cb); + load_savefile(browser); + rt.prefs_win = make_prefs_win(); + win_about = make_about_win(); + window->callback((Fl_Callback *) cb_main_win, 0); + window->show(1, argv); + + url_input_win = make_url_input_win(); + + /* we will now see whether the user has specfied any urls in the command line and add them */ + for (int i = optind; i < argc; i++) + { + uerr_t err; + urlinfo *url_data; + url_data = (urlinfo *) malloc(sizeof(urlinfo)); + memset(url_data, 0, sizeof(urlinfo)); + + err = proz_parse_url(argv[i], url_data, 0); + if (err != URLOK) + { + printf(_("%s does not seem to be a valid URL"), argv[optind]); + proz_debug("%s does not seem to be a valid URL", argv[optind]); + exit(0); + } + + open_new_dl_win(url_data,rt.use_ftpsearch); + } + + Fl::add_timeout(0.4, info_callback, 0); + return Fl::run(); +} diff --git a/src/main.h b/src/main.h new file mode 100644 index 0000000..a148b7c --- /dev/null +++ b/src/main.h @@ -0,0 +1,67 @@ + +#ifndef MAIN_H +#define MAIN_H + +#include +#include +#include "prozilla.h" + +/* Gettext */ +#include +#define _(String) dgettext (PACKAGE,String) +#define gettext_noop(String) (String) +#ifndef HAVE_GNOME +#define N_(String) gettext_noop (String) +#endif +/* Gettext */ + + +/*We will have a runtime structure for this program */ + +#define PRZCONFDIR ".prozilla" + +struct runtime { + int num_connections; + int max_redirections; + /* + * whether to use the netrc file + */ + int use_netrc; + int ftp_use_pasv; + int max_attempts; + int retry_delay; /*delay in seconds */ + /* + * The timeout period for the connections + */ + struct timeval timeout; + int debug_mode; + int ftp_search; + int force_mode; + /* The maximum number of servers to ping at once */ + int max_simul_pings; + /* The max number of seconds to wait for a server response to ping */ + int max_ping_wait; + /* The maximum number of servers/mirrors to request */ + int ftps_mirror_req_n; + long max_bps_per_dl; + /* The dir to save the generated file in */ + char *output_dir; + /*The directory where the Dl'ed portions are stored */ + char *dl_dir; + char *logfile_dir; + char *home_dir; + /*The dir where the config files are stored */ + char *config_dir; + Fl_Window *prefs_win; + proxy_info *ftp_proxy; + proxy_info *http_proxy; + int use_http_proxy; + int use_ftp_proxy; + int http_no_cache; + int use_ftpsearch; + int ftpsearch_server_id; +}; + +extern struct runtime rt; + +#endif diff --git a/src/options.cpp b/src/options.cpp new file mode 100644 index 0000000..5bff542 --- /dev/null +++ b/src/options.cpp @@ -0,0 +1,259 @@ +/****************************************************************************** + fltk prozilla - a front end for prozilla, a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +#if HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include +#include "main.h" +#include "init.h" +#include "options.h" +#include "we.h" +#include "prefs.h" + +void pref_panel_setup() +{ + char buf[1000]; + // sprintf(buf, "%d", rt.num_connections); + threads_in->value((double) rt.num_connections); + + sprintf(buf, "%d", rt.retry_delay); + retry_delay_in->value(buf); + + snprintf(buf, 1000, "%d", (int) rt.timeout.tv_sec); + in_timeout->value(buf); + + in_pasv_button->value(rt.ftp_use_pasv); + in_no_cache_button->value(rt.http_no_cache); + in_outputdir->value(rt.output_dir); + + snprintf(buf, 1000, "%.2f", (float) rt.max_bps_per_dl / 1024); + in_bps_per_dl->value(buf); + + in_http_proxy_host->value(rt.http_proxy->proxy_url.host); + snprintf(buf, 1000, "%d", rt.http_proxy->proxy_url.port); + in_http_proxy_port->value(buf); + + in_http_proxy_user->value(rt.http_proxy->username); + in_http_proxy_passwd->value(rt.http_proxy->passwd); + + in_ftp_proxy_host->value(rt.ftp_proxy->proxy_url.host); + sprintf(buf, "%d", rt.ftp_proxy->proxy_url.port); + in_ftp_proxy_port->value(buf); + in_ftp_proxy_user->value(rt.ftp_proxy->username); + in_ftp_proxy_passwd->value(rt.ftp_proxy->passwd); + in_ftp_proxy_type->value(rt.ftp_proxy->type); + + if (rt.use_http_proxy == FALSE && rt.use_ftp_proxy == FALSE) + { + in_direct_conn_button->value(1); + in_use_proxy_button->value(0); + gr_proxy_grp->deactivate(); + } else + { + in_direct_conn_button->value(0); + in_use_proxy_button->value(1); + gr_proxy_grp->activate(); + } + // sprintf(buf, "%d", rt.http_proxy->proxy_url.port); + + rt.use_http_proxy == + TRUE ? in_use_http_proxy->value(1) : in_use_http_proxy->value(0); + rt.use_ftp_proxy == + TRUE ? in_use_ftp_proxy->value(1) : in_use_ftp_proxy->value(0); + + + rt.use_ftpsearch==TRUE?in_use_ftpsearch_button->value(1):in_use_ftpsearch_button->value(0); +; + mirrors_in->value((double) rt.ftps_mirror_req_n); + snprintf(buf, 1000, "%d", (int) rt.max_ping_wait); + in_ping_timeout->value(buf); + + in_simul_pings->value((double) rt.max_simul_pings); + + ftps_server_choice->value(rt.ftpsearch_server_id); +} + + +int pref_panel_set_values() +{ + char *url_str; + urlinfo url_data; + uerr_t err; + + //FIXME do a check here before setting value + rt.num_connections = (int) threads_in->value(); + rt.retry_delay = atoi(retry_delay_in->value()); + + rt.timeout.tv_sec = atoi(in_timeout->value()); + rt.timeout.tv_usec = 0; + + rt.max_bps_per_dl = (long) (atof(in_bps_per_dl->value()) * 1024); + + if (rt.max_bps_per_dl < 0) + { + rt.max_bps_per_dl = 0; + } + + rt.ftp_use_pasv = in_pasv_button->value(); + rt.http_no_cache = in_no_cache_button->value(); + + char *abs_out_dir = (char *) malloc(PATH_MAX); + fl_filename_expand(abs_out_dir, in_outputdir->value()); + fl_filename_absolute(abs_out_dir, abs_out_dir); + + // filename_absolute(abs_out_dir, in_outputdir->value()); + /*Check and see whether the directory is valid */ + if (fl_filename_isdir(abs_out_dir) == 0) + { + fl_message(_("%s does not seem to be a valid directory"), abs_out_dir); + free(abs_out_dir); + return 0; + } else + { + free(rt.output_dir); + rt.output_dir = strdup(abs_out_dir); + /*FIXME currently rt._dl_dir == rt.output_dir */ + free(rt.dl_dir); + rt.dl_dir = strdup(abs_out_dir); + } + free(abs_out_dir); + + url_str = + (char *) malloc(strlen(in_http_proxy_host->value()) + 1 + + strlen(in_http_proxy_port->value()) + 1); + + sprintf(url_str, "%s:%s", in_http_proxy_host->value(), + in_http_proxy_port->value()); + + err = proz_parse_url(url_str, &url_data, 0); + if (err != URLOK) + { + fl_message(_("%s does not seem to be a valid HTTP proxy value"), + url_str); + return 0; + } + + proz_free_url(&rt.http_proxy->proxy_url, 0); + free(url_str); + memcpy(&rt.http_proxy->proxy_url, &url_data, sizeof(url_data)); + + + /*copy the http proxy username and password */ + free(rt.http_proxy->username); + rt.http_proxy->username = strdup(in_http_proxy_user->value()); + free(rt.http_proxy->passwd); + rt.http_proxy->passwd = strdup(in_http_proxy_passwd->value()); + + rt.use_http_proxy = in_use_http_proxy->value() == 1 ? TRUE : FALSE; + + url_str = + (char *) malloc(strlen(in_ftp_proxy_host->value()) + 1 + + strlen(in_ftp_proxy_port->value()) + 1); + + sprintf(url_str, "%s:%s", in_ftp_proxy_host->value(), + in_ftp_proxy_port->value()); + + err = proz_parse_url(url_str, &url_data, 0); + if (err != URLOK) + { + fl_message(_("%s does not seem to be a valid FTP proxy value"), + url_str); + return 0; + } + memcpy(&rt.ftp_proxy->proxy_url, &url_data, sizeof(url_data)); + + free(url_str); + + /*copy the ftp proxy username and password */ + free(rt.ftp_proxy->username); + rt.ftp_proxy->username = strdup(in_ftp_proxy_user->value()); + free(rt.ftp_proxy->passwd); + rt.ftp_proxy->passwd = strdup(in_ftp_proxy_passwd->value()); + rt.ftp_proxy->type = (enum proxy_type) in_ftp_proxy_type->value(); + rt.use_ftp_proxy = in_use_ftp_proxy->value() == 1 ? TRUE : FALSE; + + + rt.ftps_mirror_req_n =(int) mirrors_in->value(); + rt.max_simul_pings = (int) in_simul_pings->value(); + rt.max_ping_wait = atoi(in_ping_timeout->value()); + + if(rt.max_ping_wait >120) + rt.max_ping_wait=120; + if(rt.max_ping_wait <0) + rt.max_ping_wait=1; + + in_use_ftpsearch_button->value()==1?rt.use_ftpsearch=TRUE:rt.use_ftpsearch=FALSE; + + rt.ftpsearch_server_id = ftps_server_choice->value(); + /*Set the values necessary for libprozilla */ + set_runtime_values(); + return 1; +} + +void cb_prefs_ok(Fl_Button *, void *) +{ + if (pref_panel_set_values() == 1) + rt.prefs_win->hide(); + save_prefs(); +} + + +void cb_prefs_cancel(Fl_Button *, void *) +{ + rt.prefs_win->hide(); +} + + +void cb_prefs_tab(Fl_Tabs * tabs, void *) +{ + +} + + +void cb_prefs_conn(Fl_Check_Button * button, void *) +{ + if (button->value() == 1) + { + in_use_http_proxy->value(0); + in_use_ftp_proxy->value(0); + gr_proxy_grp->deactivate(); + } + +} + +void cb_prefs_use_proxy(Fl_Check_Button * button, void *) +{ + + if (button->value() == 1) + { + gr_proxy_grp->activate(); + } +} + + +void cb_about_ok(Fl_Button * button, void *) +{ + win_about->hide(); +} diff --git a/src/options.h b/src/options.h new file mode 100644 index 0000000..583d283 --- /dev/null +++ b/src/options.h @@ -0,0 +1,9 @@ + +#ifndef OPTIONS_H +#define OPTIONS_H + +#include +#include "main.h" + +void pref_panel_setup(); +#endif diff --git a/src/prefs.cpp b/src/prefs.cpp new file mode 100644 index 0000000..ebb2739 --- /dev/null +++ b/src/prefs.cpp @@ -0,0 +1,532 @@ +/****************************************************************************** + fltk prozilla - a front end for prozilla, a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ + +#if HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include +#include "prozilla.h" +#include "main.h" +#include "prefs.h" + + +typedef void (*prefproc) (int i, const char *const, FILE * const fp); + +typedef struct prefopt_t { + const char *varname; + prefproc proc; + int visible; +} prefopt_t; + +void set_num_threads(int, const char *const, FILE * const); +void set_max_attempts(int, const char *const, FILE * const); + +void set_max_bps_per_dl(int, const char *const, FILE * const); + +void set_use_pasv(int, const char *const, FILE * const); +void set_retry_delay(int, const char *const, FILE * const); +void set_conn_timeout(int, const char *const, FILE * const); +void set_debug_mode(int, const char *const, FILE * const); +void set_http_no_cache(int, const char *const, FILE * const); +void set_output_dir(int i, const char *const val, FILE * const fp); + +void set_http_proxy(int i, const char *const val, FILE * const fp); +void set_http_proxy_username(int i, const char *const val, + FILE * const fp); +void set_http_proxy_passwd(int i, const char *const val, FILE * const fp); +void set_http_use_proxy(int i, const char *const val, FILE * const fp); +void set_http_proxy_type(int i, const char *const val, FILE * const fp); + +void set_ftp_proxy(int i, const char *const val, FILE * const fp); +void set_ftp_proxy_username(int i, const char *const val, FILE * const fp); +void set_ftp_proxy_passwd(int i, const char *const val, FILE * const fp); +void set_ftp_use_proxy(int i, const char *const val, FILE * const fp); +void set_ftp_proxy_type(int i, const char *const val, FILE * const fp); +void set_mirrors_req(int i, const char *const val, FILE * const fp); +void set_max_simul_pings(int i, const char *const val, FILE * const fp); +void set_max_ping_wait(int i, const char *const val, FILE * const fp); +void set_use_ftpsearch(int, const char *const, FILE * const); +void set_ftpsearch_server_id(int i, const char *const val, FILE * const fp); +/*TODO add saving the proxy locations too*/ + + +prefopt_t pref_opts[] = { + {"threads", set_num_threads, 1}, + {"tries", set_max_attempts, 1}, + {"pasv", set_use_pasv, 1}, + {"retrydelay", set_retry_delay, 1}, + {"conntimeout", set_conn_timeout, 1}, + {"maxbpsperdl", set_max_bps_per_dl, 1}, + {"debug", set_debug_mode, 1}, + {"pragmanocache", set_http_no_cache, 1}, + {"outputdir", set_output_dir, 1}, + {"httpproxy", set_http_proxy, 1}, + {"httpproxyuser", set_http_proxy_username, 1}, + {"httpproxypassword", set_http_proxy_passwd, 1}, + {"httpproxytype", set_http_proxy_type, 1}, + {"usehttpproxy", set_http_use_proxy, 1}, + {"ftpproxy", set_ftp_proxy, 1}, + {"ftpproxyuser", set_ftp_proxy_username, 1}, + {"ftpproxypassword", set_ftp_proxy_passwd, 1}, + {"ftpproxytype", set_ftp_proxy_type, 1}, + {"useftpproxy", set_ftp_use_proxy, 1}, + {"mirrorsreq", set_mirrors_req, 1}, + {"maxsimulpings", set_max_simul_pings, 1}, + {"maxpingwait", set_max_ping_wait, 1}, + {"defaultftpsearch", set_use_ftpsearch, 1}, + {"ftpsearchserverid", set_ftpsearch_server_id, 1}, + {NULL, 0, 0} +}; + +void set_num_threads(int i, const char *const val, FILE * const fp) +{ + + if (fp != NULL) + { + fprintf(fp, "%d", rt.num_connections); + } else + { + rt.num_connections = atoi(val); + if (rt.num_connections <= 0 || rt.num_connections > 30) + rt.num_connections = 4; + } +} + + +void set_max_attempts(int i, const char *const val, FILE * const fp) +{ + if (fp != NULL) + { + fprintf(fp, "%d", rt.max_attempts); + } else + { + rt.max_attempts = atoi(val); + if (rt.max_attempts < 0) + rt.max_attempts = 0; + } +} + +void set_retry_delay(int i, const char *const val, FILE * const fp) +{ + if (fp != NULL) + { + fprintf(fp, "%d", rt.retry_delay); + } else + { + rt.retry_delay = atoi(val); + if (rt.retry_delay < 0) + rt.retry_delay = 15; + } +} + + +void set_conn_timeout(int i, const char *const val, FILE * const fp) +{ + if (fp != NULL) + { + fprintf(fp, "%d", (int) rt.timeout.tv_sec); + } else + { + rt.timeout.tv_sec = atoi(val); + rt.timeout.tv_usec = 0; + + if (rt.timeout.tv_sec < 0) + rt.timeout.tv_sec = 90; + } +} + + +void set_max_bps_per_dl(int i, const char *const val, FILE * const fp) +{ + if (fp != NULL) + { + fprintf(fp, "%d", (int) rt.max_bps_per_dl); + } else + { + rt.max_bps_per_dl = atoi(val); + + if (rt.max_bps_per_dl < 0) + rt.max_bps_per_dl = 0; + } + +} + +void set_use_pasv(int i, const char *const val, FILE * const fp) +{ + + if (fp != NULL) + { + fprintf(fp, "%d", rt.ftp_use_pasv); + } else + { + rt.ftp_use_pasv = atoi(val); + } + +} + + +void set_debug_mode(int i, const char *const val, FILE * const fp) +{ + + if (fp != NULL) + { + fprintf(fp, "%d", rt.debug_mode); + } else + { + rt.debug_mode = atoi(val); + } +} + +void set_http_no_cache(int i, const char *const val, FILE * const fp) +{ + + if (fp != NULL) + { + fprintf(fp, "%d", rt.http_no_cache); + } else + { + rt.http_no_cache = atoi(val); + } +} + +void set_output_dir(int i, const char *const val, FILE * const fp) +{ + if (fp != NULL) + { + fprintf(fp, "%s", rt.output_dir); + } else + { + free(rt.output_dir); + rt.output_dir = strdup(val); + } + +} + + +void set_http_proxy(int i, const char *const val, FILE * const fp) +{ + + uerr_t err; + urlinfo url_data; + + if (fp != NULL) + { + fprintf(fp, "%s:%d", rt.http_proxy->proxy_url.host, + rt.http_proxy->proxy_url.port); + } else + { + err = proz_parse_url(val, &url_data, 0); + if (err != URLOK) + { + proz_debug("%s does not seem to be a valid proxy value", val); + return; + } + proz_free_url(&rt.http_proxy->proxy_url, 0); + memcpy(&rt.http_proxy->proxy_url, &url_data, sizeof(url_data)); + } +} + +void set_http_proxy_username(int i, const char *const val, FILE * const fp) +{ + + if (fp != NULL) + { + fprintf(fp, "%s", rt.http_proxy->username); + } else + { + free(rt.http_proxy->username); + rt.http_proxy->username = strdup(val); + } +} + + + +void set_http_proxy_passwd(int i, const char *const val, FILE * const fp) +{ + + if (fp != NULL) + { + fprintf(fp, "%s", rt.http_proxy->passwd); + } else + { + free(rt.http_proxy->passwd); + rt.http_proxy->passwd = strdup(val); + } +} + + +void set_http_proxy_type(int i, const char *const val, FILE * const fp) +{ + + if (fp != NULL) + { + fprintf(fp, "%d", (int) rt.http_proxy->type); + } else + { + rt.http_proxy->type = (proxy_type) atoi(val); + } +} + + + +void set_http_use_proxy(int i, const char *const val, FILE * const fp) +{ + + if (fp != NULL) + { + fprintf(fp, "%d", rt.use_http_proxy); + } else + { + rt.use_http_proxy = atoi(val); + } +} + + + + +void set_ftp_proxy(int i, const char *const val, FILE * const fp) +{ + + uerr_t err; + urlinfo url_data; + + if (fp != NULL) + { + fprintf(fp, "%s:%d", rt.ftp_proxy->proxy_url.host, + rt.ftp_proxy->proxy_url.port); + } else + { + err = proz_parse_url(val, &url_data, 0); + if (err != URLOK) + { + proz_debug("%s does not seem to be a valid proxy value", val); + return; + } + proz_free_url(&rt.ftp_proxy->proxy_url, 0); + memcpy(&rt.ftp_proxy->proxy_url, &url_data, sizeof(url_data)); + } +} + +void set_ftp_proxy_username(int i, const char *const val, FILE * const fp) +{ + + if (fp != NULL) + { + fprintf(fp, "%s", rt.ftp_proxy->username); + } else + { + free(rt.ftp_proxy->username); + rt.ftp_proxy->username = strdup(val); + } +} + + +void set_ftp_proxy_passwd(int i, const char *const val, FILE * const fp) +{ + + if (fp != NULL) + { + fprintf(fp, "%s", rt.ftp_proxy->passwd); + } else + { + free(rt.ftp_proxy->passwd); + rt.ftp_proxy->passwd = strdup(val); + } +} + +void set_ftp_proxy_type(int i, const char *const val, FILE * const fp) +{ + + if (fp != NULL) + { + fprintf(fp, "%d", (int) rt.ftp_proxy->type); + } else + { + rt.ftp_proxy->type = (proxy_type) atoi(val); + } +} + +void set_ftp_use_proxy(int i, const char *const val, FILE * const fp) +{ + + if (fp != NULL) + { + fprintf(fp, "%d", rt.use_ftp_proxy); + } else + { + rt.use_ftp_proxy = atoi(val); + } +} + + +void set_mirrors_req(int i, const char *const val, FILE * const fp) +{ + + if (fp != NULL) + { + fprintf(fp, "%d", rt.ftps_mirror_req_n); + } else + { + rt.ftps_mirror_req_n = atoi(val); + if (rt.ftps_mirror_req_n <= 0 || rt.ftps_mirror_req_n> 1000) + rt.ftps_mirror_req_n = 40; + } +} + +void set_max_simul_pings(int i, const char *const val, FILE * const fp) +{ + + if (fp != NULL) + { + fprintf(fp, "%d", rt.max_simul_pings); + } else + { + rt.max_simul_pings= atoi(val); + if (rt.max_simul_pings <= 0 || rt.max_simul_pings> 30) + rt.max_simul_pings=5; + } +} + + + +void set_max_ping_wait(int i, const char *const val, FILE * const fp) +{ + + if (fp != NULL) + { + fprintf(fp, "%d", rt.max_ping_wait); + } else + { + rt.max_ping_wait= atoi(val); + if (rt.max_ping_wait <= 0 || rt.max_ping_wait> 30) + rt.max_ping_wait=5; + } +} + + +void set_use_ftpsearch(int i, const char *const val, FILE * const fp) +{ + + if (fp != NULL) + { + fprintf(fp, "%d", rt.use_ftpsearch); + } else + { + rt.use_ftpsearch = atoi(val); + } + +} + +void set_ftpsearch_server_id(int i, const char *const val, FILE * const fp) +{ + if (fp != NULL) + { + fprintf(fp, "%d", rt.ftpsearch_server_id); + } else + { + rt.ftpsearch_server_id = atoi(val); + if (rt.ftpsearch_server_id < 0) + rt.ftpsearch_server_id = 0; + } +} + + +void save_prefs() +{ + char config_fname[PATH_MAX]; + FILE *fp; + int i; + + snprintf(config_fname, PATH_MAX, "%s/.prozilla/%s", rt.home_dir, + "prozconfig"); + + if ((fp = fopen(config_fname, "wt")) == NULL) + { + perror("could not save preferences file"); + proz_debug("could not save preferences file :- %s", strerror(errno)); + return; + } + + fprintf(fp, "%s", + "# ProZilla preferences file\n# This file is loaded and OVERWRITTEN each time ProZilla is run.\n# Please try to avoid writing to this file.\n#\n"); + + for (i = 0; pref_opts[i].varname != NULL; i++) + { + fprintf(fp, "%s=", pref_opts[i].varname); + (*pref_opts[i].proc) (i, NULL, fp); + fprintf(fp, "\n"); + } + fclose(fp); +} + +void load_prefs() +{ + char config_fname[PATH_MAX]; + FILE *fp; + int i; + char line[256]; + char *tok1, *tok2; + + snprintf(config_fname, PATH_MAX, "%s/.prozilla/%s", rt.home_dir, + "prozconfig"); + + if ((fp = fopen(config_fname, "rt")) == NULL) + { + + if (errno == ENOENT) /*Create the file then if it doesnt exist */ + { + save_prefs(); + return; + } + + else + { + perror("could not open preferences file for reading"); + proz_debug("could not open preferences file :- %s", strerror(errno)); + return; + } + } + + line[sizeof(line) - 1] = '\0'; + while (fgets(line, sizeof(line) - 1, fp) != NULL) + { + tok1 = strtok(line, " =\t\r\n"); + if ((tok1 == NULL) || (tok1[0] == '#')) + continue; + tok2 = strtok(NULL, "\r\n"); + if (tok2 == NULL) + continue; + + for (i = 0; pref_opts[i].varname != NULL; i++) + { + if (strcmp(tok1, pref_opts[i].varname) == 0) + { + if (pref_opts[i].proc != NULL) + (*pref_opts[i].proc) (i, tok2, NULL); + } + } + } + + fclose(fp); +} diff --git a/src/prefs.h b/src/prefs.h new file mode 100644 index 0000000..223fb0c --- /dev/null +++ b/src/prefs.h @@ -0,0 +1,23 @@ +/****************************************************************************** + fltk prozilla - a front end for prozilla, a download accelerator library + Copyright (C) 2001 Kalum Somaratna + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +******************************************************************************/ +#ifndef PREFS_H +#define PREFS_H +void save_prefs(); +void load_prefs(); +#endif diff --git a/src/savefile.cpp b/src/savefile.cpp new file mode 100644 index 0000000..3c58807 --- /dev/null +++ b/src/savefile.cpp @@ -0,0 +1,90 @@ +#if HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include +#include +#include "main.h" +#include "savefile.h" +#include "download_win.h" +#include "dl_win.h" + + +void create_savefile(Fl_Browser *browser) +{ + FILE *fp; + char file_name[PATH_MAX]; + snprintf(file_name, PATH_MAX, "%s/%s", rt.config_dir, "urls"); + int num_dls=browser->size(); + + if ((fp = fopen(file_name, "wt")) == NULL) + { + perror("Could not save the list of URLS's"); + proz_debug("Could not save the list of URLS's :- %s", strerror(errno)); + return; + } + + + fprintf(fp, "%d\n", num_dls); + + if(num_dls>0) + { + for(int i=0; itext(i+1)); + } + } + fclose(fp); + return; +} + + +void load_savefile(Fl_Browser *browser) +{ + FILE *fp; + char file_name[PATH_MAX]; + snprintf(file_name, PATH_MAX, "%s/%s", rt.config_dir, "urls"); + int num_dls=0; + + if ((fp = fopen(file_name, "rt")) == NULL) + { + perror("Could not open the list of URLS's"); + proz_debug("Could not open the list of URLS's :- %s", strerror(errno)); + return; + } + + + fscanf(fp, "%d\n", &num_dls); + +char *line=(char *)malloc (20000); +if(line==0) +{ + printf("Could not allocalte memory"); + proz_debug("Could not allocalte memory"); + exit(EXIT_FAILURE); +} + + if(num_dls>0) + { + for(int i=0; iadd(line); + } + } + fclose(fp); + free(line); + return; + +} diff --git a/src/savefile.h b/src/savefile.h new file mode 100644 index 0000000..35cfd7d --- /dev/null +++ b/src/savefile.h @@ -0,0 +1,10 @@ +#ifndef SAVEFILE_H +#define SAVEFILE_H + +#include +#include + +#include +void create_savefile( Fl_Browser *browser); +void load_savefile(Fl_Browser *browser); +#endif diff --git a/src/we.cxx b/src/we.cxx new file mode 100644 index 0000000..66c3f1c --- /dev/null +++ b/src/we.cxx @@ -0,0 +1,4682 @@ +// generated by Fast Light User Interface Designer (fluid) version 1.0102 + +#include +#include "we.h" + +Fl_Window *win_prefs=(Fl_Window *)0; + +Fl_Tabs *tb_prefs=(Fl_Tabs *)0; + +Fl_Group *gr_prefs_general=(Fl_Group *)0; + +Fl_Input *retry_delay_in=(Fl_Input *)0; + +Fl_Counter *threads_in=(Fl_Counter *)0; + +Fl_Input *in_timeout=(Fl_Input *)0; + +Fl_Check_Button *in_pasv_button=(Fl_Check_Button *)0; + +Fl_Check_Button *in_no_cache_button=(Fl_Check_Button *)0; + +Fl_Input *in_outputdir=(Fl_Input *)0; + +Fl_Input *in_bps_per_dl=(Fl_Input *)0; + +Fl_Group *gr_prefs_proxy=(Fl_Group *)0; + +Fl_Group *gr_proxy_grp=(Fl_Group *)0; + +Fl_Input *in_http_proxy_host=(Fl_Input *)0; + +Fl_Input *in_http_proxy_port=(Fl_Input *)0; + +Fl_Input *in_http_proxy_user=(Fl_Input *)0; + +Fl_Input *in_http_proxy_passwd=(Fl_Input *)0; + +Fl_Input *in_ftp_proxy_host=(Fl_Input *)0; + +Fl_Input *in_ftp_proxy_port=(Fl_Input *)0; + +Fl_Input *in_ftp_proxy_user=(Fl_Input *)0; + +Fl_Input *in_ftp_proxy_passwd=(Fl_Input *)0; + +Fl_Choice *in_ftp_proxy_type=(Fl_Choice *)0; + +Fl_Menu_Item menu_in_ftp_proxy_type[] = { + {gettext("USER@SITE"), 0, 0, 0, 0, 0, 0, 12, 56}, + {gettext("USER@ProxyUser@SITE"), 0, 0, 0, 0, 0, 0, 12, 56}, + {gettext("USER@SITE_PROXYUSER"), 0, 0, 0, 0, 0, 0, 12, 56}, + {gettext("ProxyUser@SITE"), 0, 0, 0, 0, 0, 0, 12, 56}, + {gettext("LOGIN_then_USER@SITE"), 0, 0, 0, 0, 0, 0, 12, 56}, + {gettext("OPENSITE"), 0, 0, 0, 0, 0, 0, 12, 56}, + {gettext("SITESITE"), 0, 0, 0, 0, 0, 0, 12, 56}, + {gettext("HTTP proxy"), 0, 0, 0, 0, 0, 0, 12, 56}, + {0} +}; + +Fl_Check_Button *in_use_http_proxy=(Fl_Check_Button *)0; + +Fl_Check_Button *in_use_ftp_proxy=(Fl_Check_Button *)0; + +Fl_Check_Button *in_direct_conn_button=(Fl_Check_Button *)0; + +Fl_Check_Button *in_use_proxy_button=(Fl_Check_Button *)0; + +Fl_Group *gr_prefs_ftpsearch=(Fl_Group *)0; + +Fl_Counter *mirrors_in=(Fl_Counter *)0; + +Fl_Input *in_ping_timeout=(Fl_Input *)0; + +Fl_Counter *in_simul_pings=(Fl_Counter *)0; + +Fl_Check_Button *in_use_ftpsearch_button=(Fl_Check_Button *)0; + +Fl_Choice *ftps_server_choice=(Fl_Choice *)0; + +Fl_Menu_Item menu_ftps_server_choice[] = { + {gettext("filesearching.com"), 0, 0, 0, 0, 0, 0, 12, 56}, + {gettext("ftpsearch.uniovie.es"), 0, 0, 0, 0, 0, 0, 12, 56}, + {gettext("ftpsearch.lycos.com"), 0, 0, 0, 0, 0, 0, 12, 56}, + {0} +}; + +Fl_Button *ok_button=(Fl_Button *)0; + +Fl_Button *cancel_button=(Fl_Button *)0; + +Fl_Window* make_prefs_win() { + Fl_Window* w; + { Fl_Window* o = win_prefs = new Fl_Window(475, 410, gettext("Prozilla Preferences Panel")); + w = o; + { Fl_Tabs* o = tb_prefs = new Fl_Tabs(20, 5, 450, 370); + o->box(FL_UP_BOX); + o->callback((Fl_Callback*)cb_prefs_tab); + { Fl_Group* o = gr_prefs_general = new Fl_Group(30, 30, 440, 340, gettext("General")); + o->labelfont(1); + o->labelsize(12); + { Fl_Group* o = new Fl_Group(30, 35, 430, 330); + o->box(FL_ENGRAVED_FRAME); + { Fl_Input* o = retry_delay_in = new Fl_Input(305, 75, 95, 25); + o->type(2); + o->labelsize(12); + o->textsize(12); + } + { Fl_Counter* o = threads_in = new Fl_Counter(305, 45, 50, 25); + o->labelsize(12); + o->minimum(1); + o->maximum(30); + o->step(1); + o->value(4); + o->textsize(12); + o->type(FL_SIMPLE_COUNTER); + } + { Fl_Box* o = new Fl_Box(60, 45, 120, 25, gettext("Number of Threads:")); + o->labelsize(12); + o->align(132|FL_ALIGN_INSIDE); + } + { Fl_Input* o = in_timeout = new Fl_Input(305, 105, 95, 25); + o->type(2); + o->labelsize(12); + o->textsize(12); + } + { Fl_Check_Button* o = in_pasv_button = new Fl_Check_Button(65, 135, 295, 25, gettext("Use PASV for FTP transfers (recommended)")); + o->down_box(FL_DIAMOND_DOWN_BOX); + o->labelsize(12); + o->align(132|FL_ALIGN_INSIDE); + } + { Fl_Check_Button* o = in_no_cache_button = new Fl_Check_Button(65, 165, 345, 25, gettext("Ask the HTTP proxies not to cache requests between sessions (default is off)")); + o->down_box(FL_DIAMOND_DOWN_BOX); + o->labelsize(12); + o->align(132|FL_ALIGN_INSIDE); + } + { Fl_Input* o = in_outputdir = new Fl_Input(65, 225, 355, 25); + o->labelsize(12); + o->textsize(12); + o->align(FL_ALIGN_TOP); + } + { Fl_Input* o = in_bps_per_dl = new Fl_Input(330, 275, 95, 25); + o->type(1); + o->labelsize(11); + o->textsize(12); + o->align(FL_ALIGN_TOP); + } + { Fl_Box* o = new Fl_Box(60, 75, 210, 25, gettext("Retry Delay (Sec):")); + o->labelsize(12); + o->align(132|FL_ALIGN_INSIDE); + } + { Fl_Box* o = new Fl_Box(60, 105, 210, 25, gettext("Timeout Period (Sec):")); + o->labelsize(12); + o->align(132|FL_ALIGN_INSIDE); + } + { Fl_Box* o = new Fl_Box(65, 195, 340, 25, gettext("Directory to download the files:")); + o->labelsize(12); + o->align(132|FL_ALIGN_INSIDE); + } + { Fl_Box* o = new Fl_Box(65, 250, 380, 20, gettext("Limit bandwith usage PER download to (Kbps) (0 = unlimited):")); + o->labelsize(12); + o->align(132|FL_ALIGN_INSIDE); + } + o->end(); + } + o->end(); + } + { Fl_Group* o = gr_prefs_proxy = new Fl_Group(30, 35, 440, 335, gettext("Proxies")); + o->labelfont(1); + o->labelsize(12); + o->hide(); + { Fl_Group* o = new Fl_Group(30, 35, 435, 325); + o->box(FL_ENGRAVED_BOX); + { Fl_Group* o = gr_proxy_grp = new Fl_Group(40, 80, 420, 270); + o->box(FL_ENGRAVED_BOX); + { Fl_Input* o = in_http_proxy_host = new Fl_Input(130, 115, 140, 25, gettext("Hostname:")); + o->labelsize(12); + o->textsize(12); + o->align(132); + } + { Fl_Input* o = in_http_proxy_port = new Fl_Input(310, 115, 140, 25, gettext("Port:")); + o->type(2); + o->labelsize(12); + o->textsize(12); + o->align(132); + } + { Fl_Box* o = new Fl_Box(45, 90, 85, 25, gettext("HTTP Proxy:")); + o->labelfont(1); + o->labelsize(12); + o->align(FL_ALIGN_WRAP); + } + { Fl_Input* o = in_http_proxy_user = new Fl_Input(130, 145, 140, 25, gettext("Username:")); + o->labelsize(12); + o->textsize(12); + o->align(132); + } + { Fl_Input* o = in_http_proxy_passwd = new Fl_Input(130, 175, 140, 25, gettext("Password:")); + o->type(5); + o->labelsize(12); + o->textsize(12); + o->align(132); + } + { Fl_Input* o = in_ftp_proxy_host = new Fl_Input(130, 230, 140, 25, gettext("Hostname:")); + o->labelsize(12); + o->textsize(12); + o->align(132); + } + { Fl_Input* o = in_ftp_proxy_port = new Fl_Input(310, 230, 135, 25, gettext("Port:")); + o->type(2); + o->labelsize(12); + o->textsize(12); + o->align(132); + } + { Fl_Input* o = in_ftp_proxy_user = new Fl_Input(130, 260, 140, 25, gettext("Username:")); + o->labelsize(12); + o->textsize(12); + o->align(132); + } + { Fl_Input* o = in_ftp_proxy_passwd = new Fl_Input(130, 290, 140, 25, gettext("Password:")); + o->type(5); + o->labelsize(12); + o->textsize(12); + o->align(132); + } + { Fl_Box* o = new Fl_Box(45, 205, 85, 25, gettext("FTP Proxy:")); + o->labelfont(1); + o->labelsize(12); + o->align(FL_ALIGN_WRAP); + } + { Fl_Choice* o = in_ftp_proxy_type = new Fl_Choice(130, 320, 115, 25, gettext("FTP Proxy Type:")); + o->down_box(FL_BORDER_BOX); + o->labelsize(12); + o->textsize(12); + o->align(132); + o->menu(menu_in_ftp_proxy_type); + } + { Fl_Check_Button* o = in_use_http_proxy = new Fl_Check_Button(155, 90, 120, 20, gettext("Use HTTP Proxy")); + o->down_box(FL_DIAMOND_DOWN_BOX); + o->labelsize(12); + o->align(132|FL_ALIGN_INSIDE); + } + { Fl_Check_Button* o = in_use_ftp_proxy = new Fl_Check_Button(145, 205, 120, 20, gettext("Use FTP Proxy")); + o->down_box(FL_DIAMOND_DOWN_BOX); + o->labelsize(12); + o->align(132|FL_ALIGN_INSIDE); + } + o->end(); + } + { Fl_Group* o = new Fl_Group(55, 40, 285, 45); + { Fl_Check_Button* o = in_direct_conn_button = new Fl_Check_Button(55, 45, 205, 20, gettext("Direct Connection to the Internet")); + o->type(102); + o->down_box(FL_DIAMOND_DOWN_BOX); + o->labelsize(12); + o->callback((Fl_Callback*)cb_prefs_conn); + o->align(132|FL_ALIGN_INSIDE); + } + { Fl_Check_Button* o = in_use_proxy_button = new Fl_Check_Button(55, 60, 210, 20, gettext("Use proxies")); + o->type(102); + o->down_box(FL_DIAMOND_DOWN_BOX); + o->labelsize(12); + o->callback((Fl_Callback*)cb_prefs_use_proxy); + o->align(132|FL_ALIGN_INSIDE); + } + o->end(); + } + o->end(); + } + o->end(); + } + { Fl_Group* o = gr_prefs_ftpsearch = new Fl_Group(30, 30, 440, 345, gettext("FTP Search")); + o->labelfont(1); + o->labelsize(12); + o->hide(); + { Fl_Group* o = new Fl_Group(35, 35, 425, 325); + o->box(FL_ENGRAVED_FRAME); + { Fl_Box* o = new Fl_Box(60, 95, 180, 25, gettext("Number of mirrors to request:")); + o->labelsize(12); + o->align(132|FL_ALIGN_INSIDE); + } + { Fl_Counter* o = mirrors_in = new Fl_Counter(305, 90, 75, 25); + o->labelsize(12); + o->minimum(1); + o->maximum(1000); + o->step(1); + o->value(40); + o->textsize(12); + o->type(FL_SIMPLE_COUNTER); + } + { Fl_Box* o = new Fl_Box(60, 130, 210, 25, gettext("Ping Timeout (Sec):")); + o->labelsize(12); + o->align(132|FL_ALIGN_INSIDE); + } + { Fl_Input* o = in_ping_timeout = new Fl_Input(310, 130, 95, 25); + o->type(2); + o->labelsize(12); + o->textsize(12); + } + { Fl_Box* o = new Fl_Box(60, 165, 210, 25, gettext("Number of mirrors to ping at once:")); + o->labelsize(12); + o->align(132|FL_ALIGN_INSIDE); + } + { Fl_Counter* o = in_simul_pings = new Fl_Counter(310, 165, 80, 25); + o->labelsize(12); + o->minimum(1); + o->maximum(30); + o->step(1); + o->value(5); + o->textsize(12); + o->type(FL_SIMPLE_COUNTER); + } + { Fl_Check_Button* o = in_use_ftpsearch_button = new Fl_Check_Button(60, 210, 295, 25, gettext("Do FTPSearch automatically")); + o->down_box(FL_DIAMOND_DOWN_BOX); + o->labelsize(12); + o->align(132|FL_ALIGN_INSIDE); + } + { Fl_Box* o = new Fl_Box(60, 55, 180, 25, gettext("FTPSearch Server to use:")); + o->labelsize(12); + o->align(132|FL_ALIGN_INSIDE); + } + o->end(); + } + { Fl_Choice* o = ftps_server_choice = new Fl_Choice(285, 55, 160, 25); + o->down_box(FL_BORDER_BOX); + o->labelsize(12); + o->textsize(12); + o->align(132); + o->menu(menu_ftps_server_choice); + } + o->end(); + } + o->end(); + } + { Fl_Button* o = ok_button = new Fl_Button(265, 385, 70, 20, gettext("OK")); + o->labelsize(12); + o->callback((Fl_Callback*)cb_prefs_ok); + } + { Fl_Button* o = cancel_button = new Fl_Button(365, 385, 70, 20, gettext("Cancel")); + o->labelsize(12); + o->callback((Fl_Callback*)cb_prefs_cancel); + } + o->end(); + } + return w; +} + +Fl_Window *win_about=(Fl_Window *)0; + +#include +static const char *idata_BigProZilla01[] = { +"130 130 3363 2", +" \tc None", +". \tc #838C83", +"+ \tc #858C84", +"@ \tc #868E84", +"# \tc #868D84", +"$ \tc #878E86", +"% \tc #898E86", +"& \tc #888D86", +"* \tc #8A8F86", +"= \tc #8A8E86", +"- \tc #8A8E87", +"; \tc #8C8E87", +"> \tc #8C8F87", +", \tc #8C8E88", +"\' \tc #8A8D86", +") \tc #8B8D87", +"! \tc #8B8D86", +"~ \tc #8C8F88", +"{ \tc #8B8E88", +"] \tc #8B8E87", +"^ \tc #8B8F88", +"/ \tc #8A8F88", +"( \tc #8C8F89", +"_ \tc #8B8F89", +": \tc #8B8F8A", +"< \tc #8C8E8A", +"[ \tc #8A8F89", +"} \tc #8B8E89", +"| \tc #8A8E89", +"1 \tc #8A8E88", +"2 \tc #898E88", +"3 \tc #898F88", +"4 \tc #888E88", +"5 \tc #888D88", +"6 \tc #878E88", +"7 \tc #868D88", +"8 \tc #878D88", +"9 \tc #868C88", +"0 \tc #858C87", +"a \tc #848C88", +"b \tc #848C87", +"c \tc #848C86", +"d \tc #838B86", +"e \tc #828B86", +"f \tc #828A86", +"g \tc #808A86", +"h \tc #7F8A86", +"i \tc #7E8986", +"j \tc #7E8985", +"k \tc #7E8A85", +"l \tc #808A87", +"m \tc #818A86", +"n \tc #828B87", +"o \tc #828C87", +"p \tc #828C88", +"q \tc #838C87", +"r \tc #848D88", +"s \tc #848E88", +"t \tc #868D89", +"u \tc #868E89", +"v \tc #868E88", +"w \tc #878F8A", +"x \tc #878E8B", +"y \tc #868E8B", +"z \tc #858D8A", +"A \tc #838C8B", +"B \tc #828B88", +"C \tc #7E8783", +"D \tc #899189", +"E \tc #8A9289", +"F \tc #8B928A", +"G \tc #8B9189", +"H \tc #8C918A", +"I \tc #8A9088", +"J \tc #8C9087", +"K \tc #8C9088", +"L \tc #8B9087", +"M \tc #8B8F87", +"N \tc #8B8E86", +"O \tc #8A8C86", +"P \tc #8B8C86", +"Q \tc #8D8E88", +"R \tc #8C8E89", +"S \tc #8C9089", +"T \tc #8B9089", +"U \tc #8B908A", +"V \tc #8A8E8A", +"W \tc #898E89", +"X \tc #888F89", +"Y \tc #888E8A", +"Z \tc #888E89", +"` \tc #878E8A", +" .\tc #878E89", +"..\tc #868E8A", +"+.\tc #858E89", +"@.\tc #848E8A", +"#.\tc #858E8A", +"$.\tc #848F8A", +"%.\tc #878F88", +"&.\tc #868F8A", +"*.\tc #878F89", +"=.\tc #888F8A", +"-.\tc #88908B", +";.\tc #888F8C", +">.\tc #878F8C", +",.\tc #868E8C", +"\'.\tc #8A9288", +").\tc #8A928A", +"!.\tc #8B9289", +"~.\tc #8C9189", +"{.\tc #8B8F86", +"].\tc #8C8D88", +"^.\tc #8C8D87", +"/.\tc #898F8A", +"(.\tc #898F89", +"_.\tc #8A8F8A", +":.\tc #89908A", +"<.\tc #88908A", +"[.\tc #89908B", +"}.\tc #878F8B", +"|.\tc #87908B", +"1.\tc #868F8B", +"2.\tc #86908A", +"3.\tc #87908A", +"4.\tc #889089", +"5.\tc #879089", +"6.\tc #888F88", +"7.\tc #888F8B", +"8.\tc #88908C", +"9.\tc #838C88", +"0.\tc #899089", +"a.\tc #8A908A", +"b.\tc #8B918A", +"c.\tc #8C8E86", +"d.\tc #8B8D88", +"e.\tc #8B8C87", +"f.\tc #898B85", +"g.\tc #8C8C87", +"h.\tc #8B9088", +"i.\tc #898E8A", +"j.\tc #899088", +"k.\tc #888F87", +"l.\tc #898E87", +"m.\tc #898F8B", +"n.\tc #889088", +"o.\tc #8A9089", +"p.\tc #8A8F87", +"q.\tc #898B86", +"r.\tc #898A84", +"s.\tc #8A8C87", +"t.\tc #8D8D88", +"u.\tc #848580", +"v.\tc #8D8E89", +"w.\tc #898A86", +"x.\tc #848681", +"y.\tc #898D86", +"z.\tc #868F88", +"A.\tc #898F87", +"B.\tc #868D8A", +"C.\tc #858C88", +"D.\tc #889087", +"E.\tc #899087", +"F.\tc #8D8E87", +"G.\tc #898A85", +"H.\tc #898A82", +"I.\tc #868682", +"J.\tc #848581", +"K.\tc #666764", +"L.\tc #6E6E6D", +"M.\tc #848484", +"N.\tc #696969", +"O.\tc #8C8C8C", +"P.\tc #656565", +"Q.\tc #888888", +"R.\tc #636362", +"S.\tc #808080", +"T.\tc #868785", +"U.\tc #858683", +"V.\tc #91948F", +"W.\tc #888A85", +"X.\tc #898C87", +"Y.\tc #888B86", +"Z.\tc #888B85", +"`.\tc #8A8E85", +" +\tc #878E8C", +".+\tc #898F86", +"++\tc #8E8E88", +"@+\tc #898984", +"#+\tc #757874", +"$+\tc #525350", +"%+\tc #464645", +"&+\tc #262626", +"*+\tc #5D5D5D", +"=+\tc #444444", +"-+\tc #616161", +";+\tc #666666", +">+\tc #636363", +",+\tc #747474", +"\'+\tc #818181", +")+\tc #606060", +"!+\tc #7C7C7C", +"~+\tc #6F6F6F", +"{+\tc #7B7B7B", +"]+\tc #6D6D6D", +"^+\tc #8A8A8A", +"/+\tc #757575", +"(+\tc #767676", +"_+\tc #858585", +":+\tc #7C7C7B", +"<+\tc #868885", +"[+\tc #828480", +"}+\tc #868D87", +"|+\tc #858C86", +"1+\tc #848D87", +"2+\tc #878C87", +"3+\tc #878D87", +"4+\tc #878E87", +"5+\tc #878D86", +"6+\tc #888E85", +"7+\tc #8B8E85", +"8+\tc #8A8E84", +"9+\tc #8B8C84", +"0+\tc #8A8C83", +"a+\tc #8B8E84", +"b+\tc #898E8C", +"c+\tc #7C7E78", +"d+\tc #494A48", +"e+\tc #383838", +"f+\tc #222222", +"g+\tc #3D3D3D", +"h+\tc #3B3B3B", +"i+\tc #181818", +"j+\tc #535353", +"k+\tc #5A5A5A", +"l+\tc #777777", +"m+\tc #8D8D8D", +"n+\tc #727272", +"o+\tc #909090", +"p+\tc #9C9C9C", +"q+\tc #939393", +"r+\tc #828282", +"s+\tc #959595", +"t+\tc #8F8F8F", +"u+\tc #979797", +"v+\tc #989898", +"w+\tc #929292", +"x+\tc #969696", +"y+\tc #9B9C9A", +"z+\tc #888B87", +"A+\tc #8B8C82", +"B+\tc #8A8D83", +"C+\tc #8A8F84", +"D+\tc #898F8C", +"E+\tc #888E8C", +"F+\tc #5F605C", +"G+\tc #50504E", +"H+\tc #000000", +"I+\tc #131313", +"J+\tc #1F1F1F", +"K+\tc #363636", +"L+\tc #2E2E2E", +"M+\tc #101010", +"N+\tc #555555", +"O+\tc #353535", +"P+\tc #393939", +"Q+\tc #333333", +"R+\tc #2B2B2B", +"S+\tc #272727", +"T+\tc #141414", +"U+\tc #4D4D4D", +"V+\tc #7E7E7E", +"W+\tc #3F3F3F", +"X+\tc #585858", +"Y+\tc #8E8E8E", +"Z+\tc #797979", +"`+\tc #7A7A7A", +" @\tc #8E908C", +".@\tc #858E88", +"+@\tc #858D86", +"@@\tc #868C86", +"#@\tc #868C87", +"$@\tc #888C86", +"%@\tc #8A9085", +"&@\tc #8C8F86", +"*@\tc #868982", +"=@\tc #545652", +"-@\tc #3E3E3D", +";@\tc #050505", +">@\tc #0D0D0D", +",@\tc #323232", +"\'@\tc #202020", +")@\tc #3C3C3C", +"!@\tc #4E4E4E", +"~@\tc #474747", +"{@\tc #4A4A4A", +"]@\tc #525252", +"^@\tc #3E3E3E", +"/@\tc #6C6C6C", +"(@\tc #5F5F5F", +"_@\tc #424242", +":@\tc #5E5E5E", +"<@\tc #404040", +"[@\tc #717171", +"}@\tc #949694", +"|@\tc #888E87", +"1@\tc #888E8B", +"2@\tc #8B8F84", +"3@\tc #8C9086", +"4@\tc #898C85", +"5@\tc #595B57", +"6@\tc #121212", +"7@\tc #1A1A1A", +"8@\tc #1C1C1C", +"9@\tc #313131", +"0@\tc #2C2C2C", +"a@\tc #070707", +"b@\tc #212121", +"c@\tc #373737", +"d@\tc #3A3A3A", +"e@\tc #0C0C0C", +"f@\tc #4C4C4C", +"g@\tc #4F4F4F", +"h@\tc #6E6E6E", +"i@\tc #5B5B5B", +"j@\tc #787878", +"k@\tc #6A6A6A", +"l@\tc #626262", +"m@\tc #868686", +"n@\tc #6B6B6B", +"o@\tc #8B8B8B", +"p@\tc #7E807C", +"q@\tc #8C8E84", +"r@\tc #8C9085", +"s@\tc #8D9086", +"t@\tc #8A8D85", +"u@\tc #7F827C", +"v@\tc #363836", +"w@\tc #0A0A0A", +"x@\tc #171717", +"y@\tc #161616", +"z@\tc #080808", +"A@\tc #292929", +"B@\tc #1B1B1B", +"C@\tc #494949", +"D@\tc #5C5C5C", +"E@\tc #343434", +"F@\tc #454545", +"G@\tc #7F7F7F", +"H@\tc #9E9E9E", +"I@\tc #949792", +"J@\tc #89908C", +"K@\tc #8B9086", +"L@\tc #656863", +"M@\tc #0D0E0D", +"N@\tc #1E1E1E", +"O@\tc #434343", +"P@\tc #242424", +"Q@\tc #2A2A2A", +"R@\tc #464646", +"S@\tc #737373", +"T@\tc #7D7D7D", +"U@\tc #8A8C82", +"V@\tc #8C8F84", +"W@\tc #8A8F85", +"X@\tc #585955", +"Y@\tc #545454", +"Z@\tc #707070", +"`@\tc #646464", +" #\tc #505050", +".#\tc #878787", +"+#\tc #9A9A9A", +"@#\tc #A3A3A3", +"##\tc #8D908A", +"$#\tc #858D88", +"%#\tc #858D87", +"&#\tc #878D89", +"*#\tc #888B82", +"=#\tc #696A66", +"-#\tc #2D2D2D", +";#\tc #303030", +">#\tc #111111", +",#\tc #232323", +"\'#\tc #414141", +")#\tc #2F2F2F", +"!#\tc #575757", +"~#\tc #7E7F7E", +"{#\tc #898B80", +"]#\tc #8D8F84", +"^#\tc #8D9084", +"/#\tc #8B8D84", +"(#\tc #0F0F0F", +"_#\tc #282828", +":#\tc #676767", +"<#\tc #191919", +"[#\tc #4B4B4B", +"}#\tc #898D88", +"|#\tc #878C88", +"1#\tc #888A7E", +"2#\tc #8D8E84", +"3#\tc #8D9085", +"4#\tc #8D8F86", +"5#\tc #8D8F88", +"6#\tc #8B8C85", +"7#\tc #222220", +"8#\tc #686868", +"9#\tc #949494", +"0#\tc #787978", +"a#\tc #878B85", +"b#\tc #868E87", +"c#\tc #86877B", +"d#\tc #8E8F85", +"e#\tc #8D8F87", +"f#\tc #585A56", +"g#\tc #1D1D1D", +"h#\tc #484848", +"i#\tc #515151", +"j#\tc #252525", +"k#\tc #151515", +"l#\tc #0E0E0E", +"m#\tc #7B7C7B", +"n#\tc #888C87", +"o#\tc #888D87", +"p#\tc #888D82", +"q#\tc #8A8C85", +"r#\tc #141413", +"s#\tc #898989", +"t#\tc #838383", +"u#\tc #767876", +"v#\tc #8D9088", +"w#\tc #6E6F6A", +"x#\tc #7E807E", +"y#\tc #8A8D87", +"z#\tc #8D9087", +"A#\tc #444544", +"B#\tc #565656", +"C#\tc #575452", +"D#\tc #564A47", +"E#\tc #4E423D", +"F#\tc #6A6261", +"G#\tc #535251", +"H#\tc #595959", +"I#\tc #AAAAAA", +"J#\tc #474847", +"K#\tc #8A8D89", +"L#\tc #898D84", +"M#\tc #767872", +"N#\tc #232020", +"O#\tc #5F3D2C", +"P#\tc #5C2412", +"Q#\tc #A98C76", +"R#\tc #8A725E", +"S#\tc #675042", +"T#\tc #5E3028", +"U#\tc #402920", +"V#\tc #383030", +"W#\tc #7F807F", +"X#\tc #747673", +"Y#\tc #868A86", +"Z#\tc #8C8F8A", +"`#\tc #8A8D84", +" $\tc #3A3B39", +".$\tc #5E4C4C", +"+$\tc #795A51", +"@$\tc #825846", +"#$\tc #A57B66", +"$$\tc #C0A288", +"%$\tc #BEA78C", +"&$\tc #8D7A65", +"*$\tc #796554", +"=$\tc #8A7771", +"-$\tc #A39A95", +";$\tc #4C2923", +">$\tc #706160", +",$\tc #3A393A", +"\'$\tc #9B9B9B", +")$\tc #9D9D9D", +"!$\tc #5B5C5B", +"~$\tc #7A7E7A", +"{$\tc #878D8A", +"]$\tc #898D83", +"^$\tc #888C85", +"/$\tc #8E605A", +"($\tc #C27C64", +"_$\tc #BF9377", +":$\tc #BD9F83", +"<$\tc #C1AA8F", +"[$\tc #766655", +"}$\tc #85715D", +"|$\tc #AA9C8E", +"1$\tc #E3D9CE", +"2$\tc #AE9C90", +"3$\tc #3B180E", +"4$\tc #401D1B", +"5$\tc #584136", +"6$\tc #403E3C", +"7$\tc #7C807C", +"8$\tc #898D87", +"9$\tc #898D89", +"0$\tc #878C83", +"a$\tc #70726D", +"b$\tc #98564A", +"c$\tc #BC7C62", +"d$\tc #BE997C", +"e$\tc #BEA488", +"f$\tc #AE9A81", +"g$\tc #867260", +"h$\tc #7E6856", +"i$\tc #3A2926", +"j$\tc #867A68", +"k$\tc #482E27", +"l$\tc #594132", +"m$\tc #674C3F", +"n$\tc #755B49", +"o$\tc #3F2829", +"p$\tc #362320", +"q$\tc #A0A0A0", +"r$\tc #919191", +"s$\tc #8E8F8E", +"t$\tc #878B83", +"u$\tc #373936", +"v$\tc #727271", +"w$\tc #130E0E", +"x$\tc #754434", +"y$\tc #9A593B", +"z$\tc #CE9D81", +"A$\tc #C0A68A", +"B$\tc #8E7A66", +"C$\tc #867160", +"D$\tc #725645", +"E$\tc #3C2919", +"F$\tc #2E221E", +"G$\tc #5D4439", +"H$\tc #735947", +"I$\tc #806752", +"J$\tc #A17E60", +"K$\tc #391C15", +"L$\tc #320A07", +"M$\tc #5F5552", +"N$\tc #A6A6A6", +"O$\tc #8A8D88", +"P$\tc #898C84", +"Q$\tc #0F0F0E", +"R$\tc #0B0B0B", +"S$\tc #443937", +"T$\tc #9B6049", +"U$\tc #AD856B", +"V$\tc #86705F", +"W$\tc #6E5340", +"X$\tc #523A2C", +"Y$\tc #543C33", +"Z$\tc #654C3E", +"`$\tc #785E4B", +" %\tc #927760", +".%\tc #C9A68A", +"+%\tc #D2A688", +"@%\tc #B37F5D", +"#%\tc #4F1E0B", +"$%\tc #3C1405", +"%%\tc #342C29", +"&%\tc #A5A5A5", +"*%\tc #878B86", +"=%\tc #898C88", +"-%\tc #8B8D85", +";%\tc #7B7E78", +">%\tc #2A1C1C", +",%\tc #905746", +"\'%\tc #966551", +")%\tc #6F4F3E", +"!%\tc #60473E", +"~%\tc #5A4036", +"{%\tc #866D55", +"]%\tc #9C8069", +"^%\tc #DCB4A1", +"/%\tc #D4A694", +"(%\tc #B7846C", +"_%\tc #9B5E42", +":%\tc #965A3E", +"<%\tc #58382F", +"[%\tc #522E16", +"}%\tc #5A5C5A", +"|%\tc #8E918D", +"1%\tc #8E8F87", +"2%\tc #8E9088", +"3%\tc #3C3D3A", +"4%\tc #3A302E", +"5%\tc #775644", +"6%\tc #9F6E5D", +"7%\tc #AD8570", +"8%\tc #B7957D", +"9%\tc #C69784", +"0%\tc #C48F7F", +"a%\tc #AC725F", +"b%\tc #A05F4C", +"c%\tc #8C4F3D", +"d%\tc #4E3223", +"e%\tc #787676", +"f%\tc #7B7F79", +"g%\tc #8A8C88", +"h%\tc #8B8D89", +"i%\tc #8C8D85", +"j%\tc #2F2F2E", +"k%\tc #3E3636", +"l%\tc #5C4C45", +"m%\tc #796359", +"n%\tc #6E4B3A", +"o%\tc #816155", +"p%\tc #7D5445", +"q%\tc #582E20", +"r%\tc #726665", +"s%\tc #8C8D86", +"t%\tc #757872", +"u%\tc #7A7C78", +"v%\tc #8B8C88", +"w%\tc #8D8D86", +"x%\tc #454543", +"y%\tc #818280", +"z%\tc #121312", +"A%\tc #787977", +"B%\tc #808280", +"C%\tc #363634", +"D%\tc #6C6E6B", +"E%\tc #82847E", +"F%\tc #676866", +"G%\tc #8D8E86", +"H%\tc #4B4C49", +"I%\tc #828280", +"J%\tc #82837C", +"K%\tc #303130", +"L%\tc #A9A9A9", +"M%\tc #999999", +"N%\tc #858782", +"O%\tc #3F423D", +"P%\tc #ACACAC", +"Q%\tc #BCBCBC", +"R%\tc #AEAEAE", +"S%\tc #ACAEAE", +"T%\tc #B7B8B8", +"U%\tc #BDBDBD", +"V%\tc #A7A7A7", +"W%\tc #B1B1B1", +"X%\tc #A2A2A2", +"Y%\tc #82847F", +"Z%\tc #767675", +"`%\tc #8C8D8B", +" &\tc #92938E", +".&\tc #9E9D9A", +"+&\tc #A3A29E", +"@&\tc #B0AEAB", +"#&\tc #BDBEBB", +"$&\tc #CED6D4", +"%&\tc #CFD8D6", +"&&\tc #BCBDBB", +"*&\tc #DCF1F2", +"=&\tc #D8EEEF", +"-&\tc #BCC9C8", +";&\tc #A8ADAB", +">&\tc #ACADAA", +",&\tc #BAC5C5", +"\'&\tc #B8BCBC", +")&\tc #B0B0B0", +"!&\tc #B6B6B6", +"~&\tc #5C5C5A", +"{&\tc #8C8C88", +"]&\tc #9E9E9B", +"^&\tc #9A9A97", +"/&\tc #9E9E9A", +"(&\tc #A5A4A0", +"_&\tc #B0AEAA", +":&\tc #BCB8B4", +"<&\tc #C9C6C1", +"[&\tc #D0CDC8", +"}&\tc #D5D3CD", +"|&\tc #D5D4CE", +"1&\tc #D9DED9", +"2&\tc #B1B2AE", +"3&\tc #A8AAA5", +"4&\tc #A2A4A0", +"5&\tc #DBF7F7", +"6&\tc #CCE2E0", +"7&\tc #A9ACA9", +"8&\tc #A4A4A4", +"9&\tc #A3A5A2", +"0&\tc #A8A9A6", +"a&\tc #AEACA8", +"b&\tc #B5B3AE", +"c&\tc #BDBBB6", +"d&\tc #C7C5BE", +"e&\tc #D3D1C8", +"f&\tc #DAD9CE", +"g&\tc #DEDDD3", +"h&\tc #DFE0D5", +"i&\tc #DCDED4", +"j&\tc #D2D4CE", +"k&\tc #C6C8C3", +"l&\tc #BDC0BB", +"m&\tc #B6BAB4", +"n&\tc #D8ECEA", +"o&\tc #DFF8F6", +"p&\tc #A4ABA6", +"q&\tc #949790", +"r&\tc #D4F0F0", +"s&\tc #D0E0E0", +"t&\tc #B6BBBB", +"u&\tc #C4C4C4", +"v&\tc #C0C0C0", +"w&\tc #B7B7B7", +"x&\tc #7D7E7D", +"y&\tc #BCC2C3", +"z&\tc #BABEBC", +"A&\tc #C0BEB9", +"B&\tc #CCC8C2", +"C&\tc #D3D1C7", +"D&\tc #D8D6C9", +"E&\tc #DEDDCD", +"F&\tc #E5E4D4", +"G&\tc #E6E6D6", +"H&\tc #E6E9D8", +"I&\tc #E6E9DA", +"J&\tc #E4E8DA", +"K&\tc #DCE0D4", +"L&\tc #D4D8CD", +"M&\tc #CCD2C8", +"N&\tc #CDD4CB", +"O&\tc #C0C5BC", +"P&\tc #ADB4AB", +"Q&\tc #A1A69E", +"R&\tc #939590", +"S&\tc #D8F8F8", +"T&\tc #CEE7E7", +"U&\tc #ACB1B0", +"V&\tc #ACADAD", +"W&\tc #BBBBBB", +"X&\tc #A8A8A8", +"Y&\tc #A1A1A1", +"Z&\tc #8A8B87", +"`&\tc #A8A9A9", +" *\tc #D4E6E6", +".*\tc #C9CBC6", +"+*\tc #D3D2CA", +"@*\tc #DDDDD0", +"#*\tc #E0E2D1", +"$*\tc #E0E2CE", +"%*\tc #E3E4D0", +"&*\tc #E6E8D4", +"**\tc #E9ECDA", +"=*\tc #EAEDDE", +"-*\tc #EAEEE0", +";*\tc #E8EEE0", +">*\tc #E3E9DC", +",*\tc #DEE4D8", +"\'*\tc #DBE2D7", +")*\tc #D5DCD1", +"!*\tc #C4CCC0", +"~*\tc #B3B8AE", +"{*\tc #A3A79F", +"]*\tc #BED2D0", +"^*\tc #B3C5C2", +"/*\tc #929894", +"(*\tc #AFBEBB", +"_*\tc #CBDEDE", +":*\tc #B9BEBE", +"<*\tc #BFBFBF", +"[*\tc #8A8B86", +"}*\tc #CED6D6", +"|*\tc #C2C4BF", +"1*\tc #CACDC4", +"2*\tc #DADBCC", +"3*\tc #E2E3D2", +"4*\tc #E4E7D1", +"5*\tc #E1E5CD", +"6*\tc #E2E7CE", +"7*\tc #E4ECD5", +"8*\tc #E8F0DD", +"9*\tc #EAF1E1", +"0*\tc #ECF2E6", +"a*\tc #EDF1E6", +"b*\tc #EBF0E4", +"c*\tc #EAEEE2", +"d*\tc #E7ECDE", +"e*\tc #DBE2D3", +"f*\tc #C8CDC0", +"g*\tc #B6BAAF", +"h*\tc #A6A8A2", +"i*\tc #8E908B", +"j*\tc #B2C3C0", +"k*\tc #D8F7F7", +"l*\tc #CCE3E3", +"m*\tc #B2B8B8", +"n*\tc #C3C3C3", +"o*\tc #AFAFAF", +"p*\tc #BCBEB9", +"q*\tc #C4C7BF", +"r*\tc #D1D6C7", +"s*\tc #DCE2D0", +"t*\tc #E8E9D5", +"u*\tc #E6E9D2", +"v*\tc #E3E8CE", +"w*\tc #DFEBD0", +"x*\tc #E1EED8", +"y*\tc #E6F1DE", +"z*\tc #EAF4E6", +"A*\tc #ECF4E8", +"B*\tc #F3F4E8", +"C*\tc #F3F3E7", +"D*\tc #F1F2E4", +"E*\tc #E8EBDD", +"F*\tc #DCDED1", +"G*\tc #CCCEC3", +"H*\tc #BABCB6", +"I*\tc #ACAEA8", +"J*\tc #9B9C98", +"K*\tc #91928D", +"L*\tc #B1C2C0", +"M*\tc #CDE9E9", +"N*\tc #939994", +"O*\tc #A4A5A2", +"P*\tc #BFC5C5", +"Q*\tc #CACACA", +"R*\tc #949592", +"S*\tc #9F9F9F", +"T*\tc #B0B1B0", +"U*\tc #BFC5BC", +"V*\tc #CCD2C6", +"W*\tc #D8DED0", +"X*\tc #E4E8D8", +"Y*\tc #E8ECD8", +"Z*\tc #E8EDD5", +"`*\tc #E2EDD3", +" =\tc #E1EED7", +".=\tc #E1F2DA", +"+=\tc #E4F4E2", +"@=\tc #E8F6E7", +"#=\tc #F2F6E8", +"$=\tc #F4F6E8", +"%=\tc #F5F6E8", +"&=\tc #F2F2E4", +"*=\tc #E6E7DB", +"==\tc #DBDCD2", +"-=\tc #CECEC8", +";=\tc #BEC0BB", +">=\tc #B4B5B2", +",=\tc #9E9F9A", +"\'=\tc #B3C4C1", +")=\tc #BACECC", +"!=\tc #939894", +"~=\tc #B1C2BF", +"{=\tc #D7F7F7", +"]=\tc #CDE0E0", +"^=\tc #B5B6B6", +"/=\tc #888886", +"(=\tc #B5B5B5", +"_=\tc #C6C6C6", +":=\tc #C7CEC9", +"<=\tc #D8E6DC", +"[=\tc #D4DDD0", +"}=\tc #DEE7D9", +"|=\tc #E2ECDD", +"1=\tc #E7EEE0", +"2=\tc #E3EEDE", +"3=\tc #E1EEDB", +"4=\tc #E0F1DB", +"5=\tc #E2F4E0", +"6=\tc #E5F7E3", +"7=\tc #F0F8E3", +"8=\tc #F1F7E4", +"9=\tc #F4F8E6", +"0=\tc #F4F5E6", +"a=\tc #ECECE1", +"b=\tc #E3E4DB", +"c=\tc #D9DAD4", +"d=\tc #CDCDCA", +"e=\tc #C4C5C2", +"f=\tc #B6B7B4", +"g=\tc #B6BBB7", +"h=\tc #A6A8A3", +"i=\tc #9A9C96", +"j=\tc #8D8F89", +"k=\tc #B2C2C0", +"l=\tc #D0EAEA", +"m=\tc #C8CBCB", +"n=\tc #8C8D8C", +"o=\tc #B3B6B6", +"p=\tc #E4FAF3", +"q=\tc #D2D9CC", +"r=\tc #DBE4D7", +"s=\tc #DFE8DC", +"t=\tc #E4ECE0", +"u=\tc #E4EEE1", +"v=\tc #E0EDDE", +"w=\tc #DEEEDE", +"x=\tc #E1F2E1", +"y=\tc #E3F4E1", +"z=\tc #E6F3E0", +"A=\tc #E8F5E1", +"B=\tc #ECF7E2", +"C=\tc #F0F6E4", +"D=\tc #EFF2E4", +"E=\tc #EAEBE2", +"F=\tc #E3E4DF", +"G=\tc #DADBD8", +"H=\tc #D4D4D2", +"I=\tc #CFD0CE", +"J=\tc #C9CAC8", +"K=\tc #C0C2BF", +"L=\tc #BBBDBA", +"M=\tc #B6B8B4", +"N=\tc #B9CAC7", +"O=\tc #949994", +"P=\tc #969894", +"Q=\tc #BEC3C3", +"R=\tc #B2B2B2", +"S=\tc #8B8C8B", +"T=\tc #7C7E79", +"U=\tc #BFC6C2", +"V=\tc #C5CAC0", +"W=\tc #D6DDD3", +"X=\tc #DCE4D9", +"Y=\tc #DEE7DA", +"Z=\tc #E0E8DD", +"`=\tc #DCE8D9", +" -\tc #D9E8D8", +".-\tc #DCECDD", +"+-\tc #DFEFDE", +"@-\tc #E4F0DC", +"#-\tc #E4F1DE", +"$-\tc #E7F3E0", +"%-\tc #EBF6E4", +"&-\tc #EDF6E5", +"*-\tc #EDF2E7", +"=-\tc #ECEDE9", +"--\tc #E6E7E5", +";-\tc #E1E1E0", +">-\tc #DCDCDB", +",-\tc #D8D8D7", +"\'-\tc #D5D5D4", +")-\tc #D3D3D2", +"!-\tc #D1D2D0", +"~-\tc #CED0CE", +"{-\tc #CCCDCA", +"]-\tc #D5DDDC", +"^-\tc #B4BAB6", +"/-\tc #999B96", +"(-\tc #A0AAA6", +"_-\tc #D4F2F2", +":-\tc #AFB4B4", +"<-\tc #B4B4B4", +"[-\tc #9C9C9A", +"}-\tc #B2B3B2", +"|-\tc #B1B5AD", +"1-\tc #C3CAC0", +"2-\tc #CFD6CD", +"3-\tc #D4DDD3", +"4-\tc #D6DFD3", +"5-\tc #D4E2D4", +"6-\tc #D7E7D8", +"7-\tc #DCEADA", +"8-\tc #E1ECDA", +"9-\tc #E2EFDC", +"0-\tc #E6F2DE", +"a-\tc #E8F4E1", +"b-\tc #ECF8E5", +"c-\tc #ECF7E6", +"d-\tc #F0F4EB", +"e-\tc #F0F0EE", +"f-\tc #ECECEB", +"g-\tc #E8E8E8", +"h-\tc #E6E6E6", +"i-\tc #E4E4E3", +"j-\tc #E2E2E1", +"k-\tc #E0E0DE", +"l-\tc #DFDFDE", +"m-\tc #DEDEDD", +"n-\tc #DADBD9", +"o-\tc #D2D3D1", +"p-\tc #C1C2BE", +"q-\tc #C3D1CF", +"r-\tc #DAF8F8", +"s-\tc #BCBEBD", +"t-\tc #9B9C99", +"u-\tc #8D8F8A", +"v-\tc #8E8F8A", +"w-\tc #BEBEBE", +"x-\tc #BCC2BF", +"y-\tc #D6EAE5", +"z-\tc #E3FAF6", +"A-\tc #D6E4DC", +"B-\tc #C7CFC6", +"C-\tc #CAD2C8", +"D-\tc #CCD7CC", +"E-\tc #D0E0D2", +"F-\tc #D8E5D5", +"G-\tc #DEEAD8", +"H-\tc #E3EFDC", +"I-\tc #E6F4DF", +"J-\tc #E8F5E3", +"K-\tc #ECF8E6", +"L-\tc #EFFBEA", +"M-\tc #F2FAEB", +"N-\tc #F4F8F1", +"O-\tc #F6F7F5", +"P-\tc #F4F5F4", +"Q-\tc #F4F4F3", +"R-\tc #F2F2F2", +"S-\tc #EEEEEE", +"T-\tc #ECEDEC", +"U-\tc #EBEBEB", +"V-\tc #EAEAE9", +"W-\tc #E9E9E8", +"X-\tc #E8E8E7", +"Y-\tc #D5D5D2", +"Z-\tc #D9E3E0", +"`-\tc #E4FAF9", +" ;\tc #CEDEDD", +".;\tc #A7A8A3", +"+;\tc #A6A7A5", +"@;\tc #9D9E9A", +"#;\tc #91928E", +"$;\tc #90918C", +"%;\tc #8F908C", +"&;\tc #8F908B", +"*;\tc #8E8E89", +"=;\tc #B4B5B5", +"-;\tc #D4EBE9", +";;\tc #DEF9F5", +">;\tc #CBDBD3", +",;\tc #BAC1B8", +"\';\tc #BEC4BC", +");\tc #C2CAC1", +"!;\tc #C9D5C9", +"~;\tc #D3DECE", +"{;\tc #DCE8D7", +"];\tc #E4F1DD", +"^;\tc #E9F7E2", +"/;\tc #EBF8E5", +"(;\tc #EDF9E8", +"_;\tc #F0FBE9", +":;\tc #F2FDEC", +"<;\tc #F5FDF0", +"[;\tc #F9FDF6", +"};\tc #FAFCFA", +"|;\tc #FAFAFA", +"1;\tc #F8F8F8", +"2;\tc #F6F6F6", +"3;\tc #F4F4F4", +"4;\tc #F3F3F2", +"5;\tc #F2F2F1", +"6;\tc #EFEFEE", +"7;\tc #E6E6E5", +"8;\tc #DCDCDA", +"9;\tc #D6DAD8", +"0;\tc #D0D7D4", +"a;\tc #BABBB6", +"b;\tc #B3B3AF", +"c;\tc #AAABA6", +"d;\tc #A4A59E", +"e;\tc #A0A09B", +"f;\tc #9C9D98", +"g;\tc #989893", +"h;\tc #959691", +"i;\tc #92948F", +"j;\tc #C2C7C7", +"k;\tc #D9F6F4", +"l;\tc #C2D4CE", +"m;\tc #ADB3AB", +"n;\tc #B3B9B2", +"o;\tc #B9C0B8", +"p;\tc #C4CCC3", +"q;\tc #D0D9CA", +"r;\tc #D9E6D5", +"s;\tc #E4F0DD", +"t;\tc #ECF8E4", +"u;\tc #EDF9E7", +"v;\tc #ECF9E7", +"w;\tc #EDF8E6", +"x;\tc #F0FBE8", +"y;\tc #F4FDEC", +"z;\tc #F8FEF2", +"A;\tc #FBFEF8", +"B;\tc #FBFCFA", +"C;\tc #FAFBFA", +"D;\tc #FAFAF9", +"E;\tc #F6F6F5", +"F;\tc #F2F3F2", +"G;\tc #ECECEC", +"H;\tc #D7D8D5", +"I;\tc #CBCCC8", +"J;\tc #C1C2BD", +"K;\tc #BEBFBA", +"L;\tc #BDBDB7", +"M;\tc #BABAB4", +"N;\tc #B6B6B0", +"O;\tc #B2B2AB", +"P;\tc #AAAAA3", +"Q;\tc #A2A19C", +"R;\tc #9D9E98", +"S;\tc #92928E", +"T;\tc #CEDCDC", +"U;\tc #BBCCC8", +"V;\tc #A4A8A2", +"W;\tc #ACB1AB", +"X;\tc #B5BAB3", +"Y;\tc #C0C7BF", +"Z;\tc #CFD6CA", +"`;\tc #D8E3D3", +" >\tc #E3EDDB", +".>\tc #EBF5E2", +"+>\tc #EAF8E8", +"@>\tc #EAF7E5", +"#>\tc #EAF6E4", +"$>\tc #F6FEEF", +"%>\tc #FBFEF5", +"&>\tc #FCFEF9", +"*>\tc #FCFDFA", +"=>\tc #FCFCFA", +"->\tc #F9FAF9", +";>\tc #F0F0F0", +">>\tc #E0E0E0", +",>\tc #D6D6D4", +"\'>\tc #CECFCC", +")>\tc #CBCBC8", +"!>\tc #CBCCC6", +"~>\tc #CCCDC6", +"{>\tc #CCCDC5", +"]>\tc #CBCBC4", +"^>\tc #C5C4BE", +"/>\tc #BCBBB4", +"(>\tc #B1B0AA", +"_>\tc #A7A6A0", +":>\tc #9B9C95", +"<>\tc #969690", +"[>\tc #8F908A", +"}>\tc #8E908A", +"|>\tc #989999", +"1>\tc #AEB6B3", +"2>\tc #9CA09A", +"3>\tc #A6ABA4", +"4>\tc #BEC7C2", +"5>\tc #D2E0DA", +"6>\tc #DBE9DF", +"7>\tc #D7E0D2", +"8>\tc #E0EADA", +"9>\tc #E6F1DF", +"0>\tc #E8F6E5", +"a>\tc #E8F8E6", +"b>\tc #EBF7E5", +"c>\tc #E7F5E2", +"d>\tc #F1FAEB", +"e>\tc #F8FDF1", +"f>\tc #FBFEF6", +"g>\tc #FDFEF9", +"h>\tc #FEFEFA", +"i>\tc #FDFEFA", +"j>\tc #FDFDFA", +"k>\tc #F5F5F4", +"l>\tc #E3E3E2", +"m>\tc #DDDDDC", +"n>\tc #DADAD7", +"o>\tc #D9D9D6", +"p>\tc #DADAD4", +"q>\tc #DBDBD4", +"r>\tc #DCDCD4", +"s>\tc #D9D8D0", +"t>\tc #D1D0C8", +"u>\tc #C5C3BC", +"v>\tc #B8B7B0", +"w>\tc #ABA9A3", +"x>\tc #A1A19B", +"y>\tc #989993", +"z>\tc #94948F", +"A>\tc #90908B", +"B>\tc #8E8E8A", +"C>\tc #B9BAB9", +"D>\tc #B2BFBC", +"E>\tc #C0D1CE", +"F>\tc #E0FAF8", +"G>\tc #E4FAF4", +"H>\tc #CDD6CA", +"I>\tc #D7DFD2", +"J>\tc #E1EADC", +"K>\tc #E5EEDF", +"L>\tc #E7F3E4", +"M>\tc #E8F3E0", +"N>\tc #EBF5E5", +"O>\tc #F1F9EA", +"P>\tc #F7FCF2", +"Q>\tc #FAFEF4", +"R>\tc #FCFFF7", +"S>\tc #FEFEF8", +"T>\tc #FCFEF8", +"U>\tc #FCFCFB", +"V>\tc #FAFBF9", +"W>\tc #F6F6F4", +"X>\tc #F1F1F0", +"Y>\tc #ECEDEB", +"Z>\tc #E6E6E4", +"`>\tc #E5E5E3", +" ,\tc #E5E5E2", +".,\tc #E6E6E1", +"+,\tc #E7E7E0", +"@,\tc #E4E4DC", +"#,\tc #DEDED6", +"$,\tc #D6D5CD", +"%,\tc #CDCAC3", +"&,\tc #BDBBB4", +"*,\tc #B1AFA9", +"=,\tc #A6A6A0", +"-,\tc #9E9E98", +";,\tc #C6CBCA", +">,\tc #D9F5F3", +",,\tc #DFFAF8", +"\',\tc #DEF2EC", +"),\tc #CAD0C5", +"!,\tc #D9DED5", +"~,\tc #E2E8DF", +"{,\tc #E7EDE4", +"],\tc #E9F2E6", +"^,\tc #E8F4E4", +"/,\tc #E9F5E4", +"(,\tc #EAF5E4", +"_,\tc #E6F2E1", +":,\tc #EBF5E6", +"<,\tc #F2FAEE", +"[,\tc #FCFEF5", +"},\tc #FEFFF7", +"|,\tc #FEFFF6", +"1,\tc #FEFEF3", +"2,\tc #FEFEF4", +"3,\tc #FDFDF9", +"4,\tc #FCFCF9", +"5,\tc #F8F8F6", +"6,\tc #F5F5F2", +"7,\tc #F1F2EF", +"8,\tc #EFF0EE", +"9,\tc #EFEFEC", +"0,\tc #EEEFEB", +"a,\tc #EDEDE7", +"b,\tc #EAEAE4", +"c,\tc #E8E8DF", +"d,\tc #E3E3DA", +"e,\tc #DDDBD4", +"f,\tc #D0CEC7", +"g,\tc #C3C0BA", +"h,\tc #B6B4AE", +"i,\tc #ABAAA5", +"j,\tc #9C9B97", +"k,\tc #969691", +"l,\tc #BCC5C4", +"m,\tc #DCF8F6", +"n,\tc #C8D3CC", +"o,\tc #C8CBC2", +"p,\tc #D7DAD3", +"q,\tc #E1E3DD", +"r,\tc #E8EAE4", +"s,\tc #EAEEE6", +"t,\tc #EBF2E7", +"u,\tc #EAF5E6", +"v,\tc #EAF5E3", +"w,\tc #E8F2E2", +"x,\tc #E9F2E4", +"y,\tc #EEF7EA", +"z,\tc #F6FBEE", +"A,\tc #FAFDF3", +"B,\tc #FDFEF6", +"C,\tc #FFFFF4", +"D,\tc #FFFFF2", +"E,\tc #FFFFF3", +"F,\tc #FEFEF7", +"G,\tc #FCFCF8", +"H,\tc #FAFAF6", +"I,\tc #F7F7F4", +"J,\tc #F5F5F1", +"K,\tc #F2F2EE", +"L,\tc #F0F0EB", +"M,\tc #EEEEE8", +"N,\tc #ECECE6", +"O,\tc #E9E9E0", +"P,\tc #E6E6DC", +"Q,\tc #DCD9D2", +"R,\tc #D2CFC8", +"S,\tc #C4C2BB", +"T,\tc #B8B6AF", +"U,\tc #ACAAA6", +"V,\tc #A5A39E", +"W,\tc #A09F9B", +"X,\tc #9A9A95", +"Y,\tc #959690", +"Z,\tc #C8D2D2", +"`,\tc #B0B1A8", +" \'\tc #C2C3B8", +".\'\tc #CECFC6", +"+\'\tc #E2E4DE", +"@\'\tc #ECEEE7", +"#\'\tc #EDF3E8", +"$\'\tc #EEF6E8", +"%\'\tc #EDF6E7", +"&\'\tc #ECF4E6", +"*\'\tc #E9F3E3", +"=\'\tc #F0F8E8", +"-\'\tc #F6FBEF", +";\'\tc #FEFEF5", +">\'\tc #FFFFF1", +",\'\tc #FFFFF6", +"\'\'\tc #FEFEF9", +")\'\tc #FAFAF8", +"!\'\tc #F8F8F4", +"~\'\tc #F6F6F0", +"{\'\tc #F2F3ED", +"]\'\tc #F1F1EA", +"^\'\tc #EFEFE9", +"/\'\tc #ECECE4", +"(\'\tc #EAEAE0", +"_\'\tc #E3E0D8", +":\'\tc #D9D8CE", +"<\'\tc #CDCAC4", +"[\'\tc #C1BEB8", +"}\'\tc #B5B4AE", +"|\'\tc #AEACA7", +"1\'\tc #AAA9A4", +"2\'\tc #A6A4A0", +"3\'\tc #9F9F9A", +"4\'\tc #9A9994", +"5\'\tc #92948E", +"6\'\tc #A3A49F", +"7\'\tc #B2B4A8", +"8\'\tc #D0D1C7", +"9\'\tc #DCDCD6", +"0\'\tc #ECF1EC", +"a\'\tc #EDF0EA", +"b\'\tc #EEF0E9", +"c\'\tc #F2F4ED", +"d\'\tc #F3F6EE", +"e\'\tc #F2F6EE", +"f\'\tc #EEF6EA", +"g\'\tc #ECF4E5", +"h\'\tc #EDF6E6", +"i\'\tc #F2F8EA", +"j\'\tc #F6FAEE", +"k\'\tc #FBFCF0", +"l\'\tc #FEFEF0", +"m\'\tc #FEFEF1", +"n\'\tc #FFFFF0", +"o\'\tc #FFFFEF", +"p\'\tc #FDFDFB", +"q\'\tc #F6F6F2", +"r\'\tc #F5F5EE", +"s\'\tc #F3F3EC", +"t\'\tc #F0F0E8", +"u\'\tc #EEEEE6", +"v\'\tc #EAE9E0", +"w\'\tc #E2E1D8", +"x\'\tc #CBCAC3", +"y\'\tc #C1C0BA", +"z\'\tc #B8B6B2", +"A\'\tc #B2B2AC", +"B\'\tc #B0B0AA", +"C\'\tc #AEADA8", +"D\'\tc #A7A7A1", +"E\'\tc #A0A09C", +"F\'\tc #9B9C96", +"G\'\tc #989892", +"H\'\tc #949590", +"I\'\tc #90928C", +"J\'\tc #BCC1BE", +"K\'\tc #E2F9F6", +"L\'\tc #E8FBF7", +"M\'\tc #EEFCF8", +"N\'\tc #F2FDF9", +"O\'\tc #EEF2EE", +"P\'\tc #ECECE7", +"Q\'\tc #F1F1EC", +"R\'\tc #F4F4F1", +"S\'\tc #F6F6F3", +"T\'\tc #F4F7F0", +"U\'\tc #F0F6EB", +"V\'\tc #EEF5E6", +"W\'\tc #EEF6E6", +"X\'\tc #F1F7E8", +"Y\'\tc #F8F9EA", +"Z\'\tc #FBFAEB", +"`\'\tc #FCFCEC", +" )\tc #FEFDED", +".)\tc #FEFEED", +"+)\tc #FEFFEE", +"@)\tc #FBFBF8", +"#)\tc #F9F9F6", +"$)\tc #F8F8F3", +"%)\tc #F4F4EC", +"&)\tc #F2F2EA", +"*)\tc #EFEEE5", +"=)\tc #E8E8E0", +"-)\tc #E0DFD6", +";)\tc #D6D6CD", +">)\tc #CECDC5", +",)\tc #C6C5BE", +"\')\tc #C0BFBA", +"))\tc #BEBCB7", +"!)\tc #BFBDB7", +"~)\tc #BABAB2", +"{)\tc #A2A49E", +"])\tc #9C9C98", +"^)\tc #969893", +"/)\tc #929490", +"()\tc #90928D", +"_)\tc #8F918C", +":)\tc #C2D0CE", +"<)\tc #E2F9F7", +"[)\tc #E8FBF6", +"})\tc #EEFCF9", +"|)\tc #EAF0EC", +"1)\tc #E8E8E4", +"2)\tc #EEEEEB", +"3)\tc #F4F7EE", +"4)\tc #F1F6EA", +"5)\tc #EEF5E3", +"6)\tc #EEF6E2", +"7)\tc #EEF6E5", +"8)\tc #F2F7E6", +"9)\tc #F5F9E8", +"0)\tc #F9FAEA", +"a)\tc #FBFBEA", +"b)\tc #FDFDEC", +"c)\tc #FEFEEC", +"d)\tc #FFFFF9", +"e)\tc #FEFEFB", +"f)\tc #F9F9F3", +"g)\tc #F6F7EE", +"h)\tc #F5F5ED", +"i)\tc #F4F4EA", +"j)\tc #F0F0E7", +"k)\tc #E0E0D8", +"l)\tc #DADAD1", +"m)\tc #D4D4CB", +"n)\tc #CFCFC6", +"o)\tc #CDCDC5", +"p)\tc #CFCEC6", +"q)\tc #CDCCC4", +"r)\tc #C7C6BE", +"s)\tc #C0C0BA", +"t)\tc #B3B4AE", +"u)\tc #A8A8A3", +"v)\tc #9DA09A", +"w)\tc #9A9B96", +"x)\tc #969993", +"y)\tc #949690", +"z)\tc #8F918B", +"A)\tc #8C908A", +"B)\tc #8C908B", +"C)\tc #D3DDDD", +"D)\tc #E0F6F4", +"E)\tc #E8FBF8", +"F)\tc #D8DAD6", +"G)\tc #E3E4DD", +"H)\tc #E9EAE6", +"I)\tc #EEEEEC", +"J)\tc #F4F6F0", +"K)\tc #F2F7EC", +"L)\tc #F0F6E6", +"M)\tc #ECF5E5", +"N)\tc #ECF6E4", +"O)\tc #EDF6E3", +"P)\tc #F0F8E5", +"Q)\tc #F2F8E6", +"R)\tc #F6FAE8", +"S)\tc #FAFBEA", +"T)\tc #FCFCEB", +"U)\tc #FFFFF7", +"V)\tc #FCFCF7", +"W)\tc #FAFBF6", +"X)\tc #F8F8F1", +"Y)\tc #F7F7EE", +"Z)\tc #F6F6ED", +"`)\tc #EBEBE3", +" !\tc #E5E5DD", +".!\tc #E2E1DA", +"+!\tc #DDDCD4", +"@!\tc #DCDCD2", +"#!\tc #DCDAD1", +"$!\tc #D8D8D0", +"%!\tc #D4D4CC", +"&!\tc #C7C7C0", +"*!\tc #B8BAB3", +"=!\tc #AEAFA9", +"-!\tc #A7A8A2", +";!\tc #A1A29D", +">!\tc #9B9D96", +",!\tc #989A94", +"\'!\tc #90938C", +")!\tc #8E918C", +"!!\tc #BEC2C1", +"~!\tc #D2E2E1", +"{!\tc #C5C7BF", +"]!\tc #D3D4CC", +"^!\tc #DEDFDA", +"/!\tc #E4E4E2", +"(!\tc #EBEBEA", +"_!\tc #F5F5F3", +":!\tc #F6F7F4", +"~\tc #D0D0D0", +",~\tc #C7D1CE", +"\'~\tc #E5FAF3", +")~\tc #ECFCF6", +"!~\tc #F0FCFA", +"~~\tc #E8EAE8", +"{~\tc #ECECEA", +"]~\tc #F6F7F6", +"^~\tc #F8F9F7", +"/~\tc #F8F9F4", +"(~\tc #F4F8ED", +"_~\tc #F0F4E5", +":~\tc #EFF3E0", +"<~\tc #F1F2DF", +"[~\tc #F0F2DE", +"}~\tc #F4F3DF", +"|~\tc #F4F4DF", +"1~\tc #F6F4E0", +"2~\tc #F7F6E2", +"3~\tc #FAF8E4", +"4~\tc #FAF9E6", +"5~\tc #FCFAE8", +"6~\tc #FCFCEF", +"7~\tc #FCFCF4", +"8~\tc #FAFBF5", +"9~\tc #F8F8F0", +"0~\tc #F4F5EE", +"a~\tc #F2F2ED", +"b~\tc #F0F0E9", +"c~\tc #E7E7DF", +"d~\tc #E0E0D9", +"e~\tc #D9DAD3", +"f~\tc #D4D4CE", +"g~\tc #D1D1C9", +"h~\tc #CACCC4", +"i~\tc #C4C6BD", +"j~\tc #BABBB5", +"k~\tc #B0B3AD", +"l~\tc #A1A29C", +"m~\tc #9B9E97", +"n~\tc #8D908B", +"o~\tc #757574", +"p~\tc #474745", +"q~\tc #D4D4D4", +"r~\tc #C5C5C5", +"s~\tc #D8E1DF", +"t~\tc #E6FAF6", +"u~\tc #E8F5F2", +"v~\tc #DDDEDA", +"w~\tc #F9F9F7", +"x~\tc #F7F9F4", +"y~\tc #F6F7ED", +"z~\tc #F2F5E6", +"A~\tc #F2F4E2", +"B~\tc #F2F4DF", +"C~\tc #F2F2DD", +"D~\tc #F2F2DC", +"E~\tc #F2F1DC", +"F~\tc #F4F1DC", +"G~\tc #F5F2DD", +"H~\tc #F8F2DE", +"I~\tc #F8F4E0", +"J~\tc #FAF7E2", +"K~\tc #FAF9E5", +"L~\tc #FBFAEA", +"M~\tc #FCFCF0", +"N~\tc #FDFDF5", +"O~\tc #FCFCF5", +"P~\tc #FAFBF4", +"Q~\tc #F7F7F1", +"R~\tc #F5F5F0", +"S~\tc #F4F4EE", +"T~\tc #F3F3ED", +"U~\tc #EFEFE7", +"V~\tc #E9EAE2", +"W~\tc #E4E5DE", +"X~\tc #DCDCD5", +"Y~\tc #D6D7CF", +"Z~\tc #D1D2CB", +"`~\tc #CACCC5", +" {\tc #C2C3BF", +".{\tc #BDBEB9", +"+{\tc #B8B9B4", +"@{\tc #B4B6AF", +"#{\tc #B2B3AC", +"${\tc #ADAEA8", +"%{\tc #A2A29D", +"&{\tc #90938F", +"*{\tc #8B8E8A", +"={\tc #797976", +"-{\tc #555553", +";{\tc #C9C9C9", +">{\tc #CACCC7", +",{\tc #D6D6D2", +"\'{\tc #E2E2DE", +"){\tc #F7F7F6", +"!{\tc #F9F9F8", +"~{\tc #F7F8EE", +"{{\tc #F6F7EA", +"]{\tc #F3F4E1", +"^{\tc #F3F3DE", +"/{\tc #F3F2DC", +"({\tc #F3F1DC", +"_{\tc #F3F0DB", +":{\tc #F5EFDB", +"<{\tc #F8F0DC", +"[{\tc #F6F2DC", +"}{\tc #F7F3DD", +"|{\tc #F8F4DE", +"1{\tc #F6F4DE", +"2{\tc #F7F6E1", +"3{\tc #F9F8E4", +"4{\tc #FAFAE9", +"5{\tc #FCFBEF", +"6{\tc #FCFCF3", +"7{\tc #E9EAE4", +"8{\tc #E6E7E0", +"9{\tc #E1E2DB", +"0{\tc #DDDED6", +"a{\tc #D4D5D2", +"b{\tc #CED0CC", +"c{\tc #C9CAC6", +"d{\tc #C6C7BE", +"e{\tc #C2C2BC", +"f{\tc #B7B7B1", +"g{\tc #999C96", +"h{\tc #8E928C", +"i{\tc #90908C", +"j{\tc #444542", +"k{\tc #C5C5C2", +"l{\tc #DDDDD8", +"m{\tc #E9E9E6", +"n{\tc #F0F0ED", +"o{\tc #F2F2F0", +"p{\tc #F9FAF7", +"q{\tc #F8F9F2", +"r{\tc #F5F6E7", +"s{\tc #F2F2DE", +"t{\tc #F4F2DC", +"u{\tc #F4EFDB", +"v{\tc #F4EEDB", +"w{\tc #F6EEDB", +"x{\tc #F5F0DB", +"y{\tc #F7F1DC", +"z{\tc #F6F2DD", +"A{\tc #F5F4DC", +"B{\tc #F6F6DF", +"C{\tc #F5F5DF", +"D{\tc #F6F6E2", +"E{\tc #F6F6E3", +"F{\tc #F9F9EC", +"G{\tc #FBFCF6", +"H{\tc #F7F8F1", +"I{\tc #F6F6EF", +"J{\tc #F4F4EF", +"K{\tc #EDEEE8", +"L{\tc #E9EAE3", +"M{\tc #E2E2DF", +"N{\tc #DEDEDC", +"O{\tc #D9DAD6", +"P{\tc #D8D9D2", +"Q{\tc #D8D8CF", +"R{\tc #C9C8C2", +"S{\tc #B9B8B3", +"T{\tc #A8A9A4", +"U{\tc #9C9E98", +"V{\tc #949791", +"W{\tc #90948F", +"X{\tc #93938F", +"Y{\tc #575855", +"Z{\tc #CCCCCA", +"`{\tc #C7C8C4", +" ]\tc #E7E8E4", +".]\tc #F0F1EC", +"+]\tc #F3F3EE", +"@]\tc #F9F9F9", +"#]\tc #F4F3E5", +"$]\tc #F2F0DB", +"%]\tc #F4F1DA", +"&]\tc #F4F0DA", +"*]\tc #F2ECDB", +"=]\tc #F6EBDA", +"-]\tc #F8ECDA", +";]\tc #F6EED9", +">]\tc #F7EFD9", +",]\tc #F6F1DA", +"\']\tc #F4F4DC", +")]\tc #F4F4DE", +"!]\tc #F6F5DC", +"~]\tc #F7F6E0", +"{]\tc #F8F8E8", +"]]\tc #FBFAF0", +"^]\tc #FDFCF5", +"/]\tc #FBFBF3", +"(]\tc #FAFAF2", +"_]\tc #F8F8F5", +":]\tc #F2F3F0", +"<]\tc #EFF0EC", +"[]\tc #ECEDEA", +"}]\tc #EAEAE7", +"|]\tc #E5E6E2", +"1]\tc #E3E4DE", +"2]\tc #DEDFD9", +"3]\tc #D4D5CC", +"4]\tc #C5C6BE", +"5]\tc #B5B6B0", +"6]\tc #A5A6A0", +"7]\tc #9B9D97", +"8]\tc #90938E", +"9]\tc #8F928D", +"0]\tc #989995", +"a]\tc #8B8B86", +"b]\tc #747471", +"c]\tc #2D2D2C", +"d]\tc #ABABAB", +"e]\tc #BDBDBC", +"f]\tc #C1C1BE", +"g]\tc #D2D2D0", +"h]\tc #ECECE8", +"i]\tc #EFF0EB", +"j]\tc #F0F1EA", +"k]\tc #F8F8EF", +"l]\tc #F3F3E2", +"m]\tc #F4F0DC", +"n]\tc #F5F0DA", +"o]\tc #F6F0DC", +"p]\tc #F4EDDB", +"q]\tc #F5ECDA", +"r]\tc #F5EBD9", +"s]\tc #F4ECD8", +"t]\tc #F6EFD9", +"u]\tc #F5F0D9", +"v]\tc #F3F0DA", +"w]\tc #F6F4DD", +"x]\tc #F6F5DD", +"y]\tc #F5F4DF", +"z]\tc #F6F6E4", +"A]\tc #FBFBF2", +"B]\tc #FDFDF6", +"C]\tc #F4F4F2", +"D]\tc #EFEFED", +"E]\tc #E8E9E4", +"F]\tc #E4E4DE", +"G]\tc #DADBD4", +"H]\tc #AFB1A9", +"I]\tc #A3A49E", +"J]\tc #989A95", +"K]\tc #959891", +"L]\tc #919590", +"M]\tc #91948E", +"N]\tc #8C8F8B", +"O]\tc #939490", +"P]\tc #7F807C", +"Q]\tc #5B5B5A", +"R]\tc #ADAEAA", +"S]\tc #CCCCC9", +"T]\tc #E8E8E6", +"U]\tc #EDEDE9", +"V]\tc #EFEFE8", +"W]\tc #F3F3F0", +"X]\tc #F9F9F5", +"Y]\tc #F8F7EC", +"Z]\tc #F4F3E3", +"`]\tc #F4EDDC", +" ^\tc #F5EDDA", +".^\tc #F4ECD9", +"+^\tc #F3ECD8", +"@^\tc #F5F2DA", +"#^\tc #F3F4DD", +"$^\tc #F6F5DF", +"%^\tc #F6F6E0", +"&^\tc #F6F6E1", +"*^\tc #F8F6E4", +"=^\tc #FAF8EB", +"-^\tc #FCFBF2", +";^\tc #FAFBF8", +">^\tc #F7F8F4", +",^\tc #F3F3F1", +"\'^\tc #F0F1EE", +")^\tc #EEEEEA", +"!^\tc #EAEAE5", +"~^\tc #D3D4CE", +"{^\tc #C4C6BE", +"]^\tc #B7B9B1", +"^^\tc #ACACA5", +"/^\tc #9EA19A", +"(^\tc #999B95", +"_^\tc #919490", +":^\tc #6B6C68", +"<^\tc #4D4D4B", +"[^\tc #8E8F8D", +"}^\tc #A2A39D", +"|^\tc #C6C6C2", +"1^\tc #D8D8D5", +"2^\tc #E2E2E0", +"3^\tc #F7F6EC", +"4^\tc #F5F2E4", +"5^\tc #F4EFDD", +"6^\tc #F6EEDC", +"7^\tc #F4EDDA", +"8^\tc #F3ECD9", +"9^\tc #F3ECD7", +"0^\tc #F4EED8", +"a^\tc #F6F2DB", +"b^\tc #F4F3DC", +"c^\tc #F4F3DD", +"d^\tc #F5F2DE", +"e^\tc #F6F5E2", +"f^\tc #F8F5E3", +"g^\tc #FAF8E8", +"h^\tc #FCFAEF", +"i^\tc #FEFDF9", +"j^\tc #FDFDFC", +"k^\tc #FAFAF7", +"l^\tc #F8F8F7", +"m^\tc #E9E9E2", +"n^\tc #DADBD5", +"o^\tc #CCCDC7", +"p^\tc #C0C1B9", +"q^\tc #B2B5AD", +"r^\tc #A6A7A2", +"s^\tc #A6A7A0", +"t^\tc #A4A5A0", +"u^\tc #A1A29E", +"v^\tc #9C9F99", +"w^\tc #989B95", +"x^\tc #8E928D", +"y^\tc #939390", +"z^\tc #8B8A86", +"A^\tc #80817D", +"B^\tc #575755", +"C^\tc #959590", +"D^\tc #9E9F98", +"E^\tc #ACADA7", +"F^\tc #BFBFBA", +"G^\tc #D0D0CE", +"H^\tc #E1E1DF", +"I^\tc #E7E7E4", +"J^\tc #E8E9E5", +"K^\tc #EBECE6", +"L^\tc #EEEEED", +"M^\tc #F5F6F4", +"N^\tc #F8F6EC", +"O^\tc #F5F2E5", +"P^\tc #F2EDDE", +"Q^\tc #F3EDDA", +"R^\tc #F3EDD7", +"S^\tc #F3EED8", +"T^\tc #F5F3DE", +"U^\tc #F8F6E2", +"V^\tc #F9F7E5", +"W^\tc #FCFAF2", +"X^\tc #FDFCF6", +"Y^\tc #FDFDF8", +"Z^\tc #F7F7F7", +"`^\tc #F4F4F0", +" /\tc #EEEFEA", +"./\tc #C9CAC4", +"+/\tc #BCBEB8", +"@/\tc #B3B3AC", +"#/\tc #B2B4AC", +"$/\tc #B4B4AD", +"%/\tc #B7B6B0", +"&/\tc #BAB9B3", +"*/\tc #B0B0AB", +"=/\tc #A8AAA4", +"-/\tc #9DA099", +";/\tc #8F928E", +">/\tc #8D908C", +",/\tc #8C8C86", +"\'/\tc #888883", +")/\tc #7A7A76", +"!/\tc #4A4A48", +"~/\tc #979894", +"{/\tc #91928C", +"]/\tc #9A9B95", +"^/\tc #A6A7A1", +"//\tc #B7B8B4", +"(/\tc #C8C9C6", +"_/\tc #D1D2CF", +":/\tc #D8D8D6", +"(\tc #989895", +",(\tc #8B8B87", +"\'(\tc #8D8D87", +")(\tc #B5B5B1", +"!(\tc #BBBCB6", +"~(\tc #BEBFBB", +"{(\tc #C5C5C0", +"](\tc #CACAC7", +"^(\tc #D0D1CD", +"/(\tc #F0F1EF", +"((\tc #F8F7F0", +"_(\tc #F8F6E8", +":(\tc #F6F2E0", +"<(\tc #F5EEDA", +"[(\tc #F6F0DA", +"}(\tc #F7F2DB", +"|(\tc #F7F3DC", +"1(\tc #F7F5DE", +"2(\tc #F7F5E0", +"3(\tc #F5F7E2", +"4(\tc #F5F7E3", +"5(\tc #F6F8E2", +"6(\tc #F7F8E2", +"7(\tc #F6F7E4", +"8(\tc #F6F8E1", +"9(\tc #F6F5DE", +"0(\tc #F9F8E8", +"a(\tc #FBFBFA", +"b(\tc #F2F2EF", +"c(\tc #E5E6E0", +"d(\tc #E2E3DB", +"e(\tc #E2E2D8", +"f(\tc #E3E4D8", +"g(\tc #E2E3D8", +"h(\tc #E1E2D8", +"i(\tc #DEDFD4", +"j(\tc #DBDCD1", +"k(\tc #D1D2C8", +"l(\tc #AEB1AA", +"m(\tc #9EA19C", +"n(\tc #949892", +"o(\tc #8B8B88", +"p(\tc #8D8C88", +"q(\tc #ABABA6", +"r(\tc #B1B2AB", +"s(\tc #B6B7B1", +"t(\tc #BABAB6", +"u(\tc #C2C2BD", +"v(\tc #CCCDC8", +"w(\tc #E2E3E1", +"x(\tc #F5F6F3", +"y(\tc #F7F7F3", +"z(\tc #F8F8EE", +"A(\tc #F8F6E9", +"B(\tc #F6F4E1", +"C(\tc #F8F2DB", +"D(\tc #FBF4DC", +"E(\tc #F8F5DD", +"F(\tc #F8F6DF", +"G(\tc #F8F6E0", +"H(\tc #F7F5E1", +"I(\tc #F8F7E4", +"J(\tc #F8F7E3", +"K(\tc #F7F7E1", +"L(\tc #FDFCFA", +"M(\tc #FBFBF9", +"N(\tc #F1F1ED", +"O(\tc #EFF0EA", +"P(\tc #E7E7DC", +"Q(\tc #E3E4D9", +"R(\tc #E1E1D6", +"S(\tc #DADAD0", +"T(\tc #BEBFB7", +"U(\tc #ADAEA7", +"V(\tc #9FA19C", +"W(\tc #929290", +"X(\tc #A2A39E", +"Y(\tc #A9AAA3", +"Z(\tc #A8AAA3", +"`(\tc #A8A9A2", +" _\tc #AAABA4", +"._\tc #ADAEA9", +"+_\tc #C2C3BD", +"@_\tc #D0D0CB", +"#_\tc #DCDCD9", +"$_\tc #F0F0EC", +"%_\tc #F8F7F2", +"&_\tc #F6F3E1", +"*_\tc #F5F1DC", +"=_\tc #F7F1DB", +"-_\tc #F9F4DD", +";_\tc #F7F5DD", +">_\tc #F7F4E1", +",_\tc #F9F6E3", +"\'_\tc #F8F7E2", +")_\tc #F9F7E4", +"!_\tc #F9F7E6", +"~_\tc #F9F8EA", +"{_\tc #FAF9EE", +"]_\tc #FBFAF2", +"^_\tc #F6F7F1", +"/_\tc #EEEFE6", +"(_\tc #ECECE3", +"__\tc #E9E9DF", +":_\tc #D7D6CF", +"<_\tc #B7B8B0", +"[_\tc #AAACA6", +"}_\tc #9FA09C", +"|_\tc #979995", +"1_\tc #939691", +"2_\tc #8E928E", +"3_\tc #989896", +"4_\tc #A4A49F", +"5_\tc #B7B8B2", +"6_\tc #C6C6C0", +"7_\tc #D4D4CF", +"8_\tc #F2F3EE", +"9_\tc #F4F5F0", +"0_\tc #F9F8EF", +"a_\tc #F7F4E2", +"b_\tc #F6F1DD", +"c_\tc #F7F2DD", +"d_\tc #F6F4DC", +"e_\tc #F8F5E0", +"f_\tc #F8F5E1", +"g_\tc #F9F6E2", +"h_\tc #F9F8E5", +"i_\tc #F9F8E6", +"j_\tc #F8F7E6", +"k_\tc #F8F5E4", +"l_\tc #FAF8E9", +"m_\tc #F9FAF6", +"n_\tc #F7F7F2", +"o_\tc #F5F5EF", +"p_\tc #F2F2EB", +"q_\tc #F1F1E8", +"r_\tc #EEEFE5", +"s_\tc #ECECE2", +"t_\tc #E8E9DE", +"u_\tc #E1E0D6", +"v_\tc #D5D4CC", +"w_\tc #A0A29D", +"x_\tc #9A9C97", +"y_\tc #949793", +"z_\tc #969694", +"A_\tc #91918B", +"B_\tc #9B9B96", +"C_\tc #9C9D97", +"D_\tc #AEAEA9", +"E_\tc #BEBEB7", +"F_\tc #CDCEC7", +"G_\tc #DCDDD6", +"H_\tc #E7E7E2", +"I_\tc #F9F8F3", +"J_\tc #F9F8F0", +"K_\tc #F9F7EC", +"L_\tc #F6F2DE", +"M_\tc #F7F4DD", +"N_\tc #F9F6E1", +"O_\tc #F8F6E1", +"P_\tc #F9F7E2", +"Q_\tc #F9F8E7", +"R_\tc #F9F7E8", +"S_\tc #F8F6E5", +"T_\tc #F6F2DF", +"U_\tc #F7F4DE", +"V_\tc #FAF8E6", +"W_\tc #FBFAEE", +"X_\tc #FCFCF2", +"Y_\tc #F3F3EA", +"Z_\tc #F1F2E7", +"`_\tc #EFEFE4", +" :\tc #EAE9DD", +".:\tc #E0E0D6", +"+:\tc #D4D4CA", +"@:\tc #C4C5BC", +"#:\tc #9EA09B", +"$:\tc #8A8B89", +"%:\tc #959490", +"&:\tc #A4A49E", +"*:\tc #B4B4AE", +"=:\tc #C6C6BF", +"-:\tc #D5D5CD", +";:\tc #E2E2DA", +">:\tc #E8E9E1", +",:\tc #ECECE5", +"\':\tc #F9F8EC", +"):\tc #F6F3DD", +"!:\tc #F8F5DF", +"~:\tc #FAF8EA", +"{:\tc #F9F7E9", +"]:\tc #FAF7E6", +"^:\tc #F9F6E4", +"/:\tc #F8F4E1", +"(:\tc #F7F4DF", +"_:\tc #FCFAF0", +"::\tc #F7F7EF", +"<:\tc #F2F3EA", +"[:\tc #F0F0E6", +"}:\tc #E0E0D5", +"|:\tc #C3C5BC", +"1:\tc #B9BAB2", +"2:\tc #B4B5AE", +"3:\tc #B0B1AB", +"4:\tc #AEAFA8", +"5:\tc #A6A6A5", +"6:\tc #91918C", +"7:\tc #92928D", +"8:\tc #949490", +"9:\tc #9C9B96", +"0:\tc #A9AAA4", +"a:\tc #BEBEB8", +"b:\tc #CDCEC6", +"c:\tc #DCDCD3", +"d:\tc #ECEDE5", +"e:\tc #F3F2ED", +"f:\tc #F6F6F1", +"g:\tc #FAF9F2", +"h:\tc #F7F3DE", +"i:\tc #F8F4DF", +"j:\tc #F8F7E5", +"k:\tc #F9F8E9", +"l:\tc #F9F7EB", +"m:\tc #F9F7EA", +"n:\tc #FAF7E9", +"o:\tc #FAF6E6", +"p:\tc #F9F5E2", +"q:\tc #FAF8E7", +"r:\tc #FCFBF4", +"s:\tc #F6F6EE", +"t:\tc #F4F4EB", +"u:\tc #F2F2E8", +"v:\tc #DEDED2", +"w:\tc #B9BAB4", +"x:\tc #BABCB5", +"y:\tc #8F8F8E", +"z:\tc #8A8A85", +"A:\tc #8B8B85", +"B:\tc #8F8F8A", +"C:\tc #C5C4BD", +"D:\tc #DEDED4", +"E:\tc #E5E5DC", +"F:\tc #EDEDE4", +"G:\tc #F7F6F1", +"H:\tc #F9F9F0", +"I:\tc #F9F5E4", +"J:\tc #FAF7E8", +"K:\tc #F9F6E6", +"L:\tc #F8F5E2", +"M:\tc #F9F5E1", +"N:\tc #F9F4E1", +"O:\tc #FAF9EA", +"P:\tc #F9FAF5", +"Q:\tc #F7F7F0", +"R:\tc #EAEAE1", +"S:\tc #DEDFD6", +"T:\tc #D3D3CA", +"U:\tc #C9CAC2", +"V:\tc #C2C2BB", +"W:\tc #C3C2BC", +"X:\tc #8C8B87", +"Y:\tc #989793", +"Z:\tc #A6A6A1", +"`:\tc #BAB9B2", +" <\tc #CCCAC4", +".<\tc #DFE0D6", +"+<\tc #EDEDE5", +"@<\tc #F3F3EB", +"#<\tc #F5F4ED", +"$<\tc #FAF9F0", +"%<\tc #F8F4E2", +"&<\tc #F8F4DD", +"*<\tc #F9F6E0", +"=<\tc #F9F6EA", +"-<\tc #F9F6E9", +";<\tc #FAF5E2", +"><\tc #F9F7E3", +",<\tc #FEFEFC", +"\'<\tc #E8E9E2", +")<\tc #D7D8CF", +"!<\tc #D2D1C8", +"~<\tc #D1CEC6", +"{<\tc #8D8D89", +"]<\tc #8B8A85", +"^<\tc #8D8C87", +"/<\tc #93948E", +"(<\tc #9E9D98", +"_<\tc #B0AEA9", +":<\tc #C3C1BB", +"<<\tc #D0CDC6", +"[<\tc #D9D7CF", +"}<\tc #E7E7DD", +"|<\tc #F9F9F1", +"1<\tc #F7F5E3", +"2<\tc #F5F3DF", +"3<\tc #FAF7E3", +"4<\tc #F9F7E7", +"5<\tc #F8F7EA", +"6<\tc #F8F8E2", +"7<\tc #F8F7E1", +"8<\tc #F9F8E2", +"9<\tc #F7F7E6", +"0<\tc #FBF9EC", +"a<\tc #FDFBF4", +"b<\tc #FEFDF8", +"c<\tc #F5F6F1", +"d<\tc #E1E0D8", +"e<\tc #E0DED6", +"f<\tc #8A8B88", +"g<\tc #8A8B85", +"h<\tc #90918B", +"i<\tc #969792", +"j<\tc #A5A49E", +"k<\tc #B7B5AF", +"l<\tc #C8C4BE", +"m<\tc #D2D0C9", +"n<\tc #DAD8D0", +"o<\tc #E1E1D8", +"p<\tc #E9E9E1", +"q<\tc #F3F2EA", +"r<\tc #F5F4EC", +"s<\tc #F9F8F2", +"t<\tc #F8F6EA", +"u<\tc #F8F7E9", +"v<\tc #FCFBF3", +"w<\tc #FEFCF6", +"x<\tc #EBEBE1", +"y<\tc #8D8D8B", +"z<\tc #8E8F89", +"A<\tc #C2BFBA", +"B<\tc #D6D4CC", +"C<\tc #DDDCD3", +"D<\tc #E8E8DE", +"E<\tc #EFEFE5", +"F<\tc #F9F8EE", +"G<\tc #F7F4E0", +"H<\tc #F8F7E8", +"I<\tc #F7F2E0", +"J<\tc #F8F3E0", +"K<\tc #F9F4E0", +"L<\tc #FAF9EB", +"M<\tc #93938E", +"N<\tc #989894", +"O<\tc #A2A29C", +"P<\tc #AEACA6", +"Q<\tc #BAB8B2", +"R<\tc #D3D0C9", +"S<\tc #DAD6CE", +"T<\tc #E1DFD6", +"U<\tc #E8E7DD", +"V<\tc #EEEEE4", +"W<\tc #F2F1E8", +"X<\tc #F8F5E5", +"Y<\tc #FAF6E2", +"Z<\tc #F7F0DF", +"`<\tc #F6F0DE", +" [\tc #F8F1DE", +".[\tc #F9F2DE", +"+[\tc #F8F3DE", +"@[\tc #F9F7E1", +"#[\tc #FBFAEC", +"$[\tc #FBFAF3", +"%[\tc #8D8C86", +"&[\tc #9B9A96", +"*[\tc #B4B0AC", +"=[\tc #C4C0BA", +"-[\tc #CFCBC4", +";[\tc #D9D5CE", +">[\tc #E2DFD7", +",[\tc #E7E5DC", +"\'[\tc #EAEADF", +")[\tc #EEEDE2", +"![\tc #F8F7EE", +"~[\tc #F7F6EA", +"{[\tc #F7F4E4", +"][\tc #F9F2E0", +"^[\tc #F8F1DF", +"/[\tc #F8F0DD", +"([\tc #F7F0DC", +"_[\tc #F8F2DD", +":[\tc #F9F5DF", +"<[\tc #FDFCF3", +"[[\tc #FEFDF6", +"}[\tc #FEFCF4", +"|[\tc #FDFBF2", +"1[\tc #91918D", +"2[\tc #979792", +"3[\tc #A0A09A", +"4[\tc #C3BFBA", +"5[\tc #CFCBC5", +"6[\tc #DAD7D0", +"7[\tc #E2E0D6", +"8[\tc #E6E4DA", +"9[\tc #F4F3EB", +"0[\tc #F6F6EC", +"a[\tc #F7F5E9", +"b[\tc #F5F5E2", +"c[\tc #F8F2DF", +"d[\tc #F6F0DB", +"e[\tc #F7EFDB", +"f[\tc #F7F0DB", +"g[\tc #F8F2DC", +"h[\tc #F8F3DD", +"i[\tc #F8F6DE", +"j[\tc #F8F6E3", +"k[\tc #FAF7E7", +"l[\tc #A3A19C", +"m[\tc #B5B2AE", +"n[\tc #C6C1BD", +"o[\tc #D4CEC8", +"p[\tc #DEDAD2", +"q[\tc #E2DFD6", +"r[\tc #E5E4DA", +"s[\tc #EEEEE5", +"t[\tc #F5F6EC", +"u[\tc #F7F6ED", +"v[\tc #F8F5EA", +"w[\tc #F8F4E4", +"x[\tc #F4F4E2", +"y[\tc #F7F6E4", +"z[\tc #F7F3E0", +"A[\tc #F6EFDA", +"B[\tc #F8F0DB", +"C[\tc #F7F4DC", +"D[\tc #F8F5DE", +"E[\tc #F9F5E0", +"F[\tc #F9F4DF", +"G[\tc #ABABA9", +"H[\tc #AAA7A2", +"I[\tc #BDB8B4", +"J[\tc #CBC6C0", +"K[\tc #D8D3CC", +"L[\tc #EDEEE5", +"M[\tc #F5F5EC", +"N[\tc #F7F6EF", +"O[\tc #F5F6E6", +"P[\tc #F5F5E3", +"Q[\tc #F8F1DC", +"R[\tc #F8F0DA", +"S[\tc #F6EEDA", +"T[\tc #F7F2DA", +"U[\tc #F6F2DA", +"V[\tc #F7F2DC", +"W[\tc #8D8C89", +"X[\tc #90908A", +"Y[\tc #B4B1AC", +"Z[\tc #C4BFBA", +"`[\tc #D1CCC7", +" }\tc #D9D4CD", +".}\tc #DED9D2", +"+}\tc #E5E5DB", +"@}\tc #F1F1E9", +"#}\tc #F7F6F2", +"$}\tc #F7F6F0", +"%}\tc #F6F5E6", +"&}\tc #F6F5E1", +"*}\tc #F9F1DC", +"=}\tc #FAF2DF", +"-}\tc #F8F3DF", +";}\tc #F5EFDA", +">}\tc #FAF2DB", +",}\tc #F6F1DC", +"\'}\tc #F7F7E0", +")}\tc #959594", +"!}\tc #8F8E88", +"~}\tc #ADAAA6", +"{}\tc #BCB9B4", +"]}\tc #CAC6C1", +"^}\tc #D3CEC8", +"/}\tc #DAD4CD", +"(}\tc #DDDAD2", +"_}\tc #F4F4ED", +":}\tc #F7F5E6", +"<}\tc #F8F4E3", +"[}\tc #F4EEDC", +"}}\tc #F8EFDB", +"|}\tc #F7EFDA", +"1}\tc #F9F1DB", +"2}\tc #F9F3E0", +"3}\tc #8E8D88", +"4}\tc #9D9B96", +"5}\tc #A9A7A2", +"6}\tc #B7B4AF", +"7}\tc #DAD6CF", +"8}\tc #DEDCD2", +"9}\tc #E1E1D7", +"0}\tc #F1F1EB", +"a}\tc #F6F5E7", +"b}\tc #F6F4E2", +"c}\tc #F8F2E0", +"d}\tc #F6EDD9", +"e}\tc #F6EDDA", +"f}\tc #F7EEDB", +"g}\tc #F8F3DC", +"h}\tc #F6EFDC", +"i}\tc #F7EEDA", +"j}\tc #F8EEDA", +"k}\tc #F7F0DA", +"l}\tc #F9F2DF", +"m}\tc #868681", +"n}\tc #9D9B97", +"o}\tc #A6A49F", +"p}\tc #B3B0AA", +"q}\tc #BEB9B5", +"r}\tc #C7C3BC", +"s}\tc #CDC7C1", +"t}\tc #D2CDC7", +"u}\tc #D8D4CC", +"v}\tc #DAD9D0", +"w}\tc #DFDFD5", +"x}\tc #E4E4DB", +"y}\tc #F8F7EF", +"z}\tc #F6F2E1", +"A}\tc #F8F0E0", +"B}\tc #F5EDDB", +"C}\tc #F5ECD9", +"D}\tc #F6ECD9", +"E}\tc #F6ECDA", +"F}\tc #F8F1DA", +"G}\tc #F7F0DE", +"H}\tc #F8EFDC", +"I}\tc #F8F1DB", +"J}\tc #F8EEDB", +"K}\tc #F7EEDC", +"L}\tc #6D6D6C", +"M}\tc #A19F9A", +"N}\tc #ACA8A5", +"O}\tc #BDB9B4", +"P}\tc #C1BCB7", +"Q}\tc #C6C2BB", +"R}\tc #CEC9C2", +"S}\tc #D2D0C8", +"T}\tc #D7D6CD", +"U}\tc #DDDED4", +"V}\tc #E4E4DA", +"W}\tc #EDEDE8", +"X}\tc #FAF8EE", +"Y}\tc #F8F5E8", +"Z}\tc #F7F2E2", +"`}\tc #FAF1E0", +" |\tc #F6EFD8", +".|\tc #F9F4DE", +"+|\tc #F7EFDC", +"@|\tc #F7F1DA", +"#|\tc #F4EBD9", +"$|\tc #A2A09B", +"%|\tc #A9A6A2", +"&|\tc #AFACA8", +"*|\tc #BAB7B1", +"=|\tc #C0BBB5", +"-|\tc #C8C4BC", +";|\tc #D7D7CE", +">|\tc #FAFAF5", +",|\tc #FAF2E0", +"\'|\tc #F8F0D9", +")|\tc #F6F1DB", +"!|\tc #F7F1DE", +"~|\tc #F6EAD9", +"{|\tc #F8EBD9", +"]|\tc #9E9B96", +"^|\tc #A5A29D", +"/|\tc #B0ACA8", +"(|\tc #B9B4AE", +"_|\tc #C4C0B8", +":|\tc #CFCEC4", +"<|\tc #D9D8CF", +"[|\tc #E1E1D9", +"}|\tc #EBEBE7", +"||\tc #FAF9F8", +"1|\tc #FBFAF7", +"2|\tc #FAF8F2", +"3|\tc #FBF7E9", +"4|\tc #FAF4E1", +"5|\tc #F9F1DA", +"6|\tc #F5EAD9", +"7|\tc #F6E9D9", +"8|\tc #F8E9D9", +"9|\tc #E3C5C3", +"0|\tc #E2C4C2", +"a|\tc #E1C3C1", +"b|\tc #E1C2C0", +"c|\tc #E0C2C0", +"d|\tc #817271", +"e|\tc #A89998", +"f|\tc #7E7776", +"g|\tc #787876", +"h|\tc #B38888", +"i|\tc #B08484", +"j|\tc #AB7E7E", +"k|\tc #AAA6A2", +"l|\tc #B7B2AC", +"m|\tc #C4C1B8", +"n|\tc #7F3C4C", +"o|\tc #76203F", +"p|\tc #741839", +"q|\tc #EAEBE9", +"r|\tc #6A0030", +"s|\tc #6B0A30", +"t|\tc #6B102E", +"u|\tc #FBFAF6", +"v|\tc #FCFAF1", +"w|\tc #FCF9EB", +"x|\tc #FAF7E5", +"y|\tc #F5EEDB", +"z|\tc #F6F3DB", +"A|\tc #F9F2DD", +"B|\tc #F8F1DD", +"C|\tc #F9F1DD", +"D|\tc #F7EDDB", +"E|\tc #F7EBDA", +"F|\tc #F7E9D9", +"G|\tc #F8E8D8", +"H|\tc #E2C3C2", +"I|\tc #C6B0AE", +"J|\tc #958D8D", +"K|\tc #B4898A", +"L|\tc #B18585", +"M|\tc #AD8080", +"N|\tc #9E9C98", +"O|\tc #ABA8A2", +"P|\tc #BBB7B0", +"Q|\tc #864A52", +"R|\tc #7B2A44", +"S|\tc #781A3D", +"T|\tc #E3E3DC", +"U|\tc #E6E6E2", +"V|\tc #6A002C", +"W|\tc #6A002B", +"X|\tc #69002C", +"Y|\tc #FBFAF8", +"Z|\tc #FDFBF0", +"`|\tc #FDFAED", +" 1\tc #FCF8EA", +".1\tc #FAF5E5", +"+1\tc #F5F2DC", +"@1\tc #F7F2DE", +"#1\tc #B7A8A7", +"$1\tc #C0B1B0", +"%1\tc #BAABAA", +"&1\tc #B9AAA9", +"*1\tc #BEAEAE", +"=1\tc #AB9C9B", +"-1\tc #C2B2B2", +";1\tc #B2A2A2", +">1\tc #CAB4B2", +",1\tc #B68B8A", +"\'1\tc #B28686", +")1\tc #B1AFA8", +"!1\tc #8B5157", +"~1\tc #813A4C", +"{1\tc #7B2342", +"]1\tc #E0E0D7", +"^1\tc #6A0027", +"/1\tc #660027", +"(1\tc #640028", +"_1\tc #FEFDF5", +":1\tc #FEFCF5", +"<1\tc #FEFBF3", +"[1\tc #B59E9D", +"}1\tc #CAB3B2", +"|1\tc #8F8E8A", +"11\tc #999893", +"21\tc #A6A69F", +"31\tc #915A60", +"41\tc #864853", +"51\tc #7E2C46", +"61\tc #DDDCD1", +"71\tc #EAEAE3", +"81\tc #660022", +"91\tc #640022", +"01\tc #600020", +"a1\tc #FDFDF4", +"b1\tc #FFFEF6", +"c1\tc #FFFEF7", +"d1\tc #FEFDF4", +"e1\tc #FDFCF2", +"f1\tc #FCF9ED", +"g1\tc #FAF6E7", +"h1\tc #F9F3DE", +"i1\tc #AA9492", +"j1\tc #9C9C96", +"k1\tc #996566", +"l1\tc #90575C", +"m1\tc #85434F", +"n1\tc #DAD8CD", +"o1\tc #DFDED4", +"p1\tc #68101A", +"q1\tc #640018", +"r1\tc #5E001C", +"s1\tc #F7F7F5", +"t1\tc #FFFFF8", +"u1\tc #FFFEF8", +"v1\tc #FCFBF0", +"w1\tc #FBF8EA", +"x1\tc #726262", +"y1\tc #4B4443", +"z1\tc #ACA4A4", +"A1\tc #9C938E", +"B1\tc #AA9896", +"C1\tc #9C928F", +"D1\tc #8F8E89", +"E1\tc #9F6D6E", +"F1\tc #986366", +"G1\tc #90585C", +"H1\tc #CECEC4", +"I1\tc #DAD8CF", +"J1\tc #E2E3DC", +"K1\tc #6A151E", +"L1\tc #651517", +"M1\tc #5F0517", +"N1\tc #F8F7F5", +"O1\tc #FBFBF5", +"P1\tc #FEFEF6", +"Q1\tc #B28A97", +"R1\tc #B28A95", +"S1\tc #D8C5C6", +"T1\tc #827372", +"U1\tc #948684", +"V1\tc #A09090", +"W1\tc #8A8282", +"X1\tc #B6A7A4", +"Y1\tc #9B928F", +"Z1\tc #BAA09E", +"`1\tc #C8A4A4", +" 2\tc #B99E9D", +".2\tc #C7A3A2", +"+2\tc #C5A09F", +"@2\tc #BB9292", +"#2\tc #B88F8F", +"$2\tc #B58A8A", +"%2\tc #A47272", +"&2\tc #A06E6F", +"*2\tc #9A6668", +"=2\tc #BCBCB4", +"-2\tc #CECDC4", +";2\tc #D6D5CE", +">2\tc #6E1530", +",2\tc #680A1E", +"\'2\tc #600A15", +")2\tc #D6BEC4", +"!2\tc #8A4561", +"~2\tc #651532", +"{2\tc #661034", +"]2\tc #681532", +"^2\tc #661530", +"/2\tc #671730", +"(2\tc #6A1E34", +"_2\tc #6D2439", +":2\tc #D8C4BF", +"<2\tc #847C7C", +"[2\tc #BEB0AE", +"}2\tc #82827F", +"|2\tc #9E9592", +"12\tc #D0AEAD", +"22\tc #CDAAA9", +"32\tc #C9A6A5", +"42\tc #9A928E", +"52\tc #BE9696", +"62\tc #BA9291", +"72\tc #B88E8E", +"82\tc #A67474", +"92\tc #A47373", +"02\tc #A26F70", +"a2\tc #AAA9A2", +"b2\tc #B9B9B1", +"c2\tc #760A39", +"d2\tc #6E002B", +"e2\tc #670517", +"f2\tc #EFEFEA", +"g2\tc #F4F3EF", +"h2\tc #FAFAF3", +"i2\tc #D3BCC1", +"j2\tc #5D0027", +"k2\tc #610027", +"l2\tc #63002C", +"m2\tc #65002D", +"n2\tc #680A30", +"o2\tc #68152C", +"p2\tc #66152A", +"q2\tc #671828", +"r2\tc #6A1E2E", +"s2\tc #6C2333", +"t2\tc #B58E91", +"u2\tc #9A9292", +"v2\tc #B0A8A8", +"w2\tc #D6B4B4", +"x2\tc #D2B1B1", +"y2\tc #CFADAD", +"z2\tc #9C938F", +"A2\tc #9B928E", +"B2\tc #9A918E", +"C2\tc #AA9895", +"D2\tc #C09A9A", +"E2\tc #BD9695", +"F2\tc #BA9292", +"G2\tc #A87878", +"H2\tc #A67575", +"I2\tc #A47473", +"J2\tc #A7A7A0", +"K2\tc #B8B8B0", +"L2\tc #CAC9C0", +"M2\tc #803646", +"N2\tc #771939", +"O2\tc #720E34", +"P2\tc #E8E9E3", +"Q2\tc #F1F1E7", +"R2\tc #D0B8B9", +"S2\tc #5E0028", +"T2\tc #630029", +"U2\tc #D7BEC2", +"V2\tc #FFFFFA", +"W2\tc #B28A90", +"X2\tc #681722", +"Y2\tc #681C26", +"Z2\tc #6C1F2D", +"`2\tc #FBFAEF", +" 3\tc #F5F7E4", +".3\tc #F7F6E3", +"+3\tc #AAA2A2", +"@3\tc #C2ABAA", +"#3\tc #B3A4A3", +"$3\tc #D7B7B6", +"%3\tc #D6B6B6", +"&3\tc #D5B4B3", +"*3\tc #9D9490", +"=3\tc #B99E9C", +"-3\tc #C39E9D", +";3\tc #BE9796", +">3\tc #AB7C7C", +",3\tc #A67676", +"\'3\tc #9B9B95", +")3\tc #B8B6B0", +"!3\tc #8A4E54", +"~3\tc #823F48", +"{3\tc #7D3444", +"]3\tc #E8E7DE", +"^3\tc #A98181", +"/3\tc #620A29", +"(3\tc #620027", +"_3\tc #B07E90", +":3\tc #FFFEFB", +"<3\tc #8E4F56", +"[3\tc #69151F", +"}3\tc #6C1523", +"|3\tc #D9C4C3", +"13\tc #FBF9EB", +"23\tc #AC9C9C", +"33\tc #615A59", +"43\tc #867E7E", +"53\tc #ACA5A4", +"63\tc #DABABA", +"73\tc #B0A09D", +"83\tc #C6A1A1", +"93\tc #C49F9E", +"03\tc #C29C9C", +"a3\tc #B08382", +"b3\tc #AB7D7C", +"c3\tc #A87978", +"d3\tc #9A9A94", +"e3\tc #965F62", +"f3\tc #8E5458", +"g3\tc #894B51", +"h3\tc #D2D2CA", +"i3\tc #D5D6CD", +"j3\tc #DADAD2", +"k3\tc #AB7F84", +"l3\tc #AA8183", +"m3\tc #8A3C58", +"n3\tc #FDFCF4", +"o3\tc #FEFDF7", +"p3\tc #B68990", +"q3\tc #6C1526", +"r3\tc #6B1024", +"s3\tc #B58A91", +"t3\tc #FAF9EC", +"u3\tc #A29A9A", +"v3\tc #B2A3A2", +"w3\tc #E1C2C1", +"x3\tc #D9B8B8", +"y3\tc #9C9590", +"z3\tc #8A8A84", +"A3\tc #8D8B86", +"B3\tc #C8A4A3", +"C3\tc #C6A1A0", +"D3\tc #C49E9E", +"E3\tc #B48A89", +"F3\tc #AC7D7D", +"G3\tc #9A9993", +"H3\tc #9E6A6B", +"I3\tc #986465", +"J3\tc #935A5D", +"K3\tc #C8C6BF", +"L3\tc #C9C9C1", +"M3\tc #DDDBD2", +"N3\tc #EFEDE4", +"O3\tc #FAFAF0", +"P3\tc #B68393", +"Q3\tc #6D102F", +"R3\tc #B68A95", +"S3\tc #F9F9E9", +"T3\tc #F7F7E5", +"U3\tc #D1BBB9", +"V3\tc #463E3E", +"W3\tc #AFA09F", +"X3\tc #DFC0BE", +"Y3\tc #888984", +"Z3\tc #9A928D", +"`3\tc #C7A3A3", +" 4\tc #BA9190", +".4\tc #B68B8B", +"+4\tc #B18584", +"@4\tc #A37172", +"#4\tc #9F6C6C", +"$4\tc #9C6668", +"%4\tc #B8B5B0", +"&4\tc #BCBBB5", +"*4\tc #C1BFB9", +"=4\tc #C9C7C1", +"-4\tc #D3D1CA", +";4\tc #E8E6DC", +">4\tc #F2F1E6", +",4\tc #D8BCC2", +"\'4\tc #B57C91", +")4\tc #943E63", +"!4\tc #700534", +"~4\tc #6F1534", +"{4\tc #FFFFFC", +"]4\tc #FDFEF7", +"^4\tc #FBFCF1", +"/4\tc #F7F9E9", +"(4\tc #F4F6E4", +"_4\tc #F4F7E4", +":4\tc #968786", +"<4\tc #9D8E8D", +"[4\tc #988888", +"}4\tc #9B8C8B", +"|4\tc #A19291", +"14\tc #BCADAC", +"24\tc #998A89", +"34\tc #9B9493", +"44\tc #8A8A88", +"54\tc #9A918D", +"64\tc #C8A3A3", +"74\tc #BB9393", +"84\tc #B78E8E", +"94\tc #A16F6E", +"04\tc #A8A5A0", +"a4\tc #AFADA8", +"b4\tc #C1BFBA", +"c4\tc #CCCAC3", +"d4\tc #D5D3CC", +"e4\tc #B18B8B", +"f4\tc #B58E90", +"g4\tc #954E69", +"h4\tc #74053B", +"i4\tc #72003A", +"j4\tc #710037", +"k4\tc #73003A", +"l4\tc #74003A", +"m4\tc #740038", +"n4\tc #731536", +"o4\tc #B78995", +"p4\tc #FFFFFB", +"q4\tc #FAFBEF", +"r4\tc #F2F5E2", +"s4\tc #F4F5E1", +"t4\tc #F5F4E1", +"u4\tc #949491", +"v4\tc #BE9797", +"w4\tc #BC9493", +"x4\tc #AA7A7A", +"y4\tc #A77676", +"z4\tc #A57372", +"A4\tc #A3A29C", +"B4\tc #ABA9A4", +"C4\tc #B6B3AE", +"D4\tc #C5C1BC", +"E4\tc #BDACA8", +"F4\tc #7F3C44", +"G4\tc #79303A", +"H4\tc #78303C", +"I4\tc #782E3F", +"J4\tc #792640", +"K4\tc #771042", +"L4\tc #74003E", +"M4\tc #963F6A", +"N4\tc #983F6A", +"O4\tc #76003B", +"P4\tc #750038", +"Q4\tc #B88292", +"R4\tc #FCFDF5", +"S4\tc #F5F8E8", +"T4\tc #F0F5E2", +"U4\tc #F1F5E1", +"V4\tc #F4F5E2", +"W4\tc #F6F5E3", +"X4\tc #ACACAB", +"Y4\tc #C8A5A5", +"Z4\tc #C09998", +"`4\tc #AE8081", +" 5\tc #AA7A7B", +".5\tc #A77776", +"+5\tc #A8A6A0", +"@5\tc #AD9E9A", +"#5\tc #8D5458", +"$5\tc #81414A", +"%5\tc #7C3644", +"&5\tc #98616A", +"*5\tc #B59092", +"=5\tc #B78F94", +"-5\tc #F9F9EE", +";5\tc #B97D98", +">5\tc #78003E", +",5\tc #77003D", +"\'5\tc #B87C93", +")5\tc #FAFAEF", +"!5\tc #F6FAEC", +"~5\tc #F0F5E1", +"{5\tc #F0F4E2", +"]5\tc #F1F5E2", +"^5\tc #F4F6E3", +"/5\tc #A49594", +"(5\tc #CCA8A8", +"_5\tc #C9A4A4", +":5\tc #C19B9B", +"<5\tc #BF9898", +"[5\tc #B48989", +"}5\tc #AF8282", +"|5\tc #979892", +"15\tc #9C9C97", +"25\tc #9E6B6C", +"35\tc #966062", +"45\tc #8B5256", +"55\tc #CAB6B2", +"65\tc #EBE7DE", +"75\tc #EEEBE0", +"85\tc #F1ECE1", +"95\tc #F4F1E5", +"05\tc #F6F5E9", +"a5\tc #F8F8ED", +"b5\tc #BA829A", +"c5\tc #7B0046", +"d5\tc #7A0044", +"e5\tc #B97C96", +"f5\tc #F9F9EB", +"g5\tc #F9FCF0", +"h5\tc #EFF6E2", +"i5\tc #ECF5E1", +"j5\tc #F0F5E3", +"k5\tc #F2F6E4", +"l5\tc #F5F6E4", +"m5\tc #AE9F9E", +"n5\tc #A79F9F", +"o5\tc #90908D", +"p5\tc #CEACAB", +"q5\tc #CBA7A7", +"r5\tc #C29B9B", +"s5\tc #B99190", +"t5\tc #B58B8B", +"u5\tc #B28585", +"v5\tc #9A8E8A", +"w5\tc #A37171", +"x5\tc #9E6C6C", +"y5\tc #AE9290", +"z5\tc #D4CFC9", +"A5\tc #E6E0DA", +"B5\tc #ECE8E0", +"C5\tc #EDEAE0", +"D5\tc #EDEBDF", +"E5\tc #EEECE0", +"F5\tc #F1F1E4", +"G5\tc #BA8E9A", +"H5\tc #801C4D", +"I5\tc #7D0549", +"J5\tc #BA7C98", +"K5\tc #F7F8E8", +"L5\tc #FBFBF0", +"M5\tc #FBFEF3", +"N5\tc #F4FAE9", +"O5\tc #ECF6E2", +"P5\tc #ECF6E1", +"Q5\tc #ECF7E1", +"R5\tc #EEF7E2", +"S5\tc #F0F6E3", +"T5\tc #F2F6E3", +"U5\tc #B0A1A0", +"V5\tc #8D8D8A", +"W5\tc #B09F9C", +"X5\tc #D1AFAF", +"Y5\tc #CEABAB", +"Z5\tc #9B938E", +"`5\tc #C6A2A1", +" 6\tc #C19B9A", +".6\tc #BC9494", +"+6\tc #9B8380", +"@6\tc #A88E8C", +"#6\tc #C0BCB7", +"$6\tc #E0DCD5", +"%6\tc #E4E0D8", +"&6\tc #E4E2D8", +"*6\tc #E6E5DA", +"=6\tc #EAE9DE", +"-6\tc #863B55", +";6\tc #863251", +">6\tc #81184A", +",6\tc #BB7C98", +"\'6\tc #F7F7EA", +")6\tc #FDFEF5", +"!6\tc #FAFDF1", +"~6\tc #F4F9EA", +"{6\tc #EDF6E2", +"]6\tc #EDF7E0", +"^6\tc #EEF8E2", +"/6\tc #EDF6E1", +"(6\tc #EFF6E3", +"_6\tc #CFB9B7", +":6\tc #BAB2B2", +"<6\tc #9F9794", +"[6\tc #D3B2B1", +"}6\tc #D0AEAE", +"|6\tc #BC9393", +"16\tc #968A86", +"26\tc #A97A7A", +"36\tc #A48C89", +"46\tc #ADABA6", +"56\tc #BDBAB4", +"66\tc #CBC7C1", +"76\tc #D4D1CA", +"86\tc #D8D6CE", +"96\tc #DBDACF", +"06\tc #B8999A", +"a6\tc #8C465A", +"b6\tc #883855", +"c6\tc #852750", +"d6\tc #BC859A", +"e6\tc #F6F7EC", +"f6\tc #F6F7EB", +"g6\tc #F8F8EC", +"h6\tc #F8F9EE", +"i6\tc #FDFEF4", +"j6\tc #FAFCF1", +"k6\tc #F4F8EA", +"l6\tc #EDF4E1", +"m6\tc #EAF4DF", +"n6\tc #EBF6E1", +"o6\tc #EEF6E3", +"p6\tc #908988", +"q6\tc #B5AEAD", +"r6\tc #B7AFAF", +"s6\tc #DCBDBB", +"t6\tc #9E9591", +"u6\tc #BD9696", +"v6\tc #BD9595", +"w6\tc #AE8181", +"x6\tc #AC7E7E", +"y6\tc #AB7D7D", +"z6\tc #A7908C", +"A6\tc #ABAAA4", +"B6\tc #BAB6B1", +"C6\tc #C4C1BC", +"D6\tc #C2B4AF", +"E6\tc #AA8384", +"F6\tc #986268", +"G6\tc #915260", +"H6\tc #8C4359", +"I6\tc #883153", +"J6\tc #BC8A9B", +"K6\tc #F4F5EB", +"L6\tc #F5F6EB", +"M6\tc #F6F6EA", +"N6\tc #FDFEF3", +"O6\tc #FAFBF0", +"P6\tc #F4F6E7", +"Q6\tc #ECF4E0", +"R6\tc #EBF6E0", +"S6\tc #EAF6E1", +"T6\tc #EBF6E2", +"U6\tc #968F8E", +"V6\tc #ABA4A2", +"W6\tc #C9A5A4", +"X6\tc #BF9897", +"Y6\tc #978D89", +"Z6\tc #AE8180", +"`6\tc #AC7F80", +" 7\tc #AA7E7E", +".7\tc #A77879", +"+7\tc #A27474", +"@7\tc #A07073", +"#7\tc #A98283", +"$7\tc #C4B4B0", +"%7\tc #8F4B5C", +"&7\tc #883854", +"*7\tc #A05A74", +"=7\tc #F3F4EA", +"-7\tc #F5F6EA", +";7\tc #F5F5EA", +">7\tc #FCFCF1", +",7\tc #FDFDF2", +"\'7\tc #FCFDF1", +")7\tc #F8F9EB", +"!7\tc #EFF4E1", +"~7\tc #EAF3DE", +"{7\tc #8E8786", +"]7\tc #C9B2B1", +"^7\tc #D3BCBB", +"/7\tc #ADA6A5", +"(7\tc #CAA6A6", +"_7\tc #C09A99", +":7\tc #C09898", +"<7\tc #988E8A", +"[7\tc #B48888", +"}7\tc #B28584", +"|7\tc #AF8382", +"17\tc #AE8282", +"27\tc #AC7E7F", +"37\tc #A67879", +"47\tc #B19896", +"57\tc #D1D0C6", +"67\tc #A4757C", +"77\tc #862B4F", +"87\tc #F2F2E9", +"97\tc #F3F4E9", +"07\tc #F3F4E7", +"a7\tc #F4F5E9", +"b7\tc #FAFCEE", +"c7\tc #F4F8E7", +"d7\tc #ECF3DD", +"e7\tc #EBF5DE", +"f7\tc #B6AEAE", +"g7\tc #A09998", +"h7\tc #A28E8A", +"i7\tc #A48F8C", +"j7\tc #ADACA8", +"k7\tc #BAB7B2", +"l7\tc #CFCCC5", +"m7\tc #F2F3E9", +"n7\tc #F2F3E6", +"o7\tc #FAFAED", +"p7\tc #FBFBEF", +"q7\tc #FAFBEE", +"r7\tc #F8FAEC", +"s7\tc #EBF3DD", +"t7\tc #EAF3DC", +"u7\tc #969794", +"v7\tc #91938E", +"w7\tc #949692", +"x7\tc #A3A39E", +"y7\tc #BDBAB6", +"z7\tc #CCC9C4", +"A7\tc #D9D7D0", +"B7\tc #E2E1D7", +"C7\tc #F0F1E7", +"D7\tc #F1F2E8", +"E7\tc #F1F2E6", +"F7\tc #F6F6E9", +"G7\tc #F9FAEC", +"H7\tc #F8FAEB", +"I7\tc #F2F7E5", +"J7\tc #EEF6E0", +"K7\tc #EAF2DB", +"L7\tc #A3A3A2", +"M7\tc #90928F", +"N7\tc #90938D", +"O7\tc #989B97", +"P7\tc #A2A39F", +"Q7\tc #C4C2BD", +"R7\tc #D8D4CE", +"S7\tc #E2E0D8", +"T7\tc #EBEAE0", +"U7\tc #EEEFE3", +"V7\tc #F0F1E8", +"W7\tc #F2F4E7", +"X7\tc #F4F5E7", +"Y7\tc #F6F7E8", +"Z7\tc #F8F8EB", +"`7\tc #F2F6E2", +" 8\tc #EFF6E0", +".8\tc #A7A7A6", +"+8\tc #929691", +"@8\tc #989B96", +"#8\tc #A4A4A2", +"$8\tc #B6B4B1", +"%8\tc #CCC8C3", +"&8\tc #D9D8D2", +"*8\tc #E2E4DA", +"=8\tc #E3E4DA", +"-8\tc #E4E6DC", +";8\tc #EBECE4", +">8\tc #EFF0E6", +",8\tc #F2F3E8", +"\'8\tc #F4F4E7", +")8\tc #F7F8EC", +"!8\tc #F6F8EC", +"~8\tc #F3F6E7", +"{8\tc #EFF4E2", +"]8\tc #EEF6E1", +"^8\tc #8F928F", +"/8\tc #909390", +"(8\tc #939693", +"_8\tc #9A9C98", +":8\tc #B7B7B2", +"<8\tc #C6C6C1", +"[8\tc #D0D0C9", +"}8\tc #D6D6CE", +"|8\tc #D8DAD2", +"18\tc #E5E6DF", +"28\tc #F2F3E7", +"38\tc #F6F6EB", +"48\tc #F3F6E6", +"58\tc #80807F", +"68\tc #8E908D", +"78\tc #909490", +"88\tc #949794", +"98\tc #9A9C9A", +"08\tc #A6A7A4", +"a8\tc #B3B4B0", +"b8\tc #C0C2BC", +"c8\tc #CFCEC7", +"d8\tc #D2D4CA", +"e8\tc #E0E1D8", +"f8\tc #E6E8DE", +"g8\tc #F0F1E6", +"h8\tc #F4F5EA", +"i8\tc #F4F6E9", +"j8\tc #F1F6E6", +"k8\tc #EDF4E0", +"l8\tc #ECF3DF", +". + @ # $ % & % * = = = = - ; > ; ; , ; ; ; , \' \' ) ! , , , , , , ~ , ~ ~ {\ + { ~ ~ ~ { ] ^ ^ ^ ^ { / , ^ ^ ( ~ _ : ( < _ [ } | / 1 / 2 2 3 2 4 2 4 5 4 5 6\ + 7 8 7 9 0 a b 0 b c d d e f g g g h i j j h g k h g g l m n o p q a r r s t u\ + u v v 7 7 u u w x y z A B C ", +"D E F F G H I J K L L M N M ~ ~ , , ; , , ] , O O O P , ; ] Q , R , , ~ ~ { ,\ + ^ ~ , ^ { ^ ( ^ ^ ( ^ , S ( ~ ~ S S ~ ( T U [ _ ^ [ [ V [ / [ W 1 W | W W V X\ + X Y Z Y X Z w ` .u .u ..u u +.@.#.#.@.$.#.@.+.@...+.#.u u %.` &.*.*...*.=. \ +.X X 4 4 =.=.-.;.>.>.,.@.e ", +"\'.).F !.~.H {.J J > {.M > , ~ ~ , > , , Q ].{ \' O ! ^.; ]., ]., Q ~ ~ , ~ ,\ + ~ , ( ^ ~ ^ _ ^ ^ ( ^ ^ ~ ( ( R ^ ( ~ } U _ [ _ _ : [ [ _ [ [ [ [ [ /.(._.V /\ +./._./.:./.<./.=./.[.Y <.w =.<.w }.|.1.|.2.w w <.3.}.<.=.w <.X X X X 4.5.6.X X\ + 4 3 4 4 4 2 X /.7.8.;.,.#.9.", +"0.a.b.U b.~.= {.> > ~ > > c.> , ; ; , ~ Q d.e.O f.P g., , ) , , , , , ^ ~ , ,\ + ~ ~ ~ , { , ~ ^ ( _ ^ ^ ( T _ : h.( : ( _ _ _ { _ } [ [ [ [ [ [ [ [ _._.[ [ i\ +.V /.Y /./././././.=././.<.=.<.-.-.7.-.<.=.=.<.<.<.:././.X 6.:.3 j.3 6./ / j.3\ + k.- l.l.- 2 _.m.7.;.>.z q ", +"n.o.o.o.T I p.] M ^ ^ ~ { , ] , ; ]., , Q , ) q.r.s.e.t.c.^., , u.v.w.x.R y.,\ + ~ M ~ , K , ^ { K ( ~ ^ S ( _ { ( ( ^ ^ ^ ^ ^ ^ ^ ^ / , _ ^ ( ~ _ : _ ( T _.|\ + [ [ W | 2 Z Z Z 4 Z .*.z.*.z.&.Z . .6 X .X 6.n.(.3 6.3 3 / / 3 3 3 l.p.p.A\ +.- = = = - - [ :.[.;.>.B.C.", +"$ D.6.6.p.E.- L ~ K h.~ { , , > , ].; , Q F.].G.H.O P I.J.K.L.M.N.M.O.P.Q.R.S\ +.T.U.V.W.X.Y.Z.{ ( } _ ~ ~ T ^ ( ^ ^ { ^ | ^ K ^ _ T ^ { S ~ ( ~ S S ~ S T a.[\ + | [ (.W W W =.(.Z Z Z Z Y X X .Z X Z 4 6.6.2 6.4 2 2 A.* p.A.3 2 p.1 % - p.=\ + = `.= `.`.= p.[ _.m. +z a ", +".+j.I I h.I { L K K ^ K ~ M ; , ; ^.Q , ++, ^.@+#+$+%+&+*+=+-+;+>+,+\'+)+!+~+\ +{+,+]+^+>+/+(+]+!+_+:+<+[+~ S _ ( ( } ^ ^ { _ ^ ^ ( / ^ ^ _ _ ( _ _ : [ ^ | 1 \ +[ W 2 3 Z 6.W 4 4 4 4 6 6 .7 7 v 7 7 7 }+}+|+b 0 b b b c 1+b }+2+3+4+3+5+6+% \ +.+N 7+8+9+0+a+N [ :.m.b+B.C.", +"j.j.I I T h.= ~ ^ ~ ^ > ~ c.; , ; ; , , Q c+d+e+f+g+h+i+)+j+k+N.]+l+{+_+m+n+_\ ++o+(+p+{+q+r+s+t+u+v+w+x+y+z+( ( ( ( _ ( } _ ^ _ ( ~ ~ ^ S ( ( : o._ : _ [ o.[\ + [ [ / | [ (.| 3 Z (.W =.=./.Z X Z =.X X .Z u .Y Z .%.%.Z 4 6.3 2 4 4 p.* =\ + N `.a+A+B+C+N / V D+E+..7 ", +"* * L p.I L = > ~ M > ^ ] ; ; ; N ^.G.F+G+H+H+I+J+K+L+M+N+O+P+K+O+Q+R+H+S+T+U\ ++e+K+V+W+r+X+P.Y+Z+,+`+n+O.V+ @~ ~ ( K ~ ~ ~ ^ ~ S ( ~ ^ ~ ( : _ _ _ / V [ [ [\ + _.[ [ [ (.Y W (.i.(.X (./.:.<.Z 4 Y 4 Z 4 6 6 6 6 t .@C.a b c b b a 0 b +@@@@\ +@#@& $@& $@& 4 4 Y =.x y u ", +"%@J K K J J {.J &@; ; , , , ] , *@=@-@;@;@T+>@,@\'@)@)@L+!@M+~@,@{@]@^@L+,+&+\ +/@,@]@(@Q+_@:@<@[@!+Z+/@n+Q.{+Y+}@, ~ ~ ~ , ~ _ _ _ _ _ ^ [ _ [ _ ^ [ [ [ | (.\ +_.(.[ W [ | [ /.W [ 3 i.| /.(.Z W 3 [ X X Z (.Z 4 w X 6 X Z ` .u u =.6 6 4 6 \ +A.|@|@|@l.- 1 2 Z /.-.1@y 6 ", +"2@3@J J J 3@= &@> ; ^ > M = 4@5@6@7@8@9@0@a@b@<@c@9@d@e@~@6@f@d@g@h@;+i@/+9@j\ +@g+:@,+-+;+(@i@h@k@l@m@n@^+\'+o@v+p@~ ( ~ ^ ~ ~ ( _ ~ ^ ~ K ( [ ^ 1 | ^ [ [ / \ +1 1 / / 1 [ (.2 / W 4 Z 4 5 5 4 8 8 v 6 8 Z 6 6 6.4 4 X w Z 6 ` .Z w .u 6 4+\ +#@4 2 / 2 2 / 4 /.=.7.7.,.8 ", +"q@r@s@&@7+&@t@c.^ ~ ; , , u@v@L+w@8@i+H+x@;@y@0@,@x@8@z@A@\'@K+Q+0@^@x@B@C@&+\ +D@E@S+)+x@^@K+L+H+^@<@>+F@l+,+G@H@M.I@K K ^ ~ ^ ( _ / _ _ [ | [ | 1 ^ [ [ / (.\ +1 / | 1 / [ [ / [ | (.W W Z Z Y Y Z Z 4 X X Z Z 6.(.X Y 6.X 6.X =.=.=.7.7.Y .\ +7 3 / 3 3 2 1 W /.7.J@;.y 8 ", +"B+r@s@r@{.K@N &@> M ] ; L@M@H+;@;@N@e@H+M+H+z@T+c@P+c@&+O@y@X+=+E@c@9@i+)+J+)\ ++)@P@0@7@)@Q@<@,+i+,@i@R@)@N+{+S@T@^+Y.^ ^ ~ ^ K T _ ~ ^ } ^ / _ _ [ [ I [ [ ^\ + [ [ [ [ [ | | | 3 2 2 4 Z 4 .4 5 4 4 4 4 6 6 4 4 4 Z 4 4 4 Z Z =.Z Y Y ` v #\ +@|@4 2 4 4 W X Y =.E+7. +}+", +"U@V@r@7+2@W@N > > ; ; X@I+N@N@8@\'@)@7@6@_@;@L+\'@P+Y@S+6@h@;@Z@g+l+~+;+f@:@E\ +@,+P+h@{+F@M.>+`@Q.!+l@]@S.`+ #O..#!++#@###| [ / ^ o.[ ^ } ^ _ } [ } [ _ [ [ _\ + [ [ [ [ | [ 2 (.W W 4 4 Z 4 6 6 8 7 $#$#r 7 $#$#%#v $#9 $#C.7 7 7 7 7 &#u .t\ + t u 6 6 4 4 Z *.Y 7.;.7.,.7 ", +"*#2@r@8+8+8+t@> > ~ =#H+y@;@H+9@H+\'@>@H+-#e@;#>#H+j+;#J+!@H+j+,#i+Y@d@B@\'#d\ +@*+,@)#(@>#k+L+E@Y@e+-#)#a@(+0@K+!#)+n+O.~#$@( _ ( [ [ [ / / _ _ } [ { [ [ [ |\ + 1 1 1 [ W W W 1 W 2 W 4 6.4 Z Z Z 4 u v .w *. . . .6 6 Z Z Z 4 4 4 Z W =.Y \ +. . . .6 8 |@Z Y =.=.-.;. +2+", +"{#]#^#a+/#a+t@> > c+w@H+H+y@;@R+H+6@(#z@-#;@g+)#H+c@I+L+;+H+l+K+9@Z@0@d@9@_#,\ ++S+ #:#H+)#<#E@L+!#^@_#^@[#g@d@e+d@`@Q.m@-+}#I { [ | } / } ^ / ~ | | | [ 1 | 1\ + W Z W W W W 2 2 4 Z (./ X X (.2 X X 6.=.Z Y Y Y X Z 6.X 6.6.2 4 2 4 (.X =.Y Y\ + Z Z 4 4 X =.=.Y :.[.;.>.|#", +"1#2#3#2#q@4#N 5#6#7#H+H+z@z@,#P@;@f+I+Q@K+T+K+O+R+O@\'@<@(+I+S@f@)@k@P@N+:#\'\ +#:@d@{@n@*+j@{@8#>+<#8#R@:@h@\'#O@S+{@h@V+9#Q.0#a#o._.| _ | _ _ / _ } | V | [ \ +(.2 | 2 2 2 l.2 2 4 Z 2 4 2 2 Z 2 4 Z X Z Z =.W Z Z X 6.4 2 A.4 6.2 6.2 2 3 (.\ +X Z Z 6 8 b#6 6 .w Y 1@>.,.9 ", +"c#U@]#V@d#s@c.e#f#(#M+T+e+M+x@f+T+`@g#L+T+H+h#T+>#\'#Q@_#X+>@i#<@=+)+Q+!@)#0@\ +)+,@g+g@;@h#j#Q@Y@8@S+k#M+l#k#=+(@l@N.\'+m@V+~+m#n#_ _ _._ | [ | [ [ / V | W W\ + 4 Z 4 4 4 Z 4 4 6 4 4 4 o#6 6 4 6 4 Z 4 4 4 4 6 4 2 4 4 4 6.4 2 2 l.2 2 3 W (\ +.Z Z Y 4 Z 4 Z X =.1@-.;. +9 ", +"p#8+= * M ~ ] q#r#d@w@;@6@e@;@H+H+g#;@)@e+H+W+i+T+R+O+U+P+H+X+_@,#E@&+O@_@P@Q\ ++&+k+/+)#n@P+R+;#g+h+[#^@N+ #Y+s#q+,+r+t#q+r+n+u#1 : ( | / _ 1 | | 1 | 1 (.4 2\ + 4 4 4 5 4 4 6 Z 6 4 4 5 6 6 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 l.|@4 |@l.2 4 Z 4 W\ + Z Z 4 4 4 W W /.m.[.J@7.&#", +"`.v#v#K K K ] w#H+H+;@8@e@w@,#<#\'@Q+e@\'@O+;@)+T+\'@X+6@n+!@`@V+P+!+W+:#l@-+\ +*+!+U+;+T@6@\'#;#Y@-+h@S@8#T@Q.h@v+M.Q.m@o+Y+G@S.!@^+x#}#_ [ / | 1 1 1 | 2 [ 2\ + 2 2 | 2 4 2 2 2 2 2 4 Z 4 4 4 4 4 4 4 4 4 4 4 2 4 4 4 4 5 4 4 |@2 l.l.% y#2 4\ + 3 4 (.W 4 4 W 2 2 /.=.:.7.7.&#", +"8+z#v#J ^ S - A#H+T+w@&+7@;@)@H+,@8@w@f+_@>@]@e@7@`@&+l+h+H+k+g#)@O@0@\'#<@B#\ +~@P+)#`@&+j+X+l+n+/+C#D#E#F#G#)+U+H#Z@k@I#m@u+Z+:@`@J#n#| 1 K#| 1 2 [ 2 1 1 1 \ +2 2 2 | 2 W 2 (.2 W W 4 2 2 4 2 1 3 4 2 2 2 2 3 2 Z 4 2 W |@2 2 l.y#l.2 1 1 W \ +2 2 4 4 2 2 4 Z Z X Y m.1@&#", +"L#J J M ^ K M#-#H+f+a@<#,#6@k#(#;#x@H+y@;#0@Q@;@_#!@H+f@ #x@X+H+,#;@H+e@;@M+h\ +#6@:@D@k#S.]@Q.k+N#O#P#Q#R#S#T#U#V#O+6@Y+[@V+_+B#[@_@W#X#Y#Z#| 1 1 1 2 W 2 2 2\ + 2 W 2 1 2 W Z 2 W 2 2 2 }#2 2 2 2 1 W 2 2 4 2 4 4 4 4 4 4 4 o#4 |@|@l.}#2 4 4\ + 4 4 4 4 2 4 W X =.=.7.Y .", +"`#&@J J ~ K $B@H+e@H+i+H+i+P@H+x@h+6@,@R+,@^@f+0@l@T+*+Y@L+:#g#g+,+i#Y@e+K+U\ ++\'@g@`@-#r+ #.$+$@$#$$$%$&$*$=$-$;$>$,$G@m@\'$u+.#)$)+N+/+e+S.!$~$2 2 2 2 4 2\ + 4 4 W | 1 2 2 2 Z 4 4 2 4 2 l.4 2 2 2 2 2 2 2 2 4 2 4 4 2 4 4 2 4 4 l.2 2 2 2\ + 4 2 4 4 4 4 Z Z Y Y =.Y Y {$", +"]$N {.{.L ^$r#<#6@E@b@B@f+H+[#0@K+h#j#g@j#a@W+e+Y@Z@N@)@c@K+U+P@f@c@\'@;+h#9@\ +g+E@E@Z@d@f@)#/$($_$:$<$[$}$|$1$2$3$4$5$6$P+Y+w+T@H@Z+w+r+k@M.8#:#7$4 W 2 4 4 \ +4 4 2 }#2 W 1 2 5 2 2 }#2 5 5 8$2 4 2 5 2 l.l.l.8$2 2 2 |@2 4 2 2 2 2 2 1 1 1 \ +1 9$4 2 4 2 X Z =.Y 7.-.}.` ", +"0$`.N > M a$T+g#;@_#L+_#b@z@)#6@E@h+>#e@a@l#f+l#O+R@-#K+Q@P@B#;@R+R@>@y@T+;#P\ ++K+M+l@g#X+H+b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$/@,+G@9#S.q$q$r$@#n+n@s$2 2 2 2 }#4\ + }#2 2 1 8$}#1 2 l.2 2 2 2 4 1 1 2 2 y#1 }#l.2 2 1 4 4 }#5 4 2 2 2 1 2 1 2 4 2\ + 2 1 2 2 2 2 Z Y Y =.Y Y ..", +"t$N > > { u$i+M+;@L+;#,#\'@H+_#8@B#\'@K+F@y@h+d@,@Y@i#,@*+c@Q+~+b@h@`@W+/@^@*\ ++i#-+!#Q.Q+v$w$x$y$z$A$B$C$D$E$F$G$H$I$J$K$L$M$h#,+N$~+9#Z+,+M.~+{+`@2 O$1 1 1\ + O$O$1 1 1 | 1 - 2 }#}#2 1 }#1 1 l.1 1 8$y#1 1 1 2 1 2 1 }#4 l.2 2 1 O$}#2 2 2\ + 1 2 2 }#2 2 Z Z Z Y =./.=.` ", +"P$&@J ; \' Q$g#8@w@g+R+b@k#H+g+;@&+0@R$[#,#9@X+e+!#h#e+P.:@{@/@<@N+,+E@T@h#g@\ +X+<@{@f@)@j@N@P+S$T$U$V$W$X$Y$Z$`$ %.%+%@%#%$%%%,#n+e+n+i@]+&%h@y+*%2 O$y#1 O$\ +8$l.1 1 1 - 1 1 O$y#2 2 }#l.2 y#=%8$- l.}#8$1 2 1 2 }#}#2 }#}#2 5 }#2 2 8$2 l.\ +2 2 2 5 }#2 Z Z Z Y Y Y Y B.", +"-%&@J > ;%\'@>#e@b@=+J+c@P@;@!@f+P@8@y@R@Q@P@w@l#i@d@7@B#E@=+(+Q@!@(@6@>+j#k@\ +R@B#,+]@^@n+0@h#T+>%,%\'%)%!%~%{%]%^%/%(%_%:%<%[%k#d@j#h@R@}%|%1 }#5 - 8$1 - y\ +#O$y#O$O$1 y#O$y#y#l.O$O$1 }#O$O$- y#y#- 1 1 1 1 O$1 1 }#2 }#}#}#O$}#y#1 - { {\ + O$1 2 1 2 1 2 Y Y W =.Y 1@{$", +"-%1%2%> 3%H+>@H+;@0@H+M+>@H+;@H+g#J+P@Q+P@;#K+H+f@l@_#`+]@)#Z+K+8#k@:@N.)+R@h\ +#k+L+/+{@!+c@Z+)@h+<@4%5%6%7%8%9%0%a%b%c%d%l@e%,@n@A@<@f%Y.8$- O$}#}#1 - O$=%8\ +$O$O$1 - 1 1 g%y#- y#O$}#1 g%y#O$- O$d.y#O$1 1 8$O$1 2 9$O$O$1 }#1 O$1 1 } h%O\ +$| 1 1 1 2 W W i.Z Z =.Y {$", +"i%5#2%! j%(#^@M+_#<@H+Q@,@H+D@;@^@L+N@B#d@T+!@0@{@h@y@r+(@N+`+U+]+Y@)#!+<@k@!\ +@X+N.]@]@S@R@8#,@P@R@w@)@k%l%m%n%o%p%q%r%H+i#K+[@{@^@S.~+B#[@u#{ O$g%y#y#1 g%y\ +#y#y#d.y#y#O$) - O$O$1 O$O$O$g%1 O${ O$O$1 y#y#- O$1 O$O$O$1 O$1 O$O$O$1 - 1 1\ + 1 { 1 4 2 | W 2 Y Y =.1@` ", +"s%5#2%t%M+H+,@H+&+N@;@_#A@H+e+<#B@R@e@h#&+8@;+e+N.Z+)# #P+=+D@Q@k@F@M+j@N@D@f\ +@)@{@E@d@i@&+(+O@^@=+S+i+(#;@c@;@f+&+a@<@6@k@>#,@~@W+R@k@>+`+U+x+u%y#1 1 y#8$8\ +$O$g%y#y#y#O$- y#y#O$O$O$y#O$O$O$] - g%y#) d.O$y#1 O$O$O$O$O$O$O$1 g%d.y#v%d.O\ +${ O$O$1 1 1 W W /.i.i.Y .", +"w%; 5#x%8@H+Q@a@y@w@H+H+y@H+E@;@\'@&+e@w@6@e@,@b@Y@P+)#X+K+i#]+ #i#T@&+Z+B#r+\ +j+D@l@{+B#;+h#`+Y@D@`+L+>+;+g+R@x@H#{@L+/@_#k+B#`+D@(+Z@ #:@{+~@M.!@y%- O$- }#\ +g%y#) y#- y#d.s.O$O$y#O$O$O$y#g%].O$v%) 1 d.O$y#O$O$1 O$O$O$O$y#O$y#s.1 =%]., \ +g%1 1 O$1 1 1 2 1 W /.Y i.Y ", +"c.5#P z%;@;@H+a@l#f+i+9@7@x@]@H+^@g@K+A@&+E@h#Q@;+<@!@!@)+~@(@_@Z@,+~@l@A@*+h\ +#B# #n@!@l+f@N.B#]@Y+e@N.f@g+k@e+j+)+_#^+&+S.E@n+P+6@n+c@P.B#i#h+Q+Y@A%y#O$s.y\ +#y#) y#) d.d.O$y#O$y#O$s.O$y#e.- g%].d.s.y#y#) 1 O$O$- O$O$O$O$v%O$- ) d.O$e.d\ +.d.s.2 K#1 }#1 1 i.i.i.Y Z ", +"c.2%a$P+H+y@)#x@7@Q@a@Q+^@;@-+,#)@d@B#c@0@W+L+K+ #^@Q+<@\'#k+:@R+B#K+!@:#O@~+\ +h+`@B#h#Q+8#C@/@c@;#Y+;#X+_@`@n@(#k@:@P+S.R+`+h+h@G@i#N. #^+C@(+o@T@`@j@B%d.O$\ +y#v%s.y#^.d.v%d.) O$O$O$O$v%) ) d.d.y#s.) d.s.] d.O$d.y#1 1 y#- d.^.e.) v%O$) \ +O${ y#l.O$1 2 2 1 W W Z i.Y ", +"c.5#C%\'@H+z@8@H+H+i+;@;@i+T+H+;@F@M+;@H+H+w@J+H+&+\'#M+F@E@<@i#g+Z@l@-+)+h#S\ +.7@l@&+)+=+F@,@n+_#=+,+(#T@Q+=+n+f+C@)@<@:#A@n+;#;#,+)#k@,@:@N@_#!@~@)+>+=+D%s\ +.O$y#d.y#y#y#) ) ) d.O$) ) d.^.e.d.v%g%e.) ^.y#y#O$1 O$- O$O$O$O$- O$d.s.y#d.s\ +.g%d.O$O$d.1 O$2 1 W Z W Z Z ", +"F.E%a@I+H+6@x@H+&+_#T+d@\'@)@X+(# #`@c@\'#P@j#)@j+]+B#\'@8#P@B#<@_@]@h@_@`+f@\ +Z+)+o@Z@h#8#8#\'#_+j+)+o+{@j@:#8#9#:#T@g@K+V+h+G@n+ #t#N@T@ #h@;#8@e+ #G@(+)+j\ +@F%y#e.].y#e.) d.d.y#{ O$) d.] d.d.e.s.g%s.s.v%) e.d.- ) O$] - 1 O$O$O$y#) y#O\ +$d.d.1 O$1 O$1 O$O$W | W Y Y Y ", +"G%H%l#S+7@w@\'@H+6@8@y@0@f+y@d@7@_@*+B@f+H+]@_#>@(+!#!@Z@O@c@8#;@B#i@r+t#[@t+\ +:@^+t#T@,+\'+l+Y+j@n+Q.k+^+]@_#{+f+_+ #X+H#d@G@y@]+F@ #!#i@:@H#K+0@e@]@8#n@,+!\ +@I%s.d.O$d.v%y#) ) ) ) O$O$- d.) ) y#s.d.d.) s.) ) e.) y#d.O$O$O$) d.v%d.O$y#s\ +.O$y#d.1 1 1 1 1 | | W Y W Z ", +"J%K%H+P@8@e@B@\'@6@_#P@L+M+y@6@;@&+R+y@k#H+N@L+8@8@=+f+N+;#,@\'@-#i@B#(+\'+`+\ +L%x+H@o@^+M%Y+o+)$G@s#v+;+S.j@i@r+9@]@B#g+n@0@ #N@i#d@B#r+ #;+/@F@K+M+w@e+U+l@\ +R@!#N%) ) ) e.g.^.e.; ) d.d.) ].v%d.) y#s.e.s.) y#d.y#) ) y#O$O$O$O$O$O$O$) X.\ +% d.O$O$1 O$1 1 1 W W W W 4 Z ", +"O%H+H+H+e@;@H+H+(#y@f+,@\'@8@)@_#Q+ #N@g#y@)@&+f+`@,@i#(+<@N.j+(+V+^+M.N$M.P%\ ++#Q%R%S%T%P%I#U%V%W%W%^+N$O.s#X%Y+s#)+n@k@h#_+h#t#h@e+:@L+F@O+Q@,@I+e@;@i+j+;+\ +X+!+Y%v%d.e.e.^.e.) O$d.d.) d.O$d.e.O - ) y#y#1 d.e.s.y#d.O$O$O$y#O$d.O$O$s.O$\ +O$y#O$1 O$1 1 1 1 1 W W W Z ", +";@k#H+j#\'@B@O+H+E@_@P@P@F@Q@R@e@k+Q@P+c@-#&+e+6@[@d@B#h@h#i@f+ #~+(+Z%`% &.&\ ++&@&#&$&%&&&*&=&-&;&>&,&\'&P%)&I#v+!&o+X%O.h#V+9@h@R@ #N+f@[@l+!+O.{@W+M+H+>@/\ +@h@Z+~&) e.e.s.e.e.{&) O$d.) { ) ) O$y#) s.e.O$d.O$s.d.y#d.g%1 y#O$d.O$O$y#O$1\ + O$y#O$O$1 1 }#1 2 1 | 1 W W ", +"H+H+H+k#H+b@M+6@_#&+f@&+;@e+N@Q@;#0@>#H+H+P@O+6@ #&+)+;#L+j@_#)+(+,+]&^&/&(&_\ +&:&<&[&}&|&1&$&2&3&4&5&5&6&7&N$8&R%X%R%N$l+S.Y@C@,@k@;#Q@h@&+>+f@~@^@k#x@H+x@(\ +@{@H#u%d.d.e.) e.d.e.) ) d.] ) ) y#y#y#O$) s.) O$y#O$) y#y#v%d.O$y#d.d.y#=%s.s\ +.O$O$O$O$O$O$O$2 2 W W W 2 ", +"S+H+;@w@w@H+a@f+Q+;@h+\'@H+!@M+K+&+R@[#b@8@_@K+;+O@H+S.H#k@h#/@l+[@t+9&0&a&b&\ +c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&{ r&s&t&u&v&L%w&.#N$w+Q.*+k+*+O+\'#~@U+!@I+M+;@;\ +@\'+)+_+x&s.e.e.) ) ) ) {&) O$] ].d.y#s.s.s.y#s.O$s.) y#v%y#O$y#O$O$O$d.O$1 - \ +- y#O$O$y#O$O$1 1 1 2 W W 2 W ", +"A@P@_#7@\'@l#;@F@A@>@k+R+R+R@Y@S.C@y@h#M+;@N.;#d@:@d@M.^@_+b@D@o@]+&%y&z&A&B&\ +C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&S&S&T&U&V&W&)&X&x+Y&V+n+[@s#`+)@!+)+L+{@&+<@\ +S.O.R%r$Z&\' e.) ) ) d.) d.^.d.d.) O$\' y#y#y#s.y#O$s.y#O$s.O$d.O$y#d.{ d.O$d.\ +O$O$1 O$}#O$O$O$y#O$2 | 1 W W ", +"i+T+w@;@H+N@H+H+;#H+;@H+x@R+;@P+P@7@B@6@a@T+y@W+Q@l#X+y@(+;#{@i#N.\'+`& *.*+*\ +@*#*$*%*&***=*-*;*>*,*\'*)*!*~*{*]*^*/*} ) (*_*:*<*&%v&)$Q.H#K+!+0@i+N.7@g@9@(\ +@h@`@s#G@[*y#s.s.O$s.v%d.v%d.) ^.) y#) y#s.y#O$y#s.g%y#) g%s.d.O$O$O$O$O$O$O$O\ +$O$y#O$- - y#y#O$1 1 1 W Z 4 ", +"H+;@x@H+H+;#H+Q+,@H+h#;@i#g+f+-+S+,@b@b@<@[@z@N+C@-#k@g@{+h+S@Z+`+N$N$}*|*1*2\ +*3*4*5*6*7*8*9*0*a*b*c*d*e*f*g*h*i*s.O ) j*S&k*l*m*n*o*W%^+n+V+!@h@:@e+r+)+x+.\ +#{+p+U.O ) v%) ) d.e.) ) ) O$] ) O$y#O$y#s.s.s.) y#y#y#y#O$O$O$O$O$1 O$O$O$O$O\ +$O$y#d.O$O$O$O$1 1 1 K#| W ", +"g#w@J+H+R+A@>#<@e+_#;#l#C@O@_@/@,#e+,@\'@_#!@=+n@)#)+,+d@D@;#f@!#P.m@+#P%p*q*\ +r*s*t*u*v*w*x*y*z*A*B*C*D*E*F*G*H*I*J*K*g%L*S&S&M*N*O*P*Q*I#w&9#Z+M.n+i#[@[@9#\ +q+o+R*) s.e.e.y#y#) s.e.y#) d.d.) y#v%y#d.y#e.{ O$) d.^.) y#d.d.y#y#d.O$O$s.O$\ +s.O$- g%d.O$O$y#1 1 1 2 | O$", +"w@w@I+H+8@l#6@P+A@8@U+i+]@i+d@h+j#B@,#w@-#O+H+)+8@H+N.;#r$Q@k+[#H#Z+M.S*T*U*V\ +*W*X*Y*Z*`* =.=+=@=#=$=%=&=*===-=;=>=>&,=\'=S&)=!=) ~={=]=^=Q%S*r+m+/@D@Y+Z@s+\ +`+/=y#d.) y#y#y#v%) ) e.) ) ) d.d.y#s.s.O O$) ) ) s.y#e.O$s.) y#{ s.d.d.y#y#O$\ +O$s.) ) e.O$O$y#O$O$1 | }#| ", +";@;@H+H+Q+H+H+;@6@w@A@J+h+y@<@E@k#e@8@w@)@,@x@e+<@Q@O@&+!+Q@_+A@N+M.Y+(=_=:=<\ +=[=}=|=1=2=3=4=5=6=7=8=9=0=a=b=c=d=e=#&f=g=h=i=j=P k=S&S&l=m=X&s+`+Z@]@~+l+n=w\ +.{&) v%) ) ) ) ! y#s.) s.) e.v%) v%O$O$y#s.) ) v%) s.s.O$y#g%s.O$O$d.O$O$O$O$y\ +#s.s.s.y#y#s.O$O$O$1 1 | | ", +"_#6@&+H+X+T+{@ #k#h#L+=+Z+O@D@]+O@f+d@b@D@f@`@]+:@n+!#,@!@_#M.{@n+h@N.v+W%o=p\ +=q=r=s=t=u=v=w=x=y=z=A=B=C=D=E=F=G=H=I=J=e=K=L=M=I*N=S&O=, P=Q=_=R=(+S=T=s.) )\ + ) ) ].) v%) y#g.) ) y#e.y#d.d.O$y#- y#y#s.y#e.s.) e.) e.y#s.y#O$d.1 1 g%y#y#s\ +.O$s.s.s.g%s.y#O$1 1 | 2 | ", +"i+N@M+N@N@z@I+_#y@{@A@b@Q@f+f+j#N@w@,#H+i+f+6@A@;@R+e+6@S.a@>+&+R@t#*+m@S*X%U\ +=V=W=X=Y=Z=`= -.-+-@-#-$-%-&-*-=---;->-,-\'-)-!-~-{-]-^-/-) (-_-:-<-O.[-d.].].\ +) ) ) e.d.O ) s.) v%y#y#y#y#) O$) v%s.s.s.y#g%) s.y#d.s.O y#g%y#y#d.O$O$- ) d.\ +O$y#y#e.O ! O v%g%O$}#| 2 | ", +"i+M+;@P+>#b@h+d@H+U+Q@Q@_@8@g@_@P@M+>#M+g#;#O@[@R${@!@;#j+;@h@)+i#h@:#\'+^+H@\ +}-|-1-2-)*3-4-5-6-7-8-9-0-a-b-c-d-e-f-g-h-i-j-k-l-m->-n-o-p-q-r-_-s-9#t-u-v-Q \ +Q ].{&) s.e.e.g%^.e.y#) e.y#) ) ) ) ] y#y#) e.e.s.O O ) e.e.y#y#g%O$y#1 O$- d.\ +{ O$s.g%P e.O ) O$O$1 K#| | ", +"H+(#H+\'@Q+;@A@9@f+B#g+P+=+A@]@_@~@L+w@,@j+0@_#i#f+;+^@<@P.=+D@i+!+(+Q.x+9#x+\ +w-x-y-z-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-k-Y-Z-`- ;.;+;@;R&#;$;\ +%;&;*;, d.d.) ) ) ^.) y#y#s.y#e.y#g%O$- ) d.) s.v%P e.) P s.y#y#O$O$y#y#1 y#) \ +d.O$e.s.s.e.d.d.d.O$1 | K#1 ", +"w@!#W+9@K+l#h+)@<#!@&+Q+_#0@F@,# #E@&+T+=+P@=+\'#I+B#d@<@~@g#f@^@I+f@U+;+8#l+\ +t+=;-;;;>;,;\';);!;~;{;];^;/;(;_;:;<;[;};|;|;1;2;3;4;5;6;7;8;9;0;a;b;c;d;e;f;g\ +;h;i;%;v-R ].) s.y#e.y#y#e.e.e.d.y#y#s.e.) y#d.O$e.s.s.s.e.s.s.) O$g%d.O$O$O$O\ +$O$s.d.) v%e.d.e.O$1 1 K#W | ", +"H+i+y@H+j+H+a@F@L+]@>#*+O+_#!@K+e+,@&+x@P@w@y@8@Q@K+N@C@H#P+_@\'#E@\'#g@!+;+O\ +.S@v+j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z;A;B;B;C;D;1;2;E;F;G;j-H;I;J;K;L;M;N;O;P\ +;Q;R;g;S;i*< j=, v%e.e.) ) e.s.) O$g%y#s.s.e.{ \' y#e.v%v%].y#s.d.) g%y#O$O$1 \ +y#O$v%s.e.s.y#O$v%{ { | | 1 W ", +"w@6@K+_#_@>@C@y@-#^@f+;+8@;#>+\'#D@^@0@e+k+=+H#e+~@!+K+(+U+k@l@Z@~+N.~+S.N.q$\ +s#+#W&T;U;V;W;X;Y;Z;`; >.>+>+>@>#>_;$>%>&>*>=>=>C;->1;2;;>W->>,>\'>)>!>~>{>]>^\ +>/>(>_>:><>S;[>}>j=, ) e.s.s.s.e.y#d.O$s.g%d.e.v%e.s.s.s.s.e.d.y#y#s.O$O$O$y#O\ +$y#g%y#O$O$d.y#O$1 | | 1 K#W ", +"y@h+e@_#K+w@`@]@=+:#>#H#<#x@g@8@g+^@l#d@-#f+8#S+g#g@&+&+i+X+S+7@f+0@i+*+e+T@P\ +.S.+#|>1>2>3>4>5>6>7>8>9>0>a>b>c>%-d>e>f>g>h>i>j>=>C;|;k>6;V-l>m>n>o>p>q>r>s>t\ +>u>v>w>x>y>z>K*A>&;B>R e.d.e.) y#e.d.) y#y#y#g%y#s.y#y#y#v%\' s.) - O$- 1 O$y#\ +1 d.O$O$O$O$y#O$1 K#| | | | ", +"y@N@8@L+P@f+C@9@B@R+T+X+\'@g+&+(#U+g+)#T+i+M+e+w@O+~@,#V+R$!#j+W+D@Q@g@k+P+G@\ +k@`+9#+#C>D>E>F>G>H>I>J>K>L>0>b>#>M>N>O>P>Q>R>S>S>T>=>U>V>W>X>Y>W-Z>`> ,.,+,@,\ +#,$,%,&,*,=,-,g;z>$;[>v-, ].s.e.O s.y#s.y#s.O$O$y#v%g%v%y#s.O$y#O$y#O$g%O$1 O$\ +O$O$O$1 1 O$1 K#| 1 | | W | ", +">#M+H+P@b@7@_#9@{@g@_#i@j#B#>+O@:#F@k+R@(#,@l@P@k+D@N@P.!#O+Y@h@O.i@)+N+]@Q.Z\ +@t+9#M%<*;,>,,,\',),!,~,{,],^,/,(,a-_,:,<,e>[,},|,1,2,S>3,4,5,6,7,e-8,9,0,a,b,\ +c,d,e,f,g,h,i,Q;j,k,S;A>B>Q , , ) y#y#y#y#O$y#g%O$d.1 O$y#O$d.y#O$g%1 O$g%O$O$\ +1 1 1 - O$2 { W | V | | V i.", +"z@<@L+{@P+Q+8#a@i#=+0@-+f+R@=+;#S@B# #8#J+T+~@>#\'#~@x@{@K+k+7@<#Y@g+P+W+0@)#\ +]@(+n+]+O.X&l,m,n,o,p,q,r,s,t,u,%-v,w,x,y,z,A,B,|,C,D,E,F,h>j>G,H,5,I,J,K,L,M,\ +N,O,P,Q,R,S,T,U,V,W,X,Y,K*&;[>*;j=R d.g%O$s.1 O$d.- O$X.{ O$1 1 O$O$O$O$O$1 1 \ +1 } O$1 1 1 1 } | V | [ i.W ", +")@e+e@\'#d@L+D@R+0@_@M+ #;@-#_#&+*+,@j+Y@&+a@f+;@,@^@B@k+(#j@,@K+>+R@Z@C@Q@:@\ +h+]+Q.(+S.x+R%Z,`, \'.\'c=+\'r,@\'#\'$\'%\'&\'*\'z*=\'-\'A,;\'1,D,>\'>\',\'\'\ +\'h>=>=>)\'!\'~\'{\']\'^\'/\'(\'_\':\'<\'[\'}\'|\'1\'2\'3\'4\'h;5\'&;[>}>[>, 1\ + O$O$O$O$y#y#O$O$O$O$O$1 O$1 2 O$1 1 K#d.1 1 1 | 1 | | V | [ | /.", +"w@Q@H+_@>@B@L+f+c@j+7@n@0@-+]@h#/@f@-+(+d@R@B@;@_@d@0@k+8@;+P@k@_@n@l+V+h+M.9\ +@D@/+k@+#r+X&v&6\'7\' \'8\'9\'0\'a\'b\'c\'d\'e\'f\'g\'h\'i\'j\'k\'l\'m\'n\'o\'\ +n\'E,F,\'\'p\'4,)\'5,q\'r\'s\'t\'u\'v\'w\'$,x\'y\'z\'A\'B\'C\'D\'E\'F\'G\'H\'5\ +\'I\'####( d.d.O$] O$O$y#1 1 1 O${ O$O$1 }#1 1 1 | 1 1 1 | 1 V V V [ V V ", +"B@P@w@E@ #E@g+h+)#O+0@n+w@!@<@\'#`+;#l@n+`@]@<@M+L+;#e+^@;@Y@H+f@w@l#Y@i#i@^@\ +;# #F@i#,+(+n+P%H@J\'K\'L\'M\'N\'O\'P\'Q\'R\'S\'T\'U\'V\'W\'X\'Y\'Z\'`\' ).)+)\ +o\'>\',\'S>h>4,@)#)$)~\'%)&)*)=)-);)>),)\')))!)~)O;c;{)])^)/)()_) @}>R { O$O$O\ +$1 O$O$K#O$1 O$1 1 1 1 1 K#1 1 | | | | V | V | V V ", +"g#;#F@R@K+i@&+e+Y@J+_#~@H+d@Q+=+[@!@]@(@!@L+P@J+g#a@(#`@f+R@R$,@n+>#h+^@P+V+c\ +@Y@L+i+*+)+`+O.v+N$:)<)[)})|)1)2)X>k>W>3)4)5)6)7)8)9)0)a)b)c)c)o\'E,d)e)U>@)H,\ +f)g)h)i)j)=)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)K*z)A)B): 1 1 1 1 1 1 1 1 { O$1 O$O$\ +1 1 1 1 1 1 { | | _.| V V V ", +"_#)#B@,@R$[#j#j#_@)#Q+)+H+k@B@_@k+=+!#8#i#!#=+)#)@7@;@Q@;@h#S+i@;#_@N.]@(@V+E\ +@m@!+j+,+_+j@9#S*W&)&C)D)E)F)G)H)I)5;k>q\'J)K)L)M)N)O)P)Q)R)S)T)c)+)D,U)h>G,V)\ +W)f)X)Y)Z)&)`) !.!#,+!@!#!$!%!&!*!=!-!;!>!,!R&\'!)!##}>< O$1 { O$1 1 1 1 1 K#1\ + 1 1 1 1 1 1 | 1 [ V | | _.V ", +"M+N@K+ #M+H#\'@)# #H+A@Y@P@ #O+O@]@R@h@k@k@`+;+)@[@!#i@P+>@e+z@ #y@K+e+e+Q+f@\ +O+>+,@A@!#f@n+Z+-+I#o+L%!!~!{!]!^!/!(!5;_!:!E;B!C!D!E!F!G!H!I!J!K!L!M!N!O!`\'P!Q\ +!R!S!S!T!U!V!Y)Z)%)W!X!Y!Z!`! ~#,.~~>+~s)@~#~$~{)%~&~^)y)*~=~A)1 { 1 1 | 1 1 |\ + } | | 1 1 | | [ [ V | _._._.", +",@j#a@R+(#)@>#L+B@X+-#E@9@H#f+8#]+<@f@S.d@,+-+P.]@C@Y@:@!#`@i@]+S@-~;~b@f@;+h\ +#~+~+P.[@h@[@m@l+^+,+r$L%X&>~,~\'~)~!~~~{~Q-]~1;^~/~(~_~:~<~[~[~}~|~1~2~3~4~5~\ +O!6~7~S!V)8~V!X)9~~\'0~a~L,b~u\'c~d~e~f~g~h~i~j~k~I*h*6\'l~m~q&s!n~( 1 O$1 { 1\ + 1 1 } 1 1 1 / | | _ V _.| V _.", +"w@>@0@{@H+]@8@O@I+H+Q@>@Q@=+k#\'@^@!#:@;+A@X+h+X+Z+)@F@A@d@ #i@P.o~{&[*p~&+Q+\ +i+B#O@c@R@(@`@!+j@t#l+S.^+V%q~r~s~t~u~v~1)e-k>]~1;w~x~y~z~A~B~C~D~E~F~G~H~I~J~\ +3~K~L~M~N~S!O~P~U!f)Q~R~S~T~&)U~V~W~d~X~Y~Z~`~ {.{+{@{#{${%{&~&{n~A)A)_./ 1 1 \ +| } | *{| | V [ | V V | _._.", +"8#R@B#/@C@j@H+B#g+O@*+R+,@P.9@8#W+!#R@S@V+!+^@Z@/@N+S.^@~@!@`+Z+={^.^.v%-{y@A\ +@^@Q+{@,@,@:@X+T@t#N.x+/+V%;{Q*>~%&>{,{\'{{~5;Q-){!{^~/~~{{{]{^{/{({_{:{<{[{}{\ +|{1{2{3{4{5{6{O~T!T!U!$)c!Q~~\'S~]\'P\'7{8{9{0{c=a{b{c{i!d{e{f{-!g{q!h{)!##U {\ + { { { | _ | | { ^ V V [ _.V _.", +"Q+y@e+,#y@h@N@j#0@]@P+d@0@Y@w@X+7@U+_@T+i@F@L+{@^@0@R@w@`@d@Z@x+i{g.g.^.e.j{y\ +@Q+d@j@:@k+B#&+Y@-+Z@_+N.x+N$R%n*_=k{\'>l{m{n{o{S\'){!{p{b!q{r{s{/{t{u{v{w{x{y\ +{z{A{1{B{C{D{E{F{6{S!S!G{8~U!f)H{I{J{a~X!K{L{ ~M{N{O{P{Q{]!R{S{T{U{V{W{())!)!A\ +)} } | } | } | _.V V [ V V _.", +"P+i+ #_#;@P.6@i@H+~@N@L+Q@[#k#h@>+{@Z@^@K+(@{@n@E@j+H#A@H#O+j@q+X{g.].g.g.e.Y\ +{8@J+`@i+h#{@;#<@ #H#r+n+x+N$L%w-R=Z{`{H; ]2).]+]6,){1;@])\'c!#]$]%]&]u{*]=]-]\ +;]>],]%]\'])]!]~]{]]]^]S!S!O~/](]f)_]!\'E;_!:]<][]}] ]|]1]2]3]4]5]6]7]^)q!8]9]\ +|%i*B)} } _ _._ : _.*{V V _./.", +"h#;#N+X+_#!#H+)+f+P+=+N+U+l@J+D@N+O@B#T@P.<@[#n+`@i@X+_#>+k+r+8&0]g.g.^.].^.a\ +]b]c]h@H#!+P.!+)+S@l+j@s#+#d]<-Q*x+e]f]g]/!h]i]j]K,Q-2;1;@]#)k]l]m]n]o]p]q]r]s\ +]t]u]v]/{)]w]x]y]z]F{A]^]B]N~S!G{)\'D;1;){W>_!C]o{D]h]E]F]G]!>j!H]I]U{J]K]L]M]\ +9])!n~N]*{*{_.: : : _.V i.V ", +"Y@N@d@c@W+Y@P@=+k#[#J+8@!@R@e+\'#!@<@f@z@M.F@O+U+<@:@O+I+N+W+T@x+O]].g.{&g.].\ +e.O P]Q]l#P.Q@,@h@W+L+\'#h#!+O.&%o*r$R]a;S]N{T]U]V]]\'W]k>){1;w~X]Y]Z]m]:{`] ^\ +.^+^t],]@^/{#^1{$^%^&^*^=^-^^]F,S>3,=>B;;^w~#)_]>^W>,^\'^)^!^9{~^{^]^^^I]/^%~g\ +{(^x)y)_^9] @A)_._ V : _.: _./.", +"(@7@i@K+R+h#w@(+H+!@,@I+A@9@P+{+)@\'#/+R+_@D@g+/@F@k@f@O+k@d@_+o+O]{&g.g.s%{&\ +Z&[*a]a]:^<^R@K+l@:@!@;#,@:#:#X%(=[^}^t)|^1^2^T]P\'M,.]4;E;2;5,5,f)3^4^5^6^7^8\ +^9^0^u]a^b^c^d^y]&^2~e^f^g^h^^]i^h>j^j^4,G,H,k^w~l^E;Q-:]<]m^n^o^p^q^$~m!r^s^r\ +^t^u^v^w^q!x^B)U _._.V *{_._.", +"g+I+c@6@y@P@T+C@>@\'#E@;#i@_@)@P.j+f@]@!+!+N+f@n+8#=+k@j#S@B#Q._+y^e.g.g.e.{&\ +a][*a]s.a]z^A^B^!@g@\'#S@i#Z@!#w+N$C^D^E^F^G^o>H^I^J^K^L^5;3;M^:!_]c!N^O^P^Q^Q\ +^0^R^S^@^\'])]T^1~e^D{E{2~U^V^=^W^X^3,\'\'Y^9!V)@)D;@]1;Z^W>`^ /1].~./+/@{@/#/\ +$/%/&/%/*/=/-/I@;/>/U V V V /.V ", +"D@K+*+d@/@N+d@[#w@~+=+\'#:@e+{@P.C@!#O@-#X+h+Y@)+X+g+R@f+D@D@!+Z+B>g.,/g.g.e.\ +[*[*a]e.a],/{&,/\'/)/!/~@0@)+ #S.~/{/]/^///(/_/:/d/|;@]l^){e/f/g/h/~>i/j/j/k\ +/l/m/n/o/p/q/r/s/;/B)t/: _.i.V ", +"_@L+h#H+U+c@M+,@g#_#;@;@O+P@^@)@P+k@=+A@l+R+^@<@k@8#i@N+/@D@r$m@$;,/O ,/P e.P\ + ,/a]u/s%,/g.e.a]P e.v/w/x/y/z/g.].Y,A/B/C/D/I;E/F/O{N{l>G/H/,^_!W>!\'c!3^I/J/\ +K/L/L/@^M/5/N/O/D{D{7/7/P/8/Q/R/7/7/S/T/U/V/S!W/j^X/d/|;!{O-\'^Y/Z/`/h/ (.(3]+\ +(@(#(#($(%(&(*(=(;/-(U B);(_.", +"[#K+:#;@P+~@;#Z@_@{@]@;+!@*+*+i@n@t+]+:#_+;#h@l@h@r+g+{@o+;+Y&m+>(P P P a],(e\ +.P ,/g.g.].g.,/,(a],/g.g.,/g.\'(^.^.].X,T{)(!(~( {{(](^(:/H^W-/(C]_!I,$)((_(:(\ +<(t][(}(|(1(2(2(&^3(4(3(5(6(7/7(5(3(8(%^9($^0(6{j>j^X/d/a()\'E;b(U]E]c(d(e(e(f\ +(g(h(i(j(k(j/l(m(n(8])!B)_.a.", +"N+7@]@E@)@C@H+~@P@^@O+E@C@\'#^@S@H+V+R@0@,+d@Y@0@P@M.]@<@!+;+9#\'+o(Z&u/,/a][\ +*e.g.P g.g.p(t.g.P ,/^.g.e.P g.{&^.^.g.Q ,=q(r(t)k!s(t(u(v(1^w({~o{C]x(y($)z(A\ +(B(x{x{[(C(D(E(F(G(H(2~Q/P/8/*^I(J(Q/Q/Q/7/4(K(9/]]X^L(L(4,G,M(5,6,N(O(M,Z!u\'\ +/\'(\'P(Q(R(S(>)T(U(V(x)W{)!-(-(", +"l@*+U+W+N+-+=+0@H+N.7@0@Q@j+<#Z+>#S@Y@R@n+K+D@Y@0@~+d@B#Q.`@X&^+W(a]Z&,/a]a]P\ + ,/P g.^.].Q \'(,/e.e.e.e.a]e.^.^.].g.) j=X(Y(Z(`( _._N;+_@_#_ ]$_K,R\'6,S\'%_\ +z(_(&_*_x{=_-_;_F(G(>_U^,_\'_\'_)_)_J(J(I(L!J(J(\'_J(!_~_{_]_S!9!4,4,T!b!^_~\'\ +S~s\']\'/_(___P,e(:_o/<_[_}_|_1_W{2_", +"O+i+;@H+H+M+O@R@i+C@b@;#Q+;#!@h@g@j@c@R@j@)+!#R@H#l+X+k@Y+]+8&q+3_[*v/P P P a\ +]u/Z&g.^.p(++g.g.g.g.e.s.P ,/d.g.^.g.^.s.$;E\'3\'/&e;4_$~5_6_7_Z/P\'L,8_9_q\'I\ +,c!0_A(a_z{b_c_d_1(e_f_U^g_g_\'_)_)_)_)_V^h_i_T/T/I(j_*^f^k_l_h^S!G,V)G,W)m_!\ +\'n_o_p_q_r_s_t_u_v_k/N;[_w_x_J]y_", +"7@!@ #=+k@g+)#X+L+k+)@8#N.9@]@i@)@q+B#C@k+L+Z+d@L+)+)@K+n+N.9#O.z_v/P ,/g.u/a\ +]a]z^e.g.{&t.^.^.{&^.g.e.O ,(e.{&g.e.e.e.,/A_B_X,w)C_X(D_E_F_G_H_N,X!+]`^q\'n_\ +I_J_K_k_L_G~*_M_G(N_O_g_g_P_)_)_)_V^i_i_Q_Q_0(R_R_S_f^T_U_N_V_W_X_B]0!G,@)#)!\ +\'~\'S~Y_Z_`_ :.:+:@:<_l!m!4&#:", +"P.k+f@y@,#E@)@<@w@(+E@0@N+^@ #{@_#k@_#;+`+H+`+K+^@:@]@n@>+:@s+O.$:[*a]g.g.v/z\ +^a]z^g.g.g.p(^.{&^.^.g.[*O O ) e.^.e.g.P s.O z)%:z>h;X,&:*:=:-:;:>:,:b~p_J{q\'\ +!\'!\'V!\':k_L_[{):|{!:I~g_P_,_)_)_V^i_Q_0(0(0(~:{:l_]:^:/:U_|{(:U^l__:X^3,L(=\ +>V>#)c!::r\'<:[:(\'}:k(|:1:2:3:4:", +"-#W+)@P@!@f+Q+8#;@)@K+]@K+E@(+Y@ #Z@P+N+l@e+m@=+k+{+J+S.l@Y+I#^+5:v/a]e.P a]a\ +]a]a]a],/u/g.g.g.].].g.a]a],/g.g.,/P P P P e.e.Q 6:7:8:9:0:a:b:c:@,=)d:b~e:J{f\ +:!\'b!g:\':k_h:}{}{|{i:N_g_,_)_)_j:!_Q_k:k:k:l:m:n:o:^:p:I~I~(:e_g_q:{_r:0!j>U\ +>a(k^b!X)s:t:u:(\'v:k(l/T(w:x:", +"E@g@ #\'@f+R@,@f@-#*+)@S@,+h#t#e+:#]@k+Z@l+B@T@,@[#\'+,@M.]@k+s+!+y:z:A:,/a]a\ +]a]a]a]a],/P ,/,/,/p(].g.P e.e.g.,/e.e.Z&a]e.e.P g., B:i{C^3\'A\'C:%!D:E:O,F:b\ +~s\'r\'G:c!I_H:m:I:|{M_M_|{N_g_,_)_I(j:U/0(k:~_~_l:{:J:K:I:L:M:N:/:L:g_U^*^O:c\ +/S!j>j^U>M(T!P:c!Q:t:R:S:T:U:V:W:", +"h#)+[#)+:@d@`@P.S+Z@C@ #;+W+/@P+i@H#g#!@{@<@:#S+]@/@e@P.:@(@S*~+o+G.z^a][*a]a\ +],/X:a][*v/,/,/g.].].t.g.e.e.^.,/e.,/P a]e.,/g.g.,/].v-i{Y:Z:`: <;)./<(<_<:<<<[h>h>j>G,H,c<)_q:0(~_k:ub&A<<\'B<,_Y@M.j+d@!+Q@8#`@L+T@(#~+8#!@!+<@Y@!+U+l@B#!#j@Z@-+o@V+o+P%i{g.{&].Q\ + \'(a]v/v/v/,(,/e.%[g.g.g.,/,/^.a]e.a]P P s%,/P g.g.P P P ^.g.v-i{8:&[j<*[=[-[\ +;[>[,[\'[)[W<%)Z)Y)![~[{[L_I~U^I(V^j:i_i_V^*^)_^:,_g_U^N_N_e_][^[/[([([_[i::[G\ +(G(O_U^U^U^U^2~G(i_W_<[[[}[|[", +"N.m@:@[#S.*+`+H#k+S.[#h@D@<@M.Y@ #g@^@]+!@)@R@_#S@h#_#)+E@f@.#:#S.v+y^,/{&g.Q\ + ^_O_*Q;Y\ +[Z[`[ }.}u_+}(\'F:@}%)r\'#}$}u[%}&}O_g_f_%},}i:H(2~\'}G(G(e_I~N:N:", +"n+k@_@N+l+R+t#[#!# #&+Q@:@F@!+{@)+i@L+_@O@e+f@A@N.<@K+D@K+i#(+(+T@x+Z@d])}!}\ +\'(p(g.v/a]a]a]a],/,/g.a]a]g.u/g.g.g.g.g.g.P g.g.g.g.P g.e.g.e.P e.) e.].A>z>(\ +<~}{}]}^}/}(}7[+}__+<@}_}R~f:q\'Z):}1~>_L:%<<}/:[}K/>]}}/[H~|{K(\ +3}t.\'(e.P ) e.g.g.g.g.a]a]P e.,/g.P u/a],/,/g.^.g.^.g.e.^.^.e.e.,/P g.e.v-C^4\ +}5}6}=[B&o[7}8}9}E:pq\'u[a}b}f_p:%W>n_y}~[{[%M}N}m[O}P}Q}R}S}T}U}V}V~W}K,3;E;!\'$)c!X}Y}Z}`}w{D}d}i}J}R[ |<(g[.||{e_KI,_]X]>|g:=<,|e[;];]S[J}R[\'|[()|g}&I,_]||1|2|3|4|g[k}A[w{k}5|k}[(a^C[M_!:E[Kh|i|j|$|k|l|m|n|o|p|.,q|D],^r|s|t|)\'u|v|w|x|F[o]y|S[\'|R[[(,]z|d_|{:[:[O\ +_I~F[A|Q[<{<{B|c_H~C|D|E|F|G|", +")@]@_#O@)@e+{@f@D@)+-+~+`@:#V+9|9|9|9|9|9|9|0|H|H|a|b|H|H|I|J|T@T@^+S.M%;+x+`\ ++Y&O.v/u/^.,/g.,/g.,/a]g.g.{&{&,/,/a]P ,/[*a]P ,/,/,/e.g.a]X:g.{&^.^.g.^.g.e.e\ +.g.].K|L|M|g;N|O|P|Q|R|S|T|U|Y/<]V|W|X|w~Y|7~<[Z|`| 1.1I<+1V[|(g}[{[{):!:F(2~8\ +/\'_U^O_e_I~z[2}J<-}@1o]S[q]", +"Q+f@e+`@h@(+^+H#t#_+:@/@M.n+M.9|9|9|#1$1%1&1*1=1-1e|;1>10|0|9|f@`@S@k@t#l@+#T\ +@\'$m+M.{&g.g.g.a]g.,/a]^<^+{@Y@;+l@T@l@H#,+k+9|9|9|*+~@[#\'+M.P.r+B#l@;#[19|9|}1l@D@s+`+Z@s#\ +[@r+(+M.[-g.g.g.P g.g.a]g.^<\'({&g.,/v%g.g.v/v/,/u/P a],/P g.g.g.g.^.^.g.g.g.g\ +.g.g.e.g.g.|1A>S;112131415161o/<><)_P_g_U^8/2~O_f_", +"Y@L+;#P@i+:#8@I+k+L+B#E@k+k+h#9|9|9|!+(@~@:@[#V+[@P.j@L+(+T19|9|U1E@h@`@9|9|V\ +1W19|9|9|0|X1P z^a],/Y1Z1`1`1`1`1`1 2C1,/[*v/[*a]a]`1`1`1`1`1`1`1`1`1`1`1.2+2,\ +/P {&@2#2$2{&g.X[S;%2&2*2=2-2;2r>>2,2\'2K,S\'!\'>|O~S!)2!2~2{2]2^2/2(2_2:2,_e_\ +e_*<*V2W2X2Y2Z2`2~\ +:,_N_N_g_8/ 37(,_j[U^.3D{.3,_", +"0@T+(@P@!@_#7@i@F@d@n+E@`@d@D@9|9|9|T@P.j@,+\'#t#l@:@9#`@+39|9|@3<@D@D@D@9|9|\ +9|#3{+`+/@(+s#n+/=$3%3&3*3^3G2,3M<\'3_>)3!3~3{3#,[|x}]3^3/3(3_3B]a1<[_1S>:3<3[3}3|3X\ +_13)_N_P_\'_P/8/\'_K(2{\'_P_><><", +">@l#7@H+k+6@>#P@;#f+^@E@ #;#H#9|9|9|/+D@S.]+i#k@/+n+\'+239|9|9|33~@,+Z+t+9|9|\ +9|43O.`+r+o@)$`+5363$373v/g.%[^X{d32\'e3f3g3h3i3j3-)k3l3m3h2S!^]7~6{n3o3p3q3r3s3\ +\'\'7~t3T/J(J(7(I(><\'_U^\'_><><><", +")+K+:@b@[@R+]+Z@A@D@Q+!#t#k+/@9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|u3g@]+~@_@(+9|9|9\ +|]+Q.r+r+m@v+t+v3w3x3y3z3,/A3{&,/g.p(A2`1`1B1{&X:,/e.P g.,/u/,/42`1`1`1a],(P P\ + P ,/B3C3D3{&g.g.g.E3a3F3z<[>M)v_M38[N3s:h2O~7~v2Q3R3,<\ +\'\'B]]]S3T3R/R/J(\'_,_><)_)_)_", +";# #)#,@0@<#7@!@&+N+0@&+E@,@d@9|9|9|9|9|9|9|9|9|9|9|9|9|U3V3N.&+;#S@_#[@9|9|9\ +|P.T@n+/@j@/+,+W39|X3Y3z:,/,/g.,/g.{&g.`1`1B1P ,/g.,/g.g.,/a]B2`1`1`1Z3a]a]e.a\ +],/,/`1`3C3g.{&g.g. 4.4+4^.z<}>7:@4#4$4%4&4*4=4-4C<;4>4z((]/]/],4\'4)4!4~4R3{4\ +{4h>]4^4/4(4_42~U^,_><)_)_)_", +"e+!@<#f@P@)#j+D@H+k+-#-#i#P@H#9|9|9|:4<4[4}4|4142434^+>+]+7@T@8#)@ #W+h@9|9|9\ +|D@Q.Z@V+w+Q.t+9|9|0|44z:u/g.g.u/^H2%29404a4k{\ +4p4V2F,q4_4r4s4t4b}D{j[)_)_", +"H+_#H+-#)@M+R@=+R+(@O@h+h#,@k+9|9|9|i@S.Y+:#X+{+P.s+M./@l+*+n+&+\'+;+[@r+9|9|\ +9|(+s#M.:#V+_+M.9|9|9|S*u4a]g.g.a]g.^+\'+k@n+k@k+Y+\'+n+k+j#k+ #B@ #6@)@9|9\ +|9|!+Z+j@Z+k@t#t#9|9|9|m+X4{&u/,/u/,/g.g.Y4`1`1g.,/g.,/g.g. 2`1`1 2g.a],/a]P P\ + P P a]`1`1`1g.^.{&g.Z452E2g.e.g.R `4 5.58:g;3\'+5@5#5$5%5&5*5=5~[-5b/;5>5,5\'\ +5)5d1S>V2V2]4!5~5{5]5r4r4^5z]y[", +"6@9@_#H+8#H+N@g@;#H#N@`@e+;#U+9|9|9|H#X+`@g@j+H#)+!+(+V+h@h+i#j+R@i#f@;+9|9|9\ +|)+o@:#,+M.`@V+/59|9|S.8&)&i{a]a]P g.g.(5_5C2,/g.g.,/g.A2`1`1 2e.P g.a]P u/e.e\ +.a]P `1`1`1g.e.g.,/:5<5;3g.g.{&].[5}5F3i{ &|515253545556575859505a5b5c5d5e5f55\ +{N~S>\'\'S>g5h5i52!3!j5k5l5l5", +"g#K+{@Q+Y@<#H#g#;#O@&+/@g#,@8#9|9|9|/@j@M.G@Q.8#l+X%V+H@N.~+8#V+S.!+V+T@9|9|9\ +|S.t+t+q+)$G@x+m59|9|n5v+Y&<-o5a]g.g.*3p5q5B1g.P ,/u/A2`1`1`1A2g.,/,/P g.,/g.P\ + ,(u/`1`1`1e.g.g.P 93r5<5e.g.g.^.s5t5u5[>A>K*v5w5x5y5z5A5B5C5D5E5F5G5H5I5J5K5F\ +{L5R!N~P1M5N5O5P5P5Q5R5S5T5", +"9@N+0@\'#!@6@~+*+j+]+I+)+\'@<#N+0|0|9|)@h@n@:@Y+(@`@^+n+j@j+>+_#7@)@g@f+h@9|9\ +|9|(+[@B#`@(+`@(+W19|9|U5_+r+q$9#V5,/g.W5X5Y5Z5u/,/g.,(`1`1`142g.,/P g.a]g.g.e\ +.,/u/,/`1`1`1,/g.a]g.`5-3 6,/P g.^..6@272v-v-}>+6H292@6#6^}$6%6&6*6=6-6;6>6,6\ +\'60/F{L57~N~)6!6~6{6]6^6/66)(6", +",@L+E@c@P+Q@i#K+g#c@y@:@j#_@0@0|0|9|O@Y@H#g@,+R@8#r+[@V%X+,+!#W+>+)@8#h@9|9|9\ +|(+t#n@m@N.Z@o+:#_69|9|:6\'+o++#N$z_<6w2[6}6P g.,/P =3`1`1B1e.e.g.a]P ,/g.,/,/\ +,/a]a]`1`1`1,/a]a]a]6483-3,/g.g.g.E2.6|6v-}>*;1626G23646566676869606a6b6c6d6e6\ +f6g6h6b/6{a1i6j6k6l6m6n6O5o6", +"d@S+H+;#-#f+;#W+i#j+0@l@Q@X+)+0|0|0|!@`@/@]+o@!#\'+Y+Z+x+O. #/@[@O.l@h@n@9|9|\ +9|Q.t+\'+\'$9#~+o+{+p69|9|9|q6Y&_+L%r6H|s6&3t6,/g.O =3`1`1`1B1C2C2B1C2C2C2C2B1\ +C242a],/`1`1`1a]g.a]a]`1B3C3P ,/g.,/;3u6v6].v-}>j=w6x6y6z6A6B6C6D6E6F6G6H6I6J6\ +K6L6M6M6a5O3^4a1N6O6P6Q6R6S6T6", +"\'@D@_@H#^@)#N.8@)+C@)#:#&+{@<@H|0|0|R@8#(@l@V+g@Z@!+Z@Q.V+,+A@P@X+g+P+~@9|9|\ +9|/@8#:#~+{+~+,+:#j@U69|9|9|9|9|9|0|0|H|V6g.g.^.e.W6`1`1`1`1`1`1`1`1`1`1`1`1`1\ +B1g.g.`1`1`1,(g.a]u/`1`1.2e.,/^.g.X6v452, ].v-i*Y6u5i|Z6`6 7.7+7@7#7$7%7&7*7=7\ +L6-7;7M6a5)5>7,7\'7)7!7~7P5n6", +"!#R@\'@ #)@0@X+)@<@~@6@Y@T+&+A@w30|0|)#R@=+D@n+h#k@j@h@o+:#s+g+<@h@h#Z@[#9|9|\ +9|`@\'+[@T@V+S.9#,+w+G@{7]79|9|9|9|0|^7/7!&9#i{].P (7`1`1`1`1`1`1`1`1`1`1`1`1`\ +1B1g.g.`1`1`1a],/a]P `1`1`1u/P g.g._7:7:7].]., }>}><7[7}7|717273747d&5767H6778\ +7t:i)9707a7a5)5M~M~b7c7d7e7e7", +"P@F@H+!@>@7@-#Q@C@D@\'@Z@)#:#!@O@X+,@U+:#U+/+j@h#r+Z@l+x+[@^+g@\'+k@l+Z+V+^@o\ +@h#;+[@n@v+T@^+x+i@)$!+S.m+s#f7&1g7H@T@8&V%W%R=W(e.g.{&, ,/g.{&^.g.,/,/g.^.^.]\ +.^.{&g.g.g.e.g.P P ,/g.e.a]P ,/g.^.^.g.^., , ^., }>%;i{()h7i7O@f@d@h+/@T+^@)+)+P.`+l@T@n+t#M.>+t#T+k@_#y@D@i#i@^@,\ +@i@]@(@{+(+:@M.)+.#(+n+Q.T@m@M.Y+N$S@Y+u+9#L%)$u7e.].{&].^., ].g.e.g.e.g.,/\'(\ +g.g.g.g.g.g.g.P g.g.g.P ,(,/g.g.g.{&{&].) , ; , R %;r!r!v7w7J*x7C\'y7z7A7B7a=C\ +7D7u:D7u:E7C*F70/o7G7H7I7J7K7", +"^@g+ #_@9@X+P@U+8#)#0@f@H+)@E@F@;+d@g+O@]@!@:@Y@,+H#/+Y&(+!+k#!#m@<# #W+P+V+e\ ++X+<@^@(+]+`+S@i@n@~+:#(+!+Y+n+`+x+`+w+V+Y++#X&8&L7Q ^.].{&g.g.,/e.g.g.g.g.^.t\ +.].{&g.g.g.g.g.g.g.e.,/,/g.P ,/,/g.^.g.].].]., , R 9]M7N78]I@O7P7*/Q7R7S7T7U7L\ +[L[/_V7u:W7X7Y7g6f5Z7P6`7 8", +")@O+P@;#;@h#P@K+8#h#_@:#T+]+8@~@Y@E@F@g@B#k@l@l@l+/@n+9#/@w+h+!+{@B#V+8#l@V+E\ +@m@S.8#Y+9#G@o+T@m+(+v+Q.O.p+H@q$&%w+P%o+H@I#8&(=R=.8O ].g.) {&g.e.g.,/g.g.^.{\ +&^.].g.g.g.,/g.g.P ,/g.g.g.g.^.P ^.) v%^.].]., , ( Z#x^r!r!&{+8@8#8$8%8&8d<*8=\ +8-8=);8>8,8\'8$={{)8!8~8{8]8", +"I+7@Q+f@l#Y@\'@_@/@M+9@:@_#k+^@f@N+P+k+k+;+S.Z@i@{+/+w+Y+n@m+7@O.=+Y@8#_@)@]@\ +O+>+,@9@(+h@V+!+O@r+E@k@S.k+^+l@n+O.S@9#V+`+v+M.H@p+v+r+v%].].) g.v%g.e.g.].g.\ +{&{&g.].].g.g.g.g.,/g.e.g.g.,/g.g.,/^.^.g.; , , , R u-u-|%^8M7/8(8_8h=:8<8[8}8\ +|8==k)18E=[:28B*-738f648l6Q6", +"Y@S+R+8#H+>+N@[#Z@i@_@E@Q@=+R$)+)@<#[#=+g#n@D@B#H#i@r+`+)+/@e+X+O@Y@H#N.]+k+^\ +@S@-+^@t#D@V+O.~@Z+g@l@D@,+^+D@T@s#Z@u+O.r+\'$G@)$v+<-x+58[*^.].^.{&d.d.^.^.].\ +^.^.{&].].g.g.g.g.g.{&^.].{&, ].^.v%^.g., , ].{ R ( u-n~>/68^8^878889808a8b8R{\ +c8d8#(e8f8(_g8,897h8i8j8k8l8" +}; +static Fl_Pixmap image_BigProZilla01(idata_BigProZilla01); + +Fl_Window* make_about_win() { + Fl_Window* w; + { Fl_Window* o = win_about = new Fl_Window(560, 345); + w = o; + o->labeltype(FL_NORMAL_LABEL); + { Fl_Box* o = new Fl_Box(5, 25, 215, 30, gettext("Prozilla Download Accelerator 2.0.5beta")); + o->labelfont(1); + o->labelsize(12); + o->labelcolor(4); + o->align(FL_ALIGN_WRAP); + } + { Fl_Box* o = new Fl_Box(15, 55, 185, 20, gettext("GUI Version 2.0.5beta")); + o->labelsize(12); + } + { Fl_Box* o = new Fl_Box(20, 80, 185, 20, gettext("libprozilla version 1.2.0")); + o->labelsize(12); + } + { Fl_Button* o = new Fl_Button(60, 310, 85, 20, gettext("OK")); + o->labelsize(12); + o->callback((Fl_Callback*)cb_about_ok); + } + { Fl_Box* o = new Fl_Box(40, 120, 130, 125); + o->box(FL_SHADOW_FRAME); + o->image(image_BigProZilla01); + o->labelsize(12); + } + { Fl_Tabs* o = new Fl_Tabs(225, 25, 330, 315); + o->labelfont(1); + o->labelcolor(4); + { Fl_Group* o = new Fl_Group(230, 45, 320, 290, gettext("Credits")); + o->labelsize(12); + o->labelcolor(4); + { Fl_Scroll* o = new Fl_Scroll(240, 55, 300, 275); + o->box(FL_ENGRAVED_BOX); + o->color(28); + o->labelfont(1); + o->labelsize(12); + o->labelcolor(4); + { Fl_Box* o = new Fl_Box(280, 65, 215, 20, gettext("Kalum Somaratna - Main Programming")); + o->labelsize(10); + o->align(FL_ALIGN_WRAP); + } + { Fl_Box* o = new Fl_Box(290, 85, 200, 15, gettext("Uwe Hermann - Additional Programming")); + o->labelsize(10); + } + { Fl_Box* o = new Fl_Box(290, 135, 220, 40, gettext("Gustavo Noronha Silva (KoV) - libprozilla GNU gettext support, deb package m\ +aintainer")); + o->labelsize(10); + o->align(FL_ALIGN_WRAP); + } + { Fl_Box* o = new Fl_Box(295, 105, 195, 30, gettext("Ralph Slooten - Web Page Maintainer, RPM packager, testing")); + o->labelsize(10); + o->align(FL_ALIGN_WRAP); + } + { Fl_Box* o = new Fl_Box(285, 285, 215, 40, gettext("If you have contributed and arent listed, I apologise and please mail me and I will correct it")); + o->labelsize(10); + o->align(FL_ALIGN_WRAP); + } + { Fl_Box* o = new Fl_Box(290, 175, 210, 45, gettext("Silviu Marin-Caea - (Our sysadmin) Donation of valuable bandwith and system r\ +esources at genesys.ro, testing")); + o->labelsize(10); + o->align(FL_ALIGN_WRAP); + } + { Fl_Box* o = new Fl_Box(295, 220, 180, 20, gettext("Pablo Iranzo G\363mez - testing")); + o->labelsize(10); + o->align(FL_ALIGN_WRAP); + } + { Fl_Box* o = new Fl_Box(300, 240, 190, 20, gettext("Krogg - The cool Prozilla logo")); + o->labelsize(10); + o->align(FL_ALIGN_WRAP); + } + { Fl_Box* o = new Fl_Box(305, 260, 165, 20, gettext("David L. Matthews - testing")); + o->labelsize(10); + o->align(FL_ALIGN_WRAP); + } + o->end(); + } + o->end(); + } + { Fl_Group* o = new Fl_Group(230, 45, 320, 290, gettext("Translations")); + o->labelsize(12); + o->labelcolor(4); + o->hide(); + { Fl_Scroll* o = new Fl_Scroll(240, 55, 300, 275); + o->box(FL_ENGRAVED_BOX); + o->color(28); + o->when(FL_WHEN_RELEASE_ALWAYS); + { Fl_Box* o = new Fl_Box(300, 70, 170, 30, gettext("Ruben Boer - Dutch Translation")); + o->labelsize(10); + o->align(FL_ALIGN_WRAP); + } + { Fl_Box* o = new Fl_Box(300, 100, 180, 25, gettext("Ralph Slooten- Dutch Translation")); + o->labelsize(10); + o->align(FL_ALIGN_WRAP); + } + { Fl_Box* o = new Fl_Box(300, 130, 175, 20, gettext("Flower - Romanian Translation")); + o->labelsize(10); + o->align(FL_ALIGN_WRAP); + } + { Fl_Box* o = new Fl_Box(305, 155, 175, 35, gettext("Gustavo Noronha Silva (KoV) - Portugese Translation")); + o->labelsize(10); + o->align(FL_ALIGN_WRAP); + } + { Fl_Box* o = new Fl_Box(305, 190, 175, 30, gettext("Emanuele Tatti (Kreazy) - Itallian Translation")); + o->labelsize(10); + o->align(FL_ALIGN_WRAP); + } + { Fl_Box* o = new Fl_Box(315, 230, 175, 25, gettext("Alberto Zanoni - Itallian Translation")); + o->labelsize(10); + o->align(FL_ALIGN_WRAP); + } + { Fl_Box* o = new Fl_Box(315, 260, 175, 25, gettext("Eric Lassauge - French Translation")); + o->labelsize(10); + o->align(FL_ALIGN_WRAP); + } + o->end(); + } + o->end(); + } + o->end(); + } + { Fl_Box* o = new Fl_Box(15, 255, 195, 20, gettext("Webpage - http://prozilla.genesys.ro/")); + o->color(29); + o->labelsize(10); + o->labelcolor(1); + o->align(FL_ALIGN_WRAP); + } + o->end(); + } + return w; +} + +Fl_Return_Button *url_input_ok_button=(Fl_Return_Button *)0; + +Fl_Input *in_url=(Fl_Input *)0; + +static const char *idata_Pz12[] = { +"48 48 174 2", +" \tc None", +". \tc #D6D6CE", +"+ \tc #6B6B6B", +"@ \tc #292929", +"# \tc #212121", +"$ \tc #181818", +"% \tc #393939", +"& \tc #313131", +"* \tc #424242", +"= \tc #636363", +"- \tc #4A4A4A", +"; \tc #525252", +"> \tc #5A5A5A", +", \tc #737373", +"\' \tc #848484", +") \tc #8C8C8C", +"! \tc #8C8C84", +"~ \tc #C6C6C6", +"{ \tc #000000", +"] \tc #7B7B7B", +"^ \tc #8C948C", +"/ \tc #182118", +"( \tc #94948C", +"_ \tc #9C9C9C", +": \tc #A5A5A5", +"< \tc #949494", +"[ \tc #4A4242", +"} \tc #5A5252", +"| \tc #6B6363", +"1 \tc #423131", +"2 \tc #6B3921", +"3 \tc #9C7B63", +"4 \tc #8C7363", +"5 \tc #634239", +"6 \tc #4A3129", +"7 \tc #B5B5B5", +"8 \tc #6B5A52", +"9 \tc #945A4A", +"0 \tc #A5735A", +"a \tc #BD9C84", +"b \tc #BDA584", +"c \tc #947B73", +"d \tc #C6BDBD", +"e \tc #5A3931", +"f \tc #5A4242", +"g \tc #423939", +"h \tc #6B4A42", +"i \tc #BD7B5A", +"j \tc #BD9C7B", +"k \tc #BDA58C", +"l \tc #7B6B5A", +"m \tc #7B6352", +"n \tc #9C8C7B", +"o \tc #948473", +"p \tc #4A2118", +"q \tc #635242", +"r \tc #392929", +"s \tc #9C6342", +"t \tc #CEA584", +"u \tc #AD947B", +"v \tc #6B5242", +"w \tc #291810", +"x \tc #423121", +"y \tc #846B52", +"z \tc #6B5239", +"A \tc #290000", +"B \tc #524A42", +"C \tc #735A42", +"D \tc #523929", +"E \tc #5A4239", +"F \tc #7B634A", +"G \tc #CEA58C", +"H \tc #C69473", +"I \tc #734221", +"J \tc #391000", +"K \tc #393129", +"L \tc #7B5A52", +"M \tc #7B5242", +"N \tc #8C6352", +"O \tc #846352", +"P \tc #A5846B", +"Q \tc #DEAD9C", +"R \tc #C68C7B", +"S \tc #A56352", +"T \tc #8C5239", +"U \tc #524239", +"V \tc #84635A", +"W \tc #946B5A", +"X \tc #845242", +"Y \tc #734A39", +"Z \tc #292921", +"` \tc #312929", +" .\tc #ADADAD", +"..\tc #B5B5AD", +"+.\tc #C6CECE", +"@.\tc #CEDEDE", +"#.\tc #BDC6C6", +"$.\tc #ADB5B5", +"%.\tc #C6C6BD", +"&.\tc #CECEC6", +"*.\tc #D6DED6", +"=.\tc #A5ADA5", +"-.\tc #BDCECE", +";.\tc #DEF7F7", +">.\tc #9CA59C", +",.\tc #BDBDB5", +"\'.\tc #DEDECE", +").\tc #DEDED6", +"!.\tc #C6CEC6", +"~.\tc #D6E7DE", +"{.\tc #BDCEC6", +"].\tc #D6EFEF", +"^.\tc #C6D6D6", +"/.\tc #BDBDBD", +"(.\tc #D6D6C6", +"_.\tc #E7E7CE", +":.\tc #E7E7D6", +"<.\tc #E7EFDE", +"[.\tc #E7E7DE", +"}.\tc #D6DECE", +"|.\tc #CED6CE", +"1.\tc #BDC6B5", +"2.\tc #C6DEDE", +"3.\tc #ADBDB5", +"4.\tc #9CADA5", +"5.\tc #E7EFD6", +"6.\tc #EFEFE7", +"7.\tc #E7EFE7", +"8.\tc #ADADA5", +"9.\tc #D6F7F7", +"0.\tc #CEE7E7", +"a.\tc #DEEFD6", +"b.\tc #EFF7E7", +"c.\tc #A5ADAD", +"d.\tc #B5BDBD", +"e.\tc #DEE7D6", +"f.\tc #E7F7DE", +"g.\tc #E7F7E7", +"h.\tc #F7F7E7", +"i.\tc #B5BDB5", +"j.\tc #DEEFE7", +"k.\tc #DEE7DE", +"l.\tc #DEEFDE", +"m.\tc #EFEFDE", +"n.\tc #D6D6D6", +"o.\tc #CECECE", +"p.\tc #BDC6BD", +"q.\tc #D6E7D6", +"r.\tc #E7E7E7", +"s.\tc #DEDEDE", +"t.\tc #CED6D6", +"u.\tc #949C94", +"v.\tc #CEDECE", +"w.\tc #EFEFEF", +"x.\tc #C6D6CE", +"y.\tc #F7F7EF", +"z.\tc #F7F7F7", +"A.\tc #F7526B", +"B.\tc #F74263", +"C.\tc #EFFFE7", +"D.\tc #F75263", +"E.\tc #FFFFF7", +"F.\tc #F7FFF7", +"G.\tc #DEEFEF", +"H.\tc #F7FFEF", +"I.\tc #F74A63", +"J.\tc #EFF7EF", +"K.\tc #FFFFEF", +"L.\tc #E7F7F7", +"M.\tc #D6E7E7", +"N.\tc #DEF7EF", +"O.\tc #EFFFF7", +"P.\tc #9C9C94", +"Q.\tc #73736B", +" . + @ # $ $ $ @ % $ @ & & # % * * = % - ; > * % ; > , + + \' ) ) ! \ + ", +" ~ % $ $ $ { { $ & % $ $ @ * # * % & - & - & ; & & * $ ; * > , ] ) \' ^ \ + ", +" ~ / { $ $ $ { { $ $ - $ & % * % * % & * & ; - & % & - + % * > - + , ] ) (\ + ", +" ~ { { { $ @ { $ $ $ $ * $ $ * & & - > - * & * & > % - - > - @ * = % = + \' \ +) ", +"~ $ { { $ $ $ $ { # % # @ @ % - % % % * - & - > > = $ & - * = @ % > > % ; , _\ + : ", +"$ { { { $ $ $ $ $ # & & # # & > % - * - * ; % * * ; ; * > - % % ; ; * @ * + )\ + ) ", +"$ $ $ { { $ & @ $ $ & $ @ % * % % - * > ; % % ; - ; # * % % @ $ $ $ % + , , )\ + \' ~ ", +"$ $ $ $ $ $ # $ # @ * $ & $ ; - - % - % ; * % ; - , & & * * = ; + , ] \' < \'\ + < ] \' < ", +"{ $ $ { $ # $ $ $ @ * $ @ & = & * & - % - % - > @ > @ * + + , [ } | > ; = + <\ + \' ) = , ) ", +"$ $ $ $ $ @ $ { $ - @ $ & @ - - & @ @ $ $ $ $ * % > & = \' > 1 2 3 4 5 6 1 % \ +- \' \' \' , - , 7 ", +"$ $ { { # $ & $ $ # @ @ & & % - @ & & - > @ $ - @ ; & ; 8 9 0 a b 4 c d e f g\ + = \' ) ) ] , ] = ) ", +"$ @ $ $ @ & * @ @ $ # @ * * % % % @ % & & & % ; $ = % % h i j k l m n o p e q\ + r ] ) ) \' ) ) \' + ", +"& & $ $ @ * @ & @ & & % * - - * * & > > * % - = - , % [ 6 s t u 4 v w x v y z\ + A B > ) ] ) \' ] ] ", +"& @ { { & $ $ $ & % % * & ; ; > > - - = - - - = * * * ; @ 1 9 3 C D E F 3 G H\ + I J K % * = > ] ", +"% # $ { @ @ $ & & * $ $ % - ; - - - = + ; - - = > , ; + = & 1 L M N O P Q R S\ + T 8 U % @ * + ", +"@ $ $ $ @ # # @ & @ * @ % - = > * ; ; - ; - - > * - * = ; & @ $ & E V W N X Y\ + Z % > * ; , ] + ", +"$ $ $ $ @ # & $ & @ - * = ; - ; * ; = - - % > + & - * ; = - * % @ $ $ & @ ` @\ + @ > @ * * - + > > ", +"$ $ $ $ & @ & # $ # & % % > - ; % > - + % - = = % + * > ; - > - - - % @ * * *\ + % ; > * > + = > > ", +"$ $ $ $ % $ @ % $ % @ @ @ & @ > & - > + * % > + - > - + = ; > - > ; > * > + -\ + > + ; = - + = ; = ", +"$ { # $ $ % # # $ $ # @ * * - - ; > + = > > = - * > & ; = % ; - = % = % * - *\ + ; = * > * ; - & * ", +"@ $ @ & % @ > & & @ @ - * * - % % % - + ; ; + , + ; > = = > = = , > + = , - %\ + > = = ; * , = * @ ", +"$ $ $ $ @ # % # $ @ # $ - > = ; & & ; ] \' \' < ) ] ) ] < ) ] \' , \' = ; * +\ + = - > > % ; ; ; = % * ", +"& % & @ & & * $ $ & @ % @ > ; * & ; = , ] \' _ ._ _ : : : _ _ ) ) \' ] ] + =\ + - = = * - * = = % - ", +"& $ & @ & & @ & @ @ @ # - > > > & ; + ] \' ( _ : ..+.~ +.@.#. .$.7 : _ : : ) \ +\' > + - ; > ; = > + ", +"& % $ & @ $ * # $ $ % @ % > * * = - ] \' _ _ : ..%.&.. . *.7 =.-.;.-.>. .$.: \ + .< \' = * = % % - ; ", +"$ @ # % % & @ & { @ @ * % - - ; > = + < ...,.%.&.\'.).).*.&.%.!.~.=.( {.].^.\ +/.7 7 _ < _ ] = , - ", +"{ $ $ @ & * & # $ $ % * * * * = - = , < +.~ (.\'.\'._.:.:.<.[.).}.|.1.=.#.2.3\ +.4.: +./. . .\' > = + ", +"{ & & % & % & $ & * # * ; % - > ; = ] < #.!.&.\'._._._.5.<.6.7.<.[.}.1.8.( ! \ +! 4.9.0.#./.7 _ \' , ", +"$ @ @ & % % @ $ & # * ; % > - ; ; - + ) : 7 %.(.:.:._.a.<.7.b.b.6.[.}.%...>.(\ + 4.9.].c.>.+.d.7 < ", +"$ - * & * * $ @ @ # @ - % % * , = % > ] _ 7 %.|.e.:.5.a.a.f.g.b.h.6.[.. ~ i. \ +.$.-._ ! c.9.0.+.: ", +"@ % * & * - $ @ & & - - = * @ * * - > + ) .!.j.*.k.<.l.l.l.f.f.b.b.m.[.n.o.~\ + p.,...: $.].c.: 7 ", +"% % # & @ % $ # $ $ & & & @ & = % * ; ] ] < : p.|.*.e.k.q.l.l.<.<.g.b.6.r.s.*\ +.n.. o.o.t./.u.u.0.", +"- - @ % * - $ $ @ $ & > & & % ; % ; > = ] ] _ 7 1.*.*.|.v.q.e.a.<.f.b.b.w.w.r\ +.r.r.[.s.s.s.|.~ ", +"& * $ # @ % # $ # & * % % & * % # * * = ] \' \' 7 ^.;.x.p.!.|.q.a.f.g.b.b.y.z\ +.z.z.z.w.w.w.r.s.n.j.", +"- - A.A.A.A.A.& # # # @ % # - = @ ; & - = + ] ) 7 ].{...i.B.B.a.f.B.B.b.C.B.B\ +.z.z.z.z.z.w.r.n.&.", +"% % A.A.A.A.D.D.& - - & * * ; - - = > > = + ) ) _ +.d.=...B.B.e.<.B.B.g.b.B.B\ +.E.E.F.z.z.z.w.r.n.", +"& @ A.A.& - D.D.D.& * @ & - - & ; * % - * - , ] ) : c.>.{.j.*.e.<.B.B.g.f.B.B\ +.F.E.E.E.z.z.z.w.r.", +"; % A.A.- - * D.D.@ - @ % % > % @ = = * % ; ] \' ] _ /.0.;.G.&.e.<.B.B.g.f.B.\ +B.H.F.E.E.E.E.z.z.w.", +"* & A.A.* - A.D.D.$ % D.D.D.% ; D.D.I.* % % I.B.B.B.B.7 ].B.B.).[.B.B.g.g.B.B\ +.J.H.B.B.B.B.B.E.z.", +"* * A.A.A.A.D.D.; & D.D.D.* - D.D.I.I.I.> * I.B.B.B.B.: d.B.B.&.).B.B.b.b.B.B\ +.b.y.B.B.B.B.B.E.E.", +"% & A.A.A.A.D.> > - D.D.$ - D.D.D.* I.I.I.- - % B.B.B.\' .B.B.*.r.B.B.6.J.B.\ +B.b.b.h.y.K.B.B.K.K.", +"@ @ A.A.- - ; ; ; > D.D.$ @ D.D.& & - I.I.> + > B.B.+ ] \' B.B.G.L.B.B.6.w.B.\ +B.b.b.B.B.B.B.B.K.K.", +"% % A.A.& * ; > > = D.D.& $ D.D.& * % I.I.; = I.B.- + \' ] B.B.~ M.B.B.[.6.B.\ +B.y.B.B.b.b.B.B.h.h.", +"$ $ A.A.% @ % ; - = D.D.- > D.D.D.& I.I.I.* I.I.B.% ; = + B.B._ $.B.B.k.r.B.B\ +.z.B.B.b.b.B.B.m.h.", +"> & A.A.* = > = , ; D.D.; > > D.D.D.I.I.@ - I.B.B.B.B.+ ] B.B.< : B.B.N.O.B.B\ +.w.B.B.B.B.B.B.m.m.", +"$ $ A.A.$ # > - = % D.D.; * @ & D.I.I.s._ # I.B.B.B.B.+ = B.B.] \' B.B.t.L.B.\ +B.w.z.B.B.B.B.B.m.m.", +"% % % - % % > * + + * > > = % % , , ] ! # $ * - * - ; , ] ] ] : ~ ~ |.&.n\ +.r.w.y.z.z.y.y.h.m.", +"* % * - @ - ; > % ; ; - = * & ; = \' P. Q.$ - = > - * ; , , ] _ ./.~ ~ \ +o.[.6.w.y.z.z.z.y.m." +}; +static Fl_Pixmap image_Pz12(idata_Pz12); + +Fl_Check_Button *do_ftpsearch_button=(Fl_Check_Button *)0; + +Fl_Window* make_url_input_win() { + Fl_Window* w; + { Fl_Window* o = new Fl_Window(440, 140, gettext("Please enter the URL")); + w = o; + { Fl_Return_Button* o = url_input_ok_button = new Fl_Return_Button(235, 110, 90, 25, gettext("OK")); + o->labelsize(12); + o->callback((Fl_Callback*)cb_url_input_ok); + } + { Fl_Input* o = in_url = new Fl_Input(65, 55, 360, 30); + o->labelsize(12); + o->textsize(12); + o->align(133); + } + { Fl_Box* o = new Fl_Box(60, 25, 335, 25, gettext("Enter URL (CTRL+V to paste from clipboard)")); + o->labelsize(12); + o->align(132|FL_ALIGN_INSIDE); + } + { Fl_Box* o = new Fl_Box(5, 30, 55, 60); + o->image(image_Pz12); + } + { Fl_Button* o = new Fl_Button(340, 110, 90, 25, gettext("Cancel")); + o->labelsize(12); + o->callback((Fl_Callback*)cb_url_input_cancel); + } + { Fl_Check_Button* o = do_ftpsearch_button = new Fl_Check_Button(60, 90, 245, 20, gettext("FTPSearch for mirrors (Experimental)")); + o->down_box(FL_DIAMOND_DOWN_BOX); + o->labelsize(12); + } + o->hide(); + o->end(); + } + return w; +} diff --git a/src/we.fl b/src/we.fl new file mode 100644 index 0000000..6415c98 --- /dev/null +++ b/src/we.fl @@ -0,0 +1,400 @@ +# data file for the Fltk User Interface Designer (fluid) +version 1.0102 +i18n_type 1 +i18n_include +i18n_function gettext +header_name {.h} +code_name {.cxx} +Function {make_prefs_win()} {} { + Fl_Window win_prefs { + label {Prozilla Preferences Panel} open + xywh {245 135 475 410} visible + } { + Fl_Tabs tb_prefs { + callback cb_prefs_tab open + xywh {20 5 450 370} box UP_BOX + } { + Fl_Group gr_prefs_general { + label General + xywh {30 30 440 340} labelfont 1 labelsize 12 + } { + Fl_Group {} { + xywh {30 35 430 330} box ENGRAVED_FRAME + } { + Fl_Input retry_delay_in { + xywh {305 75 95 25} type Int labelsize 12 textsize 12 + } + Fl_Counter threads_in { + xywh {305 45 50 25} labelsize 12 minimum 1 maximum 30 step 1 value 4 textsize 12 + code0 {o->type(FL_SIMPLE_COUNTER);} + } + Fl_Box {} { + label {Number of Threads:} + xywh {60 45 120 25} labelsize 12 align 148 + } + Fl_Input in_timeout { + xywh {305 105 95 25} type Int labelsize 12 textsize 12 + } + Fl_Check_Button in_pasv_button { + label {Use PASV for FTP transfers (recommended)} + xywh {65 135 295 25} down_box DIAMOND_DOWN_BOX labelsize 12 align 148 + } + Fl_Check_Button in_no_cache_button { + label {Ask the HTTP proxies not to cache requests between sessions (default is off)} + xywh {65 165 345 25} down_box DIAMOND_DOWN_BOX labelsize 12 align 148 + } + Fl_Input in_outputdir { + xywh {65 225 355 25} labelsize 12 align 1 textsize 12 + } + Fl_Input in_bps_per_dl { + xywh {330 275 95 25} type Float labelsize 11 align 1 textsize 12 + } + Fl_Box {} { + label {Retry Delay (Sec):} + xywh {60 75 210 25} labelsize 12 align 148 + } + Fl_Box {} { + label {Timeout Period (Sec):} + xywh {60 105 210 25} labelsize 12 align 148 + } + Fl_Box {} { + label {Directory to download the files:} + xywh {65 195 340 25} labelsize 12 align 148 + } + Fl_Box {} { + label {Limit bandwith usage PER download to (Kbps) (0 = unlimited):} + xywh {65 250 380 20} labelsize 12 align 148 + } + } + } + Fl_Group gr_prefs_proxy { + label Proxies + xywh {30 35 440 335} labelfont 1 labelsize 12 hide + } { + Fl_Group {} {open + xywh {30 35 435 325} box ENGRAVED_BOX + } { + Fl_Group gr_proxy_grp {open + xywh {40 80 420 270} box ENGRAVED_BOX + } { + Fl_Input in_http_proxy_host { + label {Hostname:} + xywh {130 115 140 25} labelsize 12 align 132 textsize 12 + } + Fl_Input in_http_proxy_port { + label {Port:} + xywh {310 115 140 25} type Int labelsize 12 align 132 textsize 12 + } + Fl_Box {} { + label {HTTP Proxy:} + xywh {45 90 85 25} labelfont 1 labelsize 12 align 128 + } + Fl_Input in_http_proxy_user { + label {Username:} + xywh {130 145 140 25} labelsize 12 align 132 textsize 12 + } + Fl_Input in_http_proxy_passwd { + label {Password:} + xywh {130 175 140 25} type Secret labelsize 12 align 132 textsize 12 + } + Fl_Input in_ftp_proxy_host { + label {Hostname:} + xywh {130 230 140 25} labelsize 12 align 132 textsize 12 + } + Fl_Input in_ftp_proxy_port { + label {Port:} + xywh {310 230 135 25} type Int labelsize 12 align 132 textsize 12 + } + Fl_Input in_ftp_proxy_user { + label {Username:} + xywh {130 260 140 25} labelsize 12 align 132 textsize 12 + } + Fl_Input in_ftp_proxy_passwd { + label {Password:} + xywh {130 290 140 25} type Secret labelsize 12 align 132 textsize 12 + } + Fl_Box {} { + label {FTP Proxy:} + xywh {45 205 85 25} labelfont 1 labelsize 12 align 128 + } + Fl_Choice in_ftp_proxy_type { + label {FTP Proxy Type:} open + xywh {130 320 115 25} down_box BORDER_BOX labelsize 12 align 132 textsize 12 + } { + menuitem {} { + label {USER@SITE} + xywh {20 20 100 20} labelsize 12 + } + menuitem {} { + label {USER@ProxyUser@SITE} + xywh {20 20 100 20} labelsize 12 + } + menuitem {} { + label {USER@SITE_PROXYUSER} + xywh {30 30 100 20} labelsize 12 + } + menuitem {} { + label {ProxyUser@SITE} + xywh {40 40 100 20} labelsize 12 + } + menuitem {} { + label {LOGIN_then_USER@SITE} + xywh {50 50 100 20} labelsize 12 + } + menuitem {} { + label OPENSITE + xywh {60 60 100 20} labelsize 12 + } + menuitem {} { + label SITESITE + xywh {70 70 100 20} labelsize 12 + } + menuitem {} { + label {HTTP proxy} + xywh {80 80 100 20} labelsize 12 + } + } + Fl_Check_Button in_use_http_proxy { + label {Use HTTP Proxy} + xywh {155 90 120 20} down_box DIAMOND_DOWN_BOX labelsize 12 align 148 + } + Fl_Check_Button in_use_ftp_proxy { + label {Use FTP Proxy} + xywh {145 205 120 20} down_box DIAMOND_DOWN_BOX labelsize 12 align 148 + } + } + Fl_Group {} {open + xywh {55 40 285 45} + } { + Fl_Check_Button in_direct_conn_button { + label {Direct Connection to the Internet} + callback cb_prefs_conn + xywh {55 45 205 20} type Radio down_box DIAMOND_DOWN_BOX labelsize 12 align 148 + } + Fl_Check_Button in_use_proxy_button { + label {Use proxies} + callback cb_prefs_use_proxy + xywh {55 60 210 20} type Radio down_box DIAMOND_DOWN_BOX labelsize 12 align 148 + } + } + } + } + Fl_Group gr_prefs_ftpsearch { + label {FTP Search} open + xywh {30 30 440 345} labelfont 1 labelsize 12 hide + } { + Fl_Group {} {open + xywh {35 35 425 325} box ENGRAVED_FRAME + } { + Fl_Box {} { + label {Number of mirrors to request:} + xywh {60 95 180 25} labelsize 12 align 148 + } + Fl_Counter mirrors_in { + xywh {305 90 75 25} labelsize 12 minimum 1 maximum 1000 step 1 value 40 textsize 12 + code0 {o->type(FL_SIMPLE_COUNTER);} + } + Fl_Box {} { + label {Ping Timeout (Sec):} + xywh {60 130 210 25} labelsize 12 align 148 + } + Fl_Input in_ping_timeout { + xywh {310 130 95 25} type Int labelsize 12 textsize 12 + } + Fl_Box {} { + label {Number of mirrors to ping at once:} + xywh {60 165 210 25} labelsize 12 align 148 + } + Fl_Counter in_simul_pings { + xywh {310 165 80 25} labelsize 12 minimum 1 maximum 30 step 1 value 5 textsize 12 + code0 {o->type(FL_SIMPLE_COUNTER);} + } + Fl_Check_Button in_use_ftpsearch_button { + label {Do FTPSearch automatically} + xywh {60 210 295 25} down_box DIAMOND_DOWN_BOX labelsize 12 align 148 + } + Fl_Box {} { + label {FTPSearch Server to use:} + xywh {60 55 180 25} labelsize 12 align 148 + } + } + Fl_Choice ftps_server_choice {open + xywh {285 55 160 25} down_box BORDER_BOX labelsize 12 align 132 textsize 12 + } { + menuitem {} { + label {filesearching.com} + xywh {0 0 100 20} labelsize 12 + } + menuitem {} { + label {ftpsearch.uniovie.es} + xywh {10 10 100 20} labelsize 12 + } + menuitem {} { + label {ftpsearch.lycos.com} + xywh {10 10 100 20} labelsize 12 + } + } + } + } + Fl_Button ok_button { + label OK + callback cb_prefs_ok + xywh {265 385 70 20} labelsize 12 + } + Fl_Button cancel_button { + label Cancel + callback cb_prefs_cancel + xywh {365 385 70 20} labelsize 12 + } + } +} + +Function {make_about_win()} {} { + Fl_Window win_about {open + xywh {156 167 560 345} labeltype NORMAL_LABEL visible + } { + Fl_Box {} { + label {Prozilla Download Accelerator 2.0.5beta} + xywh {5 25 215 30} labelfont 1 labelsize 12 labelcolor 4 align 128 + } + Fl_Box {} { + label {GUI Version 2.0.5beta} + xywh {15 55 185 20} labelsize 12 + } + Fl_Box {} { + label {libprozilla version 1.2.0} + xywh {20 80 185 20} labelsize 12 + } + Fl_Button {} { + label OK + callback cb_about_ok selected + xywh {60 310 85 20} labelsize 12 + } + Fl_Box {} { + image {images/BigProZilla01.xpm} xywh {40 120 130 125} box SHADOW_FRAME labelsize 12 + } + Fl_Tabs {} {open + xywh {225 25 330 315} labelfont 1 labelcolor 4 + } { + Fl_Group {} { + label Credits open + xywh {230 45 320 290} labelsize 12 labelcolor 4 + } { + Fl_Scroll {} {open + xywh {240 55 300 275} box ENGRAVED_BOX color 28 labelfont 1 labelsize 12 labelcolor 4 + } { + Fl_Box {} { + label {Kalum Somaratna - Main Programming} + xywh {280 65 215 20} labelsize 10 align 128 + } + Fl_Box {} { + label {Uwe Hermann - Additional Programming} + xywh {290 85 200 15} labelsize 10 + } + Fl_Box {} { + label {Gustavo Noronha Silva (KoV) - libprozilla GNU gettext support, deb package maintainer} + xywh {290 135 220 40} labelsize 10 align 128 + } + Fl_Box {} { + label {Ralph Slooten - Web Page Maintainer, RPM packager, testing} + xywh {295 105 195 30} labelsize 10 align 128 + } + Fl_Box {} { + label {If you have contributed and arent listed, I apologise and please mail me and I will correct it} + xywh {285 285 215 40} labelsize 10 align 128 + } + Fl_Box {} { + label {Silviu Marin-Caea - (Our sysadmin) Donation of valuable bandwith and system resources at genesys.ro, testing} + xywh {290 175 210 45} labelsize 10 align 128 + } + Fl_Box {} { + label {Pablo Iranzo Gómez - testing} + xywh {295 220 180 20} labelsize 10 align 128 + } + Fl_Box {} { + label {Krogg - The cool Prozilla logo} + xywh {300 240 190 20} labelsize 10 align 128 + } + Fl_Box {} { + label {David L. Matthews - testing} + xywh {305 260 165 20} labelsize 10 align 128 + } + } + } + Fl_Group {} { + label Translations open + xywh {230 45 320 290} labelsize 12 labelcolor 4 hide + } { + Fl_Scroll {} {open + xywh {240 55 300 275} box ENGRAVED_BOX color 28 when 6 + } { + Fl_Box {} { + label {Ruben Boer - Dutch Translation} + xywh {300 70 170 30} labelsize 10 align 128 + } + Fl_Box {} { + label {Ralph Slooten- Dutch Translation} + xywh {300 100 180 25} labelsize 10 align 128 + } + Fl_Box {} { + label {Flower - Romanian Translation} + xywh {300 130 175 20} labelsize 10 align 128 + } + Fl_Box {} { + label {Gustavo Noronha Silva (KoV) - Portugese Translation} + xywh {305 155 175 35} labelsize 10 align 128 + } + Fl_Box {} { + label {Emanuele Tatti (Kreazy) - Itallian Translation} + xywh {305 190 175 30} labelsize 10 align 128 + } + Fl_Box {} { + label {Alberto Zanoni - Itallian Translation} + xywh {315 230 175 25} labelsize 10 align 128 + } + Fl_Box {} { + label {Eric Lassauge - French Translation} + xywh {315 260 175 25} labelsize 10 align 128 + } + } + } + } + Fl_Box {} { + label {Webpage - http://prozilla.genesys.ro/} + xywh {15 255 195 20} color 29 labelsize 10 labelcolor 1 align 128 + } + } +} + +Function {make_url_input_win()} {} { + Fl_Window {} { + label {Please enter the URL} open + xywh {219 450 440 140} + code1 {o->hide();} visible + } { + Fl_Return_Button url_input_ok_button { + label OK + callback cb_url_input_ok + xywh {235 110 90 25} labelsize 12 + } + Fl_Input in_url { + xywh {65 55 360 30} labelsize 12 align 133 textsize 12 + } + Fl_Box {} { + label {Enter URL (CTRL+V to paste from clipboard)} + xywh {60 25 335 25} labelsize 12 align 148 + } + Fl_Box {} { + image {images/Pz12.xpm} xywh {5 30 55 60} + } + Fl_Button {} { + label Cancel + callback cb_url_input_cancel + xywh {340 110 90 25} labelsize 12 + } + Fl_Check_Button do_ftpsearch_button { + label {FTPSearch for mirrors (Experimental)} + xywh {60 90 245 20} down_box DIAMOND_DOWN_BOX labelsize 12 + } + } +} diff --git a/src/we.h b/src/we.h new file mode 100644 index 0000000..2a222b9 --- /dev/null +++ b/src/we.h @@ -0,0 +1,67 @@ +// generated by Fast Light User Interface Designer (fluid) version 1.0102 + +#ifndef we_h +#define we_h +#include +#include +extern Fl_Window *win_prefs; +#include +extern void cb_prefs_tab(Fl_Tabs*, void*); +extern Fl_Tabs *tb_prefs; +#include +extern Fl_Group *gr_prefs_general; +#include +extern Fl_Input *retry_delay_in; +#include +extern Fl_Counter *threads_in; +#include +extern Fl_Input *in_timeout; +#include +extern Fl_Check_Button *in_pasv_button; +extern Fl_Check_Button *in_no_cache_button; +extern Fl_Input *in_outputdir; +extern Fl_Input *in_bps_per_dl; +extern Fl_Group *gr_prefs_proxy; +extern Fl_Group *gr_proxy_grp; +extern Fl_Input *in_http_proxy_host; +extern Fl_Input *in_http_proxy_port; +extern Fl_Input *in_http_proxy_user; +extern Fl_Input *in_http_proxy_passwd; +extern Fl_Input *in_ftp_proxy_host; +extern Fl_Input *in_ftp_proxy_port; +extern Fl_Input *in_ftp_proxy_user; +extern Fl_Input *in_ftp_proxy_passwd; +#include +extern Fl_Choice *in_ftp_proxy_type; +extern Fl_Check_Button *in_use_http_proxy; +extern Fl_Check_Button *in_use_ftp_proxy; +extern void cb_prefs_conn(Fl_Check_Button*, void*); +extern Fl_Check_Button *in_direct_conn_button; +extern void cb_prefs_use_proxy(Fl_Check_Button*, void*); +extern Fl_Check_Button *in_use_proxy_button; +extern Fl_Group *gr_prefs_ftpsearch; +extern Fl_Counter *mirrors_in; +extern Fl_Input *in_ping_timeout; +extern Fl_Counter *in_simul_pings; +extern Fl_Check_Button *in_use_ftpsearch_button; +extern Fl_Choice *ftps_server_choice; +#include +extern void cb_prefs_ok(Fl_Button*, void*); +extern Fl_Button *ok_button; +extern void cb_prefs_cancel(Fl_Button*, void*); +extern Fl_Button *cancel_button; +Fl_Window* make_prefs_win(); +extern Fl_Menu_Item menu_in_ftp_proxy_type[]; +extern Fl_Menu_Item menu_ftps_server_choice[]; +extern Fl_Window *win_about; +extern void cb_about_ok(Fl_Button*, void*); +#include +Fl_Window* make_about_win(); +#include +extern void cb_url_input_ok(Fl_Return_Button*, void*); +extern Fl_Return_Button *url_input_ok_button; +extern Fl_Input *in_url; +extern void cb_url_input_cancel(Fl_Button*, void*); +extern Fl_Check_Button *do_ftpsearch_button; +Fl_Window* make_url_input_win(); +#endif diff --git a/stamp-h b/stamp-h new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/stamp-h @@ -0,0 +1 @@ +timestamp diff --git a/stamp-h.in b/stamp-h.in new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/stamp-h.in @@ -0,0 +1 @@ +timestamp