From 98ba30d1d5c87a6f7e6578448d190629fb4b360e Mon Sep 17 00:00:00 2001 From: Kim Kibum Date: Mon, 21 May 2012 17:49:31 +0900 Subject: [PATCH] Upload Tizen:Base source --- ABOUT-NLS | 996 +++ AUTHORS | 22 + COPYING | 639 ++ ChangeLog | 34 + INSTALL | 234 + Makefile.am | 23 + Makefile.in | 670 ++ NEWS | 108 + README | 80 + THANKS | 91 + TODO | 149 + aclocal.m4 | 923 +++ config.guess | 1500 ++++ config.h.in | 473 ++ config.rpath | 571 ++ config.sub | 1616 ++++ configure | 16959 ++++++++++++++++++++++++++++++++++++++++++ configure.ac | 144 + contrib/Makefile.am | 21 + contrib/Makefile.in | 359 + contrib/bas-README | 25 + contrib/pas-R.Marks | 25 + contrib/pas-README | 45 + contrib/shar.sh | 176 + contrib/shar2.sh | 74 + contrib/uudecode.bas | 78 + contrib/uudecode.pas | 224 + contrib/uudecode.pl | 24 + contrib/uuencode.pas | 202 + contrib/uuencode.pl | 10 + depcomp | 584 ++ doc/Makefile.am | 47 + doc/Makefile.in | 745 ++ doc/ansi2knr.1 | 25 + doc/compress-dummy.1 | 0 doc/doclicense.texi | 395 + doc/mdate-sh | 201 + doc/shar.1 | 258 + doc/sharutils.info | 1924 +++++ doc/sharutils.texi | 1573 ++++ doc/stamp-vti | 4 + doc/texinfo.tex | 7482 +++++++++++++++++++ doc/unshar.1 | 60 + doc/uuencode.1 | 138 + doc/uuencode.5 | 90 + doc/version.texi | 4 + install-sh | 507 ++ intl/ChangeLog | 4 + intl/Makefile.in | 500 ++ intl/VERSION | 1 + intl/bindtextdom.c | 363 + intl/config.charset | 638 ++ intl/dcgettext.c | 56 + intl/dcigettext.c | 1258 ++++ intl/dcngettext.c | 57 + intl/dgettext.c | 58 + intl/dngettext.c | 59 + intl/eval-plural.h | 108 + intl/explodename.c | 185 + intl/finddomain.c | 192 + intl/gettext.c | 63 + intl/gettextP.h | 218 + intl/gmo.h | 149 + intl/hash-string.h | 48 + intl/intl-compat.c | 131 + intl/l10nflist.c | 421 ++ intl/langprefs.c | 130 + intl/libgnuintl.h.in | 383 + intl/loadinfo.h | 145 + intl/loadmsgcat.c | 1420 ++++ intl/localcharset.c | 409 + intl/localcharset.h | 42 + intl/locale.alias | 78 + intl/localealias.c | 414 ++ intl/localename.c | 1500 ++++ intl/log.c | 98 + intl/ngettext.c | 65 + intl/os2compat.c | 98 + intl/os2compat.h | 46 + intl/osdep.c | 24 + intl/plural-exp.c | 154 + intl/plural-exp.h | 118 + intl/plural.c | 1490 ++++ intl/plural.y | 381 + intl/printf-args.c | 119 + intl/printf-args.h | 137 + intl/printf-parse.c | 537 ++ intl/printf-parse.h | 75 + intl/printf.c | 371 + intl/ref-add.sin | 31 + intl/ref-del.sin | 26 + intl/relocatable.c | 449 ++ intl/relocatable.h | 77 + intl/textdomain.c | 141 + intl/vasnprintf.c | 902 +++ intl/vasnprintf.h | 78 + intl/vasnwprintf.h | 46 + intl/wprintf-parse.h | 75 + intl/xsize.h | 109 + lib/Makefile.am | 43 + lib/Makefile.in | 503 ++ lib/alloca.c | 504 ++ lib/ansi2knr.c | 481 ++ lib/basename.c | 90 + lib/basename.h | 40 + lib/error.c | 403 + lib/error.h | 78 + lib/exit.h | 32 + lib/gen-uio | 53 + lib/getopt.c | 1068 +++ lib/getopt.h | 180 + lib/getopt1.c | 188 + lib/gettext.h | 69 + lib/inttostr.c | 49 + lib/inttostr.h | 65 + lib/liballoca.h | 56 + lib/malloc.c | 38 + lib/md5.c | 417 ++ lib/md5.h | 161 + lib/memset.c | 26 + lib/mktime.c | 528 ++ lib/offtostr.c | 3 + lib/pathmax.h | 55 + lib/realloc.c | 44 + lib/stpcpy.c | 50 + lib/stpcpy.h | 40 + lib/strftime.c | 1406 ++++ lib/strtoimax.c | 104 + lib/strtol.c | 473 ++ lib/strtoll.c | 35 + lib/system.h | 208 + lib/whoami.c | 118 + lib/xalloc.h | 88 + lib/xgetcwd.c | 87 + lib/xgetcwd.h | 27 + lib/xmalloc.c | 117 + lib/xstrdup.c | 38 + m4/codeset.m4 | 21 + m4/error.m4 | 13 + m4/gettext.m4 | 549 ++ m4/glibc2.m4 | 30 + m4/glibc21.m4 | 30 + m4/iconv.m4 | 101 + m4/intdiv0.m4 | 70 + m4/intmax.m4 | 30 + m4/inttypes-pri.m4 | 30 + m4/inttypes.m4 | 25 + m4/inttypes_h.m4 | 26 + m4/lcmessage.m4 | 30 + m4/lib-ld.m4 | 110 + m4/lib-link.m4 | 553 ++ m4/lib-prefix.m4 | 153 + m4/longdouble.m4 | 28 + m4/longlong.m4 | 23 + m4/malloc.m4 | 35 + m4/nls.m4 | 51 + m4/po.m4 | 429 ++ m4/printf-posix.m4 | 44 + m4/progtest.m4 | 92 + m4/realloc.m4 | 35 + m4/sharutils.m4 | 45 + m4/signed.m4 | 17 + m4/size_max.m4 | 59 + m4/stdint_h.m4 | 26 + m4/uintmax_t.m4 | 30 + m4/ulonglong.m4 | 23 + m4/wchar_t.m4 | 20 + m4/wint_t.m4 | 20 + m4/xsize.m4 | 13 + m4/xstrtoimax.m4 | 41 + missing | 367 + mkinstalldirs | 161 + packaging/sharutils.changes | 152 + packaging/sharutils.spec | 82 + po/LINGUAS | 2 + po/Makefile.in.in | 384 + po/Makevars | 25 + po/POTFILES.in | 13 + po/Rules-quot | 47 + po/bg.gmo | Bin 0 -> 24836 bytes po/bg.po | 906 +++ po/boldquot.sed | 10 + po/ca.gmo | Bin 0 -> 13938 bytes po/ca.po | 935 +++ po/cs.gmo | Bin 0 -> 10120 bytes po/cs.po | 972 +++ po/da.gmo | Bin 0 -> 13311 bytes po/da.po | 962 +++ po/de.gmo | Bin 0 -> 14744 bytes po/de.po | 934 +++ po/el.gmo | Bin 0 -> 10486 bytes po/el.po | 1278 ++++ po/en@boldquot.header | 25 + po/en@quot.header | 22 + po/es.gmo | Bin 0 -> 20873 bytes po/es.po | 1277 ++++ po/et.gmo | Bin 0 -> 14871 bytes po/et.po | 886 +++ po/fi.gmo | Bin 0 -> 14909 bytes po/fi.po | 954 +++ po/fr.gmo | Bin 0 -> 20626 bytes po/fr.po | 988 +++ po/ga.gmo | Bin 0 -> 19688 bytes po/ga.po | 923 +++ po/gl.gmo | Bin 0 -> 10176 bytes po/gl.po | 986 +++ po/hu.gmo | Bin 0 -> 13420 bytes po/hu.po | 950 +++ po/insert-header.sin | 23 + po/it.gmo | Bin 0 -> 19567 bytes po/it.po | 938 +++ po/ja.gmo | Bin 0 -> 18965 bytes po/ja.po | 874 +++ po/nb.gmo | Bin 0 -> 1307 bytes po/nb.po | 1248 ++++ po/nl.gmo | Bin 0 -> 19534 bytes po/nl.po | 881 +++ po/nn.gmo | Bin 0 -> 969 bytes po/nn.po | 1212 +++ po/pl.gmo | Bin 0 -> 19540 bytes po/pl.po | 882 +++ po/pt.gmo | Bin 0 -> 4019 bytes po/pt.po | 855 +++ po/quot.sed | 6 + po/remove-potcdate.sin | 19 + po/ru.gmo | Bin 0 -> 19442 bytes po/ru.po | 880 +++ po/rw.gmo | Bin 0 -> 545 bytes po/rw.po | 962 +++ po/sharutils.pot | 779 ++ po/sr.gmo | Bin 0 -> 19423 bytes po/sr.po | 923 +++ po/stamp-po | 1 + po/sv.gmo | Bin 0 -> 19362 bytes po/sv.po | 873 +++ po/tr.gmo | Bin 0 -> 18872 bytes po/tr.po | 873 +++ po/vi.gmo | Bin 0 -> 22412 bytes po/vi.po | 901 +++ po/zh_TW.gmo | Bin 0 -> 11239 bytes po/zh_TW.po | 965 +++ src/Makefile.am | 64 + src/Makefile.in | 607 ++ src/compress-dummy.in | 50 + src/encode.c | 98 + src/mail-files.in | 108 + src/mailshar.in | 106 + src/remsync.in | 2277 ++++++ src/scripts.def | 281 + src/scripts.tpl | 34 + src/scripts.x | 230 + src/shar.c | 2325 ++++++ src/unshar.c | 552 ++ src/uudecode.c | 537 ++ src/uuencode.c | 314 + tests/Makefile.am | 32 + tests/Makefile.in | 441 ++ tests/shar-1 | 58 + tests/shar-1.ok | 124 + tests/shar-2 | 45 + tests/shar-3 | 48 + tests/testdata | 9 + tests/uude-1 | 39 + tests/uutest-1 | 27 + version.m4 | 5 + 265 files changed, 102723 insertions(+) create mode 100644 ABOUT-NLS create mode 100644 AUTHORS create mode 100644 COPYING 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 THANKS create mode 100644 TODO create mode 100644 aclocal.m4 create mode 100755 config.guess create mode 100644 config.h.in create mode 100755 config.rpath create mode 100755 config.sub create mode 100755 configure create mode 100644 configure.ac create mode 100644 contrib/Makefile.am create mode 100644 contrib/Makefile.in create mode 100644 contrib/bas-README create mode 100644 contrib/pas-R.Marks create mode 100644 contrib/pas-README create mode 100644 contrib/shar.sh create mode 100644 contrib/shar2.sh create mode 100644 contrib/uudecode.bas create mode 100644 contrib/uudecode.pas create mode 100644 contrib/uudecode.pl create mode 100644 contrib/uuencode.pas create mode 100644 contrib/uuencode.pl create mode 100755 depcomp create mode 100644 doc/Makefile.am create mode 100644 doc/Makefile.in create mode 100644 doc/ansi2knr.1 create mode 100644 doc/compress-dummy.1 create mode 100644 doc/doclicense.texi create mode 100755 doc/mdate-sh create mode 100644 doc/shar.1 create mode 100644 doc/sharutils.info create mode 100644 doc/sharutils.texi create mode 100644 doc/stamp-vti create mode 100644 doc/texinfo.tex create mode 100644 doc/unshar.1 create mode 100644 doc/uuencode.1 create mode 100644 doc/uuencode.5 create mode 100644 doc/version.texi create mode 100755 install-sh 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/eval-plural.h create mode 100644 intl/explodename.c create mode 100644 intl/finddomain.c create mode 100644 intl/gettext.c create mode 100644 intl/gettextP.h create mode 100644 intl/gmo.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/langprefs.c create mode 100644 intl/libgnuintl.h.in create mode 100644 intl/loadinfo.h create mode 100644 intl/loadmsgcat.c create mode 100644 intl/localcharset.c create mode 100644 intl/localcharset.h create mode 100644 intl/locale.alias create mode 100644 intl/localealias.c create mode 100644 intl/localename.c create mode 100644 intl/log.c create mode 100644 intl/ngettext.c create mode 100644 intl/os2compat.c create mode 100644 intl/os2compat.h create mode 100644 intl/osdep.c create mode 100644 intl/plural-exp.c create mode 100644 intl/plural-exp.h create mode 100644 intl/plural.c create mode 100644 intl/plural.y create mode 100644 intl/printf-args.c create mode 100644 intl/printf-args.h create mode 100644 intl/printf-parse.c create mode 100644 intl/printf-parse.h create mode 100644 intl/printf.c create mode 100644 intl/ref-add.sin create mode 100644 intl/ref-del.sin create mode 100644 intl/relocatable.c create mode 100644 intl/relocatable.h create mode 100644 intl/textdomain.c create mode 100644 intl/vasnprintf.c create mode 100644 intl/vasnprintf.h create mode 100644 intl/vasnwprintf.h create mode 100644 intl/wprintf-parse.h create mode 100644 intl/xsize.h create mode 100644 lib/Makefile.am create mode 100644 lib/Makefile.in create mode 100644 lib/alloca.c create mode 100644 lib/ansi2knr.c create mode 100644 lib/basename.c create mode 100644 lib/basename.h create mode 100644 lib/error.c create mode 100644 lib/error.h create mode 100644 lib/exit.h create mode 100644 lib/gen-uio create mode 100644 lib/getopt.c create mode 100644 lib/getopt.h create mode 100644 lib/getopt1.c create mode 100644 lib/gettext.h create mode 100644 lib/inttostr.c create mode 100644 lib/inttostr.h create mode 100644 lib/liballoca.h create mode 100644 lib/malloc.c create mode 100644 lib/md5.c create mode 100644 lib/md5.h create mode 100644 lib/memset.c create mode 100644 lib/mktime.c create mode 100644 lib/offtostr.c create mode 100644 lib/pathmax.h create mode 100644 lib/realloc.c create mode 100644 lib/stpcpy.c create mode 100644 lib/stpcpy.h create mode 100644 lib/strftime.c create mode 100644 lib/strtoimax.c create mode 100644 lib/strtol.c create mode 100644 lib/strtoll.c create mode 100644 lib/system.h create mode 100644 lib/whoami.c create mode 100644 lib/xalloc.h create mode 100644 lib/xgetcwd.c create mode 100644 lib/xgetcwd.h create mode 100644 lib/xmalloc.c create mode 100644 lib/xstrdup.c create mode 100644 m4/codeset.m4 create mode 100644 m4/error.m4 create mode 100644 m4/gettext.m4 create mode 100644 m4/glibc2.m4 create mode 100644 m4/glibc21.m4 create mode 100644 m4/iconv.m4 create mode 100644 m4/intdiv0.m4 create mode 100644 m4/intmax.m4 create mode 100644 m4/inttypes-pri.m4 create mode 100644 m4/inttypes.m4 create mode 100644 m4/inttypes_h.m4 create mode 100644 m4/lcmessage.m4 create mode 100644 m4/lib-ld.m4 create mode 100644 m4/lib-link.m4 create mode 100644 m4/lib-prefix.m4 create mode 100644 m4/longdouble.m4 create mode 100644 m4/longlong.m4 create mode 100644 m4/malloc.m4 create mode 100644 m4/nls.m4 create mode 100644 m4/po.m4 create mode 100644 m4/printf-posix.m4 create mode 100644 m4/progtest.m4 create mode 100644 m4/realloc.m4 create mode 100644 m4/sharutils.m4 create mode 100644 m4/signed.m4 create mode 100644 m4/size_max.m4 create mode 100644 m4/stdint_h.m4 create mode 100644 m4/uintmax_t.m4 create mode 100644 m4/ulonglong.m4 create mode 100644 m4/wchar_t.m4 create mode 100644 m4/wint_t.m4 create mode 100644 m4/xsize.m4 create mode 100644 m4/xstrtoimax.m4 create mode 100755 missing create mode 100755 mkinstalldirs create mode 100644 packaging/sharutils.changes create mode 100644 packaging/sharutils.spec create mode 100644 po/LINGUAS create mode 100644 po/Makefile.in.in create mode 100644 po/Makevars create mode 100644 po/POTFILES.in create mode 100644 po/Rules-quot create mode 100644 po/bg.gmo create mode 100644 po/bg.po create mode 100644 po/boldquot.sed create mode 100644 po/ca.gmo create mode 100644 po/ca.po create mode 100644 po/cs.gmo create mode 100644 po/cs.po create mode 100644 po/da.gmo create mode 100644 po/da.po create mode 100644 po/de.gmo create mode 100644 po/de.po create mode 100644 po/el.gmo create mode 100644 po/el.po create mode 100644 po/en@boldquot.header create mode 100644 po/en@quot.header create mode 100644 po/es.gmo create mode 100644 po/es.po create mode 100644 po/et.gmo create mode 100644 po/et.po create mode 100644 po/fi.gmo create mode 100644 po/fi.po create mode 100644 po/fr.gmo create mode 100644 po/fr.po create mode 100644 po/ga.gmo create mode 100644 po/ga.po create mode 100644 po/gl.gmo create mode 100644 po/gl.po create mode 100644 po/hu.gmo create mode 100644 po/hu.po create mode 100644 po/insert-header.sin create mode 100644 po/it.gmo create mode 100644 po/it.po create mode 100644 po/ja.gmo create mode 100644 po/ja.po create mode 100644 po/nb.gmo create mode 100644 po/nb.po create mode 100644 po/nl.gmo create mode 100644 po/nl.po create mode 100644 po/nn.gmo create mode 100644 po/nn.po create mode 100644 po/pl.gmo create mode 100644 po/pl.po create mode 100644 po/pt.gmo create mode 100644 po/pt.po create mode 100644 po/quot.sed create mode 100644 po/remove-potcdate.sin create mode 100644 po/ru.gmo create mode 100644 po/ru.po create mode 100644 po/rw.gmo create mode 100644 po/rw.po create mode 100644 po/sharutils.pot create mode 100644 po/sr.gmo create mode 100644 po/sr.po create mode 100644 po/stamp-po create mode 100644 po/sv.gmo create mode 100644 po/sv.po create mode 100644 po/tr.gmo create mode 100644 po/tr.po create mode 100644 po/vi.gmo create mode 100644 po/vi.po create mode 100644 po/zh_TW.gmo create mode 100644 po/zh_TW.po create mode 100644 src/Makefile.am create mode 100644 src/Makefile.in create mode 100644 src/compress-dummy.in create mode 100644 src/encode.c create mode 100644 src/mail-files.in create mode 100644 src/mailshar.in create mode 100644 src/remsync.in create mode 100644 src/scripts.def create mode 100644 src/scripts.tpl create mode 100644 src/scripts.x create mode 100644 src/shar.c create mode 100644 src/unshar.c create mode 100644 src/uudecode.c create mode 100644 src/uuencode.c create mode 100644 tests/Makefile.am create mode 100644 tests/Makefile.in create mode 100755 tests/shar-1 create mode 100644 tests/shar-1.ok create mode 100755 tests/shar-2 create mode 100755 tests/shar-3 create mode 100644 tests/testdata create mode 100755 tests/uude-1 create mode 100755 tests/uutest-1 create mode 100644 version.m4 diff --git a/ABOUT-NLS b/ABOUT-NLS new file mode 100644 index 0000000..e32d52d --- /dev/null +++ b/ABOUT-NLS @@ -0,0 +1,996 @@ +1 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 free software 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 on translations can 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. + +1.1 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'. + +1.2 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 included GNU +`gettext' 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 not be 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 usually have 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. + +1.3 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. + + The locale naming convention of `LL_CC', with `LL' denoting the +language and `CC' denoting the country, is the one use on systems based +on GNU libc. On other systems, some variations of this scheme are +used, such as `LL' or `LL_CC.ENCODING'. You can get the list of +locales supported by your system for your country by running the command +`locale -a | grep '^LL''. + + 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'. + + Special advice for Norwegian users: The language code for Norwegian +bokma*l changed from `no' to `nb' recently (in 2003). During the +transition period, while some message catalogs for this language are +installed under `nb' and some older ones under `no', it's recommended +for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and +older translations are used. + + 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. + +1.4 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. + +1.5 Available Packages +====================== + +Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of May 2005. +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 af am ar az be bg bs ca cs cy da de el en en_GB + +-------------------------------------------------+ + GNUnet | | + a2ps | [] [] [] [] [] | + aegis | () | + ant-phone | () | + anubis | [] | + ap-utils | | + aspell | [] [] [] [] | + bash | [] [] | + batchelor | [] | + bfd | | + bibshelf | [] | + binutils | [] | + bison | [] [] | + bluez-pin | [] [] [] [] | + clisp | [] [] | + console-tools | [] [] | + coreutils | [] [] [] [] | + cpio | | + cpplib | [] [] [] | + darkstat | [] () [] | + dialog | [] [] [] [] [] [] | + diffutils | [] [] [] [] [] | + doodle | [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] | + error | [] [] [] [] | + fetchmail | [] [] () [] | + fileutils | [] [] | + findutils | [] [] [] | + flex | [] [] [] | + fslint | [] | + gas | | + gawk | [] [] [] | + gbiff | [] | + gcal | [] | + gcc | [] | + gettext-examples | [] [] [] [] | + gettext-runtime | [] [] [] [] | + gettext-tools | [] [] | + gimp-print | [] [] [] [] | + gip | | + gliv | [] | + glunarclock | | + gmult | [] [] | + gnubiff | () | + gnucash | [] () () [] | + gnucash-glossary | [] () | + gpe-aerial | [] [] | + gpe-beam | [] [] | + gpe-calendar | [] [] | + gpe-clock | [] [] | + gpe-conf | [] [] | + gpe-contacts | | + gpe-edit | [] | + gpe-go | [] | + gpe-login | [] [] | + gpe-ownerinfo | [] [] | + gpe-sketchbook | [] [] | + gpe-su | [] [] | + gpe-taskmanager | [] [] | + gpe-timesheet | [] | + gpe-today | [] [] | + gpe-todo | [] [] | + gphoto2 | [] [] [] [] | + gprof | [] [] | + gpsdrive | () () | + gramadoir | [] [] | + grep | [] [] [] [] [] [] | + gretl | | + gsasl | [] | + gss | | + gst-plugins | [] [] [] [] [] [] | + gstreamer | [] [] [] [] [] | + gtick | [] () | + gtkspell | [] [] [] | + hello | [] [] [] [] | + id-utils | [] [] | + impost | | + indent | [] [] | + iso_3166 | | + iso_3166_1 | [] [] [] [] [] | + iso_3166_2 | | + iso_3166_3 | [] | + iso_4217 | | + iso_639 | | + jpilot | [] | + jtag | | + jwhois | | + kbd | [] [] [] [] | + latrine | () | + ld | [] | + libc | [] [] [] [] [] | + libextractor | | + libgpewidget | [] [] [] | + libgphoto2 | [] | + libgphoto2_port | [] | + libgsasl | | + libiconv | [] [] [] [] [] | + libidn | | + lifelines | [] () | + lilypond | [] | + lingoteach | | + lynx | [] [] [] [] | + m4 | [] [] [] [] | + mailutils | [] | + make | [] [] | + man-db | [] () [] [] | + minicom | [] [] | + mysecretdiary | [] [] | + nano | [] () [] | + nano_1_0 | [] () [] [] | + opcodes | [] | + parted | [] [] [] [] | + psmisc | | + ptx | [] [] [] | + pwdutils | | + python | | + radius | [] | + recode | [] [] [] [] [] | + rpm | [] [] | + screem | | + scrollkeeper | [] [] [] [] [] [] [] [] | + sed | [] [] | + sh-utils | [] [] | + shared-mime-info | [] [] | + sharutils | [] [] [] [] [] | + silky | | + skencil | [] () | + sketch | [] () | + solfege | [] | + soundtracker | [] [] | + sp | [] | + stardict | [] | + tar | | + texinfo | [] [] | + textutils | [] [] [] | + tin | () () | + tp-robot | [] | + tuxpaint | [] [] [] [] [] [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux | [] [] [] [] | + vorbis-tools | [] [] [] [] | + wastesedge | () | + wdiff | [] [] [] [] | + wget | | + xchat | [] [] [] [] [] | + xkeyboard-config | | + xpad | | + +-------------------------------------------------+ + af am ar az be bg bs ca cs cy da de el en en_GB + 10 0 0 2 7 5 0 40 43 2 51 91 19 1 14 + + eo es et eu fa fi fr ga gl he hi hr hu id is + +-----------------------------------------------+ + GNUnet | | + a2ps | [] [] [] | + aegis | | + ant-phone | [] | + anubis | [] | + ap-utils | [] | + aspell | [] [] | + bash | [] [] [] [] | + batchelor | [] [] | + bfd | [] | + bibshelf | [] [] | + binutils | [] [] | + bison | [] [] [] [] [] | + bluez-pin | [] [] [] [] [] [] | + clisp | [] [] | + console-tools | | + coreutils | [] [] [] [] [] | + cpio | [] [] | + cpplib | [] [] | + darkstat | [] () [] [] [] | + dialog | [] [] [] [] [] [] [] | + diffutils | [] [] [] [] [] [] [] [] [] | + doodle | [] | + e2fsprogs | [] [] | + enscript | [] [] | + error | [] [] [] [] [] | + fetchmail | [] | + fileutils | [] [] [] [] [] | + findutils | [] [] [] [] | + flex | [] [] [] | + fslint | [] | + gas | [] [] | + gawk | [] [] [] [] | + gbiff | [] | + gcal | [] [] | + gcc | [] | + gettext-examples | [] [] [] | + gettext-runtime | [] [] [] [] [] | + gettext-tools | [] [] | + gimp-print | [] [] | + gip | [] [] [] | + gliv | () | + glunarclock | [] [] [] | + gmult | [] [] | + gnubiff | () | + gnucash | [] () | + gnucash-glossary | [] | + gpe-aerial | [] [] | + gpe-beam | [] [] | + gpe-calendar | [] [] [] [] | + gpe-clock | [] [] [] | + gpe-conf | [] | + gpe-contacts | [] | + gpe-edit | [] [] | + gpe-go | [] [] | + gpe-login | [] [] [] | + gpe-ownerinfo | [] [] [] [] [] | + gpe-sketchbook | [] [] | + gpe-su | [] [] [] | + gpe-taskmanager | [] [] [] | + gpe-timesheet | [] [] [] [] | + gpe-today | [] [] [] [] | + gpe-todo | [] [] [] | + gphoto2 | [] [] [] [] | + gprof | [] [] [] | + gpsdrive | () () [] | + gramadoir | [] [] | + grep | [] [] [] [] [] [] [] [] [] [] [] | + gretl | [] [] | + gsasl | [] [] [] | + gss | [] | + gst-plugins | [] [] | + gstreamer | | + gtick | [] [] [] [] | + gtkspell | [] [] [] [] [] | + hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | + id-utils | [] [] [] | + impost | [] [] | + indent | [] [] [] [] [] [] [] [] [] [] | + iso_3166 | [] [] [] | + iso_3166_1 | [] [] [] [] [] [] [] | + iso_3166_2 | [] | + iso_3166_3 | [] | + iso_4217 | [] [] [] | + iso_639 | [] [] [] [] | + jpilot | [] [] | + jtag | [] | + jwhois | [] [] [] [] | + kbd | [] [] | + latrine | [] [] | + ld | [] [] | + libc | [] [] [] [] [] | + libextractor | | + libgpewidget | [] [] [] [] [] | + libgphoto2 | [] [] [] | + libgphoto2_port | [] | + libgsasl | [] [] | + libiconv | [] [] [] [] [] [] [] [] [] [] | + libidn | [] [] | + lifelines | () | + lilypond | | + lingoteach | [] [] | + lynx | [] [] | + m4 | [] [] [] [] | + mailutils | [] [] | + make | [] [] [] [] [] [] [] | + man-db | () | + minicom | [] [] [] [] | + mysecretdiary | [] [] [] | + nano | [] [] () [] | + nano_1_0 | [] [] [] [] | + opcodes | [] [] [] | + parted | [] [] [] | + psmisc | [] | + ptx | [] [] [] [] [] [] [] [] [] | + pwdutils | | + python | | + radius | [] [] | + recode | [] [] [] [] [] [] [] | + rpm | [] | + screem | | + scrollkeeper | [] [] [] | + sed | [] [] [] [] [] [] | + sh-utils | [] [] [] [] [] [] | + shared-mime-info | [] [] [] [] [] [] | + sharutils | [] [] [] [] [] [] | + silky | [] | + skencil | [] [] | + sketch | [] [] | + solfege | | + soundtracker | [] [] | + sp | [] | + stardict | [] | + tar | [] [] [] [] | + texinfo | [] [] [] | + textutils | [] [] [] [] [] | + tin | [] () | + tp-robot | [] [] | + tuxpaint | [] [] [] [] [] [] [] [] | + unicode-han-tra... | | + unicode-transla... | [] [] | + util-linux | [] [] [] [] [] | + vorbis-tools | [] [] | + wastesedge | () | + wdiff | [] [] [] [] [] [] [] | + wget | [] [] [] [] | + xchat | [] [] [] [] [] | + xkeyboard-config | | + xpad | [] [] [] | + +-----------------------------------------------+ + eo es et eu fa fi fr ga gl he hi hr hu id is + 15 85 21 15 2 35 115 45 16 8 1 6 40 27 1 + + it ja ko ku lg lt lv mk mn ms mt nb nl nn no nso + +--------------------------------------------------+ + GNUnet | | + a2ps | () () [] [] () | + aegis | () | + ant-phone | [] | + anubis | [] [] [] | + ap-utils | | + aspell | [] [] | + bash | [] | + batchelor | [] | + bfd | | + bibshelf | [] | + binutils | | + bison | [] [] [] [] | + bluez-pin | [] [] | + clisp | [] | + console-tools | | + coreutils | [] [] | + cpio | | + cpplib | [] | + darkstat | [] [] | + dialog | [] [] | + diffutils | [] [] [] [] | + doodle | [] | + e2fsprogs | [] | + enscript | [] | + error | [] | + fetchmail | [] [] | + fileutils | [] [] [] | + findutils | [] [] | + flex | [] [] | + fslint | [] | + gas | | + gawk | [] [] | + gbiff | [] | + gcal | | + gcc | | + gettext-examples | [] [] [] | + gettext-runtime | [] [] [] [] | + gettext-tools | [] [] [] | + gimp-print | [] [] | + gip | [] | + gliv | [] | + glunarclock | [] [] | + gmult | [] [] | + gnubiff | () | + gnucash | [] () () [] | + gnucash-glossary | [] [] | + gpe-aerial | [] | + gpe-beam | [] | + gpe-calendar | [] | + gpe-clock | [] | + gpe-conf | [] | + gpe-contacts | | + gpe-edit | [] | + gpe-go | [] | + gpe-login | [] | + gpe-ownerinfo | [] | + gpe-sketchbook | [] | + gpe-su | [] | + gpe-taskmanager | [] [] | + gpe-timesheet | [] | + gpe-today | [] | + gpe-todo | [] | + gphoto2 | [] [] [] | + gprof | | + gpsdrive | () () () () | + gramadoir | () | + grep | [] [] [] [] | + gretl | [] | + gsasl | [] | + gss | | + gst-plugins | [] [] | + gstreamer | [] [] | + gtick | [] [] | + gtkspell | [] [] [] | + hello | [] [] [] [] [] [] [] [] [] | + id-utils | [] [] | + impost | | + indent | [] [] [] | + iso_3166 | [] | + iso_3166_1 | [] [] | + iso_3166_2 | [] | + iso_3166_3 | [] | + iso_4217 | [] [] [] | + iso_639 | [] [] [] | + jpilot | () () () | + jtag | | + jwhois | [] [] | + kbd | [] | + latrine | [] [] | + ld | | + libc | [] [] [] [] [] | + libextractor | | + libgpewidget | [] | + libgphoto2 | [] [] | + libgphoto2_port | [] [] | + libgsasl | [] | + libiconv | [] [] | + libidn | [] | + lifelines | [] | + lilypond | | + lingoteach | [] [] | + lynx | [] [] [] | + m4 | [] [] | + mailutils | | + make | [] [] [] | + man-db | () | + minicom | [] | + mysecretdiary | [] | + nano | [] [] [] | + nano_1_0 | [] [] [] [] | + opcodes | [] | + parted | [] [] [] [] | + psmisc | [] [] [] | + ptx | [] [] [] | + pwdutils | | + python | | + radius | | + recode | [] [] | + rpm | [] [] | + screem | [] | + scrollkeeper | [] [] [] | + sed | [] [] | + sh-utils | [] [] [] | + shared-mime-info | [] [] [] [] | + sharutils | [] [] [] | + silky | [] | + skencil | | + sketch | | + solfege | [] [] [] | + soundtracker | [] | + sp | () | + stardict | [] [] | + tar | [] [] [] | + texinfo | [] [] [] | + textutils | [] [] [] | + tin | | + tp-robot | [] | + tuxpaint | [] [] [] [] [] [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux | [] [] [] | + vorbis-tools | [] | + wastesedge | [] | + wdiff | [] [] [] | + wget | [] | + xchat | [] [] [] [] [] | + xkeyboard-config | [] | + xpad | [] | + +--------------------------------------------------+ + it ja ko ku lg lt lv mk mn ms mt nb nl nn no nso + 46 35 11 2 1 1 2 2 3 11 0 15 96 7 5 0 + + or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv + +----------------------------------------------+ + GNUnet | | + a2ps | () [] [] [] [] [] [] | + aegis | () () | + ant-phone | [] | + anubis | [] [] [] | + ap-utils | () | + aspell | [] [] | + bash | [] [] [] | + batchelor | [] | + bfd | | + bibshelf | | + binutils | [] [] | + bison | [] [] [] [] [] | + bluez-pin | [] [] [] [] [] [] [] [] | + clisp | [] | + console-tools | [] | + coreutils | [] [] [] [] | + cpio | [] [] | + cpplib | | + darkstat | [] [] [] [] [] [] | + dialog | [] [] [] [] [] [] [] | + diffutils | [] [] [] [] [] [] | + doodle | [] | + e2fsprogs | [] [] | + enscript | [] [] [] [] | + error | [] [] [] | + fetchmail | [] [] [] [] | + fileutils | [] [] [] [] [] | + findutils | [] [] [] [] [] [] | + flex | [] [] [] [] [] | + fslint | [] [] [] | + gas | | + gawk | [] [] [] [] | + gbiff | [] | + gcal | [] | + gcc | | + gettext-examples | [] [] [] [] [] [] | + gettext-runtime | [] [] [] [] [] [] [] | + gettext-tools | [] [] [] [] [] [] [] | + gimp-print | [] [] | + gip | [] [] [] | + gliv | [] [] [] | + glunarclock | [] [] [] [] [] [] | + gmult | [] [] [] [] | + gnubiff | () [] | + gnucash | () [] [] [] [] | + gnucash-glossary | [] [] [] | + gpe-aerial | [] [] [] [] [] [] | + gpe-beam | [] [] [] [] [] [] | + gpe-calendar | [] [] [] [] [] [] [] | + gpe-clock | [] [] [] [] [] [] [] | + gpe-conf | [] [] [] [] [] [] | + gpe-contacts | [] [] [] [] | + gpe-edit | [] [] [] [] [] [] [] | + gpe-go | [] [] [] [] [] | + gpe-login | [] [] [] [] [] [] [] | + gpe-ownerinfo | [] [] [] [] [] [] [] | + gpe-sketchbook | [] [] [] [] [] [] [] | + gpe-su | [] [] [] [] [] [] [] | + gpe-taskmanager | [] [] [] [] [] [] [] | + gpe-timesheet | [] [] [] [] [] [] [] | + gpe-today | [] [] [] [] [] [] [] | + gpe-todo | [] [] [] [] [] [] [] [] | + gphoto2 | [] [] [] [] | + gprof | [] [] [] | + gpsdrive | [] [] | + gramadoir | [] | + grep | [] [] [] [] [] [] [] | + gretl | [] | + gsasl | [] [] [] [] [] | + gss | [] [] [] | + gst-plugins | [] [] [] [] | + gstreamer | [] [] [] [] | + gtick | [] [] [] | + gtkspell | [] [] [] [] [] [] | + hello | [] [] [] [] [] [] [] | + id-utils | [] [] [] [] | + impost | | + indent | [] [] [] [] [] [] | + iso_3166 | [] [] [] [] [] | + iso_3166_1 | [] [] [] [] | + iso_3166_2 | | + iso_3166_3 | [] [] [] | + iso_4217 | [] [] | + iso_639 | [] [] [] | + jpilot | | + jtag | [] | + jwhois | [] [] [] () () | + kbd | [] [] [] | + latrine | [] [] | + ld | [] | + libc | [] [] [] [] [] | + libextractor | [] | + libgpewidget | [] [] [] [] [] [] | + libgphoto2 | [] [] | + libgphoto2_port | [] | + libgsasl | [] [] [] | + libiconv | [] [] [] [] [] [] [] [] [] [] | + libidn | [] () | + lifelines | [] [] | + lilypond | | + lingoteach | [] | + lynx | [] [] [] | + m4 | [] [] [] [] [] | + mailutils | [] [] [] | + make | [] [] [] [] | + man-db | [] [] | + minicom | [] [] [] [] | + mysecretdiary | [] [] [] [] | + nano | [] [] [] | + nano_1_0 | [] [] [] [] | + opcodes | [] [] | + parted | [] [] [] [] | + psmisc | [] [] | + ptx | [] [] [] [] [] [] | + pwdutils | [] | + python | | + radius | [] [] | + recode | [] [] [] [] [] [] | + rpm | [] [] [] [] | + screem | | + scrollkeeper | [] [] [] [] [] [] [] | + sed | [] [] [] [] [] [] [] [] | + sh-utils | [] [] [] | + shared-mime-info | [] [] [] [] [] [] | + sharutils | [] [] [] | + silky | [] | + skencil | [] [] [] | + sketch | [] [] [] | + solfege | | + soundtracker | [] [] | + sp | | + stardict | [] [] | + tar | [] [] [] [] | + texinfo | [] [] [] [] | + textutils | [] [] [] | + tin | | + tp-robot | [] | + tuxpaint | [] [] [] [] [] [] [] [] | + unicode-han-tra... | | + unicode-transla... | | + util-linux | [] [] [] | + vorbis-tools | [] [] | + wastesedge | | + wdiff | [] [] [] [] [] [] | + wget | | + xchat | [] [] [] [] [] [] [] | + xkeyboard-config | | + xpad | | + +----------------------------------------------+ + or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv + 1 3 47 29 57 6 78 73 5 44 12 12 50 85 + + ta tg th tk tr uk ven vi wa xh zh_CN zh_TW zu + +-----------------------------------------------+ + GNUnet | | 0 + a2ps | [] [] [] | 19 + aegis | | 0 + ant-phone | [] [] | 5 + anubis | [] [] [] | 11 + ap-utils | () [] | 2 + aspell | [] [] [] | 13 + bash | [] | 11 + batchelor | [] [] | 7 + bfd | | 1 + bibshelf | [] | 5 + binutils | [] | 6 + bison | [] [] | 18 + bluez-pin | [] [] [] [] [] | 25 + clisp | | 7 + console-tools | [] [] | 5 + coreutils | [] [] | 17 + cpio | [] [] [] | 7 + cpplib | [] [] | 8 + darkstat | [] () () | 15 + dialog | [] [] [] | 25 + diffutils | [] [] [] [] | 28 + doodle | [] | 5 + e2fsprogs | [] | 8 + enscript | [] | 12 + error | [] [] [] | 16 + fetchmail | [] | 12 + fileutils | [] [] [] | 18 + findutils | [] [] | 17 + flex | [] [] | 15 + fslint | [] | 7 + gas | [] | 3 + gawk | [] | 14 + gbiff | [] | 5 + gcal | [] | 5 + gcc | [] [] | 4 + gettext-examples | [] [] [] [] [] | 21 + gettext-runtime | [] [] [] [] [] | 25 + gettext-tools | [] [] [] [] [] | 19 + gimp-print | [] | 11 + gip | [] | 8 + gliv | [] [] | 7 + glunarclock | [] [] | 13 + gmult | [] [] [] | 13 + gnubiff | [] | 3 + gnucash | () [] | 10 + gnucash-glossary | [] [] | 9 + gpe-aerial | [] [] | 13 + gpe-beam | [] [] | 13 + gpe-calendar | [] [] [] [] | 18 + gpe-clock | [] [] [] [] | 17 + gpe-conf | [] [] | 12 + gpe-contacts | [] [] | 7 + gpe-edit | [] [] [] [] | 15 + gpe-go | [] [] | 11 + gpe-login | [] [] [] [] [] | 18 + gpe-ownerinfo | [] [] [] [] | 19 + gpe-sketchbook | [] [] | 14 + gpe-su | [] [] [] | 16 + gpe-taskmanager | [] [] [] | 17 + gpe-timesheet | [] [] [] [] | 17 + gpe-today | [] [] [] [] [] | 19 + gpe-todo | [] [] [] | 17 + gphoto2 | [] [] [] | 18 + gprof | [] [] | 10 + gpsdrive | | 3 + gramadoir | [] | 6 + grep | [] [] [] [] | 32 + gretl | | 4 + gsasl | [] [] | 12 + gss | [] | 5 + gst-plugins | [] [] [] | 17 + gstreamer | [] [] [] [] | 15 + gtick | [] | 11 + gtkspell | [] [] [] [] | 21 + hello | [] [] [] [] | 37 + id-utils | [] [] | 13 + impost | [] | 3 + indent | [] [] [] [] | 25 + iso_3166 | [] [] [] | 12 + iso_3166_1 | [] [] | 20 + iso_3166_2 | | 2 + iso_3166_3 | [] [] | 8 + iso_4217 | [] [] | 10 + iso_639 | [] [] | 12 + jpilot | [] [] [] | 6 + jtag | | 2 + jwhois | [] [] [] | 12 + kbd | [] [] | 12 + latrine | [] [] | 8 + ld | [] | 5 + libc | [] [] | 22 + libextractor | | 1 + libgpewidget | [] [] | 17 + libgphoto2 | [] | 9 + libgphoto2_port | | 5 + libgsasl | [] | 7 + libiconv | [] [] [] [] [] | 32 + libidn | [] [] | 6 + lifelines | | 4 + lilypond | | 1 + lingoteach | [] | 6 + lynx | [] [] [] | 15 + m4 | [] [] | 17 + mailutils | [] | 7 + make | [] [] | 18 + man-db | | 5 + minicom | | 11 + mysecretdiary | [] [] | 12 + nano | [] [] | 13 + nano_1_0 | [] [] [] | 18 + opcodes | [] [] | 9 + parted | [] [] [] | 18 + psmisc | [] | 7 + ptx | [] [] | 23 + pwdutils | | 1 + python | | 0 + radius | [] | 6 + recode | [] [] | 22 + rpm | [] [] | 11 + screem | | 1 + scrollkeeper | [] [] [] | 24 + sed | [] [] [] | 21 + sh-utils | [] | 15 + shared-mime-info | [] [] [] | 21 + sharutils | [] [] [] | 20 + silky | | 3 + skencil | | 6 + sketch | | 6 + solfege | | 4 + soundtracker | [] | 8 + sp | [] | 3 + stardict | [] [] [] [] | 10 + tar | [] [] [] [] | 15 + texinfo | [] [] | 14 + textutils | [] [] [] | 17 + tin | | 1 + tp-robot | [] [] [] | 8 + tuxpaint | [] [] [] [] | 34 + unicode-han-tra... | | 0 + unicode-transla... | | 2 + util-linux | [] [] [] | 18 + vorbis-tools | [] | 10 + wastesedge | | 1 + wdiff | [] [] | 22 + wget | [] [] | 7 + xchat | [] [] [] [] | 26 + xkeyboard-config | [] | 2 + xpad | [] | 5 + +-----------------------------------------------+ + 73 teams ta tg th tk tr uk ven vi wa xh zh_CN zh_TW zu + 149 domains 0 0 0 1 77 30 0 92 16 0 42 32 0 1746 + + 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 2005 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'. + +1.6 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 you have to respect the GNU Library General Public +License which covers the use of the GNU `gettext' library. This means +in particular that even non-free programs can use `libintl' as a shared +library, whereas only free software can use `libintl' as a static +library or use modified versions of `libintl'. + + Once the sources are changed appropriately and the setup can handle +the 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..c73dbd9 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,22 @@ +Authors of GNU shar utilities. + +The following contributions warranted legal paper exchanges with the +Free Software Foundation. Also see files ChangeLog and THANKS. + +UUDECODE, UUENCODE, XXDECODE, XXENCODE David J. Camp +Disclaims programs. + +UUDECODE, UUENCODE, XXDECODE, XXENCODE Washington University +Disclaims programs by David J. Camp. + +SHARUTILS Francois Pinard Canada 1949 2/1/96 +Assigns past and future changes. + +SHARUTILS Ulrich Drepper Germany 1968 8/3/95 +Assigns past and future changes to Sharutils. + +SHARUTILS Jan Djarv Swedish 1963 9/8/95 +Assigns the manual "Shar man pages" + +SHARUTILS Bruce Korb USA +Assigns past and future changes to Sharutils. diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..1b0c0b9 --- /dev/null +++ b/COPYING @@ -0,0 +1,639 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed. + + Preamble + +The GNU General Public License is a free, copyleft license for software and +other kinds of works. + +The licenses for most software and other practical works are designed to take +away your freedom to share and change the works. By contrast, the GNU General +Public License is intended to guarantee your freedom to share and change all +versions of a program--to make sure it remains free software for all its +users. We, the Free Software Foundation, use the GNU General Public License +for most of our software; it applies also to any other work released this way +by its authors. 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 them 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 prevent others from denying you these +rights or asking you to surrender the rights. Therefore, you have certain +responsibilities if you distribute copies of the software, or if you modify +it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or for +a fee, you must pass on to the recipients the same freedoms that you +received. 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. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert +copyright on the software, and (2) offer you this License giving you legal +permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that +there is no warranty for this free software. For both users' and authors' +sake, the GPL requires that modified versions be marked as changed, so that +their problems will not be attributed erroneously to authors of previous +versions. + +Some devices are designed to deny users access to install or run modified +versions of the software inside them, although the manufacturer can do +so. This is fundamentally incompatible with the aim of protecting users' +freedom to change the software. The systematic pattern of such abuse occurs in +the area of products for individuals to use, which is precisely where it is +most unacceptable. Therefore, we have designed this version of the GPL to +prohibit the practice for those products. If such problems arise substantially +in other domains, we stand ready to extend this provision to those domains in +future versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States +should not allow patents to restrict development and use of software on +general-purpose computers, but in those that do, we wish to avoid the special +danger that patents applied to a free program could make it effectively +proprietary. To prevent this, the GPL assures that patents cannot be used to +render the program non-free. + +The precise terms and conditions for copying, distribution and modification +follow. + + TERMS AND CONDITIONS +0. Definitions. + +``This License'' refers to version 3 of the GNU General Public License. + +``Copyright'' also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + +``The Program'' refers to any copyrightable work licensed under this +License. Each licensee is addressed as ``you''. ``Licensees'' and +``recipients'' may be individuals or organizations. + +To ``modify'' a work means to copy from or adapt all or part of the work in a +fashion requiring copyright permission, other than the making of an exact +copy. The resulting work is called a ``modified version'' of the earlier work +or a work ``based on'' the earlier work. + +A ``covered work'' means either the unmodified Program or a work based on the +Program. + +To ``propagate'' a work means to do anything with it that, without permission, +would make you directly or secondarily liable for infringement under +applicable copyright law, except executing it on a computer or modifying a +private copy. Propagation includes copying, distribution (with or without +modification), making available to the public, and in some countries other +activities as well. + +To ``convey'' a work means any kind of propagation that enables other parties +to make or receive copies. Mere interaction with a user through a computer +network, with no transfer of a copy, is not conveying. + +An interactive user interface displays ``Appropriate Legal Notices'' to the +extent that it includes a convenient and prominently visible feature that (1) +displays an appropriate copyright notice, and (2) tells the user that there is +no warranty for the work (except to the extent that warranties are provided), +that licensees may convey the work under this License, and how to view a copy +of this License. If the interface presents a list of user commands or options, +such as a menu, a prominent item in the list meets this criterion. + +1. Source Code. + +The ``source code'' for a work means the preferred form of the work for making +modifications to it. ``Object code'' means any non-source form of a work. + +A ``Standard Interface'' means an interface that either is an official +standard defined by a recognized standards body, or, in the case of interfaces +specified for a particular programming language, one that is widely used among +developers working in that language. + +The ``System Libraries'' of an executable work include anything, other than +the work as a whole, that (a) is included in the normal form of packaging a +Major Component, but which is not part of that Major Component, and (b) serves +only to enable use of the work with that Major Component, or to implement a +Standard Interface for which an implementation is available to the public in +source code form. A ``Major Component'', in this context, means a major +essential component (kernel, window system, and so on) of the specific +operating system (if any) on which the executable work runs, or a compiler +used to produce the work, or an object code interpreter used to run it. + +The ``Corresponding Source'' for a work in object code form means all the +source code needed to generate, install, and (for an executable work) run the +object code and to modify the work, including scripts to control those +activities. However, it does not include the work's System Libraries, or +general-purpose tools or generally available free programs which are used +unmodified in performing those activities but which are not part of the +work. For example, Corresponding Source includes interface definition files +associated with source files for the work, and the source code for shared +libraries and dynamically linked subprograms that the work is specifically +designed to require, such as by intimate data communication or control flow +between those subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can regenerate +automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same work. + +2. Basic Permissions. + +All rights granted under this License are granted for the term of copyright on +the Program, and are irrevocable provided the stated conditions are met. This +License explicitly affirms your unlimited permission to run the unmodified +Program. The output from running a covered work is covered by this License +only if the output, given its content, constitutes a covered work. This +License acknowledges your rights of fair use or other equivalent, as provided +by copyright law. + +You may make, run and propagate covered works that you do not convey, without +conditions so long as your license otherwise remains in force. You may convey +covered works to others for the sole purpose of having them make modifications +exclusively for you, or provide you with facilities for running those works, +provided that you comply with the terms of this License in conveying all +material for which you do not control copyright. Those thus making or running +the covered works for you must do so exclusively on your behalf, under your +direction and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the +conditions stated below. Sublicensing is not allowed; section 10 makes it +unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological measure +under any applicable law fulfilling obligations under article 11 of the WIPO +copyright treaty adopted on 20 December 1996, or similar laws prohibiting or +restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention is +effected by exercising rights under this License with respect to the covered +work, and you disclaim any intention to limit operation or modification of the +work as a means of enforcing, against the work's users, your or third parties' +legal rights to forbid circumvention of technological measures. + +4. Conveying Verbatim Copies. + +You may convey 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; keep intact all notices stating +that this License and any non-permissive terms added in accord with section 7 +apply to the code; keep intact all notices of the absence of any warranty; and +give all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you +may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to produce it +from the Program, in the form of source code under the terms of section 4, +provided that you also meet all of these conditions: + + * a) The work must carry prominent notices stating that you modified it, + and giving a relevant date. + + * b) The work must carry prominent notices stating that it is released + under this License and any conditions added under section 7. This + requirement modifies the requirement in section 4 to ``keep intact all + notices''. + + * c) You must license the entire work, as a whole, under this License to + anyone who comes into possession of a copy. This License will therefore + apply, along with any applicable section 7 additional terms, to the + whole of the work, and all its parts, regardless of how they are + packaged. This License gives no permission to license the work in any + other way, but it does not invalidate such permission if you have + separately received it. + + * d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your work need + not make them do so. + +A compilation of a covered work with other separate and independent works, +which are not by their nature extensions of the covered work, and which are +not combined with it such as to form a larger program, in or on a volume of a +storage or distribution medium, is called an ``aggregate'' if the compilation +and its resulting copyright are not used to limit the access or legal rights +of the compilation's users beyond what the individual works permit. Inclusion +of a covered work in an aggregate does not cause this License to apply to the +other parts of the aggregate. + +6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of sections +4 and 5, provided that you also convey the machine-readable Corresponding +Source under the terms of this License, in one of these ways: + + * a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium customarily used + for software interchange. + + * b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a written + offer, valid for at least three years and valid for as long as you offer + spare parts or customer support for that product model, to give anyone + who possesses the object code either (1) a copy of the Corresponding + Source for all the software in the product that is covered by this + License, on a durable physical medium customarily used for software + interchange, for a price no more than your reasonable cost of physically + performing this conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + * c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This alternative is + allowed only occasionally and noncommercially, and only if you received + the object code with such an offer, in accord with subsection 6b. + + * d) Convey the object code by offering access from a designated place + (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to copy + the object code is a network server, the Corresponding Source may be on + a different server (operated by you or a third party) that supports + equivalent copying facilities, provided you maintain clear directions + next to the object code saying where to find the Corresponding + Source. Regardless of what server hosts the Corresponding Source, you + remain obligated to ensure that it is available for as long as needed to + satisfy these requirements. + + * e) Convey the object code using peer-to-peer transmission, provided you + inform other peers where the object code and Corresponding Source of the + work are being offered to the general public at no charge under + subsection 6d. + +A separable portion of the object code, whose source code is excluded from the +Corresponding Source as a System Library, need not be included in conveying +the object code work. + +A ``User Product'' is either (1) a ``consumer product'', which means any +tangible personal property which is normally used for personal, family, or +household purposes, or (2) anything designed or sold for incorporation into a +dwelling. In determining whether a product is a consumer product, doubtful +cases shall be resolved in favor of coverage. For a particular product +received by a particular user, ``normally used'' refers to a typical or common +use of that class of product, regardless of the status of the particular user +or of the way in which the particular user actually uses, or expects or is +expected to use, the product. A product is a consumer product regardless of +whether the product has substantial commercial, industrial or non-consumer +uses, unless such uses represent the only significant mode of use of the +product. + +``Installation Information'' for a User Product means any methods, procedures, +authorization keys, or other information required to install and execute +modified versions of a covered work in that User Product from a modified +version of its Corresponding Source. The information must suffice to ensure +that the continued functioning of the modified object code is in no case +prevented or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as part of a +transaction in which the right of possession and use of the User Product is +transferred to the recipient in perpetuity or for a fixed term (regardless of +how the transaction is characterized), the Corresponding Source conveyed under +this section must be accompanied by the Installation Information. But this +requirement does not apply if neither you nor any third party retains the +ability to install modified object code on the User Product (for example, the +work has been installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates for a +work that has been modified or installed by the recipient, or for the User +Product in which it has been modified or installed. Access to a network may be +denied when the modification itself materially and adversely affects the +operation of the network or violates the rules and protocols for communication +across the network. + +Corresponding Source conveyed, and Installation Information provided, in +accord with this section must be in a format that is publicly documented (and +with an implementation available to the public in source code form), and must +require no special password or key for unpacking, reading or copying. + +7. Additional Terms. + +``Additional permissions'' are terms that supplement the terms of this License +by making exceptions from one or more of its conditions. Additional +permissions that are applicable to the entire Program shall be treated as +though they were included in this License, to the extent that they are valid +under applicable law. If additional permissions apply only to part of the +Program, that part may be used separately under those permissions, but the +entire Program remains governed by this License without regard to the +additional permissions. + +When you convey a copy of a covered work, you may at your option remove any +additional permissions from that copy, or from any part of it. (Additional +permissions may be written to require their own removal in certain cases when +you modify the work.) You may place additional permissions on material, added +by you to a covered work, for which you have or can give appropriate copyright +permission. + +Notwithstanding any other provision of this License, for material you add to a +covered work, you may (if authorized by the copyright holders of that +material) supplement the terms of this License with terms: + + * a) Disclaiming warranty or limiting liability differently from the terms + of sections 15 and 16 of this License; or + + * b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal Notices + displayed by works containing it; or + + * c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + * d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + * e) Declining to grant rights under trademark law for use of some trade + names, trademarks, or service marks; or + + * f) Requiring indemnification of licensors and authors of that material + by anyone who conveys the material (or modified versions of it) with + contractual assumptions of liability to the recipient, for any liability + that these contractual assumptions directly impose on those licensors + and authors. + +All other non-permissive additional terms are considered ``further +restrictions'' within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is governed +by this License along with a term that is a further restriction, you may +remove that term. If a license document contains a further restriction but +permits relicensing or conveying under this License, you may add to a covered +work material governed by the terms of that license document, provided that +the further restriction does not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must +place, in the relevant source files, a statement of the additional terms that +apply to those files, or a notice indicating where to find the applicable +terms. + +Additional terms, permissive or non-permissive, may be stated in the form of a +separately written license, or stated as exceptions; the above requirements +apply either way. + +8. Termination. + +You may not propagate or modify a covered work except as expressly provided +under this License. Any attempt otherwise to propagate or modify it is void, +and will automatically terminate your rights under this License (including any +patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from a +particular copyright holder is reinstated (a) provisionally, unless and until +the copyright holder explicitly and finally terminates your license, and (b) +permanently, if the copyright holder fails to notify you of the violation by +some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated +permanently if the copyright holder notifies you of the violation by some +reasonable means, this is the first time you have received notice of violation +of this License (for any work) from that copyright holder, and you cure the +violation prior to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses +of parties who have received copies or rights from you under this License. If +your rights have been terminated and not permanently reinstated, you do not +qualify to receive new licenses for the same material under section 10. + +9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run a copy +of the Program. Ancillary propagation of a covered work occurring solely as a +consequence of using peer-to-peer transmission to receive a copy likewise does +not require acceptance. However, nothing other than this License grants you +permission to propagate or modify any covered work. These actions infringe +copyright if you do not accept this License. Therefore, by modifying or +propagating a covered work, you indicate your acceptance of this License to do +so. + +10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically receives a +license from the original licensors, to run, modify and propagate that work, +subject to this License. You are not responsible for enforcing compliance by +third parties with this License. + +An ``entity transaction'' is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered work +results from an entity transaction, each party to that transaction who +receives a copy of the work also receives whatever licenses to the work the +party's predecessor in interest had or could give under the previous +paragraph, plus a right to possession of the Corresponding Source of the work +from the predecessor in interest, if the predecessor has it or can get it with +reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights +granted or affirmed under this License. For example, you may not impose a +license fee, royalty, or other charge for exercise of rights granted under +this License, and you may not initiate litigation (including a cross-claim or +counterclaim in a lawsuit) alleging that any patent claim is infringed by +making, using, selling, offering for sale, or importing the Program or any +portion of it. + +11. Patents. + +A ``contributor'' is a copyright holder who authorizes use under this License +of the Program or a work on which the Program is based. The work thus licensed +is called the contributor's ``contributor version''. + +A contributor's ``essential patent claims'' are all patent claims owned or +controlled by the contributor, whether already acquired or hereafter acquired, +that would be infringed by some manner, permitted by this License, of making, +using, or selling its contributor version, but do not include claims that +would be infringed only as a consequence of further modification of the +contributor version. For purposes of this definition, ``control'' includes the +right to grant patent sublicenses in a manner consistent with the requirements +of this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent +license under the contributor's essential patent claims, to make, use, sell, +offer for sale, import and otherwise run, modify and propagate the contents of +its contributor version. + +In the following three paragraphs, a ``patent license'' is any express +agreement or commitment, however denominated, not to enforce a patent (such as +an express permission to practice a patent or covenant not to sue for patent +infringement). To ``grant'' such a patent license to a party means to make +such an agreement or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the +Corresponding Source of the work is not available for anyone to copy, free of +charge and under the terms of this License, through a publicly available +network server or other readily accessible means, then you must either (1) +cause the Corresponding Source to be so available, or (2) arrange to deprive +yourself of the benefit of the patent license for this particular work, or (3) +arrange, in a manner consistent with the requirements of this License, to +extend the patent license to downstream recipients. ``Knowingly relying'' +means you have actual knowledge that, but for the patent license, your +conveying the covered work in a country, or your recipient's use of the +covered work in a country, would infringe one or more identifiable patents in +that country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, you +convey, or propagate by procuring conveyance of, a covered work, and grant a +patent license to some of the parties receiving the covered work authorizing +them to use, propagate, modify or convey a specific copy of the covered work, +then the patent license you grant is automatically extended to all recipients +of the covered work and works based on it. + +A patent license is ``discriminatory'' if it does not include within the scope +of its coverage, prohibits the exercise of, or is conditioned on the +non-exercise of one or more of the rights that are specifically granted under +this License. You may not convey a covered work if you are a party to an +arrangement with a third party that is in the business of distributing +software, under which you make payment to the third party based on the extent +of your activity of conveying the work, and under which the third party +grants, to any of the parties who would receive the covered work from you, a +discriminatory patent license (a) in connection with copies of the covered +work conveyed by you (or copies made from those copies), or (b) primarily for +and in connection with specific products or compilations that contain the +covered work, unless you entered into that arrangement, or that patent license +was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting any +implied license or other defenses to infringement that may otherwise be +available to you under applicable patent law. + +12. No Surrender of Others' Freedom. + +If 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 convey a covered work +so as to satisfy simultaneously your obligations under this License and any +other pertinent obligations, then as a consequence you may not convey it at +all. For example, if you agree to terms that obligate you to collect a royalty +for further conveying from those to whom you convey the Program, the only way +you could satisfy both those terms and this License would be to refrain +entirely from conveying the Program. + +13. Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have permission to +link or combine any covered work with a work licensed under version 3 of the +GNU Affero General Public License into a single combined work, and to convey +the resulting work. The terms of this License will continue to apply to the +part which is the covered work, but the special requirements of the GNU Affero +General Public License, section 13, concerning interaction through a network +will apply to the combination as such. + +14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of the +GNU 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 that a certain numbered version of the GNU General Public License +``or any later version'' applies to it, you have the option of following the +terms and conditions either of that numbered version or of any later version +published by the Free Software Foundation. If the Program does not specify a +version number of the GNU General Public License, you may choose any version +ever published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of the +GNU General Public License can be used, that proxy's public statement of +acceptance of a version permanently authorizes you to choose that version for +the Program. + +Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any author or +copyright holder as a result of your choosing to follow a later version. + +15. Disclaimer of Warranty. + +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. + +16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY +COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 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. + +17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided above +cannot be given local legal effect according to their terms, reviewing courts +shall apply local law that most closely approximates an absolute waiver of all +civil liability in connection with the Program, unless a warranty or +assumption of liability accompanies a copy of the Program in return for a fee. + + 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 state 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short notice like +this when it starts in an interactive mode: + + Copyright (C) This program 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, your program's commands might +be different; for a GUI interface, you would use an ``about box''. + +You should also get your employer (if you work as a programmer) or school, if +any, to sign a ``copyright disclaimer'' for the program, if necessary. For +more information on this, and how to apply and follow the GNU GPL, see +. + +The GNU 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 Lesser General Public +License instead of this License. But first, please read +. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..78159a0 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,34 @@ +2006-08-30 Bruce Korb + + * src/scripts.def: quote the heredoc marker. No shell evals. + +2006-06-06 Paul Eggert + + * tests/shar-3: Quote sed command, since it contains a ^, + and Solaris /bin/sh treats unquoted ^ like |. Problem + reported by Nelson H. F. Beebe. + +2006-05-18 Bruce Korb + + * bootstrap: add code to derive compress-dummy.1 from the script. + * configure.ac: Remember which dirent header was found + * src/shar.c: Use the #define name of the dirent header for #include + Remove our own private declarations of opendir and readdir. + * doc/Makefile.am(dist_man2_MANS): add compress-dummy.1 + * src/compress-dummy.in: clarify the name of what it is. + +2006-05-15 Bruno Haible + + * shar.c: declare readdir IFF readdir is not already a #define + +2006-04-26 Pavel Roskin + + * uudecode.c (read_stduu): Allow characters other than '\n' + after "end", viz., the DOS style newline "\r\n". + +2006-03-24 Santiago Vila + + * uudecode.c(decode): make clear the name of the file causing problems + * shar.c(change_files): fix args to fprintf. + +[[... see cvs ChangeLog.2005 ]] diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..5458714 --- /dev/null +++ b/INSTALL @@ -0,0 +1,234 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, +2006 Free Software Foundation, Inc. + +This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + +Briefly, the shell commands `./configure; make; make install' should +configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. + + 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, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + + 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 you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' 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. + + Running `configure' might take a while. 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. Run `./configure --help' for +details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +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 can use 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 `..'. + + With a non-GNU `make', it is safer 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' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' 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' cannot figure out automatically, +but needs to determine by the type of machine the package will run on. +Usually, assuming the package is built to be run on the _same_ +architectures, `configure' can figure that out, but if it prints a +message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + 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 machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +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. + +Defining Variables +================== + +Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf bug. Until the bug is fixed you can use this workaround: + + CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + +`configure' recognizes the following options to control how it operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--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. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..5ff84e4 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,23 @@ +## Makefile for the toplevel directory of the GNU Shar utilities. +## Copyright (C) 1995, 1996, 2002, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, +## Boston, MA 02110-1301, USA. + +## Process this file with automake to produce Makefile.in. + +EXTRA_DIST = config.rpath $(DIST_ALPHA) +SUBDIRS = intl lib src doc po contrib tests +ACLOCAL_AMFLAGS = -I m4 diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..d5867c5 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,670 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 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@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +subdir = . +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/configure $(top_srcdir)/intl/Makefile.in \ + ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS THANKS TODO \ + config.guess config.rpath config.sub depcomp install-sh \ + missing mkinstalldirs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/glibc2.m4 $(top_srcdir)/m4/glibc21.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intdiv0.m4 \ + $(top_srcdir)/m4/intmax.m4 $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-posix.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/realloc.m4 \ + $(top_srcdir)/m4/sharutils.m4 $(top_srcdir)/m4/signed.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/xstrtoimax.m4 \ + $(top_srcdir)/version.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = intl/Makefile +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +ADD_SCRIPT = @ADD_SCRIPT@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMPRESS = @COMPRESS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +DIRENT_HEADER = @DIRENT_HEADER@ +DIST_ALPHA = @DIST_ALPHA@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_COMPRESS_LINK = @INSTALL_COMPRESS_LINK@ +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@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAILER = @MAILER@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +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@ +PERL = @PERL@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TAR = @TAR@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = config.rpath $(DIST_ALPHA) +SUBDIRS = intl lib src doc po contrib tests +ACLOCAL_AMFLAGS = -I m4 +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnits '; \ + cd $(srcdir) && $(AUTOMAKE) --gnits \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) 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: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f stamp-h1 + touch $@ + +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 $@ + +# 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): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + 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) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + 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) \ + || eval $$failcom; \ + 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 + +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 + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$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; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +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 + +distdir: $(DISTFILES) + @case `sed 15q $(srcdir)/NEWS` in \ + *"$(VERSION)"*) : ;; \ + *) \ + echo "NEWS not updated; not releasing" 1>&2; \ + exit 1;; \ + esac + $(am__remove_distdir) + test -d $(distdir) || mkdir $(distdir) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + 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_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + 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 $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(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 + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + 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 | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && 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" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(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 \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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 mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-generic \ + ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ + dist-shar dist-tarZ dist-zip distcheck distclean \ + distclean-generic distclean-hdr distclean-tags distcleancheck \ + distdir distuninstallcheck dvi dvi-am html html-am info \ + info-am install install-am install-data install-data-am \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-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/NEWS b/NEWS new file mode 100644 index 0000000..4e09207 --- /dev/null +++ b/NEWS @@ -0,0 +1,108 @@ +GNU sharutils NEWS - User visible changes. +Copyright (C) 1994, 1995, 1996, 2002, 2004, 2005, 2006, + 2007 Free Software Foundation, Inc. + +Version 4.7 - July 2007, by Bruce Korb + +* fix a grammatical typo in doc/uuencode.1 +* relicense the product under GPL version 3. + + + +Version 4.6.3 - March 2006, by Bruce Korb + +* Recognize "end\r\n" as "end" as well as "end\n". +* Avoid duplicate declarations of "readdir". +* generate compress-dummy.1 from the dummy script at bootstrap time + + + +Version 4.6.2 - March 2006, by Bruce Korb + +* Correctly indicate which file is causing output problems. +* copyright dates + + + +Version 4.6.1 - January 2006, by Bruce Korb + +* Adapt to "md5sum" version changes +* clean up message strings. Let translators order the components properly. +* Put nearly all the longer shell fragments into the "scripts.def" file. +* a couple of CYGWIN fopen() cleanups in uu-en/de-code.c. + + +Version 4.6 - October 2005, by Bruce Korb + +* Incorporate new Japanese translation +* Release last alpha release (4.5.3) as full release + (i.e. there are no source changes since then.) + + +Version 4.5.3 - September 2005, by Bruce Korb + +* Fix up installation directory references +* one new and one updated traslation +* libtool 1.5.20 + + +Version 4.5.2 - August 2005, by Bruce Korb + +* fix test that only worked on certain fs types +* update .texi usage +* incorporate a few new translation updates +* improve mail-file usage text +* add "BUG REPORTS" sections to the man pages + + +Version 4.5.1 - August 2005, by Bruce Korb + +* fix mem usage bug in shar +* re-enable md5 checksumming. +* Use the parameterized here doc parameter everywhere :) +* test this stuff some more + + +Version 4.5 - August 2005, by Bruce Korb + +* fix bug in unshar +* better usage examples +* test this stuff + + +Version 4.4 - July 2005, by Bruce Korb + +* autotool cleanup +* Make a non-alpha release this time. +* Ensure a "intmax_t" exists in the code. + + +Version 4.3.81 - June 2005, by Bruce Korb + +* Compatibility: True 64 does not have "snprintf" +* Updated FSF address + + +Version 4.3.80 - April 2005, by Bruce Korb + +* Buglet: Unlink the temporary file when unsharing from stdin. + + +Version 4.3.79 - April 2005, by Bruce Korb + +* rewrote the temporary file handling in unshar to avoid both a theoretical + timing hole (hitting it requires cooperation) and a buffer overrun + attack (a file name exceeding 1K). +* new translations and updates. They are all now missing two messages: + "allocate file name buffer" and "allocate file buffer". *sigh*. + + +Version 4.3.78 - January 2005, by Bruce Korb + +* fixed test to not require updates for every release number +* fixed the uuencode man page so that docbook generation can work correctly. + + +Version 4.3.77 - September 2004, by Bruce Korb + +* Fixed a buffer overrun exploit diff --git a/README b/README new file mode 100644 index 0000000..b4473df --- /dev/null +++ b/README @@ -0,0 +1,80 @@ +This is the set of GNU shar utilities. + +"sharutils" is now licensed under the terms of the GNU GPL version 3 +(or, at your option, any later version). + +`shar' makes so-called shell archives out of many files, preparing +them for transmission by electronic mail services. `unshar' helps +unpacking shell archives after reception. The core of both programs +is initially derived from public domain. Some modules and other +code sections are freely borrowed from other GNU distributions, +bringing `shar' under the terms of the GNU General Public License. + +`uuencode' prepares a file for transmission over an electronic channel +which ignores or otherwise mangles the eight bit (high order bit) of +bytes. `uudecode' does the converse transformation. They are derived +from the BSD NET/2 distribution, but enchanced with the features +described in recent POSIX standards. If you have more powerful +`uuencode' and `uudecode' already available, you may want to use +`./configure --disable-uucode' to prevent their installation. + +`remsync' allows for remote synchronization of directory trees, +using electronic mail. This part of sharutils is still alpha. +You should have already installed Perl, gzip, GNU diff, GNU tar +and GNU shar prior to installing remsync package. Only Perl is +really mandatory, write to me if you feel like helping to remove +the other dependencies. + +Beside the Perl script `remsync' and its shell scripts the whole +package now is internationalized. This includes the generated shell +scripts. As described in the `ABOUT-NLS' file you have various +options for handling this internationalization but this package is +special in one point: it always needs the GNU message catalog files to +be installed. Therefore it might be a good idea to always use the GNU +gettext functions and not the functions provided by your system. This +is of course not needed if your system uses GNU gettext in its system +library. + +See file `ABOUT-NLS' for how to customize this program to your language. +See file `COPYING' for copying conditions. +See file `TODO' for a list of things people have thought about doing. +See file `INSTALL' for compilation and installation instructions. +See file `NEWS' for a list of major changes in the current release. +See file `THANKS' for a list of contributors. + +Jan Djarv takes care of the man pages, otherwise unsupported, and +their installation is kept separate from `make install'. You use +`make install-man' for them. Better think GNU and switch to Info. + +Your feedback will help us to make a better and more portable +product. Mail suggestions and bug reports (including documentation +errors) for this program to `bug-gnu-utils@gnu.org'. + +Language file updates: +el 1998-06-20 +cs 1999-01-05 +gl 2000-05-30 +pt 2002-06-24 +nb 2002-06-25 +nn 2002-06-25 +zh_TW 2002-08-03 +hu 2002-08-05 +ca 2003-01-06 +da 2003-03-01 +rw 2005-04-04 +fi 2005-09-16 +et 2005-11-08 +sr 2005-12-13 +nl 2006-01-21 +de 2006-05-20 +pl 2006-05-20 +sv 2006-05-20 +tr 2006-05-21 +bg 2006-05-22 +ga 2006-05-22 +ru 2006-05-22 +fr 2006-05-23 +it 2006-05-23 +vi 2006-05-24 +es 2006-05-26 +ja 2006-08-30 diff --git a/THANKS b/THANKS new file mode 100644 index 0000000..c6be520 --- /dev/null +++ b/THANKS @@ -0,0 +1,91 @@ +The shar and unshar programs is the collective work of many authors. +Many people contributed to shar by reporting problems, suggesting +various improvements or submitting actual code. Here is a list of +these people. Help me keeping it complete and exempt of errors. + +Andrew B. Smith abs@maunsell.co.uk +Andrew Walduck amewaldu@undergrad.math.uwaterloo.ca +Andrey A. Chernov ache@astral.msk.su +Andries E. Brouwer aeb@win.tue.nl +Andy Seaborne afs@hplb.hpl.hp.com +Antonio Esteves esteves@di.uminho.pt +Bernd Nordhausen bernd@passage.com +Bill Aten bill@netagw.com +Bill Campbell bill@celestial.com +Bill Silvert silvert@cs.dal.ca +Bruce Korb bkorb@gnu.org +Bruno Haible haible@ma2s2.mathematik.uni-karlsruhe.de +Christian von Roques roques@pond.sub.org +Christopher Sawtell chris@gerty.equinox.gen.nz +Colas Nahaboo colas@mirsa.inria.fr +David J. MacKenzie djm@uunet.uu.net +Dennis Boylan nanovx!dennis +Donald Page donaldp@sco.com +Elliott Pacetti epacet@unf6.cis.unf.edu +Elvia Lopez Hurtado elvial@ctsmex.attmail.com +Eric Backus ericb@lsid.hp.com +François Pinard pinard@iro.umontreal.ca +Gordon Joly G.Joly@cs.ucl.ac.uk +Gordon Moffet netcom!gam +Greg McGary gkm@cstone.net +Gregory Neil Shapiro gshapiro@wpi.edu +Harlan Stenn harlan@mumps.pfcs.com +Horst von Brand vonbrand@inf.utfsm.cl +Ian Jackson iwj@cam-orl.co.uk +Jan Djarv Jan.Djarv@sa.erisoft.se +James Gosling James.Gosling@eng.sun.com +Jim Meyering meyering@na-net.ornl.gov +Joseph E. Sacco jsacco@ssl.com +Joshua R. Poulson jrp@plaza.ds.adp.com +Karl Berry kb@cs.umb.edu +Karl Eichwalder ke@suse.de +Karl Vogel vogelke@c-17igp.wpafb.af.mil +Kaveh R. Ghazi ghazi@noc.rutgers.edu +Ken Olstad olstad@msc.edu +Laurent Bourbeau bpi!bourbeau +Meade Roberts meade@plaza.ds.adp.com +Michael A. Thompson mike@iotek.ns.ca +Michael Mauldin mlm@cs.cmu.edu +Michael Rendell michael@cs.mun.ca +Nelson H. F. Beebe beebe@math.utah.edu +Noah Friedman friedman@gnu.ai.mit.edu +Pat Myrto rwing!pat +Paul A. Vixie paul@vix.com +Paul Eggert eggert@twinsun.com +Richard H. Gumpertz rhg@cps.com +Richard Segal segal@cs.washington.edu +Richard Stallman rms@gnu.org +Robert J.C. Kyanko rob@rjck.oau.org +Robert Wolf Robert.Wolf@nmiinc.com +Roderick Schertler roderick@gate.net +Stepan Kasal kasal@math.cas.cz +Thomas E. Dickey dickey@clark.net +Ulrich Drepper drepper@gnu.ai.mit.edu +Warren Tucker wht@n4hgf.atl.ga.us +William Davidsen davidsen@tmr.com + + +Thanks to all members of the translation teams for the different +languages. Mentioned here are the persons who sent the catalogs: + +Catalan: Antoni Bella Perez bella5@teleline.es +Chinese (traditional): Yuan-Chen Cheng ycheng@sinica.edu.tw +Czech: Vladimir Michl Vladimir.Michl@upol.cz +Danish: Keld Simonsen keld@dkuug.dk +Dutch: Andries E. Brouwer aeb@win.tue.nl + Erick Branderhorst branderh@debian.org +Estonian: Toomas Soome Toomas.Soome@microlink.ee +French: François Pinard pinard@iro.umontreal.ca + Michel Robitaille robitail@IRO.UMontreal.CA +Galician: Jesús Bravo Álvarez jba@pobox.com +German: Ulrich Drepper drepper@gnu.ai.mit.edu + Karl Eichwalder ke@suse.de +Greek: Simos KSenitellis simos@teiath.gr +Hungarian: Gábor István stive@mezobereny.hu +Japanese: Sakai Kiyotaka ksakai@netwk.ntt-at.co.jp + IIDA Yosiaki iida@gnu.org +Portugese: Antonio Esteves esteves@di.uminho.pt +Russian: Const Kaplinsky const@ce.cctpu.edu.ru +Spanish: Tomás Bautista bautista@cma.ulpgc.es +Svedish: Jan Djärv Jan.Djarv@sa.erisoft.se +Turkish: Eyüp Hakan Duran hakan_duran@hotmail.com diff --git a/TODO b/TODO new file mode 100644 index 0000000..88a67bd --- /dev/null +++ b/TODO @@ -0,0 +1,149 @@ +* TODO file for GNU sharutils + +Tell if you feel like volunteering for any +of these ideas, listed more or less in decreasing order of priority. +Some TODO items are implicit from received email. + +- read_stduu, read_base64, decode: arbitrary limitation, by using a fixed + length buffer. Although well-formed uuencode coded output always fits + within this buffer, an arbitrary-length filename may make the begin line + exceed the buffer, and it is not robust to malicious input. + Furthermore, POSIX states that input files are not necessarily text + files since arbitrary data and line lengths may precede the embedded + uuencode section. We should probably be using gnulib's getline here. + +- decode: POSIX only states that the input file contain output from uuencode, + not that the encoded data begins immediately after a newline character. + Maybe it is worth asking for an interpretation from the POSIX Austin Group + as to whether arbitrary characters can proceed the "begin" on the first + line of the encoded data. + +- decode: POSIX requires uudecode to parse both octal AND symbolic mode, + but the GNU uudecode currently fails on symbolic modes. + +- main: When using the GNU uudecode extension of parsing multiple + filenames, the -o option no longer makes sense (you end up decoding + multiple source files into the same destination, destroying data from + all but the last filename argument). Since multiple filenames is an + extension, you should reject attempts to use -o if more than one file is + specified. + +- decode: GNU uudecode attempts to do ~ expansion, which is allowed by + POSIX since ~ is not part of the portable filename character set. + However, it may be worth considering extensions to uuencode and uudecode + that encode non-portable filename characters in such a manner that + uudecode can recreate any valid filename (within the limits of the + filesystem it is expanding onto). + +- decode: If the output file already exists and is a FIFO or symlink, GNU + uudecode fails, although POSIX requires that a FIFO be opened for + writing and a symlink be followed. + +- all over: uudecode should be careful to use binary mode ("rb" instead of + "r" for fopen, for example), on systems where it matters. + +- use chksum instead of md5sum. Stephen Gildea proposed this and + he is probably right. chksum is standardized and more often found + on non-GNU systems. + +- change mail-files to use multiple To: lines instead of having a + loop. Suggested by Tom Tromey. + +- shar: Don't offer -Z if compress isn't available (--help is + adjusted; also add ifdefs to rip out the code?). +- shar: Add -j, --bzip2. + (Done by Bruno; check whether it's added everywhere. grep for + BTzZ and similar strings) +- Use plural form: + #: src/shar.c:2279 + #, c-format + msgid "Created %d files\n" + msgstr "%d Datei(en) erzeugt\n" +- Check the old todo list (after "cut here"). + +After 4.4.0: +- Remove intl/. +- Split some messages. + +-=-=-=-=-=-=-=-=-=-=-=-=-=- cut here -=-=-=-=-=-=-=-=-=-=-=-=-=- + +(One more word. This list already existed when I took over the task +of maintaining sharutils. I have not investigated the list enough +to say this will also be correct for me. But Franc,ois and I often +agree so it is likely.) + + +.# Next release +The next release will have these changes: +. + better integrate uucode with the others, code-wise + + +.@ ChangeLog + +.* Short term +. + Utiliser guillemets français dans fr.tt +. + convert uucode documentation into sharutils.texi +. + remove many fixed limits, everywhere +. + delete useless code, among which some matching features +. + simplify further `:' vs `true' usage, the latter might be avoided +. + remsync matters +. - documentation +The documentation is still rudimentary, but might help you to +understand what is going on. Many examples in some quick start +node might help. In any case, criticize it at will, and let me +use your comments as an incentive for further improvement. Any help +from native English speakers is appreciated. + +Carefully ensure that you have a backup of your synchronized trees +before your tries of remsync. It does work for me, but who knows if +it will not be dangerous in your particular setup. + +White lines, and lines beginning with \`#\', are comments. Command +keywords may be abbreviated to their first letter. Space between +successive keywords may be omitted. Variable arguments may often be +replaced by numeric index from lists. SITE may also be local or 0. +SITE_SET is a list of SITE, default is all. A ! prefix complements it. +The following commands are meant for automatic internal use: +. - handle receving files over symbolic links or directories +. - maintain a project title +. - no remote could also be local +. - diagnose /net/mnt_tmp/... directories +. - if deleting a scan, already registered files declared unexisting +. - have a paranoid option, in which diffs are always done +. - study if and how the symbolic links might be transported + +.* Medium term +. + integrate remsync script and documentation +. + have -C as synonymous for -d in shar + 1994-08-22, Karl Berry +. + speedup unshar, far too slow while matching sed input +. + construct some `make check' for shar/unshar +. + do something sensible with file permissions +. + study if the symbolic links might be transported +. + when local/remote directories are relative, this should be to ~user +. + do not send absolute files +. + add some `-h UNSHAR.HDR' option + 1994-08-19, Marty Leisner +. + decode options from a SHAR environment variable + 1994-08-30, Ulrich Drepper +. + automatic detection of gzip'ed shar files in unshar + 1996-06-06, Larry Schwimmer +. + provide -z option to compress input of shar (???) + 1996-06-06, Larry Schwimmer +. + remsync matters +. - have a command to rename a remote while keeping all its values +. - do something sensible with file permissions +. - qualify each scan with destination sites +. - emacslisp/menage.el to omit, have it reconstructed automatically instead +. - have an equivalence system for email addresses +. - avoid computing checksums for ignored files +. - have a master directory for .remsync's, have them located elsewhere +. - have a recursive mode finding all .remsync's in tree +. - provide encryption hooks, so people can use e.g. PGP or rot13 :-) + +.* Long term +. + automatically retrieve in correct sequence from a bunched file + 1994-08-24, Karl Berry +. + when -T, just reject binary files + 1994-08-29, Andrew A. Chernov + 1994-09-11, Eric Backus -- disagrees diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..5e90c54 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,923 @@ +# generated automatically by aclocal 1.10 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006 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. + +m4_if(m4_PACKAGE_VERSION, [2.61],, +[m4_fatal([this file was generated for autoconf 2.61. +You have another version of autoconf. If you want to use that, +you should regenerate the build system entirely.], [63])]) + +# Copyright (C) 2002, 2003, 2005, 2006 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. + +# 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. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.10' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.10], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.10])dnl +_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 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. + +# 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. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 +# 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. + +# serial 8 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +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])]) + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +# 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. + +# serial 9 + +# 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], UPC, [depcc="$UPC" am_compiler_list=], + [$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 + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + 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 + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # 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. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/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=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + 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], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --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])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# 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. + +#serial 3 + +# _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. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. 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 " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/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"]) +]) + + +# Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2005 +# 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. + +# serial 3 + +AC_DEFUN([AM_WITH_DMALLOC], +[AC_MSG_CHECKING([if malloc debugging is wanted]) +AC_ARG_WITH(dmalloc, +[ --with-dmalloc use dmalloc, as in + http://www.dmalloc.com/dmalloc.tar.gz], +[if test "$withval" = yes; then + AC_MSG_RESULT(yes) + AC_DEFINE(WITH_DMALLOC,1, + [Define if using the dmalloc debugging malloc package]) + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + AC_MSG_RESULT(no) +fi], [AC_MSG_RESULT(no)]) +]) + +AU_DEFUN([fp_WITH_DMALLOC], [AM_WITH_DMALLOC]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006 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. + +# serial 12 + +# 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. + +# 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_PREREQ([2.60])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +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 +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, + [m4_fatal([AC_INIT should be called with package and version arguments])])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_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# 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 +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_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 +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])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], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 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. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 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. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 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. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +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 +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 +# 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. + +# serial 5 + +# 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 +AC_REQUIRE_AUX_FILE([missing])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 +]) + +# Copyright (C) 2003, 2004, 2005, 2006 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. + +# AM_PROG_MKDIR_P +# --------------- +# Check for `mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 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. + +# serial 3 + +# _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. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# 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. + +# serial 4 + +# 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)]) + +# Copyright (C) 2001, 2003, 2005 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. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# 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="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006 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. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 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. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/codeset.m4]) +m4_include([m4/error.m4]) +m4_include([m4/gettext.m4]) +m4_include([m4/glibc2.m4]) +m4_include([m4/glibc21.m4]) +m4_include([m4/iconv.m4]) +m4_include([m4/intdiv0.m4]) +m4_include([m4/intmax.m4]) +m4_include([m4/inttypes-pri.m4]) +m4_include([m4/inttypes.m4]) +m4_include([m4/inttypes_h.m4]) +m4_include([m4/lcmessage.m4]) +m4_include([m4/lib-ld.m4]) +m4_include([m4/lib-link.m4]) +m4_include([m4/lib-prefix.m4]) +m4_include([m4/longdouble.m4]) +m4_include([m4/longlong.m4]) +m4_include([m4/malloc.m4]) +m4_include([m4/nls.m4]) +m4_include([m4/po.m4]) +m4_include([m4/printf-posix.m4]) +m4_include([m4/progtest.m4]) +m4_include([m4/realloc.m4]) +m4_include([m4/sharutils.m4]) +m4_include([m4/signed.m4]) +m4_include([m4/size_max.m4]) +m4_include([m4/stdint_h.m4]) +m4_include([m4/uintmax_t.m4]) +m4_include([m4/ulonglong.m4]) +m4_include([m4/wchar_t.m4]) +m4_include([m4/wint_t.m4]) +m4_include([m4/xsize.m4]) +m4_include([m4/xstrtoimax.m4]) diff --git a/config.guess b/config.guess new file mode 100755 index 0000000..396482d --- /dev/null +++ b/config.guess @@ -0,0 +1,1500 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, +# Inc. + +timestamp='2006-07-02' + +# 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., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, 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, 2002, 2003, 2004, 2005 +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 ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # 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. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +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 ; + 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 ; set_cc_for_build= ;' + +# 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 + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # 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 ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # 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. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + 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 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + 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 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + 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 ;; + 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 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + 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 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # 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 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + 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 && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + 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 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????: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 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + 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 ;; + *: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 + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + 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 ;; + *: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 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 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` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 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 && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + 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 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + 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 ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + x86:Interix*:[3456]*) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + EM64T:Interix*:[3456]*) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 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 i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + 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 | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + 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 ;; + 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 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + 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 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit ;; + "") + # 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 ;; + 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 + #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^LIBC/{ + s: ::g + p + }'`" + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } + ;; + 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 ;; + 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 ;; + 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 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + 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 ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + 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 ;; + 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 ;; + 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 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + 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 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*: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 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*: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; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *: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 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + 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 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *: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 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *: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 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; +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\n"); 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 && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# 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 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + 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..f03e7e3 --- /dev/null +++ b/config.h.in @@ -0,0 +1,473 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if the `closedir' function returns void instead of `int'. */ +#undef CLOSEDIR_VOID + +/* 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 directory entry header file */ +#undef DIRENT_HEADER + +/* 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 `asprintf' function. */ +#undef HAVE_ASPRINTF + +/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYCURRENT + +/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +#undef HAVE_CFPREFERENCESCOPYAPPVALUE + +/* Define if compress is available. */ +#undef HAVE_COMPRESS + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you + don't. */ +#undef HAVE_DECL_FEOF_UNLOCKED + +/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if + you don't. */ +#undef HAVE_DECL_FGETS_UNLOCKED + +/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you + don't. */ +#undef HAVE_DECL_GETC_UNLOCKED + +/* Define to 1 if you have the declaration of `strerror', and to 0 if you + don't. */ +#undef HAVE_DECL_STRERROR + +/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you + don't. */ +#undef HAVE_DECL_STRERROR_R + +/* Define to 1 if you have the declaration of `strtoimax', and to 0 if you + don't. */ +#undef HAVE_DECL_STRTOIMAX + +/* Define to 1 if you have the declaration of `strtol', and to 0 if you don't. + */ +#undef HAVE_DECL_STRTOL + +/* Define to 1 if you have the declaration of `strtoll', and to 0 if you + don't. */ +#undef HAVE_DECL_STRTOLL + +/* Define to 1 if you have the declaration of `strtoul', and to 0 if you + don't. */ +#undef HAVE_DECL_STRTOUL + +/* Define to 1 if you have the declaration of `strtoumax', and to 0 if you + don't. */ +#undef HAVE_DECL_STRTOUMAX + +/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't. + */ +#undef HAVE_DECL_TZNAME + +/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you + don't. */ +#undef HAVE_DECL__SNPRINTF + +/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you + don't. */ +#undef HAVE_DECL__SNWPRINTF + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#undef HAVE_DIRENT_H + +/* Define if the malloc check has been performed. */ +#undef HAVE_DONE_WORKING_MALLOC_CHECK + +/* Define if the realloc check has been performed. */ +#undef HAVE_DONE_WORKING_REALLOC_CHECK + +/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ +#undef HAVE_DOPRNT + +/* Define if the current hostname may be found in /etc/systemid. */ +#undef HAVE_ETC_SYSTEMID + +/* Define to 1 if you have the `fchmod' function. */ +#undef HAVE_FCHMOD + +/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ +#undef HAVE_FSEEKO + +/* Define to 1 if you have the `fwprintf' function. */ +#undef HAVE_FWPRINTF + +/* 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 if you have the 'intmax_t' type in or . */ +#undef HAVE_INTMAX_T + +/* Define if exists and doesn't clash with . */ +#undef HAVE_INTTYPES_H + +/* Define if exists, doesn't clash with , and + declares uintmax_t. */ +#undef HAVE_INTTYPES_H_WITH_UINTMAX + +/* Define to 1 if you have the `isascii' function. */ +#undef HAVE_ISASCII + +/* 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 header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define if you have the 'long double' type. */ +#undef HAVE_LONG_DOUBLE + +/* Define if you have the 'long long' type. */ +#undef HAVE_LONG_LONG + +/* Define to 1 if you have the header file. */ +#undef HAVE_MALLOC_H + +/* Define to 1 if you have the `memcpy' function. */ +#undef HAVE_MEMCPY + +/* 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 the `memset' function. */ +#undef HAVE_MEMSET + +/* Define to 1 if you have the `mktime' function. */ +#undef HAVE_MKTIME + +/* 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, and it defines `DIR'. */ +#undef HAVE_NDIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NL_TYPES_H + +/* Define if your printf() function supports format strings with positions. */ +#undef HAVE_POSIX_PRINTF + +/* 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 `snprintf' function. */ +#undef HAVE_SNPRINTF + +/* 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 if exists, doesn't clash with , and declares + uintmax_t. */ +#undef HAVE_STDINT_H_WITH_UINTMAX + +/* 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 `strerror_r' function. */ +#undef HAVE_STRERROR_R + +/* Define to 1 if you have the `strftime' function. */ +#undef HAVE_STRFTIME + +/* 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 `strtoimax' function. */ +#undef HAVE_STRTOIMAX + +/* Define to 1 if you have the `strtol' function. */ +#undef HAVE_STRTOL + +/* Define to 1 if you have the `strtoll' function. */ +#undef HAVE_STRTOLL + +/* Define to 1 if you have the `strtoul' function. */ +#undef HAVE_STRTOUL + +/* Define to 1 if `tm_zone' is member of `struct tm'. */ +#undef HAVE_STRUCT_TM_TM_ZONE + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#undef HAVE_SYS_DIR_H + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#undef HAVE_SYS_NDIR_H + +/* 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_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_WAIT_H + +/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use + `HAVE_STRUCT_TM_TM_ZONE' instead. */ +#undef HAVE_TM_ZONE + +/* Define to 1 if you have the `tsearch' function. */ +#undef HAVE_TSEARCH + +/* Define to 1 if you don't have `tm_zone' but do have the external array + `tzname'. */ +#undef HAVE_TZNAME + +/* Define if you have the 'uintmax_t' type in or . */ +#undef HAVE_UINTMAX_T + +/* Define to 1 if you have the `uname' function. */ +#undef HAVE_UNAME + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define if you have the 'unsigned long long' type. */ +#undef HAVE_UNSIGNED_LONG_LONG + +/* Define to 1 if you have the `vprintf' function. */ +#undef HAVE_VPRINTF + +/* Define if you have the 'wchar_t' type. */ +#undef HAVE_WCHAR_T + +/* Define to 1 if you have the `wcslen' function. */ +#undef HAVE_WCSLEN + +/* Define if you have the 'wint_t' type. */ +#undef HAVE_WINT_T + +/* 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 `__fsetlocking' function. */ +#undef HAVE___FSETLOCKING + +/* Define as const if the declaration of iconv() needs const. */ +#undef ICONV_CONST + +/* Define if integer division by zero raises signal SIGFPE. */ +#undef INTDIV0_RAISES_SIGFPE + +/* 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 + +/* Define if exists and defines unusable PRI* macros. */ +#undef PRI_MACROS_BROKEN + +/* Define as the maximum value of type 'size_t', if the system doesn't define + it. */ +#undef SIZE_MAX + +/* 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 runtime. + 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 the `S_IS*' macros in do not work properly. */ +#undef STAT_MACROS_BROKEN + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define to 1 if strerror_r returns char *. */ +#undef STRERROR_R_CHAR_P + +/* Define to 1 if your declares `struct tm'. */ +#undef TM_IN_SYS_TIME + +/* Version number of package */ +#undef VERSION + +/* Define if using the dmalloc debugging malloc package */ +#undef WITH_DMALLOC + +/* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). */ +#undef WORDS_BIGENDIAN + +/* 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 + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Make sure we see all GNU extensions. */ +#undef _GNU_SOURCE + +/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ +#undef _LARGEFILE_SOURCE + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + +/* 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 1 if type `char' is unsigned and you are not using gcc. */ +#ifndef __CHAR_UNSIGNED__ +# undef __CHAR_UNSIGNED__ +#endif + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to rpl_malloc if the replacement function should be used. */ +#undef malloc + +/* Define to `long int' if does not define. */ +#undef off_t + +/* Define as the type of the result of subtracting two pointers, if the system + doesn't define it. */ +#undef ptrdiff_t + +/* Define to rpl_realloc if the replacement function should be used. */ +#undef realloc + +/* Define to empty if the C compiler doesn't support this keyword. */ +#undef signed + +/* Define to `unsigned int' if does not define. */ +#undef size_t + +/* Define to unsigned long or unsigned long long if and + don't define. */ +#undef uintmax_t diff --git a/config.rpath b/config.rpath new file mode 100755 index 0000000..3f1bef3 --- /dev/null +++ b/config.rpath @@ -0,0 +1,571 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2005 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit , 1996 +# +# 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. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# known workaround is to choose shorter directory names for the build +# directory and/or the installation directory. + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +cc_basename=`echo "$CC" | sed -e 's%^.*/%%'` + +# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + darwin*) + case "$cc_basename" in + xlc*) + wl='-Wl,' + ;; + esac + ;; + mingw* | pw32* | os2*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + newsos6) + ;; + linux*) + case $cc_basename in + icc* | ecc*) + wl='-Wl,' + ;; + pgcc | pgf77 | pgf90) + wl='-Wl,' + ;; + ccc*) + wl='-Wl,' + ;; + como) + wl='-lopt=' + ;; + esac + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + sco3.2v5*) + ;; + solaris*) + wl='-Wl,' + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + unicos*) + wl='-Wl,' + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +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 + case "$host_os" in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + 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 cannot use + # them. + ld_shlibs=no + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + 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' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sunos4*) + hardcode_direct=yes + ;; + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = yes; then + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; 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 + 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 + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + fi + hardcode_direct=yes + 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 + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + bsdi[45]*) + ;; + 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=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=no + if test "$GCC" = yes ; then + : + else + case "$cc_basename" in + xlc*) + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd1*) + ld_shlibs=no + ;; + freebsd2.2*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + freebsd2*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + hpux10* | hpux11*) + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=no + ;; + ia64*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=no + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + *) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + openbsd*) + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + sco3.2v5*) + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4.2uw2*) + hardcode_direct=yes + hardcode_minus_L=no + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + ;; + sysv5*) + hardcode_libdir_flag_spec= + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. +libname_spec='lib$name' +case "$host_os" in + aix3*) + ;; + aix4* | aix5*) + ;; + amigaos*) + ;; + beos*) + ;; + bsdi[45]*) + ;; + cygwin* | mingw* | pw32*) + shrext=.dll + ;; + darwin* | rhapsody*) + shrext=.dylib + ;; + dgux*) + ;; + freebsd1*) + ;; + kfreebsd*-gnu) + ;; + freebsd*) + ;; + gnu*) + ;; + hpux9* | hpux10* | hpux11*) + case "$host_cpu" in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case "$host_os" in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux*) + ;; + knetbsd*-gnu) + ;; + netbsd*) + ;; + newsos6) + ;; + nto-qnx*) + ;; + openbsd*) + ;; + os2*) + libname_spec='$name' + shrext=.dll + ;; + osf3* | osf4* | osf5*) + ;; + sco3.2v5*) + ;; + solaris*) + ;; + sunos4*) + ;; + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + ;; + sysv4*MP*) + ;; + uts4*) + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. 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, 2002, 2003, 2004, 2005 +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 ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # 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 ;; + + * ) + 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* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + storm-chaos* | os2-emx* | 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 | -knuth | -cray) + 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 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -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/'` + ;; + -sco5v6*) + # 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] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | mt \ + | msp430 \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | score \ + | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xc16x | xscale | xscalee[bl] | 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) + ;; + ms1) + basic_machine=mt-unknown + ;; + + # 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-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | 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-* | iq2000-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | 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 + ;; + abacus) + basic_machine=abacus-unknown + ;; + 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 + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + 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 + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + 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 + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + 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 + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + 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 + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + 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 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-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-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`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 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + 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 + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + 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 + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-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 + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + 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 + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + 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 + ;; + mmix) + basic_machine=mmix-knuth + ;; + 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 + ;; + sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + 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* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -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* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -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* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -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 + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -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 + ;; + -tpf*) + os=-tpf + ;; + -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 + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -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 + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # 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 + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-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 + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -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 + +# 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..bcf4060 --- /dev/null +++ b/configure @@ -0,0 +1,16959 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.61 for sharutils 4.7. +# +# Report bugs to . +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 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 more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +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+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# 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 + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +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 +IFS=$as_save_IFS + + ;; +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_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +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 -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; 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'` + +# CDPATH. +$as_unset CDPATH + + +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= + 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=. + case $as_dir in + /*) + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +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+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +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+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf@gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # 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 after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, 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 + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\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 sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +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$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval 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="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + +exec 7<&0 &1 + +# 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` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Identity of this package. +PACKAGE_NAME='sharutils' +PACKAGE_TARNAME='sharutils' +PACKAGE_VERSION='4.7' +PACKAGE_STRING='sharutils 4.7' +PACKAGE_BUGREPORT='bug-gnu-utils@gnu.org' + +ac_unique_file="src/shar.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef 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 +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +INSTALL_PROGRAM +INSTALL_SCRIPT +INSTALL_DATA +am__isrc +CYGPATH_W +PACKAGE +VERSION +ACLOCAL +AUTOCONF +AUTOMAKE +AUTOHEADER +MAKEINFO +install_sh +STRIP +INSTALL_STRIP_PROGRAM +mkdir_p +AWK +SET_MAKE +am__leading_dot +AMTAR +am__tar +am__untar +DIST_ALPHA +ADD_SCRIPT +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 +RANLIB +DIFF +MAILER +PERL +SH +TAR +COMPRESS +INSTALL_COMPRESS_LINK +CPP +GREP +EGREP +DIRENT_HEADER +LIBOBJS +ALLOCA +UUCODE_TRUE +UUCODE_FALSE +MKINSTALLDIRS +USE_NLS +MSGFMT +GMSGFMT +XGETTEXT +MSGMERGE +build +build_cpu +build_vendor +build_os +host +host_cpu +host_vendor +host_os +GLIBC2 +GLIBC21 +INTL_MACOSX_LIBS +HAVE_POSIX_PRINTF +HAVE_ASPRINTF +HAVE_SNPRINTF +HAVE_WPRINTF +LIBICONV +LTLIBICONV +INTLBISON +BUILD_INCLUDED_LIBINTL +USE_INCLUDED_LIBINTL +CATOBJEXT +DATADIRNAME +INSTOBJEXT +GENCAT +INTLOBJS +INTL_LIBTOOL_SUFFIX_PREFIX +INTLLIBS +LIBINTL +LTLIBINTL +POSUB +LTLIBOBJS' +ac_subst_files='' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP' + + +# 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. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +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 + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -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) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$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 ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -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'` + 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 ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$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 ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + 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 ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$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'` + 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; }; } + 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 directory names. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } +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 + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + +# 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 the parent directory. + ac_confdir=`$as_dirname -- "$0" || +$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 + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# 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 sharutils 4.7 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 \`..'] + +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] + --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] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/sharutils] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_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 + case $ac_init_help in + short | recursive ) echo "Configuration of sharutils 4.7:";; + esac + 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 build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-compress-link install compress link if the program is missing + --disable-largefile omit support for large files + --disable-uucode disable installation of uuencode and uudecode + --disable-nls do not use Native Language Support + --disable-rpath do not hardcode runtime library paths + +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-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib + --without-libiconv-prefix don't search for libiconv in includedir and libdir + --with-included-gettext use the GNU gettext library included here + --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib + --without-libintl-prefix don't search for libintl in includedir and libdir + --with-dmalloc use dmalloc, as in + http://www.dmalloc.com/dmalloc.tar.gz + +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 + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective 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. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested 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 + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +sharutils configure 4.7 +generated by GNU Autoconf 2.61 + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 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 +fi +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by sharutils $as_me 4.7, which was +generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +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` +/usr/bin/hostinfo = `(/usr/bin/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 +IFS=$as_save_IFS + +} >&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_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_arg'" + ;; + 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: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +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, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + 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.conftest.* && + rm -f -r 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 -f -r conftest* 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 -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" +fi +shift +for ac_site_file +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 $ac_precious_vars; 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 + + + +ac_config_headers="$ac_config_headers config.h" + + +am__api_version='1.10' + +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 + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# 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" +# OS/2's system install, which has a completely different semantic +# ./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/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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 +IFS=$as_save_IFS + + +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. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + 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 -f 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 + +{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 +echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } +if test -z "$MKDIR_P"; then + if test "${ac_cv_path_mkdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done +done +IFS=$as_save_IFS + +fi + + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + test -d ./--version && rmdir ./--version + MKDIR_P="$ac_install_sh -d" + fi +fi +{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 +echo "${ECHO_T}$MKDIR_P" >&6; } + +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac + +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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 +IFS=$as_save_IFS + +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 x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$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 + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if 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 +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='sharutils' + VERSION='4.7' + + +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"} + +install_sh=${install_sh-"\$(SHELL) $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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 +IFS=$as_save_IFS + +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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 +IFS=$as_save_IFS + +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 + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + + + +ADD_SCRIPT="mail-files mailshar" + + +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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 +IFS=$as_save_IFS + +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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 +IFS=$as_save_IFS + +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 + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 +IFS=$as_save_IFS + +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 +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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 +IFS=$as_save_IFS + +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.exe + 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 +IFS=$as_save_IFS + +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.exe +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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 +IFS=$as_save_IFS + +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 + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +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` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 +/* 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 file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +# +# List of possible output files, starting from the most likely. +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) +# only as a last resort. b.out is created by i960 compilers. +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' +# +# The IRIX 6 linker writes into existing files which may not be +# executable, retaining their permissions. Remove them first so a +# subsequent execution test works. +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi + +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } +if test -z "$ac_file"; then + 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 + +# Check that 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' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 that 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 { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + 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 +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) 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 +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err 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 +{ 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 + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +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 ISO C89" >&5 +echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* 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; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +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 +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6; } ;; + xno) + { echo "$as_me:$LINENO: result: unsupported" >&5 +echo "${ECHO_T}unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; +esac + + +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 +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +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 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 + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + 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 + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # 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. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/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=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + 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 + + +# 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" +# OS/2's system install, which has a completely different semantic +# ./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/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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 +IFS=$as_save_IFS + + +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. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + 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 ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } +set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$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 + +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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 +IFS=$as_save_IFS + +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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 +IFS=$as_save_IFS + +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 + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + +# Carefully avoid gdiff for X as found on SGI systems. +if (DISPLAY= gdiff /dev/null /dev/null) 2> /dev/null; then + for ac_prog in gnudiff diffgnu gdiff diff +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_path_DIFF+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $DIFF in + [\\/]* | ?:[\\/]*) + ac_cv_path_DIFF="$DIFF" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_DIFF="$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 +IFS=$as_save_IFS + + ;; +esac +fi +DIFF=$ac_cv_path_DIFF +if test -n "$DIFF"; then + { echo "$as_me:$LINENO: result: $DIFF" >&5 +echo "${ECHO_T}$DIFF" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$DIFF" && break +done +test -n "$DIFF" || DIFF="no" + +else + for ac_prog in gnudiff diffgnu diff +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_path_DIFF+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $DIFF in + [\\/]* | ?:[\\/]*) + ac_cv_path_DIFF="$DIFF" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_DIFF="$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 +IFS=$as_save_IFS + + ;; +esac +fi +DIFF=$ac_cv_path_DIFF +if test -n "$DIFF"; then + { echo "$as_me:$LINENO: result: $DIFF" >&5 +echo "${ECHO_T}$DIFF" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$DIFF" && break +done +test -n "$DIFF" || DIFF="no" + +fi + +PATH_save="$PATH"; PATH="$PATH:/usr/sbin:/usr/ucb:/usr/bin:/bin" +for ac_prog in Mail mailx elm mush mail +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_path_MAILER+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAILER in + [\\/]* | ?:[\\/]*) + ac_cv_path_MAILER="$MAILER" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_MAILER="$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 +IFS=$as_save_IFS + + ;; +esac +fi +MAILER=$ac_cv_path_MAILER +if test -n "$MAILER"; then + { echo "$as_me:$LINENO: result: $MAILER" >&5 +echo "${ECHO_T}$MAILER" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$MAILER" && break +done +test -n "$MAILER" || MAILER="no" + +PATH="$PATH_save" + +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; 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_PERL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_PERL="$PERL" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PERL="$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 +IFS=$as_save_IFS + + test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="no" + ;; +esac +fi +PERL=$ac_cv_path_PERL +if test -n "$PERL"; then + { echo "$as_me:$LINENO: result: $PERL" >&5 +echo "${ECHO_T}$PERL" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + +for ac_prog in bash sh +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_path_SH+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $SH in + [\\/]* | ?:[\\/]*) + ac_cv_path_SH="$SH" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_SH="$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 +IFS=$as_save_IFS + + ;; +esac +fi +SH=$ac_cv_path_SH +if test -n "$SH"; then + { echo "$as_me:$LINENO: result: $SH" >&5 +echo "${ECHO_T}$SH" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$SH" && break +done +test -n "$SH" || SH="no" + + +for ac_prog in gnutar targnu gtar tar +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_path_TAR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $TAR in + [\\/]* | ?:[\\/]*) + ac_cv_path_TAR="$TAR" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_TAR="$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 +IFS=$as_save_IFS + + ;; +esac +fi +TAR=$ac_cv_path_TAR +if test -n "$TAR"; then + { echo "$as_me:$LINENO: result: $TAR" >&5 +echo "${ECHO_T}$TAR" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$TAR" && break +done +test -n "$TAR" || TAR="tar" + + +if test $ac_cv_path_PERL != no; then + ADD_SCRIPT="$ADD_SCRIPT remsync" + ac_config_files="$ac_config_files src/remsync" + +fi + + + + for ac_prog in compress +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_path_COMPRESS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $COMPRESS in + [\\/]* | ?:[\\/]*) + ac_cv_path_COMPRESS="$COMPRESS" # 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_COMPRESS="$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 +IFS=$as_save_IFS + + ;; +esac +fi +COMPRESS=$ac_cv_path_COMPRESS +if test -n "$COMPRESS"; then + { echo "$as_me:$LINENO: result: $COMPRESS" >&5 +echo "${ECHO_T}$COMPRESS" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$COMPRESS" && break +done +test -n "$COMPRESS" || COMPRESS="no" + + if test $COMPRESS != no; then + cp $srcdir/COPYING tCOPYING + { echo "$as_me:$LINENO: checking whether compress works" >&5 +echo $ECHO_N "checking whether compress works... $ECHO_C" >&6; } + if compress tCOPYING >/dev/null 2>&1; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_COMPRESS 1 +_ACEOF + + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + else + COMPRESS=no + { echo "$as_me:$LINENO: result: no, installing compress-dummy" >&5 +echo "${ECHO_T}no, installing compress-dummy" >&6; } + fi + rm -f tCOPYING tCOPYING.Z + fi + if test $COMPRESS = no; then + ADD_SCRIPT="$ADD_SCRIPT compress-dummy" + ac_config_files="$ac_config_files src/compress-dummy" + + fi + + if test $COMPRESS = no; then + # Check whether --enable-compress-link was given. +if test "${enable_compress_link+set}" = set; then + enableval=$enable_compress_link; +fi + + if test "x$enable_compress_link" = xyes; then + INSTALL_COMPRESS_LINK="compress-link" + else + INSTALL_COMPRESS_LINK= + fi + 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. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # 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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.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 nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.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. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # 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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.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 nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.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 grep that handles long lines and -e" >&5 +echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Extract the first word of "grep ggrep" to use in msg output +if test -z "$GREP"; then +set dummy grep ggrep; ac_prog_name=$2 +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_GREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + # Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_GREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +GREP="$ac_cv_path_GREP" +if test -z "$GREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_GREP=$GREP +fi + + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +echo "${ECHO_T}$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } +if test "${ac_cv_path_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_path_EGREP="$GREP -E" + else + # Extract the first word of "egrep" to use in msg output +if test -z "$EGREP"; then +set dummy egrep; ac_prog_name=$2 +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_EGREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + # Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_EGREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +EGREP="$ac_cv_path_EGREP" +if test -z "$EGREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_EGREP=$EGREP +fi + + + fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + + +{ echo "$as_me:$LINENO: checking for AIX" >&5 +echo $ECHO_N "checking for AIX... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* 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 library containing strerror" >&5 +echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6; } +if test "${ac_cv_search_strerror+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char strerror (); +int +main () +{ +return strerror (); + ; + return 0; +} +_ACEOF +for ac_lib in '' cposix; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_search_strerror=$ac_res +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext + if test "${ac_cv_search_strerror+set}" = set; then + break +fi +done +if test "${ac_cv_search_strerror+set}" = set; then + : +else + ac_cv_search_strerror=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 +echo "${ECHO_T}$ac_cv_search_strerror" >&6; } +ac_res=$ac_cv_search_strerror +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +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 +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err 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 +/* 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 +/* 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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#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)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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.conftest.* 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 { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err 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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.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:$ac_c_preproc_warn_flag 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 compiler's result" >&5 +echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + 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: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&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;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-gnu-utils@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 + + +# Check whether --enable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no; then + + { echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 +echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6; } +if test "${ac_cv_sys_largefile_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_largefile_CC=' -n32'; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6; } +if test "${ac_cv_sys_file_offset_bits+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_file_offset_bits=no; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_file_offset_bits=64; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done +fi +{ echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 +echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF +;; +esac +rm -f conftest* + if test $ac_cv_sys_file_offset_bits = unknown; then + { echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 +echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6; } +if test "${ac_cv_sys_large_files+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_large_files=no; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_sys_large_files=1; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done +fi +{ echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 +echo "${ECHO_T}$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF +;; +esac +rm -f conftest* + fi +fi + +if test $cross_compiling = no; then + +{ echo "$as_me:$LINENO: checking whether char is unsigned" >&5 +echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6; } +if test "${ac_cv_c_char_unsigned+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((char) -1) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_c_char_unsigned=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_c_char_unsigned=yes +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 +echo "${ECHO_T}$ac_cv_c_char_unsigned" >&6; } +if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then + cat >>confdefs.h <<\_ACEOF +#define __CHAR_UNSIGNED__ 1 +_ACEOF + +fi + +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 +/* 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 cs; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* 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"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 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; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err 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 +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_c_inline=$ac_kw +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +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) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + +{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; } +if test "${ac_cv_c_bigendian+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # See if sys/param.h defines the BYTE_ORDER macro. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include + +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \ + && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN) + bogus endian macros +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + # It does; now see whether it defined to BIG_ENDIAN or not. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_c_bigendian=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_c_bigendian=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # It does not; compile a test program. +if test "$cross_compiling" = yes; then + # try to guess the endianness by grepping values into an object file + ac_cv_c_bigendian=unknown + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } +short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } +int +main () +{ + _ascii (); _ebcdic (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then + ac_cv_c_bigendian=yes +fi +if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=no +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_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6; } +case $ac_cv_c_bigendian in + yes) + +cat >>confdefs.h <<\_ACEOF +#define WORDS_BIGENDIAN 1 +_ACEOF + ;; + no) + ;; + *) + { { echo "$as_me:$LINENO: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&5 +echo "$as_me: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} + { (exit 1); exit 1; }; } ;; +esac + + + + + + + + +for ac_header in limits.h locale.h memory.h string.h sys/wait.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err 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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.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:$ac_c_preproc_warn_flag 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 compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + 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: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&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;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-gnu-utils@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 { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 + + + + + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 +echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main () +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } +if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); +int +main () +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_search_opendir=$ac_res +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext + if test "${ac_cv_search_opendir+set}" = set; then + break +fi +done +if test "${ac_cv_search_opendir+set}" = set; then + : +else + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } +if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); +int +main () +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_search_opendir=$ac_res +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext + if test "${ac_cv_search_opendir+set}" = set; then + break +fi +done +if test "${ac_cv_search_opendir+set}" = set; then + : +else + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +test X$ac_header_dirent = Xno && { + { { echo "$as_me:$LINENO: error: a dirent header is required." >&5 +echo "$as_me: error: a dirent header is required." >&2;} + { (exit 1); exit 1; }; } +} +DIRENT_HEADER=\<${ac_header_dirent}\> + +cat >>confdefs.h <<_ACEOF +#define DIRENT_HEADER ${DIRENT_HEADER} +_ACEOF + + +{ echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 +echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6; } +if test "${ac_cv_header_stat_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include + +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; +#endif + +#if defined S_ISBLK && defined S_IFCHR +extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; +#endif + +#if defined S_ISLNK && defined S_IFREG +extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; +#endif + +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; +#endif + +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stat_broken=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stat_broken=yes +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 +echo "${ECHO_T}$ac_cv_header_stat_broken" >&6; } +if test $ac_cv_header_stat_broken = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STAT_MACROS_BROKEN 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 +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err 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 +/* 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 +/* 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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#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)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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.conftest.* 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 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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include + +int +main () +{ +struct tm tm; + int *p = &tm.tm_sec; + return !p; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err 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 struct tm.tm_zone" >&5 +echo $ECHO_N "checking for struct tm.tm_zone... $ECHO_C" >&6; } +if test "${ac_cv_member_struct_tm_tm_zone+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include <$ac_cv_struct_tm> + + +int +main () +{ +static struct tm ac_aggr; +if (ac_aggr.tm_zone) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_member_struct_tm_tm_zone=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include <$ac_cv_struct_tm> + + +int +main () +{ +static struct tm ac_aggr; +if (sizeof ac_aggr.tm_zone) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_member_struct_tm_tm_zone=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_member_struct_tm_tm_zone=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_tm_tm_zone" >&5 +echo "${ECHO_T}$ac_cv_member_struct_tm_tm_zone" >&6; } +if test $ac_cv_member_struct_tm_tm_zone = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_TM_TM_ZONE 1 +_ACEOF + + +fi + +if test "$ac_cv_member_struct_tm_tm_zone" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_TM_ZONE 1 +_ACEOF + +else + { echo "$as_me:$LINENO: checking whether tzname is declared" >&5 +echo $ECHO_N "checking whether tzname is declared... $ECHO_C" >&6; } +if test "${ac_cv_have_decl_tzname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +int +main () +{ +#ifndef tzname + (void) tzname; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_tzname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_tzname=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_tzname" >&5 +echo "${ECHO_T}$ac_cv_have_decl_tzname" >&6; } +if test $ac_cv_have_decl_tzname = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_TZNAME 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_TZNAME 0 +_ACEOF + + +fi + + + { echo "$as_me:$LINENO: checking for tzname" >&5 +echo $ECHO_N "checking for tzname... $ECHO_C" >&6; } +if test "${ac_cv_var_tzname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if !HAVE_DECL_TZNAME +extern char *tzname[]; +#endif + +int +main () +{ +return tzname[0][0]; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_var_tzname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_var_tzname=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5 +echo "${ECHO_T}$ac_cv_var_tzname" >&6; } + if test $ac_cv_var_tzname = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_TZNAME 1 +_ACEOF + + fi +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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +typedef size_t ac__type_new_; +int +main () +{ +if ((ac__type_new_ *) 0) + return 0; +if (sizeof (ac__type_new_)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err 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 int +_ACEOF + +fi + + + + + + +for ac_func in strerror vprintf doprnt +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 { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +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 +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 whether strerror is declared" >&5 +echo $ECHO_N "checking whether strerror is declared... $ECHO_C" >&6; } +if test "${ac_cv_have_decl_strerror+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +#ifndef strerror + (void) strerror; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_strerror=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_strerror=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strerror" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strerror" >&6; } +if test $ac_cv_have_decl_strerror = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRERROR 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRERROR 0 +_ACEOF + + +fi + + + { echo "$as_me:$LINENO: checking whether strerror_r is declared" >&5 +echo $ECHO_N "checking whether strerror_r is declared... $ECHO_C" >&6; } +if test "${ac_cv_have_decl_strerror_r+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +#ifndef strerror_r + (void) strerror_r; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_strerror_r=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_strerror_r=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strerror_r" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strerror_r" >&6; } +if test $ac_cv_have_decl_strerror_r = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRERROR_R 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRERROR_R 0 +_ACEOF + + +fi + + + +for ac_func in strerror_r +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 { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +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 +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 whether strerror_r returns char *" >&5 +echo $ECHO_N "checking whether strerror_r returns char *... $ECHO_C" >&6; } +if test "${ac_cv_func_strerror_r_char_p+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + ac_cv_func_strerror_r_char_p=no + if test $ac_cv_have_decl_strerror_r = yes; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + char buf[100]; + char x = *strerror_r (0, buf, sizeof buf); + char *p = strerror_r (0, buf, sizeof buf); + return !p || x; + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_func_strerror_r_char_p=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + else + # strerror_r is not declared. Choose between + # systems that have relatively inaccessible declarations for the + # function. BeOS and DEC UNIX 4.0 fall in this category, but the + # former has a strerror_r that returns char*, while the latter + # has a strerror_r that returns `int'. + # This test should segfault on the DEC system. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + extern char *strerror_r (); +int +main () +{ +char buf[100]; + char x = *strerror_r (0, buf, sizeof buf); + return ! isalpha (x); + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_strerror_r_char_p=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 + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + + fi + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_strerror_r_char_p" >&5 +echo "${ECHO_T}$ac_cv_func_strerror_r_char_p" >&6; } +if test $ac_cv_func_strerror_r_char_p = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STRERROR_R_CHAR_P 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 +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err 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 +/* 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 +/* 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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#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)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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.conftest.* 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 + + + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DONE_WORKING_MALLOC_CHECK 1 +_ACEOF + + + { echo "$as_me:$LINENO: checking whether malloc(0) returns a non-NULL pointer" >&5 +echo $ECHO_N "checking whether malloc(0) returns a non-NULL pointer... $ECHO_C" >&6; } +if test "${jm_cv_func_working_malloc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + jm_cv_func_working_malloc=no +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + char *malloc (); + int + main () + { + exit (malloc (0) ? 0 : 1); + } + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + jm_cv_func_working_malloc=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 ) +jm_cv_func_working_malloc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + + +fi +{ echo "$as_me:$LINENO: result: $jm_cv_func_working_malloc" >&5 +echo "${ECHO_T}$jm_cv_func_working_malloc" >&6; } + if test $jm_cv_func_working_malloc = no; then + case " $LIBOBJS " in + *" malloc.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS malloc.$ac_objext" + ;; +esac + + +cat >>confdefs.h <<\_ACEOF +#define malloc rpl_malloc +_ACEOF + + fi + + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DONE_WORKING_REALLOC_CHECK 1 +_ACEOF + + + { echo "$as_me:$LINENO: checking whether realloc(0,0) returns a non-NULL pointer" >&5 +echo $ECHO_N "checking whether realloc(0,0) returns a non-NULL pointer... $ECHO_C" >&6; } +if test "${jm_cv_func_working_realloc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + jm_cv_func_working_realloc=no +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + char *realloc (); + int + main () + { + exit (realloc (0, 0) ? 0 : 1); + } + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + jm_cv_func_working_realloc=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 ) +jm_cv_func_working_realloc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + + +fi +{ echo "$as_me:$LINENO: result: $jm_cv_func_working_realloc" >&5 +echo "${ECHO_T}$jm_cv_func_working_realloc" >&6; } + if test $jm_cv_func_working_realloc = no; then + case " $LIBOBJS " in + *" realloc.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS realloc.$ac_objext" + ;; +esac + + +cat >>confdefs.h <<\_ACEOF +#define realloc rpl_realloc +_ACEOF + + fi + + + + + + + + +for ac_func in fchmod getcwd isascii memcpy strchr strerror uname +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 { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +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 +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 + +# 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 +/* 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)); + if (p) return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + 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 +/* 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 +# ifdef 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); + if (p) return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + 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=\${LIBOBJDIR}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 +/* 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 { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +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 +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +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 () +{ + return find_stack_direction () < 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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.conftest.* 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 + +{ echo "$as_me:$LINENO: checking whether closedir returns void" >&5 +echo $ECHO_N "checking whether closedir returns void... $ECHO_C" >&6; } +if test "${ac_cv_func_closedir_void+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_closedir_void=yes +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header_dirent> +#ifndef __cplusplus +int closedir (); +#endif + +int +main () +{ +return closedir (opendir (".")) != 0; + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_closedir_void=no +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_closedir_void=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_closedir_void" >&5 +echo "${ECHO_T}$ac_cv_func_closedir_void" >&6; } +if test $ac_cv_func_closedir_void = yes; then + +cat >>confdefs.h <<\_ACEOF +#define CLOSEDIR_VOID 1 +_ACEOF + +fi + +{ echo "$as_me:$LINENO: checking for _LARGEFILE_SOURCE value needed for large files" >&5 +echo $ECHO_N "checking for _LARGEFILE_SOURCE value needed for large files... $ECHO_C" >&6; } +if test "${ac_cv_sys_largefile_source+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +return fseeko (stdin, 0, 0) && (fseeko) (stdin, 0, 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_sys_largefile_source=no; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _LARGEFILE_SOURCE 1 +#include +int +main () +{ +return fseeko (stdin, 0, 0) && (fseeko) (stdin, 0, 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_sys_largefile_source=1; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + ac_cv_sys_largefile_source=unknown + break +done +fi +{ echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_source" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_source" >&6; } +case $ac_cv_sys_largefile_source in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source +_ACEOF +;; +esac +rm -f conftest* + +# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug +# in glibc 2.1.3, but that breaks too many other things. +# If you want fseeko and ftello with glibc, upgrade to a fixed glibc. +if test $ac_cv_sys_largefile_source != unknown; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_FSEEKO 1 +_ACEOF + +fi + + +for ac_func in strftime +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 { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +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 +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + # strftime is in -lintl on SCO UNIX. +{ echo "$as_me:$LINENO: checking for strftime in -lintl" >&5 +echo $ECHO_N "checking for strftime in -lintl... $ECHO_C" >&6; } +if test "${ac_cv_lib_intl_strftime+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char strftime (); +int +main () +{ +return strftime (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_intl_strftime=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_intl_strftime=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_strftime" >&5 +echo "${ECHO_T}$ac_cv_lib_intl_strftime" >&6; } +if test $ac_cv_lib_intl_strftime = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_STRFTIME 1 +_ACEOF + +LIBS="-lintl $LIBS" +fi + +fi +done + + +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 { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +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 +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define _doprnt to an innocuous variant, in case declares _doprnt. + For example, HP-UX 11i declares gettimeofday. */ +#define _doprnt innocuous__doprnt + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char _doprnt (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef _doprnt + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +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 +#endif + +int +main () +{ +return _doprnt (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + 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 memset mktime stpcpy strftime +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 { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +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 +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + case " $LIBOBJS " in + *" $ac_func.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" + ;; +esac + +fi +done + + + + { echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6; } +if test "${gl_cv_header_inttypes_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ +uintmax_t i = (uintmax_t) -1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + gl_cv_header_inttypes_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gl_cv_header_inttypes_h=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $gl_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$gl_cv_header_inttypes_h" >&6; } + if test $gl_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + { echo "$as_me:$LINENO: checking for stdint.h" >&5 +echo $ECHO_N "checking for stdint.h... $ECHO_C" >&6; } +if test "${gl_cv_header_stdint_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ +uintmax_t i = (uintmax_t) -1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + gl_cv_header_stdint_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gl_cv_header_stdint_h=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $gl_cv_header_stdint_h" >&5 +echo "${ECHO_T}$gl_cv_header_stdint_h" >&6; } + if test $gl_cv_header_stdint_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STDINT_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + + + { echo "$as_me:$LINENO: checking for intmax_t" >&5 +echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6; } +if test "${gt_cv_c_intmax_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +#if HAVE_STDINT_H_WITH_UINTMAX +#include +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +#include +#endif + +int +main () +{ +intmax_t x = -1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + gt_cv_c_intmax_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gt_cv_c_intmax_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $gt_cv_c_intmax_t" >&5 +echo "${ECHO_T}$gt_cv_c_intmax_t" >&6; } + if test $gt_cv_c_intmax_t = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_INTMAX_T 1 +_ACEOF + + fi + + + { echo "$as_me:$LINENO: checking for unsigned long long" >&5 +echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6; } +if test "${ac_cv_type_unsigned_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +unsigned long long ull = 1ULL; int i = 63; +int +main () +{ +unsigned long long ullmax = (unsigned long long) -1; + return ull << i | ull >> i | ullmax / ull | ullmax % ull; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_type_unsigned_long_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_unsigned_long_long=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6; } + if test $ac_cv_type_unsigned_long_long = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_UNSIGNED_LONG_LONG 1 +_ACEOF + + fi + + + + + if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then + + test $ac_cv_type_unsigned_long_long = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + +cat >>confdefs.h <<_ACEOF +#define uintmax_t $ac_type +_ACEOF + + else + +cat >>confdefs.h <<\_ACEOF +#define HAVE_UINTMAX_T 1 +_ACEOF + + fi + + + { echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6; } +if test "${ac_cv_type_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +long long ll = 1LL; int i = 63; +int +main () +{ +long long llmax = (long long) -1; + return ll << i | ll >> i | llmax / ll | llmax % ll; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_type_long_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_long_long=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_long_long" >&6; } + if test $ac_cv_type_long_long = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LONG_LONG 1 +_ACEOF + + fi + + + + + + + { echo "$as_me:$LINENO: checking whether strtol is declared" >&5 +echo $ECHO_N "checking whether strtol is declared... $ECHO_C" >&6; } +if test "${ac_cv_have_decl_strtol+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +#ifndef strtol + (void) strtol; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_strtol=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_strtol=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtol" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strtol" >&6; } +if test $ac_cv_have_decl_strtol = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRTOL 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRTOL 0 +_ACEOF + + +fi +{ echo "$as_me:$LINENO: checking whether strtoul is declared" >&5 +echo $ECHO_N "checking whether strtoul is declared... $ECHO_C" >&6; } +if test "${ac_cv_have_decl_strtoul+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +#ifndef strtoul + (void) strtoul; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_strtoul=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_strtoul=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtoul" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strtoul" >&6; } +if test $ac_cv_have_decl_strtoul = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRTOUL 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRTOUL 0 +_ACEOF + + +fi +{ echo "$as_me:$LINENO: checking whether strtoll is declared" >&5 +echo $ECHO_N "checking whether strtoll is declared... $ECHO_C" >&6; } +if test "${ac_cv_have_decl_strtoll+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +#ifndef strtoll + (void) strtoll; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_strtoll=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_strtoll=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtoll" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strtoll" >&6; } +if test $ac_cv_have_decl_strtoll = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRTOLL 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRTOLL 0 +_ACEOF + + +fi +{ echo "$as_me:$LINENO: checking whether strtoimax is declared" >&5 +echo $ECHO_N "checking whether strtoimax is declared... $ECHO_C" >&6; } +if test "${ac_cv_have_decl_strtoimax+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +#ifndef strtoimax + (void) strtoimax; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_strtoimax=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_strtoimax=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtoimax" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strtoimax" >&6; } +if test $ac_cv_have_decl_strtoimax = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRTOIMAX 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRTOIMAX 0 +_ACEOF + + +fi +{ echo "$as_me:$LINENO: checking whether strtoumax is declared" >&5 +echo $ECHO_N "checking whether strtoumax is declared... $ECHO_C" >&6; } +if test "${ac_cv_have_decl_strtoumax+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +#ifndef strtoumax + (void) strtoumax; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_strtoumax=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_strtoumax=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtoumax" >&5 +echo "${ECHO_T}$ac_cv_have_decl_strtoumax" >&6; } +if test $ac_cv_have_decl_strtoumax = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRTOUMAX 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRTOUMAX 0 +_ACEOF + + +fi + + + + + +for ac_header in limits.h stdlib.h inttypes.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err 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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.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:$ac_c_preproc_warn_flag 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 compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + 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: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&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;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-gnu-utils@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 { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 whether defines strtoimax as a macro" >&5 +echo $ECHO_N "checking whether defines strtoimax as a macro... $ECHO_C" >&6; } +if test "${jm_cv_func_strtoimax_macro+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#ifdef strtoimax + inttypes_h_defines_strtoimax +#endif +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "inttypes_h_defines_strtoimax" >/dev/null 2>&1; then + jm_cv_func_strtoimax_macro=yes +else + jm_cv_func_strtoimax_macro=no +fi +rm -f conftest* + +fi +{ echo "$as_me:$LINENO: result: $jm_cv_func_strtoimax_macro" >&5 +echo "${ECHO_T}$jm_cv_func_strtoimax_macro" >&6; } + + if test "$jm_cv_func_strtoimax_macro" != yes; then + +for ac_func in strtoimax +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 { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +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 +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + case " $LIBOBJS " in + *" $ac_func.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" + ;; +esac + +fi +done + + + fi + + case "$jm_cv_func_strtoimax_macro,$ac_cv_func_strtoimax" in + no,no) + +for ac_func in strtol +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 { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +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 +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + case " $LIBOBJS " in + *" $ac_func.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" + ;; +esac + +fi +done + + + + if test "$ac_cv_type_long_long" = yes; then + +for ac_func in strtoll +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 { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +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 +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + case " $LIBOBJS " in + *" $ac_func.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" + ;; +esac + +fi +done + + + fi + ;; + esac + + +{ echo "$as_me:$LINENO: checking for /etc/systemid" >&5 +echo $ECHO_N "checking for /etc/systemid... $ECHO_C" >&6; } +if test -f /etc/systemid; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ETC_SYSTEMID 1 +_ACEOF + +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + +# Check whether --enable-uucode was given. +if test "${enable_uucode+set}" = set; then + enableval=$enable_uucode; +fi + + if test "x$enable_uucode" != xno; then + UUCODE_TRUE= + UUCODE_FALSE='#' +else + UUCODE_TRUE='#' + UUCODE_FALSE= +fi + + + + + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + case "$ac_aux_dir" in + /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; + *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; + esac + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + 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 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; } + + + + + + +# Prepare PATH_SEPARATOR. +# 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 + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# 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. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 +IFS=$as_save_IFS + + 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 + + + + +# Prepare PATH_SEPARATOR. +# 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 + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# 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. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + 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 + + rm -f messages.po + + +# Prepare PATH_SEPARATOR. +# 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 + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "msgmerge", so it can be a program name with args. +set dummy msgmerge; 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_MSGMERGE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "$MSGMERGE" in + [\\/]* | ?:[\\/]*) + ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&5 + if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then + ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" + test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" + ;; +esac +fi +MSGMERGE="$ac_cv_path_MSGMERGE" +if test "$MSGMERGE" != ":"; then + { echo "$as_me:$LINENO: result: $MSGMERGE" >&5 +echo "${ECHO_T}$MSGMERGE" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + if test "$GMSGFMT" != ":"; then + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && + (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` + { echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 +echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } + GMSGFMT=":" + fi + fi + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); 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 + rm -f messages.po + fi + + ac_config_commands="$ac_config_commands default-1" + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 +echo "$as_me: error: cannot run $SHELL $ac_aux_dir/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_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + { { 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=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_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; } +case $ac_cv_build in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 +echo "$as_me: error: invalid value of canonical build" >&2;} + { (exit 1); exit 1; }; };; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ 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 + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + { (exit 1); exit 1; }; } +fi + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 +echo "$as_me: error: invalid value of canonical host" >&2;} + { (exit 1); exit 1; }; };; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + + { echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2 or newer" >&5 +echo $ECHO_N "checking whether we are using the GNU C Library 2 or newer... $ECHO_C" >&6; } +if test "${ac_cv_gnu_library_2+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#ifdef __GNU_LIBRARY__ + #if (__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=yes +else + ac_cv_gnu_library_2=no +fi +rm -f conftest* + + + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2" >&5 +echo "${ECHO_T}$ac_cv_gnu_library_2" >&6; } + + GLIBC2="$ac_cv_gnu_library_2" + + + + { echo "$as_me:$LINENO: checking for signed" >&5 +echo $ECHO_N "checking for signed... $ECHO_C" >&6; } +if test "${bh_cv_c_signed+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +signed char x; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + bh_cv_c_signed=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + bh_cv_c_signed=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $bh_cv_c_signed" >&5 +echo "${ECHO_T}$bh_cv_c_signed" >&6; } + if test $bh_cv_c_signed = no; then + +cat >>confdefs.h <<\_ACEOF +#define signed +_ACEOF + + fi + +{ 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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +typedef off_t ac__type_new_; +int +main () +{ +if ((ac__type_new_ *) 0) + return 0; +if (sizeof (ac__type_new_)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err 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 int +_ACEOF + +fi + + + { echo "$as_me:$LINENO: checking for long double" >&5 +echo $ECHO_N "checking for long double... $ECHO_C" >&6; } +if test "${gt_cv_c_long_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$GCC" = yes; then + gt_cv_c_long_double=yes + else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + /* The Stardent Vistra knows sizeof(long double), but does not support it. */ + long double foo = 0.0; + /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ + int array [2*(sizeof(long double) >= sizeof(double)) - 1]; + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + gt_cv_c_long_double=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gt_cv_c_long_double=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +fi +{ echo "$as_me:$LINENO: result: $gt_cv_c_long_double" >&5 +echo "${ECHO_T}$gt_cv_c_long_double" >&6; } + if test $gt_cv_c_long_double = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LONG_DOUBLE 1 +_ACEOF + + fi + + + { echo "$as_me:$LINENO: checking for wchar_t" >&5 +echo $ECHO_N "checking for wchar_t... $ECHO_C" >&6; } +if test "${gt_cv_c_wchar_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + wchar_t foo = (wchar_t)'\0'; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + gt_cv_c_wchar_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gt_cv_c_wchar_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $gt_cv_c_wchar_t" >&5 +echo "${ECHO_T}$gt_cv_c_wchar_t" >&6; } + if test $gt_cv_c_wchar_t = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_WCHAR_T 1 +_ACEOF + + fi + + + { echo "$as_me:$LINENO: checking for wint_t" >&5 +echo $ECHO_N "checking for wint_t... $ECHO_C" >&6; } +if test "${gt_cv_c_wint_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + wint_t foo = (wchar_t)'\0'; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + gt_cv_c_wint_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gt_cv_c_wint_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $gt_cv_c_wint_t" >&5 +echo "${ECHO_T}$gt_cv_c_wint_t" >&6; } + if test $gt_cv_c_wint_t = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_WINT_T 1 +_ACEOF + + fi + + + + { echo "$as_me:$LINENO: checking whether printf() supports POSIX/XSI format strings" >&5 +echo $ECHO_N "checking whether printf() supports POSIX/XSI format strings... $ECHO_C" >&6; } +if test "${gt_cv_func_printf_posix+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + if test "$cross_compiling" = yes; then + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ + notposix +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "notposix" >/dev/null 2>&1; then + gt_cv_func_printf_posix="guessing no" +else + gt_cv_func_printf_posix="guessing yes" +fi +rm -f conftest* + + +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +/* The string "%2$d %1$d", with dollar characters protected from the shell's + dollar expansion (possibly an autoconf bug). */ +static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; +static char buf[100]; +int main () +{ + sprintf (buf, format, 33, 55); + return (strcmp (buf, "55 33") != 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_func_printf_posix=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 ) +gt_cv_func_printf_posix=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + + +fi +{ echo "$as_me:$LINENO: result: $gt_cv_func_printf_posix" >&5 +echo "${ECHO_T}$gt_cv_func_printf_posix" >&6; } + case $gt_cv_func_printf_posix in + *yes) + +cat >>confdefs.h <<\_ACEOF +#define HAVE_POSIX_PRINTF 1 +_ACEOF + + ;; + esac + + + +for ac_header in stdlib.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err 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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.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:$ac_c_preproc_warn_flag 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 compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + 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: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&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;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-gnu-utils@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 { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +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 +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 +/* 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 !defined STDC_HEADERS && !defined HAVE_STDLIB_H +char *malloc (); +#endif + +/* This mess was copied from the GNU getpagesize.h. */ +#ifndef HAVE_GETPAGESIZE +/* Assume that all systems that can run configure have sys/param.h. */ +# ifndef HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# ifdef 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) + return 1; + for (i = 0; i < pagesize; ++i) + *(data + i) = rand (); + umask (0); + fd = creat ("conftest.mmap", 0600); + if (fd < 0) + return 1; + if (write (fd, data, pagesize) != pagesize) + return 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) + return 1; + data2 = (char *) malloc (2 * pagesize); + if (!data2) + return 1; + data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + return 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) + return 1; + if (read (fd, data3, pagesize) != pagesize) + return 1; + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + return 1; + close (fd); + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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.conftest.* 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 +/* 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" + + + + + { echo "$as_me:$LINENO: checking whether integer division by zero raises SIGFPE" >&5 +echo $ECHO_N "checking whether integer division by zero raises SIGFPE... $ECHO_C" >&6; } +if test "${gt_cv_int_divbyzero_sigfpe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + if test "$cross_compiling" = yes; then + + # Guess based on the CPU. + case "$host_cpu" in + alpha* | i3456786 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac + +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include + +static void +#ifdef __cplusplus +sigfpe_handler (int sig) +#else +sigfpe_handler (sig) int sig; +#endif +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (1); +} + +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + gt_cv_int_divbyzero_sigfpe=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 ) +gt_cv_int_divbyzero_sigfpe=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + + +fi +{ echo "$as_me:$LINENO: result: $gt_cv_int_divbyzero_sigfpe" >&5 +echo "${ECHO_T}$gt_cv_int_divbyzero_sigfpe" >&6; } + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + +cat >>confdefs.h <<_ACEOF +#define INTDIV0_RAISES_SIGFPE $value +_ACEOF + + + + { echo "$as_me:$LINENO: checking for inttypes.h" >&5 +echo $ECHO_N "checking for inttypes.h... $ECHO_C" >&6; } +if test "${gt_cv_header_inttypes_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + gt_cv_header_inttypes_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gt_cv_header_inttypes_h=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ echo "$as_me:$LINENO: result: $gt_cv_header_inttypes_h" >&5 +echo "${ECHO_T}$gt_cv_header_inttypes_h" >&6; } + if test $gt_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H 1 +_ACEOF + + fi + + + + if test $gt_cv_header_inttypes_h = yes; then + { echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5 +echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6; } +if test "${gt_cv_inttypes_pri_broken+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#ifdef PRId32 +char *p = PRId32; +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + gt_cv_inttypes_pri_broken=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gt_cv_inttypes_pri_broken=yes +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5 +echo "${ECHO_T}$gt_cv_inttypes_pri_broken" >&6; } + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + +cat >>confdefs.h <<_ACEOF +#define PRI_MACROS_BROKEN 1 +_ACEOF + + fi + + + +for ac_header in stdint.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err 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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.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:$ac_c_preproc_warn_flag 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 compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + 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: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&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;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-gnu-utils@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 { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 SIZE_MAX" >&5 +echo $ECHO_N "checking for SIZE_MAX... $ECHO_C" >&6; } + result= + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#if HAVE_STDINT_H +#include +#endif +#ifdef SIZE_MAX +Found it +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Found it" >/dev/null 2>&1; then + result=yes +fi +rm -f conftest* + + if test -z "$result"; then + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 / 10) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 / 10) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 / 10) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 / 10) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo= ac_hi= +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 / 10) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr '(' $ac_mid ')' + 1` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) res_hi=$ac_lo;; +'') result=? ;; +esac +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +static long int longval () { return ~(size_t)0 / 10; } +static unsigned long int ulongval () { return ~(size_t)0 / 10; } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if ((~(size_t)0 / 10) < 0) + { + long int i = longval (); + if (i != (~(size_t)0 / 10)) + return 1; + fprintf (f, "%ld\n", i); + } + else + { + unsigned long int i = ulongval (); + if (i != (~(size_t)0 / 10)) + return 1; + fprintf (f, "%lu\n", i); + } + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + res_hi=`cat conftest.val` +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 ) +result=? +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.val + + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 % 10) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 % 10) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 % 10) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 % 10) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo= ac_hi= +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((~(size_t)0 % 10) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr '(' $ac_mid ')' + 1` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) res_lo=$ac_lo;; +'') result=? ;; +esac +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +static long int longval () { return ~(size_t)0 % 10; } +static unsigned long int ulongval () { return ~(size_t)0 % 10; } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if ((~(size_t)0 % 10) < 0) + { + long int i = longval (); + if (i != (~(size_t)0 % 10)) + return 1; + fprintf (f, "%ld\n", i); + } + else + { + unsigned long int i = ulongval (); + if (i != (~(size_t)0 % 10)) + return 1; + fprintf (f, "%lu\n", i); + } + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + res_lo=`cat conftest.val` +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 ) +result=? +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.val + + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo= ac_hi= +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +static int test_array [1 - 2 * !((sizeof (size_t) <= sizeof (unsigned int)) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_lo=`expr '(' $ac_mid ')' + 1` +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) fits_in_uint=$ac_lo;; +'') result=? ;; +esac +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +static long int longval () { return sizeof (size_t) <= sizeof (unsigned int); } +static unsigned long int ulongval () { return sizeof (size_t) <= sizeof (unsigned int); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if ((sizeof (size_t) <= sizeof (unsigned int)) < 0) + { + long int i = longval (); + if (i != (sizeof (size_t) <= sizeof (unsigned int))) + return 1; + fprintf (f, "%ld\n", i); + } + else + { + unsigned long int i = ulongval (); + if (i != (sizeof (size_t) <= sizeof (unsigned int))) + return 1; + fprintf (f, "%lu\n", i); + } + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + fits_in_uint=`cat conftest.val` +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 ) +result=? +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.val + + if test "$fits_in_uint" = 1; then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + extern size_t foo; + extern unsigned long foo; + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + fits_in_uint=0 +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test -z "$result"; then + if test "$fits_in_uint" = 1; then + result="$res_hi$res_lo"U + else + result="$res_hi$res_lo"UL + fi + else + result='~(size_t)0' + fi + fi + { echo "$as_me:$LINENO: result: $result" >&5 +echo "${ECHO_T}$result" >&6; } + if test "$result" != yes; then + +cat >>confdefs.h <<_ACEOF +#define SIZE_MAX $result +_ACEOF + + fi + + + + + +for ac_header in stdint.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err 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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.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:$ac_c_preproc_warn_flag 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 compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + 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: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&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;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-gnu-utils@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 { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 CFPreferencesCopyAppValue" >&5 +echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6; } +if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + gt_save_LIBS="$LIBS" + LIBS="$LIBS -framework CoreFoundation" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + gt_cv_func_CFPreferencesCopyAppValue=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gt_cv_func_CFPreferencesCopyAppValue=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +{ echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_CFPREFERENCESCOPYAPPVALUE 1 +_ACEOF + + fi + { echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 +echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6; } +if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + gt_save_LIBS="$LIBS" + LIBS="$LIBS -framework CoreFoundation" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + gt_cv_func_CFLocaleCopyCurrent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gt_cv_func_CFLocaleCopyCurrent=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +{ echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_CFLOCALECOPYCURRENT 1 +_ACEOF + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + + + + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" + + +# Check whether --with-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 + +# Prepare PATH_SEPARATOR. +# 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 +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 "${acl_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="${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 + acl_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. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$acl_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 "${acl_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. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$acl_cv_prog_gnu_ld + + + + + { echo "$as_me:$LINENO: checking for shared library run path origin" >&5 +echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6; } +if test "${acl_cv_rpath+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + +fi +{ echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 +echo "${ECHO_T}$acl_cv_rpath" >&6; } + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + # Check whether --enable-rpath was given. +if test "${enable_rpath+set}" = set; then + enableval=$enable_rpath; : +else + enable_rpath=yes +fi + + + + + + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libiconv-prefix was given. +if test "${with_libiconv_prefix+set}" = set; then + withval=$with_libiconv_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi + + LIBICONV= + LTLIBICONV= + INCICONV= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='iconv ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + found_dir="$additional_libdir" + found_so="$additional_libdir/lib$name.$shlibext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + found_dir="$dir" + found_so="$dir/lib$name.$shlibext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$hardcode_direct" = yes; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBICONV; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" + ;; + esac + done + fi + else + LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" + done + fi + + + + + + + + + { echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6; } +if test "${ac_cv_type_ptrdiff_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +typedef ptrdiff_t ac__type_new_; +int +main () +{ +if ((ac__type_new_ *) 0) + return 0; +if (sizeof (ac__type_new_)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_ptrdiff_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6; } +if test $ac_cv_type_ptrdiff_t = yes; then + : +else + +cat >>confdefs.h <<\_ACEOF +#define ptrdiff_t long +_ACEOF + + +fi + + + + + + + + + + + +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 { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err 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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.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:$ac_c_preproc_warn_flag 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 compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + 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: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&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;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------------ ## +## Report this to bug-gnu-utils@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 { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 asprintf fwprintf getcwd getegid geteuid getgid getuid \ +mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ +strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ +__fsetlocking +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 { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +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 +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&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 whether _snprintf is declared" >&5 +echo $ECHO_N "checking whether _snprintf is declared... $ECHO_C" >&6; } +if test "${ac_cv_have_decl__snprintf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ + +#ifndef _snprintf + char *p = (char *) _snprintf; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl__snprintf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl__snprintf=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl__snprintf" >&5 +echo "${ECHO_T}$ac_cv_have_decl__snprintf" >&6; } + if test $ac_cv_have_decl__snprintf = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL__SNPRINTF $gt_value +_ACEOF + + + + { echo "$as_me:$LINENO: checking whether _snwprintf is declared" >&5 +echo $ECHO_N "checking whether _snwprintf is declared... $ECHO_C" >&6; } +if test "${ac_cv_have_decl__snwprintf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ + +#ifndef _snwprintf + char *p = (char *) _snwprintf; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl__snwprintf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl__snwprintf=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl__snwprintf" >&5 +echo "${ECHO_T}$ac_cv_have_decl__snwprintf" >&6; } + if test $ac_cv_have_decl__snwprintf = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL__SNWPRINTF $gt_value +_ACEOF + + + + + { echo "$as_me:$LINENO: checking whether feof_unlocked is declared" >&5 +echo $ECHO_N "checking whether feof_unlocked is declared... $ECHO_C" >&6; } +if test "${ac_cv_have_decl_feof_unlocked+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ + +#ifndef feof_unlocked + char *p = (char *) feof_unlocked; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_feof_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_feof_unlocked=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_feof_unlocked" >&5 +echo "${ECHO_T}$ac_cv_have_decl_feof_unlocked" >&6; } + if test $ac_cv_have_decl_feof_unlocked = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FEOF_UNLOCKED $gt_value +_ACEOF + + + + { echo "$as_me:$LINENO: checking whether fgets_unlocked is declared" >&5 +echo $ECHO_N "checking whether fgets_unlocked is declared... $ECHO_C" >&6; } +if test "${ac_cv_have_decl_fgets_unlocked+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ + +#ifndef fgets_unlocked + char *p = (char *) fgets_unlocked; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_fgets_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_fgets_unlocked=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_fgets_unlocked" >&5 +echo "${ECHO_T}$ac_cv_have_decl_fgets_unlocked" >&6; } + if test $ac_cv_have_decl_fgets_unlocked = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_FGETS_UNLOCKED $gt_value +_ACEOF + + + + { echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5 +echo $ECHO_N "checking whether getc_unlocked is declared... $ECHO_C" >&6; } +if test "${ac_cv_have_decl_getc_unlocked+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ + +#ifndef getc_unlocked + char *p = (char *) getc_unlocked; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_decl_getc_unlocked=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_decl_getc_unlocked=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5 +echo "${ECHO_T}$ac_cv_have_decl_getc_unlocked" >&6; } + if test $ac_cv_have_decl_getc_unlocked = yes; then + gt_value=1 + else + gt_value=0 + fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETC_UNLOCKED $gt_value +_ACEOF + + + + case $gt_cv_func_printf_posix in + *yes) HAVE_POSIX_PRINTF=1 ;; + *) HAVE_POSIX_PRINTF=0 ;; + esac + + if test "$ac_cv_func_asprintf" = yes; then + HAVE_ASPRINTF=1 + else + HAVE_ASPRINTF=0 + fi + + if test "$ac_cv_func_snprintf" = yes; then + HAVE_SNPRINTF=1 + else + HAVE_SNPRINTF=0 + fi + + if test "$ac_cv_func_wprintf" = yes; then + HAVE_WPRINTF=1 + else + HAVE_WPRINTF=0 + fi + + + + + + + + am_save_CPPFLAGS="$CPPFLAGS" + + for element in $INCICONV; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + + { 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 +/* 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 { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + am_cv_func_iconv=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + cat >conftest.$ac_ext <<_ACEOF +/* 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 { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + 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 + + fi + if test "$am_cv_lib_iconv" = yes; then + { echo "$as_me:$LINENO: checking how to link with libiconv" >&5 +echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6; } + { echo "$as_me:$LINENO: result: $LIBICONV" >&5 +echo "${ECHO_T}$LIBICONV" >&6; } + else + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + + + + if test "$am_cv_func_iconv" = yes; then + { 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 +/* 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 { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; 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 core conftest.err 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 + + + { 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 +/* 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 { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + 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 "${gt_cv_val_LC_MESSAGES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* 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 { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + gt_cv_val_LC_MESSAGES=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gt_cv_val_LC_MESSAGES=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $gt_cv_val_LC_MESSAGES" >&5 +echo "${ECHO_T}$gt_cv_val_LC_MESSAGES" >&6; } + if test $gt_cv_val_LC_MESSAGES = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LC_MESSAGES 1 +_ACEOF + + fi + + fi + + if test -n "$INTL_MACOSX_LIBS"; then + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 +IFS=$as_save_IFS + +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 + + + + + + + + + + + + + + + + + { echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5 +echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6; } +if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + gt_save_LIBS="$LIBS" + LIBS="$LIBS -framework CoreFoundation" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +CFPreferencesCopyAppValue(NULL, NULL) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + gt_cv_func_CFPreferencesCopyAppValue=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gt_cv_func_CFPreferencesCopyAppValue=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +{ echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 +echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6; } + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_CFPREFERENCESCOPYAPPVALUE 1 +_ACEOF + + fi + { echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 +echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6; } +if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + gt_save_LIBS="$LIBS" + LIBS="$LIBS -framework CoreFoundation" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +CFLocaleCopyCurrent(); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + gt_cv_func_CFLocaleCopyCurrent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + gt_cv_func_CFLocaleCopyCurrent=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS" +fi +{ echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 +echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6; } + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_CFLOCALECOPYCURRENT 1 +_ACEOF + + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + 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 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 + + LIBINTL= + LTLIBINTL= + POSUB= + + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + + { 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 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 + + + + + + + { 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 +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + 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 + + + + use_additional=yes + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + +# Check whether --with-libintl-prefix was given. +if test "${with_libintl_prefix+set}" = set; then + withval=$with_libintl_prefix; + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi + +fi + + LIBINTL= + LTLIBINTL= + INCINTL= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='intl ' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" + else + : + fi + else + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + found_dir="$additional_libdir" + found_so="$additional_libdir/lib$name.$shlibext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + found_dir="$dir" + found_so="$dir/lib$name.$shlibext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + if test "$hardcode_direct" = yes; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" + fi + fi + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INCINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + if test -n "$found_la"; then + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIBINTL; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" + ;; + esac + done + fi + else + LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + else + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + for found_dir in $ltrpathdirs; do + LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" + done + fi + + { 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_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +int +main () +{ +bindtextdomain ("", ""); +return * gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias ("") + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 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); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + gt_cv_func_gnugettext1_libintl=yes + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + fi + CPPFLAGS="$gt_save_CPPFLAGS" + 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-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="\${top_builddir}/intl/libintl.a $LIBICONV" + LTLIBINTL="\${top_builddir}/intl/libintl.a $LTLIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + CATOBJEXT=.gmo + fi + + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define ENABLE_NLS 1 +_ACEOF + + else + USE_NLS=no + fi + fi + + { echo "$as_me:$LINENO: checking whether to use NLS" >&5 +echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6; } + { echo "$as_me:$LINENO: result: $USE_NLS" >&5 +echo "${ECHO_T}$USE_NLS" >&6; } + if test "$USE_NLS" = "yes"; then + { echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 +echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&6; } + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + { echo "$as_me:$LINENO: result: $gt_source" >&5 +echo "${ECHO_T}$gt_source" >&6; } + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then + { echo "$as_me:$LINENO: checking how to link with libintl" >&5 +echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6; } + { echo "$as_me:$LINENO: result: $LIBINTL" >&5 +echo "${ECHO_T}$LIBINTL" >&6; } + + for element in $INCINTL; do + haveit= + for x in $CPPFLAGS; do + + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + eval x=\"$x\" + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" + + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" + fi + done + + fi + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETTEXT 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DCGETTEXT 1 +_ACEOF + + fi + + POSUB=po + fi + + + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + + + + + nls_cv_header_intl= + nls_cv_header_libgt= + + DATADIRNAME=share + + + INSTOBJEXT=.mo + + + GENCAT=gencat + + + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + + + INTL_LIBTOOL_SUFFIX_PREFIX= + + + + INTLLIBS="$LIBINTL" + + + + + + + +{ echo "$as_me:$LINENO: checking if malloc debugging is wanted" >&5 +echo $ECHO_N "checking if malloc debugging is wanted... $ECHO_C" >&6; } + +# Check whether --with-dmalloc was given. +if test "${with_dmalloc+set}" = set; then + withval=$with_dmalloc; if test "$withval" = yes; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + +cat >>confdefs.h <<\_ACEOF +#define WITH_DMALLOC 1 +_ACEOF + + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + +# sharutils is somewhat special about internationalization in that it +# always requires the GNU .mo files installed. +if test "x$CATOBJEXT" = "x.mo" || test "x$CATOBJEXT" = "x.cat"; then + new_CATALOGS="" + for cat in $CATALOGS; do + lang=`echo $cat | sed "s/\(.*\)\..*/\1/"` + new_CATALOGS="$new_CATALOGS $cat $lang.gmo" + done + CATALOGS="$new_CATALOGS" +fi + + +cat >>confdefs.h <<\_ACEOF +#define _GNU_SOURCE 1 +_ACEOF + + +ac_config_files="$ac_config_files contrib/Makefile doc/Makefile intl/Makefile lib/Makefile po/Makefile.in src/Makefile src/mail-files src/mailshar tests/Makefile Makefile" + +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, we kill variables containing newlines. +# 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. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}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 "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + 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 "$as_me:$LINENO: updating cache $cache_file" >&5 +echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +echo "$as_me: not updating unwritable cache $cache_file" >&6;} + 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}' + +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_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$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 +if test -z "${UUCODE_TRUE}" && test -z "${UUCODE_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"UUCODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"UUCODE\" 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 more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +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+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# 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 + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +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 +IFS=$as_save_IFS + + ;; +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_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +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 -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; 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'` + +# CDPATH. +$as_unset CDPATH + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # 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 after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, 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 + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\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 sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +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$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval 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="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 + +# Save the log message, to keep $[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by sharutils $as_me 4.7, which was +generated by GNU Autoconf 2.61. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +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 and configuration settings, 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="\\ +sharutils config.status 4.7 +configured by $0, generated by GNU Autoconf 2.61, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2006 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +_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 + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --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;; + --he | --h) + # Conflict between --help and --header + { 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 ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { 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" + ac_need_defaults=false ;; + + 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 CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" +# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "src/remsync") CONFIG_FILES="$CONFIG_FILES src/remsync" ;; + "src/compress-dummy") CONFIG_FILES="$CONFIG_FILES src/compress-dummy" ;; + "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "intl/Makefile") CONFIG_FILES="$CONFIG_FILES intl/Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "src/mail-files") CONFIG_FILES="$CONFIG_FILES src/mail-files" ;; + "src/mailshar") CONFIG_FILES="$CONFIG_FILES src/mailshar" ;; + "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + + *) { { 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 against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$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 "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +# +# Set up the sed scripts for 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 + +_ACEOF + + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +SHELL!$SHELL$ac_delim +PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim +PACKAGE_NAME!$PACKAGE_NAME$ac_delim +PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim +PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim +PACKAGE_STRING!$PACKAGE_STRING$ac_delim +PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim +exec_prefix!$exec_prefix$ac_delim +prefix!$prefix$ac_delim +program_transform_name!$program_transform_name$ac_delim +bindir!$bindir$ac_delim +sbindir!$sbindir$ac_delim +libexecdir!$libexecdir$ac_delim +datarootdir!$datarootdir$ac_delim +datadir!$datadir$ac_delim +sysconfdir!$sysconfdir$ac_delim +sharedstatedir!$sharedstatedir$ac_delim +localstatedir!$localstatedir$ac_delim +includedir!$includedir$ac_delim +oldincludedir!$oldincludedir$ac_delim +docdir!$docdir$ac_delim +infodir!$infodir$ac_delim +htmldir!$htmldir$ac_delim +dvidir!$dvidir$ac_delim +pdfdir!$pdfdir$ac_delim +psdir!$psdir$ac_delim +libdir!$libdir$ac_delim +localedir!$localedir$ac_delim +mandir!$mandir$ac_delim +DEFS!$DEFS$ac_delim +ECHO_C!$ECHO_C$ac_delim +ECHO_N!$ECHO_N$ac_delim +ECHO_T!$ECHO_T$ac_delim +LIBS!$LIBS$ac_delim +build_alias!$build_alias$ac_delim +host_alias!$host_alias$ac_delim +target_alias!$target_alias$ac_delim +INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim +INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim +INSTALL_DATA!$INSTALL_DATA$ac_delim +am__isrc!$am__isrc$ac_delim +CYGPATH_W!$CYGPATH_W$ac_delim +PACKAGE!$PACKAGE$ac_delim +VERSION!$VERSION$ac_delim +ACLOCAL!$ACLOCAL$ac_delim +AUTOCONF!$AUTOCONF$ac_delim +AUTOMAKE!$AUTOMAKE$ac_delim +AUTOHEADER!$AUTOHEADER$ac_delim +MAKEINFO!$MAKEINFO$ac_delim +install_sh!$install_sh$ac_delim +STRIP!$STRIP$ac_delim +INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim +mkdir_p!$mkdir_p$ac_delim +AWK!$AWK$ac_delim +SET_MAKE!$SET_MAKE$ac_delim +am__leading_dot!$am__leading_dot$ac_delim +AMTAR!$AMTAR$ac_delim +am__tar!$am__tar$ac_delim +am__untar!$am__untar$ac_delim +DIST_ALPHA!$DIST_ALPHA$ac_delim +ADD_SCRIPT!$ADD_SCRIPT$ac_delim +CC!$CC$ac_delim +CFLAGS!$CFLAGS$ac_delim +LDFLAGS!$LDFLAGS$ac_delim +CPPFLAGS!$CPPFLAGS$ac_delim +ac_ct_CC!$ac_ct_CC$ac_delim +EXEEXT!$EXEEXT$ac_delim +OBJEXT!$OBJEXT$ac_delim +DEPDIR!$DEPDIR$ac_delim +am__include!$am__include$ac_delim +am__quote!$am__quote$ac_delim +AMDEP_TRUE!$AMDEP_TRUE$ac_delim +AMDEP_FALSE!$AMDEP_FALSE$ac_delim +AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim +CCDEPMODE!$CCDEPMODE$ac_delim +am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim +am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim +RANLIB!$RANLIB$ac_delim +DIFF!$DIFF$ac_delim +MAILER!$MAILER$ac_delim +PERL!$PERL$ac_delim +SH!$SH$ac_delim +TAR!$TAR$ac_delim +COMPRESS!$COMPRESS$ac_delim +INSTALL_COMPRESS_LINK!$INSTALL_COMPRESS_LINK$ac_delim +CPP!$CPP$ac_delim +GREP!$GREP$ac_delim +EGREP!$EGREP$ac_delim +DIRENT_HEADER!$DIRENT_HEADER$ac_delim +LIBOBJS!$LIBOBJS$ac_delim +ALLOCA!$ALLOCA$ac_delim +UUCODE_TRUE!$UUCODE_TRUE$ac_delim +UUCODE_FALSE!$UUCODE_FALSE$ac_delim +MKINSTALLDIRS!$MKINSTALLDIRS$ac_delim +USE_NLS!$USE_NLS$ac_delim +MSGFMT!$MSGFMT$ac_delim +GMSGFMT!$GMSGFMT$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +CEOF$ac_eof +_ACEOF + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +XGETTEXT!$XGETTEXT$ac_delim +MSGMERGE!$MSGMERGE$ac_delim +build!$build$ac_delim +build_cpu!$build_cpu$ac_delim +build_vendor!$build_vendor$ac_delim +build_os!$build_os$ac_delim +host!$host$ac_delim +host_cpu!$host_cpu$ac_delim +host_vendor!$host_vendor$ac_delim +host_os!$host_os$ac_delim +GLIBC2!$GLIBC2$ac_delim +GLIBC21!$GLIBC21$ac_delim +INTL_MACOSX_LIBS!$INTL_MACOSX_LIBS$ac_delim +HAVE_POSIX_PRINTF!$HAVE_POSIX_PRINTF$ac_delim +HAVE_ASPRINTF!$HAVE_ASPRINTF$ac_delim +HAVE_SNPRINTF!$HAVE_SNPRINTF$ac_delim +HAVE_WPRINTF!$HAVE_WPRINTF$ac_delim +LIBICONV!$LIBICONV$ac_delim +LTLIBICONV!$LTLIBICONV$ac_delim +INTLBISON!$INTLBISON$ac_delim +BUILD_INCLUDED_LIBINTL!$BUILD_INCLUDED_LIBINTL$ac_delim +USE_INCLUDED_LIBINTL!$USE_INCLUDED_LIBINTL$ac_delim +CATOBJEXT!$CATOBJEXT$ac_delim +DATADIRNAME!$DATADIRNAME$ac_delim +INSTOBJEXT!$INSTOBJEXT$ac_delim +GENCAT!$GENCAT$ac_delim +INTLOBJS!$INTLOBJS$ac_delim +INTL_LIBTOOL_SUFFIX_PREFIX!$INTL_LIBTOOL_SUFFIX_PREFIX$ac_delim +INTLLIBS!$INTLLIBS$ac_delim +LIBINTL!$LIBINTL$ac_delim +LTLIBINTL!$LTLIBINTL$ac_delim +POSUB!$POSUB$ac_delim +LTLIBOBJS!$LTLIBOBJS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 33; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +:end +s/|#_!!_#|//g +CEOF$ac_eof +_ACEOF + + +# 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 + +cat >>$CONFIG_STATUS <<\_ACEOF +fi # test -n "$CONFIG_FILES" + + +for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$ac_file_inputs $ac_f" + done + + # 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. */ + configure_input="Generated from "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$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'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$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'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +case `sed -n '/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' $ac_file_inputs` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +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&@top_builddir@&$ac_top_builddir_sub&;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&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out"; rm -f "$tmp/out";; + *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac + ;; + :H) + # + # CONFIG_HEADER + # +_ACEOF + +# Transform confdefs.h into a sed script `conftest.defines', that +# substitutes the proper values into config.h.in to produce config.h. +rm -f conftest.defines conftest.tail +# First, append a space to every undef/define line, to ease matching. +echo 's/$/ /' >conftest.defines +# Then, protect against being on the right side of a sed subst, or in +# an unquoted here document, in config.status. If some macros were +# called several times there might be several #defines for the same +# symbol, which is useless. But do not sort them, since the last +# AC_DEFINE must be honored. +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where +# NAME is the cpp macro being defined, VALUE is the value it is being given. +# PARAMS is the parameter list in the macro definition--in most cases, it's +# just an empty string. +ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' +ac_dB='\\)[ (].*,\\1define\\2' +ac_dC=' ' +ac_dD=' ,' + +uniq confdefs.h | + sed -n ' + t rset + :rset + s/^[ ]*#[ ]*define[ ][ ]*// + t ok + d + :ok + s/[\\&,]/\\&/g + s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p + s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p + ' >>conftest.defines + +# Remove the space that was appended to ease matching. +# Then replace #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. +# (The regexp can be short, since the line contains either #define or #undef.) +echo 's/ $// +s,^[ #]*u.*,/* & */,' >>conftest.defines + +# Break up conftest.defines: +ac_max_sed_lines=50 + +# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" +# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" +# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" +# et cetera. +ac_in='$ac_file_inputs' +ac_out='"$tmp/out1"' +ac_nxt='"$tmp/out2"' + +while : +do + # Write a here document: + cat >>$CONFIG_STATUS <<_ACEOF + # First, check the format of the line: + cat >"\$tmp/defines.sed" <<\\CEOF +/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def +/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def +b +:def +_ACEOF + sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS + ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in + sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail + grep . conftest.tail >/dev/null || break + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines conftest.tail + +echo "ac_result=$ac_in" >>$CONFIG_STATUS +cat >>$CONFIG_STATUS <<\_ACEOF + if test x"$ac_file" != x-; then + echo "/* $configure_input */" >"$tmp/config.h" + cat "$ac_result" >>"$tmp/config.h" + 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 + rm -f $ac_file + mv "$tmp/config.h" $ac_file + fi + else + echo "/* $configure_input */" + cat "$ac_result" + fi + rm -f "$tmp/out12" +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`$as_dirname -- $ac_file || +$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 + ;; + + :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 +echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) 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. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$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 + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. 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 " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/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_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'` + { as_dir=$dirpart/$fdir + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$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'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + "default-1":C) + 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 + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + 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" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; 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 + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done ;; + + esac +done # for ac_tag + + +{ (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/configure.ac b/configure.ac new file mode 100644 index 0000000..6f79195 --- /dev/null +++ b/configure.ac @@ -0,0 +1,144 @@ +# Configure template for GNU shar utilities. +# Copyright (C) 1994, 1995, 1996, 2002, 2005 Free Software Foundation, Inc. +# Process this file with autoconf to produce a configure script. +dnl +dnl FIXME: AC_CHECK_HEADERS([sys/time.h]) +dnl FIXME: AC_CHECK_FUNCS([gethostname getwd]) +dnl +m4_include([version.m4]) +AC_INIT([sharutils], sharutils_version, sharutils_eaddr) +AC_CONFIG_SRCDIR([src/shar.c]) +AC_CONFIG_HEADERS([config.h]) + +AM_INIT_AUTOMAKE([1.10 gnits dist-bzip2]) +AC_SUBST(DIST_ALPHA) + +dnl AC_ARG_PROGRAM + +AC_SUBST(ADD_SCRIPT, ["mail-files mailshar"]) + +AC_PROG_CC +AC_PROG_INSTALL +AC_PROG_MAKE_SET +AC_PROG_RANLIB + +dnl FIXME: Check that it is GNU diff indeed. +# Carefully avoid gdiff for X as found on SGI systems. +if (DISPLAY= gdiff /dev/null /dev/null) 2> /dev/null; then + AC_PATH_PROGS(DIFF, gnudiff diffgnu gdiff diff, no) +else + AC_PATH_PROGS(DIFF, gnudiff diffgnu diff, no) +fi + +dnl FIXME: Check that mailer accepts -s. +PATH_save="$PATH"; PATH="$PATH:/usr/sbin:/usr/ucb:/usr/bin:/bin" +AC_PATH_PROGS(MAILER, Mail mailx elm mush mail, no) +PATH="$PATH_save" + +dnl FIXME: Check that perl was found. +AC_PATH_PROG(PERL, perl, no) + +AC_PATH_PROGS(SH, bash sh, no) + +dnl FIXME: Check that it is GNU tar indeed. +AC_PATH_PROGS(TAR, gnutar targnu gtar tar, tar) + +if test $ac_cv_path_PERL != no; then + ADD_SCRIPT="$ADD_SCRIPT remsync" + AC_CONFIG_FILES([src/remsync]) +fi + +dnl in m4/sharutils.m4 +ke_CHECK_COMPRESS_AND_LINK + +AC_AIX +AC_ISC_POSIX +AC_MINIX + +AC_SYS_LARGEFILE +if test $cross_compiling = no; then + AC_C_CHAR_UNSIGNED +fi +AC_C_CONST +AC_C_INLINE +AC_C_BIGENDIAN + +AC_CHECK_HEADERS(limits.h locale.h memory.h string.h sys/wait.h unistd.h) +AC_HEADER_DIRENT +[test X$ac_header_dirent = Xno && {] + AC_MSG_ERROR([a dirent header is required.]) +[} +DIRENT_HEADER=\<${ac_header_dirent}\>] +AC_DEFINE_UNQUOTED(DIRENT_HEADER, [${DIRENT_HEADER}], + [define to directory entry header file]) +AC_SUBST(DIRENT_HEADER) +AC_HEADER_STAT +AC_HEADER_STDC +AC_STRUCT_TIMEZONE +AC_TYPE_SIZE_T + +jm_PREREQ_ERROR +jm_FUNC_MALLOC +jm_FUNC_REALLOC +AC_CHECK_FUNCS(fchmod getcwd isascii memcpy strchr strerror uname) +AC_FUNC_ALLOCA +AC_FUNC_CLOSEDIR_VOID +AC_FUNC_FSEEKO +AC_FUNC_STRFTIME +AC_FUNC_VPRINTF +AC_REPLACE_FUNCS(memset mktime stpcpy strftime) +jm_AC_PREREQ_XSTRTOIMAX + +AC_MSG_CHECKING(for /etc/systemid) +if test -f /etc/systemid; then + AC_MSG_RESULT(yes) + AC_DEFINE([HAVE_ETC_SYSTEMID], 1, + [Define if the current hostname may be found in /etc/systemid.]) +else + AC_MSG_RESULT(no) +fi + +AC_ARG_ENABLE(uucode, + [AS_HELP_STRING([--disable-uucode], + [disable installation of uuencode and uudecode])]) +AM_CONDITIONAL([UUCODE], [test "x$enable_uucode" != xno]) + +AM_GNU_GETTEXT +AM_GNU_GETTEXT_VERSION([0.14.5]) +AM_WITH_DMALLOC + +# sharutils is somewhat special about internationalization in that it +# always requires the GNU .mo files installed. +if test "x$CATOBJEXT" = "x.mo" || test "x$CATOBJEXT" = "x.cat"; then + new_CATALOGS="" + for cat in $CATALOGS; do + lang=`echo $cat | sed "s/\(.*\)\..*/\1/"` + new_CATALOGS="$new_CATALOGS $cat $lang.gmo" + done + CATALOGS="$new_CATALOGS" +fi + +AC_DEFINE(_GNU_SOURCE, 1, [Make sure we see all GNU extensions.]) + +AC_CONFIG_FILES([ + contrib/Makefile + doc/Makefile + intl/Makefile + lib/Makefile + po/Makefile.in + src/Makefile + src/mail-files + src/mailshar + tests/Makefile + Makefile +]) +AC_OUTPUT +dnl Local Variables: +dnl mode: autoconf-mode +dnl tab-width: 8 +dnl indent-tabs-mode: nil +dnl sh-indentation: 2 +dnl sh-basic-offset: 2 +dnl End: +dnl +dnl end of configure.ac diff --git a/contrib/Makefile.am b/contrib/Makefile.am new file mode 100644 index 0000000..04ad5b9 --- /dev/null +++ b/contrib/Makefile.am @@ -0,0 +1,21 @@ +## Makefile for the contrib subdirectory of the GNU Shar utilities. +## Copyright (C) 1995, 1996, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +## Process this file with automake to produce Makefile.in. + +EXTRA_DIST = shar.sh shar2.sh bas-README uudecode.bas pas-README \ +pas-R.Marks uudecode.pas uuencode.pas uudecode.pl uuencode.pl diff --git a/contrib/Makefile.in b/contrib/Makefile.in new file mode 100644 index 0000000..cdef580 --- /dev/null +++ b/contrib/Makefile.in @@ -0,0 +1,359 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 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@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +subdir = contrib +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/glibc2.m4 $(top_srcdir)/m4/glibc21.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intdiv0.m4 \ + $(top_srcdir)/m4/intmax.m4 $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-posix.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/realloc.m4 \ + $(top_srcdir)/m4/sharutils.m4 $(top_srcdir)/m4/signed.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/xstrtoimax.m4 \ + $(top_srcdir)/version.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ADD_SCRIPT = @ADD_SCRIPT@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMPRESS = @COMPRESS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +DIRENT_HEADER = @DIRENT_HEADER@ +DIST_ALPHA = @DIST_ALPHA@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_COMPRESS_LINK = @INSTALL_COMPRESS_LINK@ +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@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAILER = @MAILER@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +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@ +PERL = @PERL@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TAR = @TAR@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = shar.sh shar2.sh bas-README uudecode.bas pas-README \ +pas-R.Marks uudecode.pas uuencode.pas uudecode.pl uuencode.pl + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits contrib/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits contrib/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + 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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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 mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-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/contrib/bas-README b/contrib/bas-README new file mode 100644 index 0000000..e1c787d --- /dev/null +++ b/contrib/bas-README @@ -0,0 +1,25 @@ +Relay-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site hoptoad.uucp +From: rde@ukc.ac.uk (R.D.Eager) +Newsgroups: net.sources +Subject: Revised UUDECODE in MS-BASIC +Date: 14 Mar 86 11:53:53 GMT +Date-Received: 15 Mar 86 13:45:45 GMT +Reply-To: rde@ukc.ac.uk (R.D.Eager) + +A while ago I posted a UUDECODE program, written in Microsoft Basic, +to net.sources. Judging from the number of replies I had, people +are finding this useful if they don't have access to the public +domain UUDECODE, or to a C compiler. + +I found one or two problems recently; the main one was that it would +not create an output file of more than 64K due to an undocumented +feature of MS-BASIC. Here is a corrected version; as always, I +suggest you compile it if you want the run time to be finite. + + Bob Eager + + rde@ukc.UUCP + rde@ukc + ...!mcvax!ukc!rde + + Phone: +44 227 66822 ext 7589 diff --git a/contrib/pas-R.Marks b/contrib/pas-R.Marks new file mode 100644 index 0000000..915ad89 --- /dev/null +++ b/contrib/pas-R.Marks @@ -0,0 +1,25 @@ +From: rmarks@KSP.Unisys.COM (Richard Marks) +Newsgroups: comp.binaries.ibm.pc.archives +Subject: UUENCODE/DECODE 4.20 +Date: 14 Aug 91 14:26:44 GMT + +I have just send in my latest UUENCODE/DECODE package to c.b.i.p +for posting. This is level 4.20. + +This package has been out for four years. It is fast and it automatically +handles multi-section decoding - with automatic CRC testing. Just +save submissions as foo1.uue, foo2.uue, etc.; download to the PC; and +enter UUDECODE FOO. + +Also this package handles lots of variations in checksums and character +permutations. This includes XXencode/decode. + +The 4.20 version replaces the 4.13 version. It is a minor update with +some improved error messages, beeping to alert for errors, and detection +of some additional character permutations. Also the prior default for the +encode was to put a checksum on each line; now with the use of full file +CRC's, the default has been changed to turn this off. + +Regards, +Richard Marks +rmarks@MDC.unisys.COM diff --git a/contrib/pas-README b/contrib/pas-README new file mode 100644 index 0000000..0a31d26 --- /dev/null +++ b/contrib/pas-README @@ -0,0 +1,45 @@ +Here are versions of uuencode and uudecode that will work on an IBM +PC. There is a version for Turbo Pascal and one for Microsoft C. +Porting them into other machines, languages or dialects should not +pose a large problem. + +Sorry about the lack of documentation, but the programs are easy to +use, so you should not have a problem. I don't know why a UNIX +site would not have these in the first place, but at least your +manual should tell you how to use them. If you are not using UNIX +at all, you have my sympathy. + +The Pascal programs' author is unknown. The C programs were +provided by Don Kneller. + +Tom Reingold +Rockefeller University +New York City +UUCP: {seismo | harvard | ihnp4}!cmcl2!rna!rocky2!reintom +BITNET: REINTOM@ROCKVAX +ARPANET: reintom@rockefeller.arpa + +====================================================================== + +Relay-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site hoptoad.uucp +From: darmon@polaris.UUCP (Pierre Darmon) +Newsgroups: net.sources +Subject: Modified Turbo Pascal uudecode/encode. More user-friendly. +Date: 30 Oct 86 01:12:40 GMT +Date-Received: +Reply-To: darmon@polaris.UUCP (Pierre Darmon) +Organization: IBM Research, Yorktown Heights, N.Y. + +The following are the Turbo Pascal source files for uudecode and uuencode, +modified from the net posting to display the remaining bytes to be processed, +instead of filling up the screen with periods. It also displays the percentage +left. See my previous posting to net.micro,net.micro.pc and net.sources for +details. + +Enjoy! + +-- + +Pierre Darmon, IBM Thomas J. Watson Research Center. +.....seismo!philabs!polaris!darmon. +darmon.yktvmz.ibm@csnet-relay diff --git a/contrib/shar.sh b/contrib/shar.sh new file mode 100644 index 0000000..3a9783a --- /dev/null +++ b/contrib/shar.sh @@ -0,0 +1,176 @@ +#!/bin/sh +# UNISRC_ID: @(#)shar.sh 27.1 84/12/17 +: Make a shell archive package + +# Usage: $0 [-b] [-c] [-t] [-v] files... > package +# See the manual entry for details. + + +# Initialize: + +diagnostic='eval echo >&2' # diagnostics to stderr by default. +trap '$diagnostic "$0: quitting early"; exit 1' 1 2 3 15 +base_option=FALSE # use pathnames, not basenames. +check_option=FALSE # don't generate integrity check. +USAGE='Usage: $0 \[-b] \[-c] \[-t] \[-v] files... \> package' + + +# Extract and digest options, if any: +# +# Un-comment the "-)" line below to treat single dashes as a no-op. +# Commented means single dashes elicit a usage diagnostic. + +while [ -n "$1" ] # while there are more arguments, +do # digest them; stop when you find a non-option. + case "$1" in + -b) base_option=TRUE; shift;; + -c) check_option=TRUE; shift;; + -v) verbose=TRUE; shift;; + -t) verbose=TRUE; diagnostic='eval echo >/dev/tty'; shift;; +### -) shift;; # if uncommented, eat single dashes. + -*) $diagnostic $USAGE; exit 1;; # die at illegal options. + *) break;; # non-option found. + esac +done + + +# Check remaining arguments, which should be just a list of files: + +if [ $# = 0 ] +then # no arguments left! + $diagnostic $USAGE + exit 1 +fi + + +# Check the cupboard to see if the ingredients are all there: + +contents='' # no files so far. +contdirs='' # no directories so far. + +for arg # for all files specified, +do # establish the archive name. + if [ -f "$arg" ] + then # file exists and is not a directory. + case $base_option in + TRUE) unpack_name=`basename "$arg"` ;; + FALSE) unpack_name="$arg" ;; + esac + + contents="$contents $unpack_name" + + elif [ -d "$arg" ] + then # file exists and is a directory. + case $base_option in + TRUE) $diagnostic '$0: cannot archive directory "$arg" with -b option.' + exit 1 ;; + FALSE) contdirs="$contdirs $arg/ " ;; + esac + + else # not a plain file and not a directory. + $diagnostic '$0: cannot archive "$arg"' + exit 1 + fi +done + + +# Emit the prologue: +# (The leading newline is for those who type csh instead of sh.) + +cat < \"$unpack_name\" <<'$separator'" + sed -e 's/^[.~@]/@&/' -e 's/^From/@&/' "$arg" + echo $separator + fi + + # Emit chmod to set permissions on the extracted file; + # this keels over if the filename contains "?". + ls -ld $arg | sed \ + -e 's/^.\(...\)\(...\)\(...\).*/u=\1,g=\2,o=\3/' \ + -e 's/-//g' \ + -e 's?.*?chmod & '"$unpack_name?" + echo " " +done + + +# If the -c option was given, emit the checking epilogue: +# (The sed script converts files to basenames so it works regardless of -b.) + +if [ $check_option = TRUE ] +then + echo 'echo Inspecting for damage in transit...' + echo 'temp=/tmp/shar$$; dtemp=/tmp/.shar$$' + echo 'trap "rm -f $temp $dtemp; exit" 0 1 2 3 15' + echo 'cat > $temp <<\!!!' + case $base_option in + TRUE) wc $@ | sed 's=[^ ]*/==' ;; + FALSE) wc $contents | sed 's=[^ ]*/==' ;; + esac + echo '!!!' + echo "wc $contents | sed 's=[^ ]*/==' | "'diff -b $temp - >$dtemp' + echo 'if [ -s $dtemp ]' + echo 'then echo "Ouch [diff of wc output]:" ; cat $dtemp' + echo 'else echo "No problems found."' + echo 'fi' +fi + + +# Finish up: + +echo 'exit 0' # sharchives unpack even if junk follows. +exit 0 diff --git a/contrib/shar2.sh b/contrib/shar2.sh new file mode 100644 index 0000000..e7a6b6a --- /dev/null +++ b/contrib/shar2.sh @@ -0,0 +1,74 @@ +#!/bin/sh - +# +# Copyright (c) 1990 The Regents of the University of California. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This product includes software developed by the University of +# California, Berkeley and its contributors. +# 4. Neither the name of the University nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# @(#)shar.sh 5.2 (Berkeley) 5/23/90 +# + +if [ $# -eq 0 ]; then + echo 'usage: shar file ...' + exit 1 +fi + +cat << EOF +# This is a shell archive. Save it in a file, remove anything before +# this line, and then unpack it by entering "sh file". Note, it may +# create directories; files and directories will be owned by you and +# have default permissions. +# +# This archive contains: +# +EOF + +for i +do + echo "# $i" +done + +echo "#" + +for i +do + if [ -d $i ]; then + echo "echo c - $i" + echo "mkdir $i > /dev/null 2>&1" + else + echo "echo x - $i" + echo "sed 's/^X//' >$i << 'END-of-$i'" + sed 's/^/X/' $i + echo "END-of-$i" + fi +done +echo exit +echo "" + +exit 0 diff --git a/contrib/uudecode.bas b/contrib/uudecode.bas new file mode 100644 index 0000000..ff7fc30 --- /dev/null +++ b/contrib/uudecode.bas @@ -0,0 +1,78 @@ +1000 KEY OFF +1001 DEFINT A-Z +1010 REM Trap error opening input file +1020 ON ERROR GOTO 1600 +1030 CLS +1040 LOCATE 5,11 +1050 PRINT STRING$(40," ") +1060 LOCATE 5,11 +1070 INPUT "Enter name of input file: ", INFILE$ +1080 OPEN INFILE$ FOR INPUT AS #1 +1090 LOCATE 8,10 +1100 PRINT STRING$(40," ") +1110 REM Trap error opening output file +1120 ON ERROR GOTO 1640 +1130 LOCATE 8,10 +1140 INPUT "Enter name of output file: ", OUTFILE$ +1150 OPEN "R", #2,OUTFILE$, 1 +1160 FIELD #2, 1 AS N$ +1170 REM Trap error at end of file +1180 ON ERROR GOTO 1680 +1190 REM Search for header line +1200 LINE INPUT #1,A$ +1210 IF LEFT$(A$,5) <>"begin" THEN 1200 +1220 LOCATE 11,10 +1230 PRINT "Header = ";A$ +1240 SP = ASC(" ") +1250 DIM BUF(100) +1260 RECNO# = 1 +1270 REM Main loop +1280 LINE INPUT #1, A$ +1290 P = 0 +1300 COUNT = ASC(LEFT$(A$,1)) - SP +1310 IF COUNT = 64 THEN COUNT = 0 +1320 IF COUNT = 0 THEN 1560 +1330 ADJ = COUNT MOD 4 +1340 FOR I = 2 TO LEN(A$) STEP 4 +1350 X1 = ASC(MID$(A$,I,I)) - SP +1360 IF X1 = 64 THEN X1 = 0 +1370 X2 = ASC(MID$(A$,I+1,I+1)) - SP +1380 IF X2 = 64 THEN X2 = 0 +1390 X3 = ASC(MID$(A$,I+2,I+2)) - SP +1400 IF X3 = 64 THEN X3 = 0 +1410 X4 = ASC(MID$(A$,I+3,I+3)) - SP +1420 IF X4 = 64 THEN X4 = 0 +1430 P = P + 1 +1440 BUF(P) = (X2\16) + (X1*4) +1450 P = P + 1 +1460 BUF(P) = (X3\4) + ((X2 MOD 16) * 16) +1470 P = P + 1 +1480 BUF(P) = X4 + ((X3 MOD 4) * 64) +1490 NEXT I +1500 FOR I = 1 TO P +1510 LSET N$ = CHR$(BUF(I)) +1520 PUT #2, RECNO# +1530 RECNO# = RECNO# + 1 +1540 NEXT I +1550 GOTO 1280 +1560 END +1570 REM +1580 REM Error trapping routines +1590 REM +1600 LOCATE 22,20 +1610 PRINT "Can't open input file" +1620 GOSUB 1740 +1630 RESUME 1020 +1640 LOCATE 22,20 +1650 PRINT "Can't open output file" +1660 GOSUB 1740 +1670 RESUME 1090 +1680 LOCATE 22,20 +1690 PRINT "Header line not found" +1700 GOSUB 1740 +1710 LOCATE 24,1 +1720 END +1740 FOR I = 1 TO 5000: NEXT I +1750 LOCATE 22,20 +1760 PRINT STRING$(30," ") +1770 RETURN diff --git a/contrib/uudecode.pas b/contrib/uudecode.pas new file mode 100644 index 0000000..2c80fef --- /dev/null +++ b/contrib/uudecode.pas @@ -0,0 +1,224 @@ +program uudecode; + + CONST defaultSuffix = '.uue'; + offset = 32; + + TYPE string80 = string[80]; + + VAR infile: text; + fi : file of byte; + outfile: file of byte; + lineNum: integer; + line: string80; + size,remaining :real; + + procedure Abort(message: string80); + + begin {abort} + writeln; + if lineNum > 0 then write('Line ', lineNum, ': '); + writeln(message); + halt + end; {Abort} + + procedure NextLine(var s: string80); + + begin {NextLine} + LineNum := succ(LineNum); + {write('.');} + readln(infile, s); + remaining:=remaining-length(s)-2; {-2 is for CR/LF} + write('bytes remaining: ',remaining:7:0,' (', + remaining/size*100.0:3:0,'%)',chr(13)); + end; {NextLine} + + procedure Init; + + procedure GetInFile; + + VAR infilename: string80; + + begin {GetInFile} + if ParamCount = 0 then abort ('Usage: uudecode '); + infilename := ParamStr(1); + if pos('.', infilename) = 0 + then infilename := concat(infilename, defaultSuffix); + assign(infile, infilename); + {$i-} + reset(infile); + {$i+} + if IOresult > 0 then abort (concat('Can''t open ', infilename)); + writeln ('Decoding ', infilename); + assign(fi,infilename); reset(fi); + size:=FileSize(fi); close(fi); + if size < 0 then size:=size+65536.0; + remaining:=size; + end; {GetInFile} + + procedure GetOutFile; + + var header, mode, outfilename: string80; + ch: char; + + procedure ParseHeader; + + VAR index: integer; + + Procedure NextWord(var word:string80; var index: integer); + + begin {nextword} + word := ''; + while header[index] = ' ' do + begin + index := succ(index); + if index > length(header) then abort ('Incomplete header') + end; + while header[index] <> ' ' do + begin + word := concat(word, header[index]); + index := succ(index) + end + end; {NextWord} + + begin {ParseHeader} + header := concat(header, ' '); + index := 7; + NextWord(mode, index); + NextWord(outfilename, index) + end; {ParseHeader} + + begin {GetOutFile} + if eof(infile) then abort('Nothing to decode.'); + NextLine (header); + while not ((copy(header, 1, 6) = 'begin ') or eof(infile)) do + NextLine(header); + writeln; + if eof(infile) then abort('Nothing to decode.'); + ParseHeader; + assign(outfile, outfilename); + writeln ('Destination is ', outfilename); + {$i-} + reset(outfile); + {$i+} + if IOresult = 0 then + begin + write ('Overwrite current ', outfilename, '? [Y/N] '); + repeat + read (kbd, ch); + ch := UpCase(ch) + until ch in ['Y', 'N']; + writeln(ch); + if ch = 'N' then abort ('Overwrite cancelled.') + end; + rewrite (outfile); + end; {GetOutFile} + + begin {init} + lineNum := 0; + GetInFile; + GetOutFile; + end; { init} + + Function CheckLine: boolean; + + begin {CheckLine} + if line = '' then abort ('Blank line in file'); + CheckLine := not (line[1] in [' ', '`']) + end; {CheckLine} + + + procedure DecodeLine; + + VAR lineIndex, byteNum, count, i: integer; + chars: array [0..3] of byte; + hunk: array [0..2] of byte; + +{ procedure debug; + + var i: integer; + + procedure writebin(x: byte); + + var i: integer; + + begin + for i := 1 to 8 do + begin + write ((x and $80) shr 7); + x := x shl 1 + end; + write (' ') + end; + + begin + writeln; + for i := 0 to 3 do writebin(chars[i]); + writeln; + for i := 0 to 2 do writebin(hunk[i]); + writeln + end; } + + function nextch: char; + + begin {nextch} + lineIndex := succ(lineIndex); + if lineIndex > length(line) then abort('Line too short.'); + if not (line[lineindex] in [' '..'`']) + then abort('Illegal character in line.'); +{ write(line[lineindex]:2);} + if line[lineindex] = '`' then nextch := ' ' + else nextch := line[lineIndex] + end; {nextch} + + procedure DecodeByte; + + procedure GetNextHunk; + + VAR i: integer; + + begin {GetNextHunk} + for i := 0 to 3 do chars[i] := ord(nextch) - offset; + hunk[0] := (chars[0] shl 2) + (chars[1] shr 4); + hunk[1] := (chars[1] shl 4) + (chars[2] shr 2); + hunk[2] := (chars[2] shl 6) + chars[3]; + byteNum := 0 {; + debug } + end; {GetNextHunk} + + begin {DecodeByte} + if byteNum = 3 then GetNextHunk; + write (outfile, hunk[byteNum]); + {writeln(bytenum, ' ', hunk[byteNum]);} + byteNum := succ(byteNum) + end; {DecodeByte} + + begin {DecodeLine} + lineIndex := 0; + byteNum := 3; + count := (ord(nextch) - offset); + for i := 1 to count do DecodeByte + end; {DecodeLine} + + procedure terminate; + + var trailer: string80; + + begin {terminate} + if eof(infile) then abort ('Abnormal end.'); + NextLine (trailer); + if length (trailer) < 3 then abort ('Abnormal end.'); + if copy (trailer, 1, 3) <> 'end' then abort ('Abnormal end.'); + close (infile); + close (outfile) + end; + + begin {uudecode} + init; + NextLine(line); + while CheckLine do + begin + DecodeLine; + NextLine(line) + end; + terminate + end. diff --git a/contrib/uudecode.pl b/contrib/uudecode.pl new file mode 100644 index 0000000..42f090f --- /dev/null +++ b/contrib/uudecode.pl @@ -0,0 +1,24 @@ +# uuencode in Perl. +# Copyright (C) 1995 Free Software Foundation, Inc. +# François Pinard , 1995. + +# `perl uudecode.pl FILES' will decode all uuencoded files found in +# all input FILES, stripping headers and other non uuencoded data. + +while (<>) +{ + if (/^begin [0-7][0-7][0-7] ([^\n ]+)$/) + { + open (OUTPUT, ">$1") || die "Cannot create $1\n"; + binmode OUTPUT; + while (<>) + { + last if /^end$/; + $block = unpack ("u", $_); + print OUTPUT $block; + } + close OUTPUT; + } +} + +exit 0; diff --git a/contrib/uuencode.pas b/contrib/uuencode.pas new file mode 100644 index 0000000..c30a289 --- /dev/null +++ b/contrib/uuencode.pas @@ -0,0 +1,202 @@ +Program uuencode; + + CONST header = 'begin'; + trailer = 'end'; + defaultMode = '644'; + defaultExtension = '.uue'; + offset = 32; + charsPerLine = 60; + bytesPerHunk = 3; + sixBitMask = $3F; + + TYPE string80 = string[80]; + + VAR infile: file of byte; + outfile: text; + infilename, outfilename, mode: string80; + lineLength, numbytes, bytesInLine: integer; + line: array [0..59] of char; + hunk: array [0..2] of byte; + chars: array [0..3] of byte; + size,remaining :real; + +{ procedure debug; + + var i: integer; + + procedure writebin(x: byte); + + var i: integer; + + begin + for i := 1 to 8 do + begin + write ((x and $80) shr 7); + x := x shl 1 + end; + write (' ') + end; + + begin + for i := 0 to 2 do writebin(hunk[i]); + writeln; + for i := 0 to 3 do writebin(chars[i]); + writeln; + for i := 0 to 3 do writebin(chars[i] and sixBitMask); + writeln + end; } + + procedure Abort (message: string80); + + begin {abort} + writeln(message); + close(infile); + close(outfile); + halt + end; {abort} + + procedure Init; + + procedure GetFiles; + + VAR i: integer; + temp: string80; + ch: char; + + begin {GetFiles} + if ParamCount < 1 then abort ('No input file specified.'); + infilename := ParamStr(1); + {$I-} + assign (infile, infilename); + reset (infile); + {$i+} + if IOResult > 0 then abort (concat ('Can''t open file ', infilename)); + size:=FileSize(infile); + if size < 0 then size:=size+65536.0; + remaining:=size; + write('Uuencoding file ', infilename); + + i := pos('.', infilename); + if i = 0 + then outfilename := infilename + else outfilename := copy (infilename, 1, pred(i)); + mode := defaultMode; + if ParamCount > 1 then + for i := 2 to ParamCount do + begin + temp := Paramstr(i); + if temp[1] in ['0'..'9'] + then mode := temp + else outfilename := temp + end; + if pos ('.', outfilename) = 0 + then outfilename := concat(outfilename, defaultExtension); + assign (outfile, outfilename); + writeln (' to file ', outfilename, '.'); + + {$i-} + reset(outfile); + {$i+} + if IOresult = 0 then + begin + Write ('Overwrite current ', outfilename, '? [Y/N] '); + repeat + read (kbd, ch); + ch := Upcase(ch) + until ch in ['Y', 'N']; + writeln (ch); + if ch = 'N' then abort(concat (outfilename, ' not overwritten.')) + end; + close(outfile); + + {$i-} + rewrite(outfile); + {$i+} + if ioresult > 0 then abort(concat('Can''t open ', outfilename)); + end; {getfiles} + + begin {Init} + GetFiles; + bytesInLine := 0; + lineLength := 0; + numbytes := 0; + writeln (outfile, header, ' ', mode, ' ', infilename); + end; {init} + + procedure FlushLine; + + VAR i: integer; + + procedure writeout(ch: char); + + begin {writeout} + if ch = ' ' then write(outfile, '`') + else write(outfile, ch) + end; {writeout} + + begin {FlushLine} + {write ('.');} + write('bytes remaining: ',remaining:7:0,' (', + remaining/size*100.0:3:0,'%)',chr(13)); + writeout(chr(bytesInLine + offset)); + for i := 0 to pred(lineLength) do + writeout(line[i]); + writeln (outfile); + lineLength := 0; + bytesInLine := 0 + end; {FlushLine} + + procedure FlushHunk; + + VAR i: integer; + + begin {FlushHunk} + if lineLength = charsPerLine then FlushLine; + chars[0] := hunk[0] shr 2; + chars[1] := (hunk[0] shl 4) + (hunk[1] shr 4); + chars[2] := (hunk[1] shl 2) + (hunk[2] shr 6); + chars[3] := hunk[2] and sixBitMask; + {debug;} + for i := 0 to 3 do + begin + line[lineLength] := chr((chars[i] and sixBitMask) + offset); + {write(line[linelength]:2);} + lineLength := succ(lineLength) + end; + {writeln;} + bytesInLine := bytesInLine + numbytes; + numbytes := 0 + end; {FlushHunk} + + procedure encode1; + + begin {encode1}; + if numbytes = bytesperhunk then flushhunk; + read (infile, hunk[numbytes]); + remaining:=remaining-1; + numbytes := succ(numbytes) + end; {encode1} + + procedure terminate; + + begin {terminate} + if numbytes > 0 then flushhunk; + if lineLength > 0 + then + begin + flushLine; + flushLine; + end + else flushline; + writeln (outfile, trailer); + close (outfile); + close (infile); + end; {terminate} + + + begin {uuencode} + init; + while not eof (infile) do encode1; + terminate; + writeln; + end. {uuencode} diff --git a/contrib/uuencode.pl b/contrib/uuencode.pl new file mode 100644 index 0000000..e15f71d --- /dev/null +++ b/contrib/uuencode.pl @@ -0,0 +1,10 @@ +# uuencode in Perl - non tested. +# Copyright (C) 1995 Free Software Foundation, Inc. +# François Pinard , 1995. + +print "begin 644 $ARGV[0]\n"; +print pack ("u", $bloc) while read (STDIN, $bloc, 45); +print "`\n"; +print "end\n"; + +exit 0; diff --git a/depcomp b/depcomp new file mode 100755 index 0000000..ca5ea4e --- /dev/null +++ b/depcomp @@ -0,0 +1,584 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2006-10-15.18 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 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., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, 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 . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +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 + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +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. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + 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. In older versions, 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. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # 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" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + 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$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + # Add `dependent.h:' lines. + sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +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 + # With Tru64 cc, shared objects can also be used to make a + # static library. This mechanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space 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 preprocessed 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'. + 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 + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $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 $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # 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 ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + 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 preprocessed 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 -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [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 preprocessed 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 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 0000000..91b43f1 --- /dev/null +++ b/doc/Makefile.am @@ -0,0 +1,47 @@ +## Makefile for the doc subdirectory of the GNU NLS Utilities +## +## Copyright (C) 1995, 1996, 2005, 2007 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 3, 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., +## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +## Process this file with automake to produce Makefile.in. + +info_TEXINFOS = sharutils.texi + +dist_man1_MANS = shar.1 unshar.1 compress-dummy.1 +dist_man5_MANS = + +if UUCODE + dist_man1_MANS += uuencode.1 + dist_man5_MANS += uuencode.5 + man1_MANS = uudecode.1 +endif + +CLEANFILES = $(man1_MANS) + +EXTRA_DIST = doclicense.texi + +uudecode.1: Makefile + man1base=`echo $(man1dir) | sed 's@.*/\(.*\)@\1@'`; \ + echo ".so $$man1base/uuencode.1" > $@ + +sharutils.txt : + makeinfo --no-split --fill-column=70 --paragraph-indent=0 --no-headers \ + --output=$@ sharutils.texi + +gnudocs: sharutils.txt sharutils.info + @chmod +x ${top_srcdir}/doc/mkgnudoc.sh ; \ + MAKE=$(MAKE) ; export MAKE ; \ + ${top_srcdir}/doc/mkgnudoc.sh $(PACKAGE_STRING) diff --git a/doc/Makefile.in b/doc/Makefile.in new file mode 100644 index 0000000..ad67689 --- /dev/null +++ b/doc/Makefile.in @@ -0,0 +1,745 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 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@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +@UUCODE_TRUE@am__append_1 = uuencode.1 +@UUCODE_TRUE@am__append_2 = uuencode.5 +subdir = doc +DIST_COMMON = $(dist_man1_MANS) $(dist_man5_MANS) \ + $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/stamp-vti $(srcdir)/version.texi ansi2knr.1 mdate-sh \ + texinfo.tex +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/glibc2.m4 $(top_srcdir)/m4/glibc21.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intdiv0.m4 \ + $(top_srcdir)/m4/intmax.m4 $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-posix.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/realloc.m4 \ + $(top_srcdir)/m4/sharutils.m4 $(top_srcdir)/m4/signed.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/xstrtoimax.m4 \ + $(top_srcdir)/version.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +INFO_DEPS = $(srcdir)/sharutils.info +am__TEXINFO_TEX_DIR = $(srcdir) +DVIS = sharutils.dvi +PDFS = sharutils.pdf +PSS = sharutils.ps +HTMLS = sharutils.html +TEXINFOS = sharutils.texi +TEXI2DVI = texi2dvi +TEXI2PDF = $(TEXI2DVI) --pdf --batch +MAKEINFOHTML = $(MAKEINFO) --html +AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) +DVIPS = dvips +am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" \ + "$(DESTDIR)$(man5dir)" +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +man1dir = $(mandir)/man1 +man5dir = $(mandir)/man5 +NROFF = nroff +MANS = $(dist_man1_MANS) $(dist_man5_MANS) $(man1_MANS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ADD_SCRIPT = @ADD_SCRIPT@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMPRESS = @COMPRESS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +DIRENT_HEADER = @DIRENT_HEADER@ +DIST_ALPHA = @DIST_ALPHA@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_COMPRESS_LINK = @INSTALL_COMPRESS_LINK@ +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@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAILER = @MAILER@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +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@ +PERL = @PERL@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TAR = @TAR@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +info_TEXINFOS = sharutils.texi +dist_man1_MANS = shar.1 unshar.1 compress-dummy.1 $(am__append_1) +dist_man5_MANS = $(am__append_2) +@UUCODE_TRUE@man1_MANS = uudecode.1 +CLEANFILES = $(man1_MANS) +EXTRA_DIST = doclicense.texi +all: all-am + +.SUFFIXES: +.SUFFIXES: .dvi .html .info .pdf .ps .texi +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits doc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +.texi.info: + restore=: && backupdir="$(am__leading_dot)am$$$$" && \ + am__cwd=`pwd` && cd $(srcdir) && \ + rm -rf $$backupdir && mkdir $$backupdir && \ + if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ + for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ + if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ + done; \ + else :; fi && \ + cd "$$am__cwd"; \ + if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $@ $<; \ + then \ + rc=0; \ + cd $(srcdir); \ + else \ + rc=$$?; \ + cd $(srcdir) && \ + $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ + fi; \ + rm -rf $$backupdir; exit $$rc + +.texi.dvi: + TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2DVI) $< + +.texi.pdf: + TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2PDF) $< + +.texi.html: + rm -rf $(@:.html=.htp) + if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $(@:.html=.htp) $<; \ + then \ + rm -rf $@; \ + if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ + mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \ + else \ + if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ + rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \ + exit 1; \ + fi +$(srcdir)/sharutils.info: sharutils.texi $(srcdir)/version.texi +sharutils.dvi: sharutils.texi $(srcdir)/version.texi +sharutils.pdf: sharutils.texi $(srcdir)/version.texi +sharutils.html: sharutils.texi $(srcdir)/version.texi +$(srcdir)/version.texi: $(srcdir)/stamp-vti +$(srcdir)/stamp-vti: sharutils.texi $(top_srcdir)/configure + @(dir=.; test -f ./sharutils.texi || dir=$(srcdir); \ + set `$(SHELL) $(srcdir)/mdate-sh $$dir/sharutils.texi`; \ + echo "@set UPDATED $$1 $$2 $$3"; \ + echo "@set UPDATED-MONTH $$2 $$3"; \ + echo "@set EDITION $(VERSION)"; \ + echo "@set VERSION $(VERSION)") > vti.tmp + @cmp -s vti.tmp $(srcdir)/version.texi \ + || (echo "Updating $(srcdir)/version.texi"; \ + cp vti.tmp $(srcdir)/version.texi) + -@rm -f vti.tmp + @cp $(srcdir)/version.texi $@ + +mostlyclean-vti: + -rm -f vti.tmp + +maintainer-clean-vti: + -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi +.dvi.ps: + TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + $(DVIPS) -o $@ $< + +uninstall-dvi-am: + @$(NORMAL_UNINSTALL) + @list='$(DVIS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ + rm -f "$(DESTDIR)$(dvidir)/$$f"; \ + done + +uninstall-html-am: + @$(NORMAL_UNINSTALL) + @list='$(HTMLS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ + rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ + done + +uninstall-info-am: + @$(PRE_UNINSTALL) + @if test -d '$(DESTDIR)$(infodir)' && \ + (install-info --version && \ + install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ + install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ + done; \ + else :; fi + @$(NORMAL_UNINSTALL) + @list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ + (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ + echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ + rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ + else :; fi); \ + done + +uninstall-pdf-am: + @$(NORMAL_UNINSTALL) + @list='$(PDFS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ + done + +uninstall-ps-am: + @$(NORMAL_UNINSTALL) + @list='$(PSS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ + rm -f "$(DESTDIR)$(psdir)/$$f"; \ + done + +dist-info: $(INFO_DEPS) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; \ + for base in $$list; do \ + case $$base in \ + $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$base; then d=.; else d=$(srcdir); fi; \ + base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ + for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ + if test -f $$file; then \ + relfile=`expr "$$file" : "$$d/\(.*\)"`; \ + test -f $(distdir)/$$relfile || \ + cp -p $$file $(distdir)/$$relfile; \ + else :; fi; \ + done; \ + done + +mostlyclean-aminfo: + -rm -rf sharutils.aux sharutils.cp sharutils.cps sharutils.fn sharutils.fns \ + sharutils.ky sharutils.kys sharutils.log sharutils.pg \ + sharutils.pgs sharutils.tmp sharutils.toc sharutils.tp \ + sharutils.tps sharutils.vr sharutils.vrs sharutils.dvi \ + sharutils.pdf sharutils.ps sharutils.html + +maintainer-clean-aminfo: + @list='$(INFO_DEPS)'; for i in $$list; do \ + i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ + echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ + rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ + done +install-man1: $(man1_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man1dir)" || $(MKDIR_P) "$(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/^.*\\.//'`; \ + 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 " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \ + rm -f "$(DESTDIR)$(man1dir)/$$inst"; \ + done +install-man5: $(man5_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man5dir)" || $(MKDIR_P) "$(DESTDIR)$(man5dir)" + @list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.5*) 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 \ + 5*) ;; \ + *) ext='5' ;; \ + 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)$(man5dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst"; \ + done +uninstall-man5: + @$(NORMAL_UNINSTALL) + @list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.5*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 5*) ;; \ + *) ext='5' ;; \ + esac; \ + 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)$(man5dir)/$$inst'"; \ + rm -f "$(DESTDIR)$(man5dir)/$$inst"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + 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 + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-info +check-am: all-am +check: check-am +all-am: Makefile $(INFO_DEPS) $(MANS) +installdirs: + for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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 mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: $(DVIS) + +html: html-am + +html-am: $(HTMLS) + +info: info-am + +info-am: $(INFO_DEPS) + +install-data-am: install-info-am install-man + +install-dvi: install-dvi-am + +install-dvi-am: $(DVIS) + @$(NORMAL_INSTALL) + test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)" + @list='$(DVIS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(dvidir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(dvidir)/$$f"; \ + done +install-exec-am: + +install-html: install-html-am + +install-html-am: $(HTMLS) + @$(NORMAL_INSTALL) + test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)" + @list='$(HTMLS)'; for p in $$list; do \ + if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + if test -d "$$d$$p"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ + $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ + echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \ + else \ + echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \ + fi; \ + done +install-info: install-info-am + +install-info-am: $(INFO_DEPS) + @$(NORMAL_INSTALL) + test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ + for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ + $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ + if test -f $$ifile; then \ + relfile=`echo "$$ifile" | sed 's|^.*/||'`; \ + echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \ + $(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \ + else : ; fi; \ + done; \ + done + @$(POST_INSTALL) + @if (install-info --version && \ + install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ + install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ + done; \ + else : ; fi +install-man: install-man1 install-man5 + +install-pdf: install-pdf-am + +install-pdf-am: $(PDFS) + @$(NORMAL_INSTALL) + test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)" + @list='$(PDFS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/$$f"; \ + done +install-ps: install-ps-am + +install-ps-am: $(PSS) + @$(NORMAL_INSTALL) + test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)" + @list='$(PSS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(psdir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(psdir)/$$f"; \ + done +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-vti + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-aminfo mostlyclean-generic mostlyclean-vti + +pdf: pdf-am + +pdf-am: $(PDFS) + +ps: ps-am + +ps-am: $(PSS) + +uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \ + uninstall-man uninstall-pdf-am uninstall-ps-am + +uninstall-man: uninstall-man1 uninstall-man5 + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic dist-info \ + distclean distclean-generic distdir dvi dvi-am html html-am \ + info info-am install install-am install-data install-data-am \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-man1 install-man5 install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-aminfo maintainer-clean-generic \ + maintainer-clean-vti mostlyclean mostlyclean-aminfo \ + mostlyclean-generic mostlyclean-vti pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-dvi-am uninstall-html-am \ + uninstall-info-am uninstall-man uninstall-man1 uninstall-man5 \ + uninstall-pdf-am uninstall-ps-am + + +uudecode.1: Makefile + man1base=`echo $(man1dir) | sed 's@.*/\(.*\)@\1@'`; \ + echo ".so $$man1base/uuencode.1" > $@ + +sharutils.txt : + makeinfo --no-split --fill-column=70 --paragraph-indent=0 --no-headers \ + --output=$@ sharutils.texi + +gnudocs: sharutils.txt sharutils.info + @chmod +x ${top_srcdir}/doc/mkgnudoc.sh ; \ + MAKE=$(MAKE) ; export MAKE ; \ + ${top_srcdir}/doc/mkgnudoc.sh $(PACKAGE_STRING) +# 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/doc/ansi2knr.1 b/doc/ansi2knr.1 new file mode 100644 index 0000000..d52e743 --- /dev/null +++ b/doc/ansi2knr.1 @@ -0,0 +1,25 @@ +.TH ANSI2KNR 1 "31 December 1990" +.SH NAME +ansi2knr \- convert ANSI C to Kernighan & Ritchie C +.SH SYNOPSIS +.I ansi2knr +input_file output_file +.SH DESCRIPTION +If no output_file is supplied, output goes to stdout. +.br +There are no error messages. +.sp +.I ansi2knr +recognizes functions by seeing a non-keyword identifier at the left margin, followed by a left parenthesis, with a right parenthesis as the last character on the line. It will recognize a multi-line header if the last character on each line but the last is a left parenthesis or comma. These algorithms ignore whitespace and comments, except that the function name must be the first thing on the line. +.sp +The following constructs will confuse it: +.br + - Any other construct that starts at the left margin and follows the above syntax (such as a macro or function call). +.br + - Macros that tinker with the syntax of the function header. +.SH REPORTING BUGS +Report bugs to . Please put +.I sharutils +or +.I ansi2knr +in the subject line. It helps to spot the message. diff --git a/doc/compress-dummy.1 b/doc/compress-dummy.1 new file mode 100644 index 0000000..e69de29 diff --git a/doc/doclicense.texi b/doc/doclicense.texi new file mode 100644 index 0000000..99822ff --- /dev/null +++ b/doc/doclicense.texi @@ -0,0 +1,395 @@ +@c -*-texinfo-*- +@node GNU Free Documentation License, , resync, top +@appendix GNU Free Documentation License +@center Version 1.1, March 2000 +@ifnottex +@menu +* How to use this License for your documents:: +@end menu +@end ifnottex +@display +Copyright (C) 2000 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +@end display +@iftex +@sp1 +@end iftex +@enumerate 0 +@item +PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +written document ``free'' in the sense of freedom: to assure everyone +the effective freedom to copy and redistribute it, with or without +modifying it, either commercially or noncommercially. Secondarily, +this License preserves for the author and publisher a way to get +credit for their work, while not being considered responsible for +modifications made by others. + +This License is a kind of ``copyleft'', which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. +@iftex +@sp1 +@end iftex +@item +APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work that contains a +notice placed by the copyright holder saying it can be distributed +under the terms of this License. The ``Document'', below, refers to any +such manual or work. Any member of the public is a licensee, and is +addressed as ``you''. + +A ``Modified Version'' of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A ``Secondary Section'' is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall subject +(or to related matters) and contains nothing that could fall directly +within that overall subject. (For example, if the Document is in part a +textbook of mathematics, a Secondary Section may not explain any +mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The ``Invariant Sections'' are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. + +The ``Cover Texts'' are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. + +A ``Transparent'' copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, whose contents can be viewed and edited directly and +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup has been designed to thwart or discourage +subsequent modification by readers is not Transparent. A copy that is +not ``Transparent'' is called ``Opaque''. + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML designed for human modification. Opaque formats include +PostScript, PDF, proprietary formats that can be read and edited only +by proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML produced by some word processors for output +purposes only. + +The ``Title Page'' means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, ``Title Page'' means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. +@iftex +@sp1 +@end iftex +@item +VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. +@iftex +@sp1 +@end iftex +@item +COPYING IN QUANTITY + +If you publish printed copies of the Document numbering more than 100, +and the Document's license notice requires Cover Texts, you must enclose +the copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a publicly-accessible computer-network location containing a complete +Transparent copy of the Document, free of added material, which the +general network-using public has access to download anonymously at no +charge using public-standard network protocols. If you use the latter +option, you must take reasonably prudent steps, when you begin +distribution of Opaque copies in quantity, to ensure that this +Transparent copy will remain thus accessible at the stated location +until at least one year after the last time you distribute an Opaque +copy (directly or through your agents or retailers) of that edition to +the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. +@iftex +@sp1 +@end iftex +@item +MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission.@* +B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has less than five).@* +C. State on the Title page the name of the publisher of the + Modified Version, as the publisher.@* +D. Preserve all the copyright notices of the Document.@* +E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices.@* +F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below.@* +G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice.@* +H. Include an unaltered copy of this License.@* +I. Preserve the section entitled ``History'', and its title, and add to + it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section entitled ``History'' in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence.@* +J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the ``History'' section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission.@* +K. In any section entitled ``Acknowledgements'' or ``Dedications'', + preserve the section's title, and preserve in the section all the + substance and tone of each of the contributor acknowledgements + and/or dedications given therein.@* +L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles.@* +M. Delete any section entitled ``Endorsements''. Such a section + may not be included in the Modified Version.@* +N. Do not retitle any existing section as ``Endorsements'' + or to conflict in title with any Invariant Section.@* +@iftex +@sp1 +@end iftex +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section entitled ``Endorsements'', provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. +@iftex +@sp1 +@end iftex +@item +COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections entitled ``History'' +in the various original documents, forming one section entitled +``History''; likewise combine any sections entitled ``Acknowledgements'', +and any sections entitled ``Dedications''. You must delete all sections +entitled ``Endorsements.'' +@iftex +@sp1 +@end iftex +@item +COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. +@iftex +@sp1 +@end iftex +@item +AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, does not as a whole count as a Modified Version +of the Document, provided no compilation copyright is claimed for the +compilation. Such a compilation is called an ``aggregate'', and this +License does not apply to the other self-contained works thus compiled +with the Document, on account of their being thus compiled, if they +are not themselves derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one quarter +of the entire aggregate, the Document's Cover Texts may be placed on +covers that surround only the Document within the aggregate. +Otherwise they must appear on covers around the whole aggregate. +@iftex +@sp1 +@end iftex +@item +TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License provided that you also include the +original English version of this License. In case of a disagreement +between the translation and the original English version of this +License, the original English version will prevail. +@iftex +@sp1 +@end iftex +@item +TERMINATION + +You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document 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. +@iftex +@sp1 +@end iftex +@item +FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation 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. See +http://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License ``or any later version'' applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. + +@end enumerate + +@node How to use this License for your documents +@unnumberedsec ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +@smallexample +@group + + Copyright (C) @var{year} @var{your name}. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.1 + or any later version published by the Free Software Foundation; + with the Invariant Sections being @var{list their titles}, with the + Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}. + A copy of the license is included in the section entitled ``GNU + Free Documentation License''. +@end group +@end smallexample +If you have no Invariant Sections, write ``with no Invariant Sections'' +instead of saying which ones are invariant. If you have no +Front-Cover Texts, write ``no Front-Cover Texts'' instead of +``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. diff --git a/doc/mdate-sh b/doc/mdate-sh new file mode 100755 index 0000000..cd916c0 --- /dev/null +++ b/doc/mdate-sh @@ -0,0 +1,201 @@ +#!/bin/sh +# Get modification time of a file or directory and pretty-print it. + +scriptversion=2005-06-29.22 + +# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005 Free Software +# Foundation, Inc. +# written by Ulrich Drepper , June 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +case $1 in + '') + echo "$0: No file. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: mdate-sh [--help] [--version] FILE + +Pretty-print the modification time of FILE. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "mdate-sh $scriptversion" + exit $? + ;; +esac + +# Prevent date giving response in another language. +LANG=C +export LANG +LC_ALL=C +export LC_ALL +LC_TIME=C +export LC_TIME + +# GNU ls changes its time format in response to the TIME_STYLE +# variable. Since we cannot assume `unset' works, revert this +# variable to its documented default. +if test "${TIME_STYLE+set}" = set; then + TIME_STYLE=posix-long-iso + export TIME_STYLE +fi + +save_arg1=$1 + +# Find out how to get the extended ls output of a file or directory. +if ls -L /dev/null 1>/dev/null 2>&1; then + ls_command='ls -L -l -d' +else + ls_command='ls -l -d' +fi + +# A `ls -l' line looks as follows on OS/2. +# drwxrwx--- 0 Aug 11 2001 foo +# This differs from Unix, which adds ownership information. +# drwxrwx--- 2 root root 4096 Aug 11 2001 foo +# +# To find the date, we split the line on spaces and iterate on words +# until we find a month. This cannot work with files whose owner is a +# user named `Jan', or `Feb', etc. However, it's unlikely that `/' +# will be owned by a user whose name is a month. So we first look at +# the extended ls output of the root directory to decide how many +# words should be skipped to get the date. + +# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. +set x`ls -l -d /` + +# Find which argument is the month. +month= +command= +until test $month +do + shift + # Add another shift to the command. + command="$command shift;" + case $1 in + Jan) month=January; nummonth=1;; + Feb) month=February; nummonth=2;; + Mar) month=March; nummonth=3;; + Apr) month=April; nummonth=4;; + May) month=May; nummonth=5;; + Jun) month=June; nummonth=6;; + Jul) month=July; nummonth=7;; + Aug) month=August; nummonth=8;; + Sep) month=September; nummonth=9;; + Oct) month=October; nummonth=10;; + Nov) month=November; nummonth=11;; + Dec) month=December; nummonth=12;; + esac +done + +# Get the extended ls output of the file or directory. +set dummy x`eval "$ls_command \"\$save_arg1\""` + +# Remove all preceding arguments +eval $command + +# Because of the dummy argument above, month is in $2. +# +# On a POSIX system, we should have +# +# $# = 5 +# $1 = file size +# $2 = month +# $3 = day +# $4 = year or time +# $5 = filename +# +# On Darwin 7.7.0 and 7.6.0, we have +# +# $# = 4 +# $1 = day +# $2 = month +# $3 = year or time +# $4 = filename + +# Get the month. +case $2 in + Jan) month=January; nummonth=1;; + Feb) month=February; nummonth=2;; + Mar) month=March; nummonth=3;; + Apr) month=April; nummonth=4;; + May) month=May; nummonth=5;; + Jun) month=June; nummonth=6;; + Jul) month=July; nummonth=7;; + Aug) month=August; nummonth=8;; + Sep) month=September; nummonth=9;; + Oct) month=October; nummonth=10;; + Nov) month=November; nummonth=11;; + Dec) month=December; nummonth=12;; +esac + +case $3 in + ???*) day=$1;; + *) day=$3; shift;; +esac + +# Here we have to deal with the problem that the ls output gives either +# the time of day or the year. +case $3 in + *:*) set `date`; eval year=\$$# + case $2 in + Jan) nummonthtod=1;; + Feb) nummonthtod=2;; + Mar) nummonthtod=3;; + Apr) nummonthtod=4;; + May) nummonthtod=5;; + Jun) nummonthtod=6;; + Jul) nummonthtod=7;; + Aug) nummonthtod=8;; + Sep) nummonthtod=9;; + Oct) nummonthtod=10;; + Nov) nummonthtod=11;; + Dec) nummonthtod=12;; + esac + # For the first six month of the year the time notation can also + # be used for files modified in the last year. + if (expr $nummonth \> $nummonthtod) > /dev/null; + then + year=`expr $year - 1` + fi;; + *) year=$3;; +esac + +# The result. +echo $day $month $year + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/doc/shar.1 b/doc/shar.1 new file mode 100644 index 0000000..a53effc --- /dev/null +++ b/doc/shar.1 @@ -0,0 +1,258 @@ +.TH SHAR 1 "July 1, 2005" +.SH NAME +shar \- create shell archives +.SH SYNOPSIS +.nf +shar [ options ] file ... +shar \-S [ options ] +.fi +.SH DESCRIPTION +Shar +creates "shell archives" (or shar files) which are in text format +and can be mailed. These files may be unpacked later by executing them +with /bin/sh. The resulting archive is sent to standard out unless the +\f2\-o\f1 option is given. A wide range of features provide extensive +flexibility in manufacturing shars and in specifying shar "smartness". +Archives may be "vanilla" or comprehensive. +.SH OPTIONS +.PP +Options have a one letter version starting with \- or a long version starting +with \-\-. The exception is \f2\-\-help\f1, \f2\-\-version\f1, +\f2\-\-no-i18n\f1 and \f2\-\-print-text-domain-dir\f1 which does not +have short versions. +Mandatory arguments to long options are mandatory for short options too. +Options can be given in any order. Some options depend on each other: +.nf + The \f2\-o\f1 option is required if the \f2\-l\f1 or \f2\-L\f1 option is used. + The \f2\-n\f1 option is required if the \f2\-a\f1 option is used. + See \f2\-V\f1 below. +.fi +.SS "Giving feedback:" +.IP "\f2\-\-help\f1" +Print a help summary on standard output, then immediately exits. +.IP "\f2\-\-version\f1" +Print the version number of the program on standard output, +then immediately exits. +.IP "\f2\-q\f1 \f2\-\-quiet\f1 \f2\-\-silent\f1" +Do not output verbose messages locally when producing the archive. +.SS "Selecting files:" +.IP "\f2\-p\f1 \f2\-\-intermix-type\f1" +Allow positional parameter options. The options \f2\-B\f1, \f2\-T\f1, +\f2-z\f1 and \f2\-Z\f1 may be embedded, and files to the right of the +option will be processed in the specified mode. +.IP "\f2\-S\f1 \f2\-\-stdin-file-list\f1" +Read list of files to be packed from the standard input rather +than from the command line. Input must be in a form similar to +that generated by the find command, one filename per line. This +switch is especially useful when the command line will not hold +the list of files to be packed. For example: +.nf + +find . \-type f \-print | \\ + sort | \\ + shar \-S \-Z \-L50 \-o /somewhere/big + +.fi +If \f2\-p\f1 is specified on the command line, then the options +\f2\-B\f1, \f2\-T\f1, \f2\-z\f1 and \f2\-Z\f1 may be +included in the standard input (on a line separate from filenames). +The maximum number of lines of standard input, file names and +options, may not exceed 1024. +.SS "Splitting output:" +.IP "\f2\-o\f1 XXX \f2\-\-output-prefix=\f1XXX" +Save the archive to files XXX.01 thru XXX.nn instead of sending it to +standard out. +Must be used when the \f2\-l\f1 or the \f2\-L\f1 switches are used. +.IP "\f2\-l\f1 XX \f2\-\-whole-size-limit=\f1XX" +Limit the output file size to XXk bytes but don't split input files. +.IP "\f2\-L\f1 XX \f2\-\-split-size-limit=\f1XX" +Limit output file size to XXk bytes and split files if necessary. The archive +parts created with this option must be unpacked in correct order. +.SS "Controlling the shar headers:" +.IP "\f2\-n\f1 name \f2\-\-archive-name=\f1name" +Name of archive to be included in the header of the shar files. +See the \f2\-a\f1 switch. +.IP "\f2\-s\f1 who@where \f2\-\-submitter=\f1who@where" +Override automatically determined submitter name. +.IP "\f2\-a\f1 \f2\-\-net-headers\f1" +Allows automatic generation of headers: +.nf + Submitted-by: who@where + Archive-name: /part## +.fi +The must be given with the \f2\-n\f1 switch. +If name includes a '/' "/part" isn't used. Thus: +.RS 10m +.nf +.ta 30n +\-n xyzzy produces: + xyzzy/part01 + xyzzy/part02 + +\-n xyzzy/patch produces: + xyzzy/patch01 + xyzzy/patch02 + +\-n xyzzy/patch01. produces: + xyzzy/patch01.01 + xyzzy/patch01.02 +.RE +.fi +.IP "" +The who@where can be +explicitly stated with the \f2\-s\f1 switch if the default isn't appropriate. +Who@where is essentially built as `whoami`@`uname`. +.IP "\f2\-c\f1 \f2\-\-cut-mark\f1" +Start the shar with a cut line. A line saying 'Cut here' is placed at the +start of each output file. +.IP "\f2\-t\f1 \f2\-\-translate\f1" +Translate messages in the script. If you have set the \f2LANG\f1 environment +variable, messages printed by \f2shar\f1 will be in the specified language. +The produced script will still be emitted using messages in the lingua +franca of the computer world: English. This option will cause the script +messages to appear in the languages specified by the \f2LANG\f1 environment +variable set when the script is produced. +.SS "Selecting how files are stocked:" +.IP "\f2\-M\f1 \f2\-\-mixed-uuencode\f1" +Mixed mode. Determine if the files are text or binary and archive +correctly (default). Files found to be binary are uudecoded prior to packing +(USE OF UUENCODE IS NOT APPRECIATED BY MANY ON THE NET). +.IP "\f2\-T\f1 \f2\-\-text-files\f1" +Treat all files as text. +.IP "\f2\-B\f1 \f2\-\-uuencode\f1" +Treat all files as binary, use uuencode prior to packing. This increases the +size of the archive. The recipient must have uudecode in order to unpack. +(USE OF UUENCODE IS NOT APPRECIATED BY MANY ON THE NET). +.IP "\f2\-z\f1 \f2\-\-gzip\f1" +Gzip and uuencode all files prior to packing. The recipient must have +uudecode and gzip in order to unpack +(USE OF UUENCODE AND GZIP IS NOT APPRECIATED BY MANY ON THE NET). +.IP "\f2\-g\f1 LEVEL \f2\-\-level-for-gzip=\f1LEVEL" +When doing compression, use '\-LEVEL' as a parameter to gzip. Default is 9. +The \f2\-g\f1 option turns on the \f2\-z\f1 option by default. +.IP "\f2\-Z\f1 \f2\-\-compress\f1" +Compress and uuencode all files prior to packing. The recipient must have +uudecode and compress in order to unpack +(USE OF UUENCODE AND COMPRESS IS NOT APPRECIATED BY MANY ON THE NET). +Option \f2\-C\f1 is synonymous to \f2\-Z\f1, but is being deprecated. +.IP "\f2\-b\f1 BITS \f2\-\-bits-per-code=\f1BITS" +When doing compression, use '\-bBITS' as a parameter to compress. +The \f2\-B\f1 option turns on the \f2\-Z\f1 option by default. Default value +is 12. +.SS "Protecting against transmission errors:" +.IP "\f2\-w\f1 \f2\-\-no-character-count\f1" +Do NOT check each file with 'wc \-c' after unpack. The default is to check. +.IP "\f2\-D\f1 \f2\-\-no-md5-digest\f1" +Do NOT use 'md5sum' digest to verify the unpacked files. The default is to +check. +.IP "\f2\-F\f1 \f2\-\-force-prefix\f1" +Forces the prefix character (normally 'X' unless the parameter to the \f2\-d\f1 +option starts with 'X') to be prepended to every line even if +not required. This option may slightly increase the size of the archive, +especially if \f2\-B\f1 or \f2\-Z\f1 is used. +.IP "\f2\-d\f1 XXX \f2\-\-here-delimiter=\f1XXX" +Use XXX to delimit the files in the shar instead of SHAR_EOF. +This is for those who want to personalize their shar files. +.SS "Producing different kinds of shars:" +.IP "\f2\-V\f1 \f2\-\-vanilla-operation\f1" +Produce "vanilla" shars which rely only upon the existence of sed and +echo in the unsharing environment. In addition, "if test" must also +be supported unless the \f2\-x\f1 option is used. The \f2\-V\f1 silently +disables options offensive to the "network cop" (or "brown shirt"), +but does warn you if it is specified with \f2\-B\f1, \f2-z\f1, +\f2\-Z\f1, \f2\-p\f1 or \f2\-M\f1 (any of which does or might +require uudecode, gzip or compress in the unsharing environment). +.IP "\f2\-P\f1 \f2\-\-no-piping\f1" +Use temporary files instead of pipes in the shar file. +.IP "\f2\-x\f1 \f2\-\-no-check-existing\f1" +Overwrite existing files without checking. +If neither \f2\-x\f1 nor \f2\-X\f1 is specified, the unpack will +check for and not overwrite existing files when unpacking the archive. +If \f2\-c\f1 is passed as a parameter to the script when unpacking: + +.RS 10m +sh archive -c +.RE +.IP "" +then existing files will be overwritten unconditionally. +.IP "\f2\-X\f1 \f2\-\-query-user\f1" +When unpacking, interactively ask the user if files should be overwritten. +(DO NOT USE FOR SHARS SUBMITTED TO THE NET). +.IP "\f2\-m\f1 \f2\-\-no-timestamp\f1" +Avoid generating 'touch' commands to restore the file modification +dates when unpacking files from the archive. +.IP "\f2\-Q\f1 \f2\-\-quiet-unshar\f1" +Verbose OFF. Disables the inclusion of comments to be output when the archive +is unpacked. +.IP "\f2\-f\f1 \f2\-\-basename\f1" +Restore by filename only, rather than path. This option causes only file +names to be used, which is useful when building a shar from several +directories, or another directory. Note that if a directory name is passed +to shar, the substructure of that directory will be restored whether \f2\-f\f1 +is specified or not. +.SS "Internationalization:" +.IP "\f2\-\-no-i18n\f1" +Do not produce internationalized shell archives, use default english messages. +By default, shar produces archives that will try to output messages in +the unpackers preferred language (as determined by the LANG/LC_MESSAGES +environmental variables) when they are unpacked. +If no message file for the unpackers language is found at unpack time, +messages will be in english. +.IP "\f2\-\-print-text-domain-dir\f1" +Prints the directory shar looks in to find messages files for different +languages, then immediately exits. +.SH EXAMPLES +.nf +.ta 37n +shar *.c > cprog.shar # all C prog sources +shar \-Q *.[ch] > cprog.shar # non-verbose, .c and .h files +shar \-B \-l28 \-oarc.sh *.arc # all binary .arc files, into + # files arc.sh.01 thru arc.sh.NN +shar \-f /lcl/src/u*.c > u.sh # use only the filenames +.ta +.fi +.SH WARNINGS +.PP +No chmod or touch is ever generated for directories created when unpacking. +Thus, if a directory is given to shar, the protection and +modification dates of corresponding unpacked directory +may not match those of the original. +.PP +If a directory is passed to shar, it may be scanned more than once. Therefore, +one should be careful not change the directory while shar is running. +.PP +Be careful that the output file(s) are not included in the inputs or shar +may loop until the disk fills up. Be particularly careful when a directory +is passed to shar that the output files are not in that directory +(or a subdirectory of that directory). +.PP +Use of the \f2\-B\f1, \f2\-z\f1 or \f2\-Z\f1, and especially +\f2\-M\f1, may slow the archive process considerably, depending on +the number of files. +.PP +Use of \f2\-X\f1 produces shars which \f2WILL\f1 cause problems +with many unshar procedures. Use this feature only for archives +to be passed among agreeable parties. Certainly, \f2\-X\f1 is NOT +for shell archives which are to be submitted to Usenet. Usage of +\f2\-B\f1, \f2\-z\f1 or \f2\-Z\f1 in net shars will cause you to +be flamed off the earth. Not using \f2\-m\f1 or not using \f2\-F\f1 +may also get you occasional complaints. +.SH SEE ALSO +.PP +unshar(1) +.SH DIAGNOSTICS +.PP +Error messages for illegal or incompatible options, +for non-regular, missing or inaccessible files or for (unlikely) +memory allocation failure. +.SH AUTHORS +The shar and unshar programs is the collective work of many authors. +Many people contributed by reporting problems, suggesting +various improvements or submitting actual code. A list of +these people is in the THANKS file in the sharutils distribution. +.SH REPORTING BUGS +Report bugs to . Please put +.I sharutils +or +.I uuencode +in the subject line. It helps to spot the message. diff --git a/doc/sharutils.info b/doc/sharutils.info new file mode 100644 index 0000000..391c496 --- /dev/null +++ b/doc/sharutils.info @@ -0,0 +1,1924 @@ +This is sharutils.info, produced by makeinfo version 4.8 from +sharutils.texi. + +INFO-DIR-SECTION Archiving +START-INFO-DIR-ENTRY +* Shar utilities: (sharutils). Shell archiver, uuencode/uudecode. +END-INFO-DIR-ENTRY +INFO-DIR-SECTION Individual utilities +START-INFO-DIR-ENTRY +* mail-files: (sharutils)mail-files invocation. Send files to remote site. +* mailshar: (sharutils)mailshar invocation. Make and send a shell archive. +* shar: (sharutils)shar invocation. Make a shell archive. +* unshar: (sharutils)unshar invocation. Explode a shell archive. +* uudecode: (sharutils)uudecode invocation. Restore file from 7-bits. +* uuencode: (sharutils)uuencode invocation. Force binary file to 7-bits. +END-INFO-DIR-ENTRY + + This manual documents version 4.7 of the GNU shar utilities. + + Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005 Free Software Foundation, Inc. + + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation License, + Version 1.1 or any later version published by the Free Software + Foundation; with no Invariant Sections, with no Front-Cover Texts, + and with no Back-Cover Texts. A copy of the license is included + in the section entitled "GNU Free Documentation License". + + +File: sharutils.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir) + +GNU `shar' utilities +******************** + +This manual documents version 4.7 of the GNU shar utilities. + + Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +2003, 2004, 2005 Free Software Foundation, Inc. + + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation License, + Version 1.1 or any later version published by the Free Software + Foundation; with no Invariant Sections, with no Front-Cover Texts, + and with no Back-Cover Texts. A copy of the license is included + in the section entitled "GNU Free Documentation License". + + GNU `shar' makes so-called shell archives out of many files, +preparing them for transmission by electronic mail services, while +`unshar' helps unpacking shell archives after reception. Other tools +help using `shar' with the electronic mail system, and even allow +synchronization of remote directory trees. This is release 4.7. + +* Menu: + +* Introduction:: Introduction to this toolset +* Basic:: The basic `shar' utilities +* Wrappers:: Simple wrappers around `shar' +* Remsync:: Remote synchronisation of directories +* GNU Free Documentation License:: The license for this documentation. + + --- The Detailed Node Listing --- + +The basic `shar' utilities + +* shar invocation:: Invoking the `shar' program +* unshar invocation:: Invoking the `unshar' program +* Miscellaneous:: Miscellaneous considerations + +Invoking the `shar' program + +* Selecting:: Selecting files +* Splitting:: Splitting output +* Headers:: Controlling the shar headers +* Stocking:: Selecting how files are stocked +* Transmission:: Protecting against transmission +* Kinds:: Producing different kinds of shar + +Simple wrappers around `shar' + +* Invoking mailshar:: The `mailshar' command and arguments +* Invoking mail-files:: The `mail-files' command and arguments +* Invoking find-mailer:: The `find-mailer' command and arguments + +Remote synchronisation of directories + +* Quick start:: Quick start at using `remsync' +* Invoking remsync:: The `remsync' command and arguments +* Conveniences:: Automatic mechanisms in the `remsync' program +* Commands:: Commands for `remsync' +* Internals:: How `remsync' works +* Formats:: Related file formats +* Xremsync:: Format of the `.remsync' file +* Package:: Format of transiting packages +* Alternatives:: Other means to synchronization +* Previous:: Documentation for obsolete scripts + +The `remsync' command and arguments + +* Conveniences:: Automatic mechanisms in the `remsync' program +* Commands:: Commands for `remsync' + +Related file formats + +* Xremsync:: Format of the `.remsync' file +* Package:: Format of transiting packages + +Documentation for obsolete scripts + +* mailsync:: mailsync +* resync:: resync + +GNU Free Documentation License + +* How to use this License for your documents:: + + +File: sharutils.info, Node: Introduction, Next: Basic, Prev: Top, Up: Top + +1 Introduction to this toolset +****************************** + +GNU `uuencode' and `uudecode' have an history which roots are lost in +ages, and we will not even try to trace it. The current versions were +brought into GNU by Ian Lance Taylor, and later modernized by Ulrich +Drepper. GNU `shar' surely has a long history, too. All along this +long road, numerous users contributed various improvements. The file +`THANKS' in the distribution, as far as we know, contain the names of +all contributors we could identify, and for which email addresses are +seemingly valid. + + Please help us getting the history straight, for the following +information is somewhat approximative. James Gosling wrote the public +domain `shar 1.x'. William Davidsen rewrote it as `shar 2.x'. Warren +Tucker implemented modifications and called it `shar 3.x'. Richard +Gumpertz maintained it until 1990. Franc,ois Pinard, from the public +domain `shar 3.49', made `GNU shar 4.x', in 1994. Some modules and +other code sections were freely borrowed from other GNU distributions, +bringing this `shar' under the terms of the GNU General Public License. + + The few wrapper scripts and the `remsync' program have been +contributed more recently by Franc,ois Pinard, just as an attempt for +making this GNU `sharutils' toolset more useful. + + Your feedback helps us to make a better and more portable product. +Mail suggestions and bug reports (including documentation errors) for +these programs to `bug-gnu-utils@prep.ai.mit.edu'. + + +File: sharutils.info, Node: Basic, Next: Wrappers, Prev: Introduction, Up: Top + +2 The basic `shar' utilities +**************************** + +GNU `shar' makes so-called shell archives out of many files, preparing +them for transmission by electronic mail services. A "shell archive" +is a collection of files that can be unpacked by `/bin/sh'. A wide +range of features provide extensive flexibility in manufacturing shars +and in specifying shar _smartness_. For example, `shar' may compress +files, uuencode binary files, split long files and construct multi-part +mailings, ensure correct unsharing order, and provide simplistic +checksums. *Note shar invocation::. + + GNU `unshar' scans a set of mail messages looking for the start of +shell archives. It will automatically strip off the mail headers and +other introductory text. The archive bodies are then unpacked by a +copy of the shell. `unshar' may also process files containing +concatenated shell archives. *Note unshar invocation::. + +* Menu: + +* shar invocation:: Invoking the `shar' program +* unshar invocation:: Invoking the `unshar' program +* Miscellaneous:: Miscellaneous considerations + + +File: sharutils.info, Node: shar invocation, Next: unshar invocation, Prev: Basic, Up: Basic + +2.1 Invoking the `shar' program +=============================== + +The format of the `shar' command is one of: + + shar [ OPTION ] ... FILE ... + shar -S [ OPTION ] ... + + In the first form, the file list is given as command arguments. In +the second form, the file list is read from standard input. The +resulting archive is sent to standard output unless the `-o' option is +given. + + Options can be given in any order. Some options depend on each +other: the `-o' option is required if the `-l' or `-L' option is used. +The `-n' option is required if the `-a' option is used. Also see `-V' +below. + + Some options are special purpose: + +`--help' + Print a help summary on standard output, then immediately exits. + +`--version' + Print the version number of the program on standard output, then + immediately exits. + +`-q' +`--quiet' + Verbose _off_ at `shar' time. Messages are usually issued on + standard error to let the user follow the progress, while making + the archives. This option inhibits these messages. + + +* Menu: + +* Selecting:: Selecting files +* Splitting:: Splitting output +* Headers:: Controlling the shar headers +* Stocking:: Selecting how files are stocked +* Transmission:: Protecting against transmission +* Kinds:: Producing different kinds of shar + + +File: sharutils.info, Node: Selecting, Next: Splitting, Prev: shar invocation, Up: shar invocation + +2.1.1 Selecting files +--------------------- + +`-p' +`--intermix-type' + Allow positional parameter options. The options `-M', `-B', `-T', + `-z' and `-Z' may be embedded, and files to the right of the + option will be processed in the specified mode. Without the `-p' + option, embedded options would be interpreted as file names. + *Note Stocking::. + +`-S' +`--stdin-file-list' + Read list of files to be packed from the standard input rather + than from the command line. Input must be one file name per line. + This switch is especially useful when the command line will not + hold the list of files to be packed. For example: + + find . -type f -print | \ + shar -S -o /somewhere/big.shar + + If `-p' is specified on the command line, then the options `-M', + `-B', `-T', `-z' and `-Z' may be included in the standard input + (on a line separate from file names). The maximum number of lines + of standard input, file names and options, may not exceed 1024. + + + +File: sharutils.info, Node: Splitting, Next: Headers, Prev: Selecting, Up: shar invocation + +2.1.2 Splitting output +---------------------- + +`-o PREFIX' +`--output-prefix=PREFIX' + Save the archive to files `PREFIX.01' through `PREFIX.NNN' instead + of standard output. This option _must_ be used when the `-l' or + the `-L' switches are used. + + When PREFIX contains any `%' character, PREFIX is then interpreted + as a `sprintf' format, which should be able to display a single + decimal number. When PREFIX does not contain such a `%' + character, the string `.%02d' is internally appended. + +`-l SIZE' +`--whole-size-limit=SIZE' + Limit the output file size to SIZE times 1024 bytes but don't + split input files. This allows the recipient of the shell archives + to unpack them in any order. + +`-L SIZE' +`--split-size-limit=SIZE' + Limit output file size to SIZE times 1024 bytes and split files if + necessary. The archives created with this option must be unpacked + in the correct order. If the recipient of the shell archives + wants to put all of them in a single folder, she shall save them + in the correct order for `unshar', used with option `-e', to + unpack them all at once. *Note unshar invocation::. + + For people used to saving all the shell archives into a single mail + folder, care must be taken to save them in the appropriate order. + For those having the appropriate tools (like Masanobu Umeda's + `rmailsort' package for GNU Emacs), shell archives can be saved in + any order, then sorted by increasing date (or send time) before + massive unpacking. + + + +File: sharutils.info, Node: Headers, Next: Stocking, Prev: Splitting, Up: shar invocation + +2.1.3 Controlling the shar headers +---------------------------------- + +`-n NAME' +`--archive-name=NAME' + Name of archive to be included in the header of the shar files. + Also see the `-a' switch further down. + +`-s ADDRESS' +`--submitter=ADDRESS' + The `-s' option allows for overriding the email address for the + submitter, for when the default is not appropriate. The + automatically determined address looks like `USERNAME@HOSTNAME'. + +`-a' +`--net-headers' + Allows automatic generation of headers: + + Submitted-by: ADDRESS + Archive-name: NAME/partNN + + The NAME must be given with the `-n' switch. If name includes a + `/', then `/part' isn't used. Thus `-n xyzzy' produces: + xyzzy/part01 + xyzzy/part02 + + while `-n xyzzy/patch' produces: + xyzzy/patch01 + xyzzy/patch02 + + and `-n xyzzy/patch01.' produces: + xyzzy/patch01.01 + xyzzy/patch01.02 + +`-c' +`--cut-mark' + Start the shar with a cut line. A line saying `Cut here' is + placed at the start of each output file. + +`-t' +`--translate' + Translate messages in the script. If you have set the `LANG' + environment variable, messages printed by `shar' will be in the + specified language. The produced script will still be emitted + using messages in the lingua franca of the computer world: + English. This option will cause the script messages to appear in + the languages specified by the `LANG' environment variable set + when the script is produced. + + + +File: sharutils.info, Node: Stocking, Next: Transmission, Prev: Headers, Up: shar invocation + +2.1.4 Selecting how files are stocked +------------------------------------- + +`-T' +`--text-files' + Treat all files as text, regardless of their contents. + +`-B' +`--uuencode' + Treat all files as binary, use `uuencode' prior to packing. This + increases the size of the archive. The recipient must have + `uudecode' in order to unpack. + + Use of `uuencode' is not appreciated by many on the net, because + people like to readily see, by mere inspection of a shell archive, + what it is about. + +`-M' +`--mixed-uuencode' + Mixed mode. Automatically determine if the files are text or + binary and archive correctly. Files found to be binary are + uuencoded prior to packing. This option is selected by default. + + For a file is considered to be a text file, instead of a binary + file, all the following should be true simultaneously: + 1. The file does not contain any ASCII control character besides + (backspace), (horizontal tab), (new line) or + (form feed). + + 2. The file does not contains a (delete). + + 3. The file contains no character with its eighth-bit set. + + 4. The file, unless totally empty, terminates with a + (newline). + + 5. No line in the file contains more than 200 characters. For + counting purpose, lines are separated by a (newline). + +`-z' +`--gzip' + Use `gzip' and `uuencode' on all files prior to packing. The + recipient must have `uudecode' and `gzip' (used with `-d') in + order to unpack. + + Usage of `-z' in net shars will cause you to be flamed off the + earth. + +`-g LEVEL' +`--level-for-gzip=LEVEL' + When doing compression, use `-LEVEL' as a parameter to `gzip'. + The `-g' option turns on the `-z' option by default. The default + value is 9, that is, maximum compression. + +`-j' +`--bzip2' + Use `bzip2' and `uuencode' on all files prior to packing. The + recipient must have `uudecode' and `bzip2' (used with `-d') in + order to unpack. + + Usage of `-j' in net shars will cause you to be flamed off to hell. + +`-Z' +`--compress' + Use `compress' and `uuencode' on all files prior to packing. The + recipient must have `uudecode' and `compress' (used with `-d') in + order to unpack. Option `-C' is a synonymous for `-Z', but is + deprecated. + + Usage of `-Z' in net shars will cause you to be flamed off the + earth. + +`-b BITS' +`--bits-per-code=BITS' + When doing compression, use `-bX' as a parameter to `compress'. + The `-b' option turns on the `-Z' option by default. The default + value is 12, foreseeing the memory limitations of some `compress' + programs on smallish systems, at `unshar' time. + + + +File: sharutils.info, Node: Transmission, Next: Kinds, Prev: Stocking, Up: shar invocation + +2.1.5 Protecting against transmission errors +-------------------------------------------- + +Transmission of shell archives is not always free of errors. So one +should make consistency checks on the receiving site. A very simple +(and unreliable) method is running the UNIX `wc' tool on the output +file. This can report the number of characters in the file. + + As one can guess this does not catch all errors. Especially +changing of a character value does not change the computed check sum. +To achieve this goal better method were invented and standardized. One +very strong is MD5 (MD = message digests). This is standardized in RFC +1321. The produced shell scripts do not force the `md5sum' program to +be installed on the system. This is necessary because it is not yet +part of every UNIX. The program is however not necessary for producing +the shell archive. + +`-w' +`--no-character-count' + Do _not_ check with `wc -c' after unpack. The default is to check. + +`-D' +`--no-md5-digest' + Do _not_ check with `md5sum' after unpack. The default is to + check. + +`-F' +`--force-prefix' + Prepend the prefix character to every line even if not required. + This option may slightly increase the size of the archive, + especially if `-B' or `-Z' is used. Normally, the prefix character + is `X'. If the parameter to the `-d' option starts with `X', then + the prefix character becomes `Y'. + +`-d STRING' +`--here-delimiter=STRING' + Use STRING to delimit the files in the shar instead of `SHAR_EOF'. + This is for those who want to personalize their shar files. + + + +File: sharutils.info, Node: Kinds, Prev: Transmission, Up: shar invocation + +2.1.6 Producing different kinds of shars +---------------------------------------- + +`-V' +`--vanilla-operation' + This option produces "vanilla" shars which rely only upon the + existence of `echo', `test' and `sed' in the unpacking environment. + + The `-V' disables options offensive to the "network cop" (or + "brown shirt"). It also changes the default from mixed mode `-M' + to text mode `-T'. Warnings are produced if option `-B', `-z', + `-j', `-Z', `-p' or `-M' is specified (any of which does or might + require `uudecode', `gzip', `bzip2' or `compress' in the unpacking + environment). + +`-P' +`--no-piping' + In the shar file, use a temporary file to hold the file to + `uudecode', instead of using pipes. This option is mandatory when + you know the unpacking `uudecode' is unwilling to merely read its + standard input. Richard Marks wrote what is certainly the most + (in)famous of these, for MSDOS :-). + + (Here is a side note from the maintainer. Why isnt't this option + the default? In the past history of `shar', it was decided that + piping was better, surely because it is less demanding on disk + space, and people seem to be happy with this. Besides, I think + that the `uudecode' from Richard Marks, on MSDOS, is wrong in + refusing to handle `stdin'. So far that I remember, he has the + strong opinion that a program without any parameters should give + its `--help' output. Besides that, should I say, his `uuencode' + and `uudecode' programs are full-featured, one of the most + complete set I ever saw. But Richard will not release his + sources, he wants to stay in control.) + +`-x' +`--no-check-existing' + Overwrite existing files without checking. If neither `-x' nor + `-X' is specified, when unpacking itself, the shell archive will + check for and not overwrite existing files (unless `-c' is passed + as a parameter to the script when unpacking). + +`-X' +`--query-user' + Interactively overwrite existing files. + + Use of `-X' produces shars which _will_ cause problems with some + `unshar'-style procedures, particularily when used together with + vanilla mode (`-V'). Use this feature mainly for archives to be + passed among agreeable parties. Certainly, `-X' is _not_ for + shell archives which are to be submitted to Usenet or other public + networks. + + The problem is that `unshar' programs or procedures often feed + `/bin/sh' from its standard input, thus putting `/bin/sh' and the + shell archive script in competition for input lines. As an + attempt to alleviate this problem, `shar' will try to detect if + `/dev/tty' exists at the receiving site and will use it to read + user replies. But this does not work in all cases, it may happen + that the receiving user will have to avoid using `unshar' programs + or procedures, and call `/bin/sh' directly. In vanilla mode, + using `/dev/tty' is not even attempted. + +`-m' +`--no-timestamp' + Avoid generating `touch' commands to restore the file modification + dates when unpacking files from the archive. + + When the timestamp relationship is not preserved, some files like + `configure' or `*.info' may be uselessly remade after unpacking. + This is why, when this option is not used, a special effort is + made to restore timestamps, + +`-Q' +`--quiet-unshar' + Verbose _off_ at `unshar' time. Disables the inclusion of + comments to be output when the archive is unpacked. + +`-f' +`--basename' + Use only the last file name component of each input file name, + ignoring any prefix directories. This is sometimes useful when + building a shar from several directories, or another directory. + If a directory name is passed to `shar', the substructure of that + directory will be restored whether `-f' is specified or not. + + + +File: sharutils.info, Node: unshar invocation, Next: Miscellaneous, Prev: shar invocation, Up: Basic + +2.2 Invoking the `unshar' program +================================= + +The format of the `unshar' command is: + + unshar [ OPTION ] ... [ FILE ... ] + + Each FILE is processed in turn, as a shell archive or a collection +of shell archives. If no files are given, then standard input is +processed instead. + + Options: + +`--version' + Print the version number of the program on standard output, then + immediately exits. + +`--help' + Print an help summary on standard output, then immediately exits. + +`-d DIRECTORY' +`--directory=DIRECTORY' + Change directory to DIRECTORY before unpacking any files. + +`-c' +`--overwrite' + +`-f' +`--force' + Passed as an option to the shar file. Many shell archive scripts + (including those produced by `shar' 3.40 and newer) accepts a `-c' + argument to indicate that existing files should be overwritten. + + The option `-f' is provided for a more unique interface. Many + programs (such as `cp' and `mv') use this option to trigger the + very same action. + +`-e' +`--exit-0' + This option exists mainly for people who collect many shell + archives into a single mail folder. With this option, `unshar' + isolates each different shell archive from the others which have + been put in the same file, unpacking each in turn, from the + beginning of the file towards its end. Its proper operation + relies on the fact that many shar files are terminated by a + `exit 0' at the beginning of a line. + + Option `-e' is internally equivalent to `-E "exit 0"'. + +`-E STRING' +`--split-at=STRING' + This option works like `-e', but it allows you to specify the + string that separates archives if `exit 0' isn't appropriate. + + For example, noticing that most `.signatures' have a `--' on a + line right before them, one can sometimes use `--split-at=--' for + splitting shell archives which lack the `exit 0' line at end. The + signature will then be skipped altogether with the headers of the + following message. + + + +File: sharutils.info, Node: Miscellaneous, Prev: unshar invocation, Up: Basic + +2.3 Miscellaneous considerations +================================ + +Here is a place-holder for many considerations which do not fit +elsewhere, while not worth a section for themselves. + + Be careful that the output file(s) are not included in the inputs or +`shar' may loop until the disk fills up. Be particularly careful when +a directory is passed to `shar' that the output files are not in that +directory (or a subdirectory of that directory). + + When a directory is passed to `shar', it may be scanned more than +once, to conserve memory. Therefore, one should be careful to not +change the directory contents while `shar' is running. + + No attempt is made to restore the protection and modification dates +for directories, even if this is done by default for files. Thus, if a +directory is given to `shar', the protection and modification dates of +corresponding unpacked directory may not match those of the original. + + Use of the `-M' or `-B' options will slow down the archive process. +Use of the `-z' or `-Z' options may slow the archive process +considerably. + + Let us conclude by a showing a few examples of `shar' usage: + + shar *.c > cprog.shar + shar -Q *.[ch] > cprog.shar + shar -B -l28 -oarc.sh. *.arc + shar -f /lcl/src/u*.c > u.sh + +The first shows how to make a shell archive out of all C program +sources. The second produces a shell archive with all `.c' and `.h' +files, which unpacks silently. The third gives a shell archive of all +uuencoded `.arc' files, into files `arc.sh.01' through to `arc.sh.NNN'. +The last example gives a shell archive which will use only the file +names at unpack time. + + +File: sharutils.info, Node: Wrappers, Next: Remsync, Prev: Basic, Up: Top + +3 Simple wrappers around `shar' +******************************* + +* Menu: + +* Invoking mailshar:: The `mailshar' command and arguments +* Invoking mail-files:: The `mail-files' command and arguments +* Invoking find-mailer:: The `find-mailer' command and arguments + + +File: sharutils.info, Node: Invoking mailshar, Next: Invoking mail-files, Prev: Wrappers, Up: Wrappers + +3.1 The `mailshar' command and arguments +======================================== + + +File: sharutils.info, Node: Invoking mail-files, Next: Invoking find-mailer, Prev: Invoking mailshar, Up: Wrappers + +3.2 The `mail-files' command and arguments +========================================== + + +File: sharutils.info, Node: Invoking find-mailer, Prev: Invoking mail-files, Up: Wrappers + +3.3 The `find-mailer' command and arguments +=========================================== + + +File: sharutils.info, Node: Remsync, Prev: Wrappers, Up: Top + +4 Remote synchronisation of directories +*************************************** + +For using the `remsync' facility, besides `sharutils' of course, you +also need `perl', GNU `tar', GNU `findutils' and `gzip', all installed. +You also need a `sum' program which is BSD-compatible, for example the +one from GNU `textutils'. + + The `remsync' program tries to maintain up-to-date copies of whole +hierarchy of files over many loosely connected sites, provided there is +at least some slow electronic mail between them. It prepares and sends +out specially packaged files called "synchronization packages", and is +able to processes them after reception. + + There is no _master_ site, each site has an equal opportunity to +modify files, and modified files are propagated. Among many other +commands, the `broadcast' command prepares and sends a synchronization +package from the current site to all others, while the `process' +command is used to apply synchronization packages locally after +reception from remote sites. `remsync' will never send a file to +another site without being asked to with the `broadcast' command, and +besides the project synchronization state files (always named +`.remsync'), it will never modify a file locally without being asked to +with the `process' command. + + The unit of transmission is a file, whatever its size may be. +Nothing less than whole files are being transmitted. People deciding +to cooperate in keeping a synchronized set of files must have trust +each other, as each participant has the power of modifying the contents +of files at other sites. When `remsync' is used by a single individual +travelling between many sites, as it is often the case, this confidence +problem should be easier to resolve :-). + + The `process' command will modify a file without asking +confirmation, as long as there is no reason to believe that the file +has been modified at more than one place. When some confusion arises +from the fact many people independently modified a single file, the +receiving user of conflicting files will have the duty of resolving +them into a merged version. So, the merging has to be done at the site +where the discrepancy is observed, from where it is propagated again to +others participants. There is no locking mechanism, so people should +use other means, like electronic mail, for telling each other what they +do, and which part of a project they are working on. + +* Menu: + +* Quick start:: Quick start at using `remsync' +* Invoking remsync:: The `remsync' command and arguments +* Conveniences:: Automatic mechanisms in the `remsync' program +* Commands:: Commands for `remsync' +* Internals:: How `remsync' works +* Formats:: Related file formats +* Xremsync:: Format of the `.remsync' file +* Package:: Format of transiting packages +* Alternatives:: Other means to synchronization +* Previous:: Documentation for obsolete scripts + + +File: sharutils.info, Node: Quick start, Next: Invoking remsync, Prev: Remsync, Up: Remsync + +4.1 Quick start at using `remsync' +================================== + +If you are in a real hurry, you can follow the recipe given here, and +postpone studying this manual further. However, we will consider only +a simple case. In any case, it is good to read the full example, as it +gives a good picture of the overall usage of `remsync'. + + For any sizeable project, it might not be convenient to start with +one site having it all and the other site having nothing, because this +would cause the first synchronization to be huge. It is more practical +to move over a copy of the project by other means, might it be +diskettes, tapes, or `mailshar'. So let's presume both sites have a +copy of the project, not necessarily identical, but close. + + For the following example, we presume that under the same domain +`champignac.land', there are two machines named `spirou' and +`fantasio'. Further, the participating user on +`spirou@spirou.champignac.land' has `spirou' for a login name, and +similarily, the participating user on `fantasio.champignac.land' has +`fantasio' for a login name. On the `spirou' machine, user `spirou' +keeps the project under his home, in directory `spirou-copy', while on +the `fantasio' machine, user `fantasio' keeps the project under his +home, in directory `fantasio-copy'. Of course, user names might be the +same, as well as the directories containing the project. We use +different names here just to make the example clearer. + + Here is a full transcript of the initialization session, normally +executed only once, and slightly edited to make it more suitable for +this manual. The example is broken down in little parts, allowing +explanations and comments. + + % cd ~/spirou-copy + % remsync + remsync (format *.*) - GNU sharutils *.* + + >> mode init + + init>> remote fantasio@fantasio.champignac.land ~/fantasio-copy + * Directory `~/spirou-copy is not ready for synchronization + Should I prepare it for its first time (y/n)? [y] + Please enter a short project description: Zorglub project + What is your full email address, here? [spirou@spirou.champignac.land] + +These commands prepare the `~/spirou-copy' hierarchy for +synchronization. You should be located at the top directory of the +hierarchy at the time the command `remsync' is called. + + The `mode init' command instructs `remsync' that no files should be +sent in the synchronization package, only their checksum. The goal +here is to inform the other site of what we have, and what we don't, +somewhat disregarding the fact the other site still looks like it has +nothing yet. + + The `remote' command is the key in establishing a synchronization +link. It has two parameters, the first being the email address of the +partner at the other site (as seen from here, if this matters), the +second being the location of the directory where the package should +reside on the remote site (as seen from there). + + Because there is no `.remsync' file in the project's top-level +directory, `remsync' concludes this is a first synchronization, and +so, ask a few questions, often telling in square brackets what answer +would be implied by a mere or . If the default reply +seems inappropriate, just give the correct information. + + init>> broadcast + + Broadcasting to address `fantasio@fantasio.champignac.land' + Studying local files for their signature + Registering file `file1' + Registering file `file2' + Registering file `file3' + * There were new registrations, please check them + Should I resume the current command (y/n)? [y] + Mailing shar to fantasio@fantasio.champignac.land + Message queued + Command `broadcast' done + + init>> quit + + % + + The `broadcast' command produces an inventory of the project's files +at this end, and mail it to the other partners. But before doing so, +because some new files were registered into the synchronization, the +user is given the opportunity of interrupting the command, if it is +felt that some registered file should really not be there. + + The `quit' command exits `remsync', but only once it created the +`.remsync' file on disk. + + _Then_, on `fantasio.champignac.land', user `fantasio' will receive +the synchronization package, easily recognizable by the fact the string +`.remsync.tar.gz' appears in the `Subject' header of the message. +Let's assume `fantasio' saves the whole message as file +`/tmp/synchro-message'. Then, `fantasio' might use the following +recipe: + + % cd /tmp + % unshar synchro-message + uudecoding file .remsync.tar.gz + % remsync process + Exploding archive `/tmp/.remsync.tar.gz' + + Package being received: + from address `spirou@spirou.champignac.land' + for project `Zorglub project' + Visiting directory `~/fantasio-copy', remote was `~/spirou-copy' + Initializing file `.remsync' from received information + Studying local files for their signature + Command `process' done + + In that `remsync process' call, the `process' command is being given +non-interactively, so `remsync' avoids unneeded interactions and exits +right away once the command is done. But equivalently, `remsync' might +be called without arguments, the `process' command given interactively, +and a `quit' command later required to get out of `remsync'. + + When receiving a synchronization package, `remsync' should be +executed in the directory where the file `.remsync.tar.gz' has been +unpacked, which might be quite unrelated to the project itself. Here, +`fantasio' executed `remsync' in `/tmp/', while the project resides in +`~/fantasio-project'. The synchronization package itself contains +enough information for `remsync' to automatically visit the proper +directory. + + After this operation, `fantasio.champignac.land' has a `.remsync' +file in `~/fantasio-copy', and the remote synchronization +initialization is completed. Either `spirou' or `fantasio' may then +modify files on their respective machine. If `spirou' modifies `file2' +in the project, `spirou' may execute: + + % cd ~/spirou-copy + % remsync broadcast + Reading configuration for project `Zorglub project' + + Broadcasting to address `fantasio@fantasio.champignac.land' + Studying local files for their signature + Packaging file `file2' + shar: Saving file2 (gzipped) + Mailing shar to fantasio@fantasio.champignac.land + Message queued + Command `broadcast' done + + In fact, any time a participant later feel like sending modified +files to all partners, s/he just have to change the directory to the +top of the project hierarchy, then call `remsync broadcast'. Any time a +synchronization package is later received, at either end, the receiving +user should apply `unshar' to related electronic messages for +reconstructing the synchronization package `.remsync.tar.gz', then call +`remsync process' in the directory containing this package. + + +File: sharutils.info, Node: Invoking remsync, Next: Conveniences, Prev: Quick start, Up: Remsync + +4.2 The `remsync' command and arguments +======================================= + +At the shell prompt, calling the command `remsync' without any +parameters initiates an interactive dialog, in which the user types +commands and receives feedback from the program. + + The command `remsync', given at the shell prompt, may have +arguments, in which case these arguments taken together form one +`remsync' interactive command. However, `--help' and `--version' +options are interpreted especially, with their usual effect in GNU. +Once this command has been executed, no more commands are taken from +the user and `remsync' terminates execution. This allows for using +`remsync' in some kind of batch mode. It is unwise to redirect +`remsync' standard input, because user interactions might often be +needed in ways difficult to predict in advance. + + The two most common usages of `remsync' are the commands: + + remsync b + remsync p + + The first example executes the `broadcast' command, which sends +synchronization packages to all connected remote sites for the current +local directory tree. + + The second example executes the `process' command, which studies and +complies with a synchronisation package saved in the current directory +(not necessarily into the synchronized directory tree), under the usual +file name `remsync.tar.gz'. + +* Menu: + +* Conveniences:: Automatic mechanisms in the `remsync' program +* Commands:: Commands for `remsync' + + +File: sharutils.info, Node: Conveniences, Next: Commands, Prev: Invoking remsync, Up: Remsync + +4.3 Automatic mechanisms in the `remsync' program +================================================= + +The following points apply to many of the `remsync' commands. We +describe them here once and for all. + + * The file `.remsync' describes the various properties for the + current synchronization. It is kept right in the top directory of + a synchronized directory tree. Some commands may be executed + without any need for this file. The program waits as far as + possible before reading it. + + * If the `.remsync' file is not found when required, and only then, + the user is interactively asked to fill a questionnaire about it. + + * If the `.remsync' file has been logically modified after having + been read, or if it just has been created, the program will save + it back on disk. But it will do so only before reading another + `.remsync' file, or just before exit. A preexisting `.remsync' + will be renamed to `.remsync.bak' before it is rewritten, when + this is done, any previous `.remsync.bak' file is discarded. + + * Many commands refer to previously entered information by repeating + this information. For example, one can refer to a particular + `scan' statement by entering the wildcard to be scanned by this + statement. An alternative method of specifying a statement + consists in using the decimal number which appears between square + brackets in the result of a `list' command. + + * Whenever a site list must be given, it is a space separated list of + remote sites. If the list is preceeded by a bang (), the list + is complemented, that is, the sites that will be operated upon are + all those _not_ appearing in the list. As a special case, if the + site list is completely empty, then all sites are selected. + + + +File: sharutils.info, Node: Commands, Next: Internals, Prev: Conveniences, Up: Remsync + +4.4 Commands for `remsync' +========================== + +Program commands to `remsync' may be given interactively by the user +sitten at a terminal. They can come from the arguments of the +`remsync' call at the shell level. Internally, the `process' command +might obey many sub-commands found in a received synchronization +package. + + Program commands are given one per line. Lines beginning with a +sharp (<#>) and white lines are ignored, they are meant to increase +clarity or to introduce user comments. With only a few exceptions, +commands are introduced by a keyword and often contains other keywords. +In all cases, the keywords specific to `remsync' may be abbreviated to +their first letter. When there are many keywords in succession, the +space separating them may be omitted. So the following commands are +all equivalent: + + list remote + l remote + list r + l r + listremote + lr + +while the following are not legal: + + l rem + lisremote + + Below, for clarity, keywords are written in full and separated by +spaces. Commands often accept parameters, which are then separated by +spaces. All available commands are given in the table. The first few +commands do not pre-require the file `.remsync'. The last three +commands are almost never used interactively, but rather automatically +triggered while `process''ing received synchronization packages. + +`?' + Display a quick help summary of available commands. + +`!' [ SHELL-COMMAND ] + If SHELL-COMMAND has been given, execute it right now as a shell + command. When not given, rather start an interactive shell. + Exiting from the shell will return to this program. The started + shell is taken from the `SHELL' environment variable if set, else + `sh' is used. + +`quit' + Leave the program normally and return to the shell. + +`abort' + Leave the program with a nonzero exit status and return to the + shell. No attempt is made to save a logically modified `.remsync' + file. + +`visit' DIRECTORY + Select another synchronized directory tree for any subsequent + operation. DIRECTORY is the top directory of the synchronized + directory tree. + +`process' [ FILE ] + +`list' [ TYPE ] + List all known statements about some information TYPE. Allowable + keywords for TYPE are `local', `remote', `scan', `ignore' and + `files'. The keyword `files' asks for all empty statements (see + later). If TYPE is omitted, then list all known statements for + all types, except those given by `files'. + +[ `create' ] TYPE VALUE + Create a new statement introducing a VALUE for a given TYPE. + Allowable keywords for TYPE are `remote', `scan' and `ignore'. + The `create' keyword may be omitted. + + For `create' `ignore', when the pattern is preceeded by a bang + (), the condition is reversed. That is, only those files which + do match the pattern will be kept for synchronization. + +`delete' TYPE VALUE + Delete an existing statement supporting some VALUE for a given + TYPE. Allowable keywords for TYPE are `remote', `scan' and + `ignore'. + +`email' REMOTE VALUE + Modify the electronic mail address associated with some REMOTE + site, giving it a new VALUE. The special `local' keyword for + REMOTE may be used to modify the local electronic mail address. + +`home' REMOTE VALUE + Modify the top directory of the synchronized directory tree + associated with some REMOTE site, giving it a new VALUE. The + special `local' keyword for REMOTE may be used to modify the local + top directory. + +`broadcast' SITE_LIST + Send by electronic mail an update package to all sites from + SITE_LIST, containing for each site all and only those files which + are known to be different between the remote site and here. + +`version' VERSION + This command is not meant for interactive use. It establishes the + `remsync' version needed to process the incoming commands. + +`from' SITE_LIST + This command is not really meant for interactive use. The first + site from the SITE_LIST is the remote site which originated the + synchronization package. All the others are all the sites, + including here, which were meant to be synchronized by the + `broadcast' command that was issued at the originating remote site. + +`sum' FILE CHECKSUM + This command is not really meant for interactive use. It declares + the CHECKSUM value of a particular FILE at the originating remote + site. Also, if at least one `sum' command is received, then it is + guaranteed that the originating remote site sent one `sum' command + for each and every file to be synchronized, so any found local + file which was not subject of any `sum' command does not exist + remotely. + +`if' FILE CHECKSUM PACKAGED + This command is not really meant for interactive use. It directs + the `remsync' program to check if a local FILE has a given + CHECKSUM. If the checksum agrees, then the local file will be + replaced by the PACKAGED file, as found in the received + synchronization invoice. + + + +File: sharutils.info, Node: Internals, Next: Formats, Prev: Commands, Up: Remsync + +4.5 How `remsync' works +======================= + +How does `remsync' keep track of what is in sync, and what isn't? +*Note Xremsync::, for a the documentation on the `.remsync' file +format. I understand that a mere description of the format does not +replace an explanation, but in the meantime, you might guess from the +format how the program works. + + All files are summarized by a checksum, computed by the `sum' +program. There are a few variants of `sum' computing checksums in +incompatible ways, under the control of options. `remsync' attempts to +retrieve on each site a compatible way to do it, and complains if it +cannot. + + `remsync' does not compare dates or sizes. Experience shown that the +best version of a file is not necessarily the one with the latest +timestamp. The best version for a site is the current version on this +site, as decided by its maintainer there, and this is this version that +will be propagated. + + Each site has an idea of the checksum of a file for all other sites. +These checksums are not necessarily identical, for sites do not +necessarily propagate to all others, and the propagation network maybe +incomplete or asymmetrical in various ways. + + Propagation is never done unattended. The user on a site has to call +`remsync broadcast' to issue synchronization packages for other sites. +If this is never done, the local modifications will never leave the +site. The user also has to call `remsync process' to apply received +synchronization packages. Applying a package does not automatically +broadcast it further (maybe this could change?). + + If a site A propagates some files to sites B and D, but not C, site +B is informed that site D also received these files, and site D is +informed that site B also received these files, so they will not +propagate again the same files to one another. However, both site B +and D are susceptible to propagate further the same files to site C. + + It may happen that a site refuses to update a file, or modifies a +file after having been received, or merges versions, or whatever. So, +sites may have a wrong opinion of the file contents on other sites. +These differences level down after a few exchanges, and it is very +unlikely that a file would not be propagated when it should have. + + This scheme works only when the various people handling the various +files have confidence in one each other. If site B modifies a file +after having received it from site A, the file will eventually be +propagated back to site A. If the original file stayed undisturbed on +site A, that is, if `remsync' proves that site B correctly knew the +checksum of the original file, then the file will be replaced on site A +without any user confirmation. So, the user on site A has to trust the +changes made by the user on site B. + + If the original file on site A had been modified after having been +sent in a synchronization package, than it is the responsibility of the +user on site A to correctly merge the local modifications with the +modifications observed in the file as received from site B. This +responsibility is real, since the merged file will later be propagated +to the other sites in an authoritative way. + + +File: sharutils.info, Node: Formats, Next: Xremsync, Prev: Internals, Up: Remsync + +4.6 Related file formats +======================== + +* Menu: + +* Xremsync:: Format of the `.remsync' file +* Package:: Format of transiting packages + + +File: sharutils.info, Node: Xremsync, Next: Package, Prev: Formats, Up: Remsync + +4.7 Format of the `.remsync' file +================================= + +The `.remsync' file saves all the information a site needs for properly +synchronizing a directory tree with remote sites. Even if it is meant +to be editable using any ASCII editor, it has a very precise format and +one should be very careful while modifying it directly, if ever. The +`.remsync' file is better handled through the `remsync' program and +commands. + + The `.remsync' file is made up of statements, one per line. Each +line begins with a statement keyword followed by a single , then +by one or more parameters. The keyword may be omitted, in this case, +the keyword is said to be _empty_, and the line begins immediately with +the . After the , if there are two parameters or more, they +should all be separated with a single space. There should not be any +space between the last parameter and the end of line (unless there are +explicit empty parameters). + + The following table gives the possible keywords. Their order of +presentation in the table is also the order of appearance in the +`.remsync' file. + +`remsync' + This statement identifies the `.remsync' format. The only + parameter states the file format version. + +`local' + This statement should appear exactly once, and has exactly two + parameters. The first parameter gives the electronic mail address + the other sites should use for sending synchronization packages + here. The second parameter gives the name of the local directory + tree to synchronize, in absolute notation. + +`remote' + This statement may appear zero, one or more times. Each occurrence + connects the synchronized directory tree to another tree on a + remote site. The first parameter gives one electronic mail + address where to send remote synchronization packages. The second + parameter gives the name of the corresponding directory tree for + this remote electronic mail address, in absolute notation. + +`scan' + This statement may appear zero, one or more times. When it does + not appear at all, the whole local directory tree will always be + scanned, searching for files to synchronize. When the statement + appears at least once, the whole local directory tree will not be + scanned, but only those files or directories appearing in one of + these statements. Each `scan' statement has exactly one + parameter, giving one file or directory to be studied. These are + usually given relative to top directory of the local + synchronization directory tree. Shell wildcards are acceptable. + +`ignore' + This statement may appear zero, one or more times. Each + occurrence has one parameter giving a regular expression, + according to Perl syntax for regular expressions. These REGEXPs + are applied against each file resulting from the scan. If any of + the `ignore' expression matches one of resulting file, the file is + discarded and is not subject to remote synchronization. + + + After all the statements beginning by the previous keywords, the +`.remsync' file usually contains many statements having the empty +keyword. The empty keyword statement may appear zero, one or more +times. Each occurrence list one file being remotely synchronized. The +first parameter gives an explicit file name, usually given relative to +the top directory of the local synchronized directory tree. Shell +wildcards are _not_ acceptable. + + Besides the file name parameter, there are supplementary parameters +to each empty keyword statement, each corresponding to one remote +statement in the `.remsync' file. The second parameter corresponds to +the first remote, the third parameter corresponds to the second remote, +etc. If there are more remote statements than supplementary parameters, +missing parameters are considered to be empty. + + Each supplementary parameter usually gives the last known checksum +value for this particular file, as computed on its corresponding +_remote_ site. The parameter contains a dash `-' while the remote +checksum is unknown. The checksum value for the _local_ copy of the +file is never kept anywhere in the `.remsync' file. The special value +`666' indicates a checksum from hell, used when the remote file is +known to exist, but for which contradictory information has been +received from various sources. + + +File: sharutils.info, Node: Package, Next: Alternatives, Prev: Xremsync, Up: Remsync + +4.8 Format of synchronisation packages +====================================== + +Each synchronisation package is transmitted as a file named +`.remsync.tar.gz', which has the format of a `tar' archive, further +compressed with the `gzip' program. This archive always contains a +file named `.remsync-work/orders', and zero or more files named +`.remsync-work/1', `.remsync-work/2', etc. It contains no other files. +Each numbered file is actually a full, non-modified file pertaining to +the hierarchy of the project, as sent from the remote site. + + The `.remsync-work/orders' file drives the processing of the +received synchronization package. This ASCII file format quite closely +resembles the `.remsync' format, which we do not explain again here. +Only the keywords and their associated parameters are different, and +there is no empty keyword. The following table gives the possible +keywords, in the order where they normally appear. + +`format' +`title' +`here' +`remote' +`ignore' +`scan' + All those keywords are used exactly the same way as within the + `.remsync' file, and their format is not explained again here. + They state the file format, project title, local and possibly many + remote identifications and directories, zero or more ignores, zero + or more scans; all of these exactly as known to the remote site who + created the synchronization package. In particular, the `here' + line states the originating site of the package rather than the + receiving one; the receiving site should still be described by one + of the `remote' lines. + +`visit' + This statement appears exactly once, and has one numeric parameter. + It specifies the zero-based index in the list of remote lines + above. The index identifies the receiving site, that is, the site + to which this package was sent. + +`copy' + This statement appears exactly once, and has one or more numeric + parameters. Each specifies a zero-based index in the list of + remote lines above. All indices specify the set of all sites who + where broadcasted simultaneously, at the time this synchronization + package was issued. The index specified by the `visit' line + should also be one of the indices of the `copy' lines. The order + in which the indices are given is important, as it also + establishes the order in which file signatures are listed on the + `check' lines below. + +`check' + This statement may appear zero, one or more times. Each occurrence + describes one file known to the project at the originating site, + and there is exactly one occurrence for each known file in the + project. Each `check' line has exactly N+2 parameters, where N is + the number of parameters of the `copy' command. The first + parameter gives a file name, relative to the top directory. The + second parameter gives the file signature for this file, as + computed at the originating site. For each remote site presented + in the `copy' command, and exactly in the same order, each + supplementary parameter gives the originator's idea of the + signature for the said file at this remote site. A dash (`-') + replaces the signature for a file known _not_ to exist. + +`update' + This statement may appear zero, one or more times. Each occurrence + describes what to do with one of the `.remsync-work/N' files, + distributed within the synchronization package. In fact, there + should be exactly as many `update' lines that there are numbered + files in the synchronization package. Usually, each `update' line + immediately follows the corresponding `check' line, and has + exactly three parameters. The first parameter gives a file name + in the project, relative to the top level directory of the + hierarchy. The second parameter gives a file signature which the + said file should have at the receiving site, for it to be replaced + safely, with no questions asked (this is the originator's idea of + what the file signature _was_, on the receiving site, prior to its + replacement). A dash (`-') replaces this signature for a file + known _not_ to exist. The third parameter is the number N, which + indicates the file `.remsync-work/N' in the synchronization + package distribution which should replace the corresponding + project file at the receiving site. + + + +File: sharutils.info, Node: Alternatives, Next: Previous, Prev: Package, Up: Remsync + +4.9 Other means to synchronization +================================== + +One correspondent thinks that perhaps the news distribution mechanism +could be pressed into service for this job. I could have started from +C-news, say, instead of from scratch, and have progressively bent +C-news to behave like I wanted. + + My feeling is that the route was shorter as I did it, from scratch, +that it would have been from C-news. Of course, I could have removed +the heavy administrative details of C-news: the history and `expire', +the daemons, the `cron' entries, etc., then added the interactive +features and specialized behaviors, but all this clean up would +certainly have took energies. Right now, non counting the subsidiary +scripts and shar/unshar sources, the heart of the result is a single +(1200 lines) script written in Perl, which I find fairly more smaller +and maintainable than a patched C-news distribution would have been. + + +File: sharutils.info, Node: Previous, Prev: Alternatives, Up: Remsync + +4.10 Documentation for obsolete scripts +======================================= + +This is merely a place holder for previous documentation, waiting that I +clean it up. You have no interest in reading further down. + +* Menu: + +* mailsync:: mailsync +* resync:: resync + + +File: sharutils.info, Node: mailsync, Next: resync, Prev: Previous, Up: Previous + +4.10.1 mailsync +--------------- + + Usage: mailsync [ OPTION ] ... [ EMAIL_ADDRESS ] [ DIRECTORY ] + or: mailsync [ OPTION ] ... SYNC_DIRECTORY + + Option -i simply sends a `ihave' package, with no bulk files. +Option -n inhibits any destructive operation and mailing. + + In the first form of the call, find a synchronisation directory in +DIRECTORY aimed towards some EMAIL_ADDRESS, then proceed with this +synchronisation directory. EMAIL_ADDRESS may be the name of a file +containing a distribution list. If EMAIL_ADDRESS is not specified, all +the synchronisation directories at the top level in DIRECTORY are +processed in turn. If DIRECTORY is not specified, the current +directory is used. + + In the second form of the call, proceed only with the given +synchronisation directory SYNC_DIRECTORY. + + For proceeding with a synchronisation directory, whatever the form of +the call was, this script reads the `ident' files it contains to set +the local user and directory and the remote user and directory. Then, +selected files under the local directory which are modified in regard +to the corresponding files in the remote directory are turned into a +synchronisation package which is mailed to the remote user. + + The list of selected files or directories to synchronize from the +local directory are given in the `list' file in the synchronisation +directory. If this `list' file is missing, all files under the local +directory are synchronized. + + What I usually do is to `cd' at the top of the directory tree to be +synchronized, then to type `mailsync' without parameters. This will +automatically prepare as many synchronisation packages as there are +mirror systems, then email multipart shars to each of them. Note that +the synchronisation package is not identical for each mirror system, +because they do not usually have the same state of synchronisation. + + `mailsync' will refuse to work if anything needs to be hand cleaned +from a previous execution of `mailsync' or `resync'. Check for some +remaining `_syncbulk' or `_synctemp' directory, or for a `_syncrm' +script. + + TODO: + - interrogate the user if `ident' file missing. + - automatically construct the local user address. + - create the synchronisation directory on the fly. + - avoid duplicating work as far as possible for multiple sends. + - have a quicker mode, depending on stamps, not on checksums. + - never send core, executables, backups, `.nsf*', `*/_synctemp/*', etc. + + +File: sharutils.info, Node: resync, Next: GNU Free Documentation License, Prev: mailsync, Up: Previous + +4.10.2 resync +------------- + + Usage: resync [ OPTION ]... TAR_FILE + or: resync [ OPTION ]... UNTARED_DIRECTORY + + Given a tar file produced by mailsync at some remote end and already +reconstructed on this end using unshar, or a directory containing the +already untared invoice, apply the synchronization package locally. + + Option -n inhibits destroying or creating files, but does everything +else. It will in particular create a synchronization directory if +necessary, produce the `_syncbulk' directory and the `_syncrm' script. + + The synchronization directory for the package is automatically +retrieved or, if not found, created and initialized. `resync' keeps +telling you what it is doing. + + There are a few cases when a resync should not complete without +manual intervention. The common case is that several sites update the +very same files differently since they were last resync'ed, and then +mailsync to each other. The prerequisite checksum will then fail, and +the files are then kept into the `_syncbulk' tree, which has a shape +similar to the directory tree in which the files where supposed to go. +For GNU Emacs users, a very handy package, called emerge, written by +Dale Worley , helps reconciling two files +interactiveley. The `_syncbulk' tree should be explicitely deleted +after the hand synchronisation. + + Another case of human intervention is when files are deleted at the +mailsync'ing site. By choice, all deletions on the receiving side are +accumulated in a `_syncrm' script, which is not executed automatically. +Explicitely executed, `_syncrm' will remove any file in the receiving +tree which does not exist anymore on the sender system. I often edit +`_syncrm' before executing it, to remove the unwanted deletions (beware +the double negation :-). The script removes itself. + + All the temporary files, while resynchronizing, are held in +`_synctemp', which is deleted afterwards; if something goes wrong, this +directory should also be cleaned out by hand. `resync' will refuse to +work if anything remains to be hand cleaned. + + TODO: + - interrogates the user if missing receiving directory in `ident'. + - allow `remote.sum' to be empty or non-existent. + + +File: sharutils.info, Node: GNU Free Documentation License, Prev: resync, Up: Top + +Appendix A GNU Free Documentation License +***************************************** + + Version 1.1, March 2000 +* Menu: + +* How to use this License for your documents:: + + Copyright (C) 2000 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + 0. PREAMBLE + + The purpose of this License is to make a manual, textbook, or other + written document "free" in the sense of freedom: to assure everyone + the effective freedom to copy and redistribute it, with or without + modifying it, either commercially or noncommercially. Secondarily, + this License preserves for the author and publisher a way to get + credit for their work, while not being considered responsible for + modifications made by others. + + This License is a kind of "copyleft", which means that derivative + works of the document must themselves be free in the same sense. + It complements the GNU General Public License, which is a copyleft + license designed for free software. + + We have designed this License in order to use it for manuals for + free software, because free software needs free documentation: a + free program should come with manuals providing the same freedoms + that the software does. But this License is not limited to + software manuals; it can be used for any textual work, regardless + of subject matter or whether it is published as a printed book. + We recommend this License principally for works whose purpose is + instruction or reference. + + 1. APPLICABILITY AND DEFINITIONS + + This License applies to any manual or other work that contains a + notice placed by the copyright holder saying it can be distributed + under the terms of this License. The "Document", below, refers to + any such manual or work. Any member of the public is a licensee, + and is addressed as "you". + + A "Modified Version" of the Document means any work containing the + Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + + A "Secondary Section" is a named appendix or a front-matter + section of the Document that deals exclusively with the + relationship of the publishers or authors of the Document to the + Document's overall subject (or to related matters) and contains + nothing that could fall directly within that overall subject. + (For example, if the Document is in part a textbook of + mathematics, a Secondary Section may not explain any mathematics.) + The relationship could be a matter of historical connection with + the subject or with related matters, or of legal, commercial, + philosophical, ethical or political position regarding them. + + The "Invariant Sections" are certain Secondary Sections whose + titles are designated, as being those of Invariant Sections, in + the notice that says that the Document is released under this + License. + + The "Cover Texts" are certain short passages of text that are + listed, as Front-Cover Texts or Back-Cover Texts, in the notice + that says that the Document is released under this License. + + A "Transparent" copy of the Document means a machine-readable copy, + represented in a format whose specification is available to the + general public, whose contents can be viewed and edited directly + and straightforwardly with generic text editors or (for images + composed of pixels) generic paint programs or (for drawings) some + widely available drawing editor, and that is suitable for input to + text formatters or for automatic translation to a variety of + formats suitable for input to text formatters. A copy made in an + otherwise Transparent file format whose markup has been designed + to thwart or discourage subsequent modification by readers is not + Transparent. A copy that is not "Transparent" is called "Opaque". + + Examples of suitable formats for Transparent copies include plain + ASCII without markup, Texinfo input format, LaTeX input format, + SGML or XML using a publicly available DTD, and + standard-conforming simple HTML designed for human modification. + Opaque formats include PostScript, PDF, proprietary formats that + can be read and edited only by proprietary word processors, SGML + or XML for which the DTD and/or processing tools are not generally + available, and the machine-generated HTML produced by some word + processors for output purposes only. + + The "Title Page" means, for a printed book, the title page itself, + plus such following pages as are needed to hold, legibly, the + material this License requires to appear in the title page. For + works in formats which do not have any title page as such, "Title + Page" means the text near the most prominent appearance of the + work's title, preceding the beginning of the body of the text. + + 2. VERBATIM COPYING + + You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License + applies to the Document are reproduced in all copies, and that you + add no other conditions whatsoever to those of this License. You + may not use technical measures to obstruct or control the reading + or further copying of the copies you make or distribute. However, + you may accept compensation in exchange for copies. If you + distribute a large enough number of copies you must also follow + the conditions in section 3. + + You may also lend copies, under the same conditions stated above, + and you may publicly display copies. + + 3. COPYING IN QUANTITY + + If you publish printed copies of the Document numbering more than + 100, and the Document's license notice requires Cover Texts, you + must enclose the copies in covers that carry, clearly and legibly, + all these Cover Texts: Front-Cover Texts on the front cover, and + Back-Cover Texts on the back cover. Both covers must also clearly + and legibly identify you as the publisher of these copies. The + front cover must present the full title with all words of the + title equally prominent and visible. You may add other material + on the covers in addition. Copying with changes limited to the + covers, as long as they preserve the title of the Document and + satisfy these conditions, can be treated as verbatim copying in + other respects. + + If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto + adjacent pages. + + If you publish or distribute Opaque copies of the Document + numbering more than 100, you must either include a + machine-readable Transparent copy along with each Opaque copy, or + state in or with each Opaque copy a publicly-accessible + computer-network location containing a complete Transparent copy + of the Document, free of added material, which the general + network-using public has access to download anonymously at no + charge using public-standard network protocols. If you use the + latter option, you must take reasonably prudent steps, when you + begin distribution of Opaque copies in quantity, to ensure that + this Transparent copy will remain thus accessible at the stated + location until at least one year after the last time you + distribute an Opaque copy (directly or through your agents or + retailers) of that edition to the public. + + It is requested, but not required, that you contact the authors of + the Document well before redistributing any large number of + copies, to give them a chance to provide you with an updated + version of the Document. + + 4. MODIFICATIONS + + You may copy and distribute a Modified Version of the Document + under the conditions of sections 2 and 3 above, provided that you + release the Modified Version under precisely this License, with + the Modified Version filling the role of the Document, thus + licensing distribution and modification of the Modified Version to + whoever possesses a copy of it. In addition, you must do these + things in the Modified Version: + + A. Use in the Title Page (and on the covers, if any) a title + distinct from that of the Document, and from those of previous + versions (which should, if there were any, be listed in the + History section of the Document). You may use the same title + as a previous version if the original publisher of that version + gives permission. + B. List on the Title Page, as authors, one or more persons or + entities responsible for authorship of the modifications in the + Modified Version, together with at least five of the principal + authors of the Document (all of its principal authors, if it + has less than five). + C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. + D. Preserve all the copyright notices of the Document. + E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + F. Include, immediately after the copyright notices, a license + notice giving the public permission to use the Modified Version + under the terms of this License, in the form shown in the + Addendum below. + G. Preserve in that license notice the full lists of Invariant + Sections and required Cover Texts given in the Document's + license notice. + H. Include an unaltered copy of this License. + I. Preserve the section entitled "History", and its title, and add + to it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. + If there is no section entitled "History" in the Document, + create one stating the title, year, authors, and publisher of + the Document as given on its Title Page, then add an item + describing the Modified Version as stated in the previous + sentence. + J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and + likewise the network locations given in the Document for + previous versions it was based on. These may be placed in the + "History" section. You may omit a network location for a work + that was published at least four years before the Document + itself, or if the original publisher of the version it refers + to gives permission. + K. In any section entitled "Acknowledgements" or "Dedications", + preserve the section's title, and preserve in the section all the + substance and tone of each of the contributor acknowledgements + and/or dedications given therein. + L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. + M. Delete any section entitled "Endorsements". Such a section + may not be included in the Modified Version. + N. Do not retitle any existing section as "Endorsements" or to + conflict in title with any Invariant Section. + If the Modified Version includes new front-matter sections or + appendices that qualify as Secondary Sections and contain no + material copied from the Document, you may at your option + designate some or all of these sections as invariant. To do this, + add their titles to the list of Invariant Sections in the Modified + Version's license notice. These titles must be distinct from any + other section titles. + + You may add a section entitled "Endorsements", provided it contains + nothing but endorsements of your Modified Version by various + parties-for example, statements of peer review or that the text has + been approved by an organization as the authoritative definition + of a standard. + + You may add a passage of up to five words as a Front-Cover Text, + and a passage of up to 25 words as a Back-Cover Text, to the end + of the list of Cover Texts in the Modified Version. Only one + passage of Front-Cover Text and one of Back-Cover Text may be + added by (or through arrangements made by) any one entity. If the + Document already includes a cover text for the same cover, + previously added by you or by arrangement made by the same entity + you are acting on behalf of, you may not add another; but you may + replace the old one, on explicit permission from the previous + publisher that added the old one. + + The author(s) and publisher(s) of the Document do not by this + License give permission to use their names for publicity for or to + assert or imply endorsement of any Modified Version. + + 5. COMBINING DOCUMENTS + + You may combine the Document with other documents released under + this License, under the terms defined in section 4 above for + modified versions, provided that you include in the combination + all of the Invariant Sections of all of the original documents, + unmodified, and list them all as Invariant Sections of your + combined work in its license notice. + + The combined work need only contain one copy of this License, and + multiple identical Invariant Sections may be replaced with a single + copy. If there are multiple Invariant Sections with the same name + but different contents, make the title of each such section unique + by adding at the end of it, in parentheses, the name of the + original author or publisher of that section if known, or else a + unique number. Make the same adjustment to the section titles in + the list of Invariant Sections in the license notice of the + combined work. + + In the combination, you must combine any sections entitled + "History" in the various original documents, forming one section + entitled "History"; likewise combine any sections entitled + "Acknowledgements", and any sections entitled "Dedications". You + must delete all sections entitled "Endorsements." + + 6. COLLECTIONS OF DOCUMENTS + + You may make a collection consisting of the Document and other + documents released under this License, and replace the individual + copies of this License in the various documents with a single copy + that is included in the collection, provided that you follow the + rules of this License for verbatim copying of each of the + documents in all other respects. + + You may extract a single document from such a collection, and + distribute it individually under this License, provided you insert + a copy of this License into the extracted document, and follow + this License in all other respects regarding verbatim copying of + that document. + + 7. AGGREGATION WITH INDEPENDENT WORKS + + A compilation of the Document or its derivatives with other + separate and independent documents or works, in or on a volume of + a storage or distribution medium, does not as a whole count as a + Modified Version of the Document, provided no compilation + copyright is claimed for the compilation. Such a compilation is + called an "aggregate", and this License does not apply to the + other self-contained works thus compiled with the Document, on + account of their being thus compiled, if they are not themselves + derivative works of the Document. + + If the Cover Text requirement of section 3 is applicable to these + copies of the Document, then if the Document is less than one + quarter of the entire aggregate, the Document's Cover Texts may be + placed on covers that surround only the Document within the + aggregate. Otherwise they must appear on covers around the whole + aggregate. + + 8. TRANSLATION + + Translation is considered a kind of modification, so you may + distribute translations of the Document under the terms of section + 4. Replacing Invariant Sections with translations requires special + permission from their copyright holders, but you may include + translations of some or all Invariant Sections in addition to the + original versions of these Invariant Sections. You may include a + translation of this License provided that you also include the + original English version of this License. In case of a + disagreement between the translation and the original English + version of this License, the original English version will prevail. + + 9. TERMINATION + + You may not copy, modify, sublicense, or distribute the Document + except as expressly provided for under this License. Any other + attempt to copy, modify, sublicense or distribute the Document 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. + + 10. FUTURE REVISIONS OF THIS LICENSE + + The Free Software Foundation may publish new, revised versions of + the GNU Free Documentation 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. See + http://www.gnu.org/copyleft/. + + Each version of the License is given a distinguishing version + number. If the Document specifies that a particular numbered + version of this License "or any later version" applies to it, you + have the option of following the terms and conditions either of + that specified version or of any later version that has been + published (not as a draft) by the Free Software Foundation. If + the Document does not specify a version number of this License, + you may choose any version ever published (not as a draft) by the + Free Software Foundation. + + + +File: sharutils.info, Node: How to use this License for your documents, Up: GNU Free Documentation License + +ADDENDUM: How to use this License for your documents +==================================================== + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and license +notices just after the title page: + + + Copyright (C) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.1 + or any later version published by the Free Software Foundation; + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. + A copy of the license is included in the section entitled ``GNU + Free Documentation License''. +If you have no Invariant Sections, write "with no Invariant +Sections" instead of saying which ones are invariant. If you have no +Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover +Texts being LIST"; likewise for Back-Cover Texts. + + If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, to +permit their use in free software. + + + +Tag Table: +Node: Top1335 +Node: Introduction4775 +Node: Basic6359 +Node: shar invocation7551 +Node: Selecting9054 +Node: Splitting10180 +Node: Headers11832 +Node: Stocking13471 +Node: Transmission16325 +Node: Kinds18015 +Node: unshar invocation21993 +Node: Miscellaneous24115 +Node: Wrappers25833 +Node: Invoking mailshar26201 +Node: Invoking mail-files26394 +Node: Invoking find-mailer26603 +Node: Remsync26788 +Node: Quick start29903 +Node: Invoking remsync36948 +Node: Conveniences38533 +Node: Commands40447 +Node: Internals45634 +Node: Formats48910 +Node: Xremsync49184 +Node: Package53638 +Node: Alternatives58123 +Node: Previous59146 +Node: mailsync59527 +Node: resync62095 +Node: GNU Free Documentation License64436 +Node: How to use this License for your documents82913 + +End Tag Table diff --git a/doc/sharutils.texi b/doc/sharutils.texi new file mode 100644 index 0000000..110eac4 --- /dev/null +++ b/doc/sharutils.texi @@ -0,0 +1,1573 @@ +\input texinfo +@c %**start of header +@setfilename sharutils.info +@settitle GNU @code{shar} utilities +@dircategory Archiving +@direntry +* Shar utilities: (sharutils). Shell archiver, uuencode/uudecode. +@end direntry +@dircategory Individual utilities +@direntry +* mail-files: (sharutils)mail-files invocation. Send files to remote site. +* mailshar: (sharutils)mailshar invocation. Make and send a shell archive. +* shar: (sharutils)shar invocation. Make a shell archive. +* unshar: (sharutils)unshar invocation. Explode a shell archive. +* uudecode: (sharutils)uudecode invocation. Restore file from 7-bits. +* uuencode: (sharutils)uuencode invocation. Force binary file to 7-bits. +@end direntry + +@finalout +@c %**end of header + +@include version.texi + +@copying +This manual documents version @value{VERSION} of the GNU shar utilities. + +Copyright @copyright{} 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with no Front-Cover Texts, and with no Back-Cover +Texts. A copy of the license is included in the section entitled ``GNU +Free Documentation License''. +@end quotation +@end copying + +@titlepage +@title GNU sharutils, version @value{VERSION} +@subtitle A set of shell archiver utilities +@subtitle Edition @value{EDITION}, @value{UPDATED} +@author Jan Dj@"arv +@author Fran@,cois Pinard + +@page +@vskip 0pt plus 1filll +@insertcopying +@end titlepage + +@c If your makeinfo doesn't grok this @ifnottex directive, then either +@c get a newer version of makeinfo or do s/ifnottex/ifinfo/ here and on +@c the matching @end directive below. +@ifnottex +@node Top, Introduction, (dir), (dir) +@top GNU @code{shar} utilities + +@insertcopying +@end ifnottex + +@c @item @b{@code{sharutils}} @value{hfillkludge} (UtilD, SrcCD (??)) +@c +GNU @code{shar} makes so-called shell archives out of many files, +preparing them for transmission by electronic mail services, +while @code{unshar} helps unpacking shell archives after reception. +Other tools help using @code{shar} with the electronic mail system, +and even allow synchronization of remote directory trees. +This is release @value{VERSION}. + +@menu +* Introduction:: Introduction to this toolset +* Basic:: The basic @code{shar} utilities +* Wrappers:: Simple wrappers around @code{shar} +* Remsync:: Remote synchronisation of directories +* GNU Free Documentation License:: The license for this documentation. + +@detailmenu + --- The Detailed Node Listing --- + +The basic @code{shar} utilities + +* shar invocation:: Invoking the @code{shar} program +* unshar invocation:: Invoking the @code{unshar} program +* Miscellaneous:: Miscellaneous considerations + +Invoking the @code{shar} program + +* Selecting:: Selecting files +* Splitting:: Splitting output +* Headers:: Controlling the shar headers +* Stocking:: Selecting how files are stocked +* Transmission:: Protecting against transmission +* Kinds:: Producing different kinds of shar + +Simple wrappers around @code{shar} + +* Invoking mailshar:: The @code{mailshar} command and arguments +* Invoking mail-files:: The @code{mail-files} command and arguments +* Invoking find-mailer:: The @code{find-mailer} command and arguments + +Remote synchronisation of directories + +* Quick start:: Quick start at using @code{remsync} +* Invoking remsync:: The @code{remsync} command and arguments +* Conveniences:: Automatic mechanisms in the @code{remsync} program +* Commands:: Commands for @code{remsync} +* Internals:: How @code{remsync} works +* Formats:: Related file formats +* Xremsync:: Format of the @file{.remsync} file +* Package:: Format of transiting packages +* Alternatives:: Other means to synchronization +* Previous:: Documentation for obsolete scripts + +The @code{remsync} command and arguments + +* Conveniences:: Automatic mechanisms in the @code{remsync} program +* Commands:: Commands for @code{remsync} + +Related file formats + +* Xremsync:: Format of the @file{.remsync} file +* Package:: Format of transiting packages + +Documentation for obsolete scripts + +* mailsync:: mailsync +* resync:: resync + +GNU Free Documentation License + +* How to use this License for your documents:: + +@end detailmenu +@end menu + +@node Introduction, Basic, Top, Top +@chapter Introduction to this toolset + +GNU @code{uuencode} and @code{uudecode} have an history which roots +are lost in ages, and we will not even try to trace it. The current +versions were brought into GNU by Ian Lance Taylor, and later +modernized by Ulrich Drepper. GNU @code{shar} surely has a long +history, too. All along this long road, numerous users contributed +various improvements. The file @file{THANKS} in the distribution, +as far as we know, contain the names of all contributors we could +identify, and for which email addresses are seemingly valid. + +Please help us getting the history straight, for the following +information is somewhat approximative. James Gosling wrote the +public domain @code{shar 1.x}. William Davidsen rewrote it as +@code{shar 2.x}. Warren Tucker implemented modifications and called +it @code{shar 3.x}. Richard Gumpertz maintained it until 1990. +Fran@,cois Pinard, from the public domain @code{shar 3.49}, made +@code{GNU shar 4.x}, in 1994. Some modules and other code sections +were freely borrowed from other GNU distributions, bringing this +@code{shar} under the terms of the GNU General Public License. + +The few wrapper scripts and the @code{remsync} program have been +contributed more recently by Fran@,cois Pinard, just as an +attempt for making this GNU @code{sharutils} toolset more useful. + +Your feedback helps us to make a better and more portable product. +Mail suggestions and bug reports (including documentation errors) +for these programs to @file{bug-gnu-utils@@prep.ai.mit.edu}. + +@node Basic, Wrappers, Introduction, Top +@chapter The basic @code{shar} utilities + +GNU @code{shar} makes so-called shell archives out of many files, +preparing them for transmission by electronic mail services. +A @dfn{shell archive} is a collection of files that can be unpacked by +@code{/bin/sh}. A wide range of features provide extensive flexibility +in manufacturing shars and in specifying shar @emph{smartness}. For +example, @code{shar} may compress files, uuencode binary files, split +long files and construct multi-part mailings, ensure correct unsharing +order, and provide simplistic checksums. @xref{shar invocation}. + +GNU @code{unshar} scans a set of mail messages looking for the start +of shell archives. It will automatically strip off the mail headers +and other introductory text. The archive bodies are then unpacked by +a copy of the shell. @code{unshar} may also process files containing +concatenated shell archives. @xref{unshar invocation}. + +@menu +* shar invocation:: Invoking the @code{shar} program +* unshar invocation:: Invoking the @code{unshar} program +* Miscellaneous:: Miscellaneous considerations +@end menu + +@node shar invocation, unshar invocation, Basic, Basic +@section Invoking the @code{shar} program +@pindex shar + +The format of the @code{shar} command is one of: + +@example +shar [ @var{option} ] @dots{} @var{file} @dots{} +shar -S [ @var{option} ] @dots{} +@end example + +In the first form, the file list is given as command arguments. In the +second form, the file list is read from standard input. The resulting +archive is sent to standard output unless the @code{-o} option is given. + +Options can be given in any order. Some options depend on each other: +the @code{-o} option is required if the @code{-l} or @code{-L} option +is used. The @code{-n} option is required if the @code{-a} option +is used. Also see @code{-V} below. + +Some options are special purpose: + +@table @code + +@item --help +Print a help summary on standard output, then immediately exits. + +@item --version +Print the version number of the program on standard output, then +immediately exits. + +@item -q +@itemx --quiet +Verbose @emph{off} at @code{shar} time. Messages are usually issued +on standard error to let the user follow the progress, while making +the archives. This option inhibits these messages. + +@end table + +@menu +* Selecting:: Selecting files +* Splitting:: Splitting output +* Headers:: Controlling the shar headers +* Stocking:: Selecting how files are stocked +* Transmission:: Protecting against transmission +* Kinds:: Producing different kinds of shar +@end menu + +@node Selecting, Splitting, shar invocation, shar invocation +@subsection Selecting files + +@table @code + +@item -p +@itemx --intermix-type +Allow positional parameter options. The options @code{-M}, @code{-B}, +@code{-T}, @code{-z} and @code{-Z} may be embedded, and files to +the right of the option will be processed in the specified mode. +Without the @code{-p} option, embedded options would be interpreted +as file names. +@c for more information on these options. +@xref{Stocking}. + +@item -S +@itemx --stdin-file-list +Read list of files to be packed from the standard input rather +than from the command line. Input must be one file name per line. +This switch is especially useful when the command line will not hold +the list of files to be packed. For example: + +@example +find . -type f -print | \ + shar -S -o /somewhere/big.shar +@end example + +If @code{-p} is specified on the command line, then the options +@code{-M}, @code{-B}, @code{-T}, @code{-z} and @code{-Z} may be +included in the standard input (on a line separate from file names). +The maximum number of lines of standard input, file names and options, +may not exceed 1024. + +@end table + +@node Splitting, Headers, Selecting, shar invocation +@subsection Splitting output + +@table @code + +@item -o @var{@var{prefix}} +@itemx --output-prefix=@var{prefix} +Save the archive to files @file{@var{prefix}.01} through +@file{@var{prefix}.@var{nnn}} instead of standard output. This option +@emph{must} be used when the @code{-l} or the @code{-L} switches +are used. + +When @var{prefix} contains any @samp{%} character, @var{prefix} is then +interpreted as a @code{sprintf} format, which should be able to display +a single decimal number. When @var{prefix} does not contain such a +@samp{%} character, the string @samp{.%02d} is internally appended. + +@item -l @var{size} +@itemx --whole-size-limit=@var{size} +Limit the output file size to @var{size} times 1024 bytes but don't +split input files. This allows the recipient of the shell archives +to unpack them in any order. + +@item -L @var{size} +@itemx --split-size-limit=@var{size} +Limit output file size to @var{size} times 1024 bytes and split files +if necessary. The archives created with this option must be unpacked +in the correct order. If the recipient of the shell archives wants to +put all of them in a single folder, she shall save them in the correct +order for @code{unshar}, used with option @code{-e}, to unpack them +all at once. @xref{unshar invocation}. + +For people used to saving all the shell archives into a single mail +folder, care must be taken to save them in the appropriate order. +For those having the appropriate tools (like Masanobu Umeda's +@code{rmailsort} package for GNU Emacs), shell archives can be saved +in any order, then sorted by increasing date (or send time) before +massive unpacking. + +@end table + +@node Headers, Stocking, Splitting, shar invocation +@subsection Controlling the shar headers + +@table @code + +@item -n @var{name} +@itemx --archive-name=@var{name} +Name of archive to be included in the header of the shar files. +Also see the @code{-a} switch further down. + +@item -s @var{address} +@itemx --submitter=@var{address} +The @code{-s} option allows for overriding the email address for the +submitter, for when the default is not appropriate. The automatically +determined address looks like @file{@var{username}@@@var{hostname}}. + +@item -a +@itemx --net-headers +Allows automatic generation of headers: + +@example +Submitted-by: @var{address} +Archive-name: @var{name}/part@var{nn} +@end example + +The @var{name} must be given with the @code{-n} switch. If name +includes a @samp{/}, then @samp{/part} isn't used. Thus +@samp{-n xyzzy} produces: +@example +xyzzy/part01 +xyzzy/part02 +@end example + +@noindent +while @samp{-n xyzzy/patch} produces: +@example +xyzzy/patch01 +xyzzy/patch02 +@end example + +@noindent +and @samp{-n xyzzy/patch01.} produces: +@example +xyzzy/patch01.01 +xyzzy/patch01.02 +@end example + +@item -c +@itemx --cut-mark +Start the shar with a cut line. A line saying @samp{Cut here} is +placed at the start of each output file. + +@item -t +@itemx --translate +Translate messages in the script. If you have set the @code{LANG} environment +variable, messages printed by @code{shar} will be in the specified language. +The produced script will still be emitted using messages in the lingua +franca of the computer world: English. This option will cause the script +messages to appear in the languages specified by the @code{LANG} environment +variable set when the script is produced. + +@end table + +@node Stocking, Transmission, Headers, shar invocation +@subsection Selecting how files are stocked + +@table @code + +@item -T +@itemx --text-files +Treat all files as text, regardless of their contents. + +@item -B +@itemx --uuencode +Treat all files as binary, use @code{uuencode} prior to packing. This +increases the size of the archive. The recipient must have +@code{uudecode} in order to unpack. + +@display +Use of @code{uuencode} is not appreciated by many on the net, because +people like to readily see, by mere inspection of a shell archive, +what it is about. +@end display + +@item -M +@itemx --mixed-uuencode +Mixed mode. Automatically determine if the files are text or binary +and archive correctly. Files found to be binary are uuencoded prior +to packing. This option is selected by default. + +For a file is considered to be a text file, instead of a binary file, +all the following should be true simultaneously: +@enumerate +@item +The file does not contain any ASCII control character besides @key{BS} +(backspace), @key{HT} (horizontal tab), @key{LF} (new line) or @key{FF} +(form feed). +@item +The file does not contains a @key{DEL} (delete). +@item +The file contains no character with its eighth-bit set. +@item +The file, unless totally empty, terminates with a @key{LF} (newline). +@item +No line in the file contains more than 200 characters. For counting +purpose, lines are separated by a @key{LF} (newline). +@end enumerate + +@item -z +@itemx --gzip +Use @code{gzip} and @code{uuencode} on all files prior to packing. +The recipient must have @code{uudecode} and @code{gzip} (used with +@code{-d}) in order to unpack. + +Usage of @code{-z} in net shars will cause you to be flamed off +the earth. + +@item -g @var{level} +@itemx --level-for-gzip=@var{level} +When doing compression, use @code{-@var{level}} as a parameter to +@code{gzip}. The @code{-g} option turns on the @code{-z} option +by default. The default value is 9, that is, maximum compression. + +@item -j +@itemx --bzip2 +Use @code{bzip2} and @code{uuencode} on all files prior to packing. +The recipient must have @code{uudecode} and @code{bzip2} (used with +@code{-d}) in order to unpack. + +Usage of @code{-j} in net shars will cause you to be flamed off +to hell. + +@item -Z +@itemx --compress +Use @code{compress} and @code{uuencode} on all files prior to packing. +The recipient must have @code{uudecode} and @code{compress} (used +with @code{-d}) in order to unpack. Option @code{-C} is a synonymous +for @code{-Z}, but is deprecated. + +Usage of @code{-Z} in net shars will cause you to be flamed off +the earth. + +@item -b @var{bits} +@itemx --bits-per-code=@var{bits} +When doing compression, use @code{-b@var{x}} as a parameter to +@code{compress}. The @code{-b} option turns on the @code{-Z} +option by default. The default value is 12, foreseeing the memory +limitations of some @code{compress} programs on smallish systems, at +@code{unshar} time. + +@end table + +@node Transmission, Kinds, Stocking, shar invocation +@subsection Protecting against transmission errors + +Transmission of shell archives is not always free of errors. So one +should make consistency checks on the receiving site. A very simple +(and unreliable) method is running the UNIX @code{wc} tool on the output +file. This can report the number of characters in the file. + +As one can guess this does not catch all errors. Especially changing of +a character value does not change the computed check sum. To achieve +this goal better method were invented and standardized. One very strong +is MD5 (MD = message digests). This is standardized in RFC 1321. The +produced shell scripts do not force the @code{md5sum} program to be +installed on the system. This is necessary because it is not yet part +of every UNIX. The program is however not necessary for producing the +shell archive. + +@table @code + +@item -w +@itemx --no-character-count +Do @emph{not} check with @samp{wc -c} after unpack. The default is +to check. + +@item -D +@itemx --no-md5-digest +Do @emph{not} check with @samp{md5sum} after unpack. The default is +to check. + +@item -F +@itemx --force-prefix +Prepend the prefix character to every line even if not required. +This option may slightly increase the size of the archive, especially +if @code{-B} or @code{-Z} is used. Normally, the prefix character +is @samp{X}. If the parameter to the @code{-d} option starts with +@samp{X}, then the prefix character becomes @samp{Y}. + +@item -d @var{string} +@itemx --here-delimiter=@var{string} +Use @var{string} to delimit the files in the shar instead of +@samp{SHAR_EOF}. This is for those who want to personalize their +shar files. + +@end table + +@node Kinds, , Transmission, shar invocation +@subsection Producing different kinds of shars + +@table @code + +@item -V +@itemx --vanilla-operation +This option produces @dfn{vanilla} shars which rely only upon the +existence of @code{echo}, @code{test} and @code{sed} in the unpacking +environment. + +The @code{-V} disables options offensive to the @dfn{network cop} +(or @dfn{brown shirt}). It also changes the default from mixed mode +@code{-M} to text mode @code{-T}. Warnings are produced if option +@code{-B}, @code{-z}, @code{-j}, @code{-Z}, @code{-p} or @code{-M} is +specified (any of which does or might require @code{uudecode}, @code{gzip}, +@code{bzip2} or @code{compress} in the unpacking environment). + +@item -P +@itemx --no-piping +In the shar file, use a temporary file to hold the file to +@code{uudecode}, instead of using pipes. This option is mandatory +when you know the unpacking @code{uudecode} is unwilling to merely +read its standard input. Richard Marks wrote what is certainly the +most (in)famous of these, for MSDOS :-). + +(Here is a side note from the maintainer. Why isnt't this option +the default? In the past history of @code{shar}, it was decided +that piping was better, surely because it is less demanding on disk +space, and people seem to be happy with this. Besides, I think +that the @code{uudecode} from Richard Marks, on MSDOS, is wrong in +refusing to handle @code{stdin}. So far that I remember, he has +the strong opinion that a program without any parameters should +give its @code{--help} output. Besides that, should I say, his +@code{uuencode} and @code{uudecode} programs are full-featured, one +of the most complete set I ever saw. But Richard will not release +his sources, he wants to stay in control.) + +@item -x +@itemx --no-check-existing +Overwrite existing files without checking. If neither @code{-x} nor +@code{-X} is specified, when unpacking itself, the shell archive will +check for and not overwrite existing files (unless @code{-c} is passed +as a parameter to the script when unpacking). + +@item -X +@itemx --query-user +Interactively overwrite existing files. + +Use of @code{-X} produces shars which @emph{will} cause problems +with some @code{unshar}-style procedures, particularily when used +together with vanilla mode (@code{-V}). Use this feature mainly for +archives to be passed among agreeable parties. Certainly, @code{-X} +is @emph{not} for shell archives which are to be submitted to Usenet +or other public networks. + +The problem is that @code{unshar} programs or procedures often feed +@file{/bin/sh} from its standard input, thus putting @file{/bin/sh} +and the shell archive script in competition for input lines. As an +attempt to alleviate this problem, @code{shar} will try to detect if +@file{/dev/tty} exists at the receiving site and will use it to read +user replies. But this does not work in all cases, it may happen that +the receiving user will have to avoid using @code{unshar} programs +or procedures, and call @code{/bin/sh} directly. In vanilla mode, +using @file{/dev/tty} is not even attempted. + +@item -m +@itemx --no-timestamp +Avoid generating @code{touch} commands to restore the file modification +dates when unpacking files from the archive. + +When the timestamp relationship is not preserved, some files like +@file{configure} or @file{*.info} may be uselessly remade after +unpacking. This is why, when this option is not used, a special +effort is made to restore timestamps, + +@item -Q +@itemx --quiet-unshar +Verbose @emph{off} at @code{unshar} time. Disables the inclusion of +comments to be output when the archive is unpacked. + +@item -f +@itemx --basename +Use only the last file name component of each input file name, ignoring +any prefix directories. This is sometimes useful when building a shar +from several directories, or another directory. If a directory name +is passed to @code{shar}, the substructure of that directory will be +restored whether @code{-f} is specified or not. + +@end table + +@node unshar invocation, Miscellaneous, shar invocation, Basic +@section Invoking the @code{unshar} program +@pindex unshar + +The format of the @code{unshar} command is: + +@example +unshar [ @var{option} ] @dots{} [ @var{file} @dots{} ] +@end example + +Each @var{file} is processed in turn, as a shell archive or a +collection of shell archives. If no files are given, then standard +input is processed instead. + +Options: + +@table @code + +@item --version +Print the version number of the program on standard output, then +immediately exits. + +@item --help +Print an help summary on standard output, then immediately exits. + +@item -d @var{directory} +@itemx --directory=@var{directory} +Change directory to @var{directory} before unpacking any files. + +@item -c +@itemx --overwrite +@item -f +@itemx --force +Passed as an option to the shar file. Many shell archive scripts +(including those produced by @code{shar} 3.40 and newer) accepts +a @code{-c} argument to indicate that existing files should be +overwritten. + +The option @code{-f} is provided for a more unique interface. Many +programs (such as @code{cp} and @code{mv}) use this option to trigger +the very same action. + +@item -e +@itemx --exit-0 +This option exists mainly for people who collect many shell archives +into a single mail folder. With this option, @code{unshar} isolates +each different shell archive from the others which have been put in the +same file, unpacking each in turn, from the beginning of the file +towards its end. Its proper operation relies on the fact that many shar +files are terminated by a @w{@samp{exit 0}} at the beginning of a line. + +Option @code{-e} is internally equivalent to @w{@code{-E "exit 0"}}. + +@item -E @var{string} +@itemx --split-at=@var{string} +This option works like @code{-e}, but it allows you to specify the +string that separates archives if @samp{exit 0} isn't appropriate. + +For example, noticing that most @file{.signatures} have a @samp{--} on +a line right before them, one can sometimes use @samp{--split-at=--} +for splitting shell archives which lack the @samp{exit 0} line at end. +The signature will then be skipped altogether with the headers of +the following message. + +@end table + +@node Miscellaneous, , unshar invocation, Basic +@section Miscellaneous considerations + +Here is a place-holder for many considerations which do not fit +elsewhere, while not worth a section for themselves. + +Be careful that the output file(s) are not included in the inputs +or @code{shar} may loop until the disk fills up. Be particularly +careful when a directory is passed to @code{shar} that the output +files are not in that directory (or a subdirectory of that directory). + +When a directory is passed to @code{shar}, it may be scanned more +than once, to conserve memory. Therefore, one should be careful to +not change the directory contents while @code{shar} is running. + +No attempt is made to restore the protection and modification dates +for directories, even if this is done by default for files. Thus, if +a directory is given to @code{shar}, the protection and modification +dates of corresponding unpacked directory may not match those of +the original. + +Use of the @code{-M} or @code{-B} options will slow down the archive +process. Use of the @code{-z} or @code{-Z} options may slow the +archive process considerably. + +Let us conclude by a showing a few examples of @code{shar} usage: + +@example +shar *.c > cprog.shar +shar -Q *.[ch] > cprog.shar +shar -B -l28 -oarc.sh. *.arc +shar -f /lcl/src/u*.c > u.sh +@end example + +@noindent +The first shows how to make a shell archive out of all C program +sources. The second produces a shell archive with all @file{.c} +and @file{.h} files, which unpacks silently. The third gives a shell +archive of all uuencoded @file{.arc} files, into files @file{arc.sh.01} +through to @file{arc.sh.@var{nnn}}. The last example gives a shell +archive which will use only the file names at unpack time. + +@node Wrappers, Remsync, Basic, Top +@chapter Simple wrappers around @code{shar} + +@menu +* Invoking mailshar:: The @code{mailshar} command and arguments +* Invoking mail-files:: The @code{mail-files} command and arguments +* Invoking find-mailer:: The @code{find-mailer} command and arguments +@end menu + +@node Invoking mailshar, Invoking mail-files, Wrappers, Wrappers +@section The @code{mailshar} command and arguments + +@node Invoking mail-files, Invoking find-mailer, Invoking mailshar, Wrappers +@section The @code{mail-files} command and arguments + +@node Invoking find-mailer, , Invoking mail-files, Wrappers +@section The @code{find-mailer} command and arguments + +@node Remsync, , Wrappers, Top +@chapter Remote synchronisation of directories + +For using the @code{remsync} facility, besides @code{sharutils} of +course, you also need @code{perl}, GNU @code{tar}, GNU @code{findutils} +and @code{gzip}, all installed. You also need a @code{sum} program +which is BSD-compatible, for example the one from GNU @code{textutils}. + +The @code{remsync} program tries to maintain up-to-date copies of +whole hierarchy of files over many loosely connected sites, provided +there is at least some slow electronic mail between them. It prepares +and sends out specially packaged files called @dfn{synchronization +packages}, and is able to processes them after reception. + +There is no @emph{master} site, each site has an equal opportunity +to modify files, and modified files are propagated. Among many +other commands, the @code{broadcast} command prepares and sends a +synchronization package from the current site to all others, while +the @code{process} command is used to apply synchronization packages +locally after reception from remote sites. @code{remsync} will +never send a file to another site without being asked to with the +@code{broadcast} command, and besides the project synchronization +state files (always named @file{.remsync}), it will never modify a +file locally without being asked to with the @code{process} command. + +The unit of transmission is a file, whatever its size may be. +Nothing less than whole files are being transmitted. People deciding +to cooperate in keeping a synchronized set of files must have trust +each other, as each participant has the power of modifying the +contents of files at other sites. When @code{remsync} is used by a +single individual travelling between many sites, as it is often the +case, this confidence problem should be easier to resolve :-). + +The @code{process} command will modify a file without asking +confirmation, as long as there is no reason to believe that the file +has been modified at more than one place. When some confusion arises +from the fact many people independently modified a single file, the +receiving user of conflicting files will have the duty of resolving +them into a merged version. So, the merging has to be done at the +site where the discrepancy is observed, from where it is propagated +again to others participants. There is no locking mechanism, so people +should use other means, like electronic mail, for telling each other +what they do, and which part of a project they are working on. + +@menu +* Quick start:: Quick start at using @code{remsync} +* Invoking remsync:: The @code{remsync} command and arguments +* Conveniences:: Automatic mechanisms in the @code{remsync} program +* Commands:: Commands for @code{remsync} +* Internals:: How @code{remsync} works +* Formats:: Related file formats +* Xremsync:: Format of the @file{.remsync} file +* Package:: Format of transiting packages +* Alternatives:: Other means to synchronization +* Previous:: Documentation for obsolete scripts +@end menu + +@node Quick start, Invoking remsync, Remsync, Remsync +@section Quick start at using @code{remsync} + +If you are in a real hurry, you can follow the recipe given here, +and postpone studying this manual further. However, we will consider +only a simple case. In any case, it is good to read the full example, +as it gives a good picture of the overall usage of @code{remsync}. + +For any sizeable project, it might not be convenient to start with +one site having it all and the other site having nothing, because +this would cause the first synchronization to be huge. It is more +practical to move over a copy of the project by other means, might it +be diskettes, tapes, or @code{mailshar}. So let's presume both sites +have a copy of the project, not necessarily identical, but close. + +For the following example, we presume that under the same +domain @file{champignac.land}, there are two machines named +@file{spirou} and @file{fantasio}. Further, the participating +user on @file{spirou@@spirou.champignac.land} has @file{spirou} +for a login name, and similarily, the participating user on +@file{fantasio.champignac.land} has @file{fantasio} for a login name. +On the @file{spirou} machine, user @file{spirou} keeps the project +under his home, in directory @file{spirou-copy}, while on the +@file{fantasio} machine, user @file{fantasio} keeps the project under +his home, in directory @file{fantasio-copy}. Of course, user names +might be the same, as well as the directories containing the project. +We use different names here just to make the example clearer. + +Here is a full transcript of the initialization session, normally +executed only once, and slightly edited to make it more suitable for +this manual. The example is broken down in little parts, allowing +explanations and comments. + +@example +% cd ~/spirou-copy +% remsync +remsync (format *.*) - GNU sharutils *.* + +>> mode init + +init>> remote fantasio@@fantasio.champignac.land ~/fantasio-copy +* Directory `~/spirou-copy is not ready for synchronization +Should I prepare it for its first time (y/n)? [y] +Please enter a short project description: Zorglub project +What is your full email address, here? [spirou@@spirou.champignac.land] +@end example + +@noindent +These commands prepare the @file{~/spirou-copy} hierarchy for +synchronization. You should be located at the top directory of +the hierarchy at the time the command @code{remsync} is called. + +The @samp{mode init} command instructs @code{remsync} that no files +should be sent in the synchronization package, only their checksum. +The goal here is to inform the other site of what we have, and what +we don't, somewhat disregarding the fact the other site still looks +like it has nothing yet. + +The @code{remote} command is the key in establishing a synchronization +link. It has two parameters, the first being the email address of the +partner at the other site (as seen from here, if this matters), the +second being the location of the directory where the package should +reside on the remote site (as seen from there). + +Because there is no @file{.remsync} file in the project's top-level +directory, @code{remsync} concludes this is a first synchronization, +and so, ask a few questions, often telling in square brackets what +answer would be implied by a mere @key{Return} or @key{Enter}. If the +default reply seems inappropriate, just give the correct information. + +@example +init>> broadcast + + Broadcasting to address `fantasio@@fantasio.champignac.land' + Studying local files for their signature + Registering file `file1' + Registering file `file2' + Registering file `file3' +* There were new registrations, please check them +Should I resume the current command (y/n)? [y] +Mailing shar to fantasio@@fantasio.champignac.land +Message queued + Command `broadcast' done + +init>> quit + +% +@end example + +The @code{broadcast} command produces an inventory of the project's +files at this end, and mail it to the other partners. But before doing +so, because some new files were registered into the synchronization, +the user is given the opportunity of interrupting the command, if it +is felt that some registered file should really not be there. + +The @code{quit} command exits @code{remsync}, but only once it created +the @file{.remsync} file on disk. + +@emph{Then}, on @file{fantasio.champignac.land}, user @file{fantasio} +will receive the synchronization package, easily recognizable by the +fact the string @samp{.remsync.tar.gz} appears in the @code{Subject} +header of the message. Let's assume @file{fantasio} saves the whole +message as file @file{/tmp/synchro-message}. Then, @file{fantasio} +might use the following recipe: + +@example +% cd /tmp +% unshar synchro-message +uudecoding file .remsync.tar.gz +% remsync process + Exploding archive `/tmp/.remsync.tar.gz' + + Package being received: + from address `spirou@@spirou.champignac.land' + for project `Zorglub project' + Visiting directory `~/fantasio-copy', remote was `~/spirou-copy' + Initializing file `.remsync' from received information + Studying local files for their signature + Command `process' done +@end example + +In that @samp{remsync process} call, the @code{process} command is +being given non-interactively, so @code{remsync} avoids unneeded +interactions and exits right away once the command is done. +But equivalently, @code{remsync} might be called without arguments, +the @code{process} command given interactively, and a @code{quit} +command later required to get out of @code{remsync}. + +When receiving a synchronization package, @code{remsync} should be +executed in the directory where the file @file{.remsync.tar.gz} has +been unpacked, which might be quite unrelated to the project itself. +Here, @file{fantasio} executed @code{remsync} in @file{/tmp/}, while +the project resides in @file{~/fantasio-project}. The synchronization +package itself contains enough information for @code{remsync} to +automatically visit the proper directory. + +After this operation, @file{fantasio.champignac.land} has a +@file{.remsync} file in @file{~/fantasio-copy}, and the remote +synchronization initialization is completed. Either @file{spirou} +or @file{fantasio} may then modify files on their respective machine. +If @file{spirou} modifies @file{file2} in the project, @file{spirou} +may execute: + +@example +% cd ~/spirou-copy +% remsync broadcast + Reading configuration for project `Zorglub project' + + Broadcasting to address `fantasio@@fantasio.champignac.land' + Studying local files for their signature + Packaging file `file2' +shar: Saving file2 (gzipped) +Mailing shar to fantasio@@fantasio.champignac.land +Message queued + Command `broadcast' done +@end example + +In fact, any time a participant later feel like sending modified files +to all partners, s/he just have to change the directory to the top of +the project hierarchy, then call @samp{remsync broadcast}. Any time a +synchronization package is later received, at either end, the receiving +user should apply @code{unshar} to related electronic messages for +reconstructing the synchronization package @file{.remsync.tar.gz}, then +call @samp{remsync process} in the directory containing this package. + +@node Invoking remsync, Conveniences, Quick start, Remsync +@section The @code{remsync} command and arguments + +At the shell prompt, calling the command @code{remsync} without any +parameters initiates an interactive dialog, in which the user types +commands and receives feedback from the program. + +The command @code{remsync}, given at the shell prompt, may have +arguments, in which case these arguments taken together form one +@code{remsync} interactive command. However, @samp{--help} and +@samp{--version} options are interpreted especially, with their usual +effect in GNU. Once this command has been executed, no more commands +are taken from the user and @code{remsync} terminates execution. +This allows for using @code{remsync} in some kind of batch mode. +It is unwise to redirect @code{remsync} standard input, because +user interactions might often be needed in ways difficult to predict +in advance. + +The two most common usages of @code{remsync} are the commands: + +@example +remsync b +remsync p +@end example + +The first example executes the @code{broadcast} command, which sends +synchronization packages to all connected remote sites for the current +local directory tree. + +The second example executes the @code{process} command, which studies +and complies with a synchronisation package saved in the current +directory (not necessarily into the synchronized directory tree), under +the usual file name @file{remsync.tar.gz}. + +@menu +* Conveniences:: Automatic mechanisms in the @code{remsync} program +* Commands:: Commands for @code{remsync} +@end menu + +@node Conveniences, Commands, Invoking remsync, Remsync +@section Automatic mechanisms in the @code{remsync} program + +The following points apply to many of the @code{remsync} commands. +We describe them here once and for all. + +@itemize @bullet + +@item +The file @file{.remsync} describes the various properties for the +current synchronization. It is kept right in the top directory of a +synchronized directory tree. Some commands may be executed without any +need for this file. The program waits as far as possible before reading +it. + +@item +If the @file{.remsync} file is not found when required, and only then, +the user is interactively asked to fill a questionnaire about it. + +@item +If the @file{.remsync} file has been logically modified after having +been read, or if it just has been created, the program will save it back +on disk. But it will do so only before reading another @file{.remsync} +file, or just before exit. A preexisting @file{.remsync} will be +renamed to @file{.remsync.bak} before it is rewritten, when this is +done, any previous @file{.remsync.bak} file is discarded. + +@item +Many commands refer to previously entered information by repeating this +information. For example, one can refer to a particular @code{scan} +statement by entering the wildcard to be scanned by this statement. +An alternative method of specifying a statement consists in using the +decimal number which appears between square brackets in the result +of a @code{list} command. + +@item +Whenever a site list must be given, it is a space separated list of +remote sites. If the list is preceeded by a bang (@key{!}), the list is +complemented, that is, the sites that will be operated upon are all +those @emph{not} appearing in the list. As a special case, if the site +list is completely empty, then all sites are selected. + +@end itemize + +@node Commands, Internals, Conveniences, Remsync +@section Commands for @code{remsync} + +Program commands to @code{remsync} may be given interactively by the +user sitten at a terminal. They can come from the arguments of the +@code{remsync} call at the shell level. Internally, the @code{process} +command might obey many sub-commands found in a received synchronization +package. + +Program commands are given one per line. Lines beginning with a sharp +(@key{#}) and white lines are ignored, they are meant to increase +clarity or to introduce user comments. With only a few exceptions, +commands are introduced by a keyword and often contains other keywords. +In all cases, the keywords specific to @code{remsync} may be abbreviated +to their first letter. When there are many keywords in succession, the +space separating them may be omitted. So the following commands are +all equivalent: + +@example +list remote +l remote +list r +l r +listremote +lr +@end example + +@noindent +while the following are not legal: + +@example +l rem +lisremote +@end example + +Below, for clarity, keywords are written in full and separated by +spaces. Commands often accept parameters, which are then separated by +spaces. All available commands are given in the table. The first few +commands do not pre-require the file @file{.remsync}. The last three +commands are almost never used interactively, but rather automatically +triggered while @code{process}'ing received synchronization packages. + +@table @asis + +@item @code{?} + +Display a quick help summary of available commands. + +@item @code{!} [ @var{shell-command} ] + +If @var{shell-command} has been given, execute it right now as a shell +command. When not given, rather start an interactive shell. Exiting +from the shell will return to this program. The started shell is taken +from the @code{SHELL} environment variable if set, else @code{sh} is +used. + +@item @code{quit} + +Leave the program normally and return to the shell. + +@item @code{abort} + +Leave the program with a nonzero exit status and return to the shell. +No attempt is made to save a logically modified @file{.remsync} file. + +@item @code{visit} @var{directory} + +Select another synchronized directory tree for any subsequent operation. +@var{directory} is the top directory of the synchronized directory tree. + +@item @code{process} [ @var{file} ] + +@item @code{list} [ @var{type} ] + +List all known statements about some information @var{type}. Allowable +keywords for @var{type} are @code{local}, @code{remote}, @code{scan}, +@code{ignore} and @code{files}. The keyword @code{files} asks for all +empty statements (see later). If @var{type} is omitted, then list all +known statements for all types, except those given by @code{files}. + +@item [ @code{create} ] @var{type} @var{value} + +Create a new statement introducing a @var{value} for a given @var{type}. +Allowable keywords for @var{type} are @code{remote}, @code{scan} and +@code{ignore}. The @code{create} keyword may be omitted. + +For @code{create} @code{ignore}, when the pattern is preceeded by a bang +(@key{!}), the condition is reversed. That is, only those files which +do match the pattern will be kept for synchronization. + +@item @code{delete} @var{type} @var{value} + +Delete an existing statement supporting some @var{value} for a given +@var{type}. Allowable keywords for @var{type} are @code{remote}, +@code{scan} and @code{ignore}. + +@item @code{email} @var{remote} @var{value} + +Modify the electronic mail address associated with some @var{remote} +site, giving it a new @var{value}. The special @code{local} keyword for +@var{remote} may be used to modify the local electronic mail address. + +@item @code{home} @var{remote} @var{value} + +Modify the top directory of the synchronized directory tree associated +with some @var{remote} site, giving it a new @var{value}. The special +@code{local} keyword for @var{remote} may be used to modify the local +top directory. + +@item @code{broadcast} @var{site_list} + +Send by electronic mail an update package to all sites from +@var{site_list}, containing for each site all and only those files which +are known to be different between the remote site and here. + +@item @code{version} @var{version} + +This command is not meant for interactive use. It establishes the +@code{remsync} version needed to process the incoming commands. + +@item @code{from} @var{site_list} + +This command is not really meant for interactive use. The first site +from the @var{site_list} is the remote site which originated the +synchronization package. All the others are all the sites, including +here, which were meant to be synchronized by the @code{broadcast} +command that was issued at the originating remote site. + +@item @code{sum} @var{file} @var{checksum} + +This command is not really meant for interactive use. It declares the +@var{checksum} value of a particular @var{file} at the originating +remote site. Also, if at least one @code{sum} command is received, then +it is guaranteed that the originating remote site sent one @code{sum} +command for each and every file to be synchronized, so any found local +file which was not subject of any @code{sum} command does not exist +remotely. + +@item @code{if} @var{file} @var{checksum} @var{packaged} + +This command is not really meant for interactive use. It directs the +@code{remsync} program to check if a local @var{file} has a given +@var{checksum}. If the checksum agrees, then the local file will be +replaced by the @var{packaged} file, as found in the received +synchronization invoice. + +@end table + +@node Internals, Formats, Commands, Remsync +@section How @code{remsync} works + +How does @code{remsync} keep track of what is in sync, and what isn't? +@xref{Xremsync}, for a the documentation on the @file{.remsync} file +format. I understand that a mere description of the format does not +replace an explanation, but in the meantime, you might guess from the +format how the program works. + +All files are summarized by a checksum, computed by the @code{sum} program. +There are a few variants of @code{sum} computing checksums in incompatible +ways, under the control of options. @code{remsync} attempts to retrieve on +each site a compatible way to do it, and complains if it cannot. + +@code{remsync} does not compare dates or sizes. Experience shown that the +best version of a file is not necessarily the one with the latest +timestamp. The best version for a site is the current version on this +site, as decided by its maintainer there, and this is this version +that will be propagated. + +Each site has an idea of the checksum of a file for all other sites. +These checksums are not necessarily identical, for sites do not +necessarily propagate to all others, and the propagation network maybe +incomplete or asymmetrical in various ways. + +Propagation is never done unattended. The user on a site has to call +@code{remsync broadcast} to issue synchronization packages for other sites. +If this is never done, the local modifications will never leave the +site. The user also has to call @code{remsync process} to apply received +synchronization packages. Applying a package does not automatically +broadcast it further (maybe this could change?). + +If a site @var{A} propagates some files to sites @var{B} and @var{D}, +but not @var{C}, site @var{B} is informed that site @var{D} also +received these files, and site @var{D} is informed that site @var{B} +also received these files, so they will not propagate again the same +files to one another. However, both site @var{B} and @var{D} are +susceptible to propagate further the same files to site @var{C}. + +It may happen that a site refuses to update a file, or modifies a file +after having been received, or merges versions, or whatever. So, +sites may have a wrong opinion of the file contents on other sites. +These differences level down after a few exchanges, and it is very +unlikely that a file would not be propagated when it should have. + +This scheme works only when the various people handling the various +files have confidence in one each other. If site @var{B} modifies a +file after having received it from site @var{A}, the file will +eventually be propagated back to site @var{A}. If the original file +stayed undisturbed on site @var{A}, that is, if @code{remsync} proves +that site @var{B} correctly knew the checksum of the original file, then +the file will be replaced on site @var{A} without any user confirmation. +So, the user on site A has to trust the changes made by the user on site +@var{B}. + +If the original file on site @var{A} had been modified after having been +sent in a synchronization package, than it is the responsibility of the +user on site @var{A} to correctly merge the local modifications with the +modifications observed in the file as received from site @var{B}. This +responsibility is real, since the merged file will later be propagated +to the other sites in an authoritative way. + +@node Formats, Xremsync, Internals, Remsync +@section Related file formats + +@menu +* Xremsync:: Format of the @file{.remsync} file +* Package:: Format of transiting packages +@end menu + +@node Xremsync, Package, Formats, Remsync +@section Format of the @file{.remsync} file + +The @file{.remsync} file saves all the information a site needs for +properly synchronizing a directory tree with remote sites. Even if it +is meant to be editable using any ASCII editor, it has a very precise +format and one should be very careful while modifying it directly, +if ever. The @file{.remsync} file is better handled through the +@code{remsync} program and commands. + +The @file{.remsync} file is made up of statements, one per line. Each +line begins with a statement keyword followed by a single @key{TAB}, +then by one or more parameters. The keyword may be omitted, in this +case, the keyword is said to be @emph{empty}, and the line begins +immediately with the @key{TAB}. After the @key{TAB}, if there are two +parameters or more, they should all be separated with a single space. +There should not be any space between the last parameter and the end of +line (unless there are explicit empty parameters). + +The following table gives the possible keywords. Their order of +presentation in the table is also the order of appearance in the +@file{.remsync} file. + +@table @code + +@item remsync +This statement identifies the @file{.remsync} format. The only +parameter states the file format version. + +@item local +This statement should appear exactly once, and has exactly two +parameters. The first parameter gives the electronic mail address the +other sites should use for sending synchronization packages here. The +second parameter gives the name of the local directory tree to +synchronize, in absolute notation. + +@item remote +This statement may appear zero, one or more times. Each occurrence +connects the synchronized directory tree to another tree on a remote +site. The first parameter gives one electronic mail address where to +send remote synchronization packages. The second parameter gives the +name of the corresponding directory tree for this remote electronic mail +address, in absolute notation. + +@item scan +This statement may appear zero, one or more times. When it does not +appear at all, the whole local directory tree will always be scanned, +searching for files to synchronize. When the statement appears at least +once, the whole local directory tree will not be scanned, but only those +files or directories appearing in one of these statements. Each +@code{scan} statement has exactly one parameter, giving one file or +directory to be studied. These are usually given relative to top +directory of the local synchronization directory tree. Shell wildcards +are acceptable. + +@item ignore +This statement may appear zero, one or more times. Each occurrence has +one parameter giving a regular expression, according to Perl syntax for +regular expressions. These @var{regexp}s are applied against each file +resulting from the scan. If any of the @code{ignore} expression matches +one of resulting file, the file is discarded and is not subject to +remote synchronization. + +@end table + +After all the statements beginning by the previous keywords, the +@file{.remsync} file usually contains many statements having the empty +keyword. The empty keyword statement may appear zero, one or more +times. Each occurrence list one file being remotely synchronized. The +first parameter gives an explicit file name, usually given relative to +the top directory of the local synchronized directory tree. Shell +wildcards are @emph{not} acceptable. + +Besides the file name parameter, there are supplementary parameters to +each empty keyword statement, each corresponding to one remote statement +in the @file{.remsync} file. The second parameter corresponds to the +first remote, the third parameter corresponds to the second remote, etc. +If there are more remote statements than supplementary parameters, +missing parameters are considered to be empty. + +Each supplementary parameter usually gives the last known checksum +value for this particular file, as computed on its corresponding +@emph{remote} site. The parameter contains a dash @kbd{-} while the +remote checksum is unknown. The checksum value for the @emph{local} +copy of the file is never kept anywhere in the @file{.remsync} file. +The special value @samp{666} indicates a checksum from hell, used +when the remote file is known to exist, but for which contradictory +information has been received from various sources. + +@node Package, Alternatives, Xremsync, Remsync +@section Format of synchronisation packages + +Each synchronisation package is transmitted as a file named +@file{.remsync.tar.gz}, which has the format of a @code{tar} archive, +further compressed with the @code{gzip} program. This archive always +contains a file named @file{.remsync-work/orders}, and zero or more +files named @file{.remsync-work/1}, @file{.remsync-work/2}, etc. +It contains no other files. Each numbered file is actually a full, +non-modified file pertaining to the hierarchy of the project, as sent +from the remote site. + +The @file{.remsync-work/orders} file drives the processing of the +received synchronization package. This ASCII file format quite +closely resembles the @file{.remsync} format, which we do not explain +again here. Only the keywords and their associated parameters are +different, and there is no empty keyword. The following table gives +the possible keywords, in the order where they normally appear. + +@table @code + +@item format +@itemx title +@itemx here +@itemx remote +@itemx ignore +@itemx scan +All those keywords are used exactly the same way as within the +@file{.remsync} file, and their format is not explained again here. +They state the file format, project title, local and possibly many +remote identifications and directories, zero or more ignores, zero +or more scans; all of these exactly as known to the remote site who +created the synchronization package. In particular, the @code{here} +line states the originating site of the package rather than the +receiving one; the receiving site should still be described by one +of the @code{remote} lines. + +@item visit +This statement appears exactly once, and has one numeric parameter. +It specifies the zero-based index in the list of remote lines above. +The index identifies the receiving site, that is, the site to which +this package was sent. + +@item copy +This statement appears exactly once, and has one or more numeric +parameters. Each specifies a zero-based index in the list of remote +lines above. All indices specify the set of all sites who where +broadcasted simultaneously, at the time this synchronization package +was issued. The index specified by the @code{visit} line should also +be one of the indices of the @code{copy} lines. The order in which +the indices are given is important, as it also establishes the order +in which file signatures are listed on the @code{check} lines below. + +@item check +This statement may appear zero, one or more times. Each occurrence +describes one file known to the project at the originating site, and +there is exactly one occurrence for each known file in the project. +Each @code{check} line has exactly @var{n}+2 parameters, where @var{n} +is the number of parameters of the @code{copy} command. The first +parameter gives a file name, relative to the top directory. The second +parameter gives the file signature for this file, as computed at the +originating site. For each remote site presented in the @code{copy} +command, and exactly in the same order, each supplementary parameter +gives the originator's idea of the signature for the said file at +this remote site. A dash (@kbd{-}) replaces the signature for a file +known @emph{not} to exist. + +@item update +This statement may appear zero, one or more times. Each occurrence +describes what to do with one of the @file{.remsync-work/@var{n}} +files, distributed within the synchronization package. In fact, +there should be exactly as many @code{update} lines that there +are numbered files in the synchronization package. Usually, each +@code{update} line immediately follows the corresponding @code{check} +line, and has exactly three parameters. The first parameter gives +a file name in the project, relative to the top level directory of +the hierarchy. The second parameter gives a file signature which the +said file should have at the receiving site, for it to be replaced +safely, with no questions asked (this is the originator's idea of +what the file signature @emph{was}, on the receiving site, prior to +its replacement). A dash (@kbd{-}) replaces this signature for a +file known @emph{not} to exist. The third parameter is the number +@var{n}, which indicates the file @file{.remsync-work/@var{n}} in +the synchronization package distribution which should replace the +corresponding project file at the receiving site. + +@end table + +@node Alternatives, Previous, Package, Remsync +@section Other means to synchronization + +One correspondent thinks that perhaps the news distribution mechanism +could be pressed into service for this job. I could have started +from C-news, say, instead of from scratch, and have progressively +bent C-news to behave like I wanted. + +My feeling is that the route was shorter as I did it, from scratch, +that it would have been from C-news. Of course, I could have +removed the heavy administrative details of C-news: the history and +@code{expire}, the daemons, the @code{cron} entries, etc., then added +the interactive features and specialized behaviors, but all this clean +up would certainly have took energies. Right now, non counting the +subsidiary scripts and shar/unshar sources, the heart of the result +is a single (1200 lines) script written in Perl, which I find fairly +more smaller and maintainable than a patched C-news distribution +would have been. + +@node Previous, , Alternatives, Remsync +@section Documentation for obsolete scripts + +This is merely a place holder for previous documentation, waiting that I +clean it up. You have no interest in reading further down. + +@menu +* mailsync:: mailsync +* resync:: resync +@end menu + +@node mailsync, resync, Previous, Previous +@subsection mailsync + +@example +Usage: mailsync [ OPTION ] ... [ EMAIL_ADDRESS ] [ DIRECTORY ] + or: mailsync [ OPTION ] ... SYNC_DIRECTORY +@end example + +Option -i simply sends a @code{ihave} package, with no bulk files. +Option -n inhibits any destructive operation and mailing. + +In the first form of the call, find a synchronisation directory in +DIRECTORY aimed towards some EMAIL_ADDRESS, then proceed with this +synchronisation directory. EMAIL_ADDRESS may be the name of a file +containing a distribution list. If EMAIL_ADDRESS is not specified, +all the synchronisation directories at the top level in DIRECTORY are +processed in turn. If DIRECTORY is not specified, the current +directory is used. + +In the second form of the call, proceed only with the given +synchronisation directory SYNC_DIRECTORY. + +For proceeding with a synchronisation directory, whatever the form of +the call was, this script reads the @code{ident} files it contains to set +the local user and directory and the remote user and directory. Then, +selected files under the local directory which are modified in regard +to the corresponding files in the remote directory are turned into a +synchronisation package which is mailed to the remote user. + +The list of selected files or directories to synchronize from the +local directory are given in the @code{list} file in the synchronisation +directory. If this @code{list} file is missing, all files under the +local directory are synchronized. + +What I usually do is to @code{cd} at the top of the directory tree to be +synchronized, then to type @code{mailsync} without parameters. This will +automatically prepare as many synchronisation packages as there are +mirror systems, then email multipart shars to each of them. Note that +the synchronisation package is not identical for each mirror system, +because they do not usually have the same state of synchronisation. + +@code{mailsync} will refuse to work if anything needs to be hand cleaned +from a previous execution of @code{mailsync} or @code{resync}. Check +for some remaining @file{_syncbulk} or @file{_synctemp} directory, or +for a @file{_syncrm} script. + +@example +TODO: +- interrogate the user if @file{ident} file missing. +- automatically construct the local user address. +- create the synchronisation directory on the fly. +- avoid duplicating work as far as possible for multiple sends. +- have a quicker mode, depending on stamps, not on checksums. +- never send core, executables, backups, @file{.nsf*}, @file{*/_synctemp/*}, etc. +@end example + +@node resync, GNU Free Documentation License, mailsync, Previous +@subsection resync + +@example +Usage: resync [ OPTION ]... TAR_FILE + or: resync [ OPTION ]... UNTARED_DIRECTORY +@end example + +Given a tar file produced by mailsync at some remote end and already +reconstructed on this end using unshar, or a directory containing the +already untared invoice, apply the synchronization package locally. + +Option -n inhibits destroying or creating files, but does everything +else. It will in particular create a synchronization directory if +necessary, produce the @file{_syncbulk} directory and the @file{_syncrm} +script. + +The synchronization directory for the package is automatically +retrieved or, if not found, created and initialized. @code{resync} keeps +telling you what it is doing. + +There are a few cases when a resync should not complete without manual +intervention. The common case is that several sites update the very +same files differently since they were last resync'ed, and then +mailsync to each other. The prerequisite checksum will then fail, and +the files are then kept into the @file{_syncbulk} tree, which has a shape +similar to the directory tree in which the files where supposed to go. +For GNU Emacs users, a very handy package, called emerge, written by +Dale Worley , helps reconciling two files +interactiveley. The @file{_syncbulk} tree should be explicitely deleted +after the hand synchronisation. + +Another case of human intervention is when files are deleted at the +mailsync'ing site. By choice, all deletions on the receiving side are +accumulated in a @file{_syncrm} script, which is not executed automatically. +Explicitely executed, @file{_syncrm} will remove any file in the receiving +tree which does not exist anymore on the sender system. I often edit +@file{_syncrm} before executing it, to remove the unwanted deletions (beware +the double negation :-). The script removes itself. + +All the temporary files, while resynchronizing, are held in @file{_synctemp}, +which is deleted afterwards; if something goes wrong, this directory +should also be cleaned out by hand. @code{resync} will refuse to work if +anything remains to be hand cleaned. + +@display +TODO: +- interrogates the user if missing receiving directory in @file{ident}. +- allow @file{remote.sum} to be empty or non-existent. +@end display + +@include doclicense.texi + +@contents +@bye + +@c Local variables: +@c texinfo-column-for-description: 32 +@c End: diff --git a/doc/stamp-vti b/doc/stamp-vti new file mode 100644 index 0000000..5457c21 --- /dev/null +++ b/doc/stamp-vti @@ -0,0 +1,4 @@ +@set UPDATED 20 November 2005 +@set UPDATED-MONTH November 2005 +@set EDITION 4.7 +@set VERSION 4.7 diff --git a/doc/texinfo.tex b/doc/texinfo.tex new file mode 100644 index 0000000..8083622 --- /dev/null +++ b/doc/texinfo.tex @@ -0,0 +1,7482 @@ +% texinfo.tex -- TeX macros to handle Texinfo files. +% +% Load plain if necessary, i.e., if running under initex. +\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi +% +\def\texinfoversion{2006-10-04.17} +% +% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, +% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free +% Software Foundation, Inc. +% +% This texinfo.tex 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, or (at +% your option) any later version. +% +% This texinfo.tex file 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 texinfo.tex file; see the file COPYING. If not, write +% to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +% Boston, MA 02110-1301, USA. +% +% As a special exception, when this file is read by TeX when processing +% a Texinfo source document, you may use the result without +% restriction. (This has been our intent since Texinfo was invented.) +% +% Please try the latest version of texinfo.tex before submitting bug +% reports; you can get the latest version from: +% http://www.gnu.org/software/texinfo/ (the Texinfo home page), or +% ftp://tug.org/tex/texinfo.tex +% (and all CTAN mirrors, see http://www.ctan.org). +% The texinfo.tex in any given distribution could well be out +% of date, so if that's what you're using, please check. +% +% Send bug reports to bug-texinfo@gnu.org. Please include including a +% complete document in each bug report with which we can reproduce the +% problem. Patches are, of course, greatly appreciated. +% +% To process a Texinfo manual with TeX, it's most reliable to use the +% texi2dvi shell script that comes with the distribution. For a simple +% manual foo.texi, however, you can get away with this: +% tex foo.texi +% texindex foo.?? +% tex foo.texi +% tex foo.texi +% dvips foo.dvi -o # or whatever; this makes foo.ps. +% The extra TeX runs get the cross-reference information correct. +% Sometimes one run after texindex suffices, and sometimes you need more +% than two; texi2dvi does it as many times as necessary. +% +% It is possible to adapt texinfo.tex for other languages, to some +% extent. You can get the existing language-specific files from the +% full Texinfo distribution. +% +% The GNU Texinfo home page is http://www.gnu.org/software/texinfo. + + +\message{Loading texinfo [version \texinfoversion]:} + +% If in a .fmt file, print the version number +% and turn on active characters that we couldn't do earlier because +% they might have appeared in the input file name. +\everyjob{\message{[Texinfo version \texinfoversion]}% + \catcode`+=\active \catcode`\_=\active} + +\message{Basics,} +\chardef\other=12 + +% We never want plain's \outer definition of \+ in Texinfo. +% For @tex, we can use \tabalign. +\let\+ = \relax + +% Save some plain tex macros whose names we will redefine. +\let\ptexb=\b +\let\ptexbullet=\bullet +\let\ptexc=\c +\let\ptexcomma=\, +\let\ptexdot=\. +\let\ptexdots=\dots +\let\ptexend=\end +\let\ptexequiv=\equiv +\let\ptexexclam=\! +\let\ptexfootnote=\footnote +\let\ptexgtr=> +\let\ptexhat=^ +\let\ptexi=\i +\let\ptexindent=\indent +\let\ptexinsert=\insert +\let\ptexlbrace=\{ +\let\ptexless=< +\let\ptexnewwrite\newwrite +\let\ptexnoindent=\noindent +\let\ptexplus=+ +\let\ptexrbrace=\} +\let\ptexslash=\/ +\let\ptexstar=\* +\let\ptext=\t + +% If this character appears in an error message or help string, it +% starts a new line in the output. +\newlinechar = `^^J + +% Use TeX 3.0's \inputlineno to get the line number, for better error +% messages, but if we're using an old version of TeX, don't do anything. +% +\ifx\inputlineno\thisisundefined + \let\linenumber = \empty % Pre-3.0. +\else + \def\linenumber{l.\the\inputlineno:\space} +\fi + +% Set up fixed words for English if not already set. +\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi +\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi +\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi +\ifx\putwordin\undefined \gdef\putwordin{in}\fi +\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi +\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi +\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi +\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi +\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi +\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi +\ifx\putwordof\undefined \gdef\putwordof{of}\fi +\ifx\putwordon\undefined \gdef\putwordon{on}\fi +\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi +\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi +\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi +\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi +\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi +\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi +\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi +% +\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi +\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi +\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi +\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi +\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi +\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi +\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi +\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi +\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi +\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi +\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi +\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi +% +\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi +\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi +\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi +\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi +\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi + +% Since the category of space is not known, we have to be careful. +\chardef\spacecat = 10 +\def\spaceisspace{\catcode`\ =\spacecat} + +% sometimes characters are active, so we need control sequences. +\chardef\colonChar = `\: +\chardef\commaChar = `\, +\chardef\dashChar = `\- +\chardef\dotChar = `\. +\chardef\exclamChar= `\! +\chardef\lquoteChar= `\` +\chardef\questChar = `\? +\chardef\rquoteChar= `\' +\chardef\semiChar = `\; +\chardef\underChar = `\_ + +% Ignore a token. +% +\def\gobble#1{} + +% The following is used inside several \edef's. +\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} + +% Hyphenation fixes. +\hyphenation{ + Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script + ap-pen-dix bit-map bit-maps + data-base data-bases eshell fall-ing half-way long-est man-u-script + man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm + par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces + spell-ing spell-ings + stand-alone strong-est time-stamp time-stamps which-ever white-space + wide-spread wrap-around +} + +% Margin to add to right of even pages, to left of odd pages. +\newdimen\bindingoffset +\newdimen\normaloffset +\newdimen\pagewidth \newdimen\pageheight + +% For a final copy, take out the rectangles +% that mark overfull boxes (in case you have decided +% that the text looks ok even though it passes the margin). +% +\def\finalout{\overfullrule=0pt} + +% @| inserts a changebar to the left of the current line. It should +% surround any changed text. This approach does *not* work if the +% change spans more than two lines of output. To handle that, we would +% have adopt a much more difficult approach (putting marks into the main +% vertical list for the beginning and end of each change). +% +\def\|{% + % \vadjust can only be used in horizontal mode. + \leavevmode + % + % Append this vertical mode material after the current line in the output. + \vadjust{% + % We want to insert a rule with the height and depth of the current + % leading; that is exactly what \strutbox is supposed to record. + \vskip-\baselineskip + % + % \vadjust-items are inserted at the left edge of the type. So + % the \llap here moves out into the left-hand margin. + \llap{% + % + % For a thicker or thinner bar, change the `1pt'. + \vrule height\baselineskip width1pt + % + % This is the space between the bar and the text. + \hskip 12pt + }% + }% +} + +% Sometimes it is convenient to have everything in the transcript file +% and nothing on the terminal. We don't just call \tracingall here, +% since that produces some useless output on the terminal. We also make +% some effort to order the tracing commands to reduce output in the log +% file; cf. trace.sty in LaTeX. +% +\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% +\def\loggingall{% + \tracingstats2 + \tracingpages1 + \tracinglostchars2 % 2 gives us more in etex + \tracingparagraphs1 + \tracingoutput1 + \tracingmacros2 + \tracingrestores1 + \showboxbreadth\maxdimen \showboxdepth\maxdimen + \ifx\eTeXversion\undefined\else % etex gives us more logging + \tracingscantokens1 + \tracingifs1 + \tracinggroups1 + \tracingnesting2 + \tracingassigns1 + \fi + \tracingcommands3 % 3 gives us more in etex + \errorcontextlines16 +}% + +% add check for \lastpenalty to plain's definitions. If the last thing +% we did was a \nobreak, we don't want to insert more space. +% +\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount + \removelastskip\penalty-50\smallskip\fi\fi} +\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount + \removelastskip\penalty-100\medskip\fi\fi} +\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount + \removelastskip\penalty-200\bigskip\fi\fi} + +% For @cropmarks command. +% Do @cropmarks to get crop marks. +% +\newif\ifcropmarks +\let\cropmarks = \cropmarkstrue +% +% Dimensions to add cropmarks at corners. +% Added by P. A. MacKay, 12 Nov. 1986 +% +\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines +\newdimen\cornerlong \cornerlong=1pc +\newdimen\cornerthick \cornerthick=.3pt +\newdimen\topandbottommargin \topandbottommargin=.75in + +% Main output routine. +\chardef\PAGE = 255 +\output = {\onepageout{\pagecontents\PAGE}} + +\newbox\headlinebox +\newbox\footlinebox + +% \onepageout takes a vbox as an argument. Note that \pagecontents +% does insertions, but you have to call it yourself. +\def\onepageout#1{% + \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi + % + \ifodd\pageno \advance\hoffset by \bindingoffset + \else \advance\hoffset by -\bindingoffset\fi + % + % Do this outside of the \shipout so @code etc. will be expanded in + % the headline as they should be, not taken literally (outputting ''code). + \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% + \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% + % + {% + % Have to do this stuff outside the \shipout because we want it to + % take effect in \write's, yet the group defined by the \vbox ends + % before the \shipout runs. + % + \indexdummies % don't expand commands in the output. + \normalturnoffactive % \ in index entries must not stay \, e.g., if + % the page break happens to be in the middle of an example. + % We don't want .vr (or whatever) entries like this: + % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} + % "\acronym" won't work when it's read back in; + % it needs to be + % {\code {{\tt \backslashcurfont }acronym} + \shipout\vbox{% + % Do this early so pdf references go to the beginning of the page. + \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi + % + \ifcropmarks \vbox to \outervsize\bgroup + \hsize = \outerhsize + \vskip-\topandbottommargin + \vtop to0pt{% + \line{\ewtop\hfil\ewtop}% + \nointerlineskip + \line{% + \vbox{\moveleft\cornerthick\nstop}% + \hfill + \vbox{\moveright\cornerthick\nstop}% + }% + \vss}% + \vskip\topandbottommargin + \line\bgroup + \hfil % center the page within the outer (page) hsize. + \ifodd\pageno\hskip\bindingoffset\fi + \vbox\bgroup + \fi + % + \unvbox\headlinebox + \pagebody{#1}% + \ifdim\ht\footlinebox > 0pt + % Only leave this space if the footline is nonempty. + % (We lessened \vsize for it in \oddfootingyyy.) + % The \baselineskip=24pt in plain's \makefootline has no effect. + \vskip 24pt + \unvbox\footlinebox + \fi + % + \ifcropmarks + \egroup % end of \vbox\bgroup + \hfil\egroup % end of (centering) \line\bgroup + \vskip\topandbottommargin plus1fill minus1fill + \boxmaxdepth = \cornerthick + \vbox to0pt{\vss + \line{% + \vbox{\moveleft\cornerthick\nsbot}% + \hfill + \vbox{\moveright\cornerthick\nsbot}% + }% + \nointerlineskip + \line{\ewbot\hfil\ewbot}% + }% + \egroup % \vbox from first cropmarks clause + \fi + }% end of \shipout\vbox + }% end of group with \indexdummies + \advancepageno + \ifnum\outputpenalty>-20000 \else\dosupereject\fi +} + +\newinsert\margin \dimen\margin=\maxdimen + +\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} +{\catcode`\@ =11 +\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi +% marginal hacks, juha@viisa.uucp (Juha Takala) +\ifvoid\margin\else % marginal info is present + \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi +\dimen@=\dp#1 \unvbox#1 +\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi +\ifr@ggedbottom \kern-\dimen@ \vfil \fi} +} + +% Here are the rules for the cropmarks. Note that they are +% offset so that the space between them is truly \outerhsize or \outervsize +% (P. A. MacKay, 12 November, 1986) +% +\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} +\def\nstop{\vbox + {\hrule height\cornerthick depth\cornerlong width\cornerthick}} +\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} +\def\nsbot{\vbox + {\hrule height\cornerlong depth\cornerthick width\cornerthick}} + +% Parse an argument, then pass it to #1. The argument is the rest of +% the input line (except we remove a trailing comment). #1 should be a +% macro which expects an ordinary undelimited TeX argument. +% +\def\parsearg{\parseargusing{}} +\def\parseargusing#1#2{% + \def\argtorun{#2}% + \begingroup + \obeylines + \spaceisspace + #1% + \parseargline\empty% Insert the \empty token, see \finishparsearg below. +} + +{\obeylines % + \gdef\parseargline#1^^M{% + \endgroup % End of the group started in \parsearg. + \argremovecomment #1\comment\ArgTerm% + }% +} + +% First remove any @comment, then any @c comment. +\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} +\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} + +% Each occurence of `\^^M' or `\^^M' is replaced by a single space. +% +% \argremovec might leave us with trailing space, e.g., +% @end itemize @c foo +% This space token undergoes the same procedure and is eventually removed +% by \finishparsearg. +% +\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} +\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} +\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% + \def\temp{#3}% + \ifx\temp\empty + % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: + \let\temp\finishparsearg + \else + \let\temp\argcheckspaces + \fi + % Put the space token in: + \temp#1 #3\ArgTerm +} + +% If a _delimited_ argument is enclosed in braces, they get stripped; so +% to get _exactly_ the rest of the line, we had to prevent such situation. +% We prepended an \empty token at the very beginning and we expand it now, +% just before passing the control to \argtorun. +% (Similarily, we have to think about #3 of \argcheckspacesY above: it is +% either the null string, or it ends with \^^M---thus there is no danger +% that a pair of braces would be stripped. +% +% But first, we have to remove the trailing space token. +% +\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} + +% \parseargdef\foo{...} +% is roughly equivalent to +% \def\foo{\parsearg\Xfoo} +% \def\Xfoo#1{...} +% +% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my +% favourite TeX trick. --kasal, 16nov03 + +\def\parseargdef#1{% + \expandafter \doparseargdef \csname\string#1\endcsname #1% +} +\def\doparseargdef#1#2{% + \def#2{\parsearg#1}% + \def#1##1% +} + +% Several utility definitions with active space: +{ + \obeyspaces + \gdef\obeyedspace{ } + + % Make each space character in the input produce a normal interword + % space in the output. Don't allow a line break at this space, as this + % is used only in environments like @example, where each line of input + % should produce a line of output anyway. + % + \gdef\sepspaces{\obeyspaces\let =\tie} + + % If an index command is used in an @example environment, any spaces + % therein should become regular spaces in the raw index file, not the + % expansion of \tie (\leavevmode \penalty \@M \ ). + \gdef\unsepspaces{\let =\space} +} + + +\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} + +% Define the framework for environments in texinfo.tex. It's used like this: +% +% \envdef\foo{...} +% \def\Efoo{...} +% +% It's the responsibility of \envdef to insert \begingroup before the +% actual body; @end closes the group after calling \Efoo. \envdef also +% defines \thisenv, so the current environment is known; @end checks +% whether the environment name matches. The \checkenv macro can also be +% used to check whether the current environment is the one expected. +% +% Non-false conditionals (@iftex, @ifset) don't fit into this, so they +% are not treated as enviroments; they don't open a group. (The +% implementation of @end takes care not to call \endgroup in this +% special case.) + + +% At runtime, environments start with this: +\def\startenvironment#1{\begingroup\def\thisenv{#1}} +% initialize +\let\thisenv\empty + +% ... but they get defined via ``\envdef\foo{...}'': +\long\def\envdef#1#2{\def#1{\startenvironment#1#2}} +\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} + +% Check whether we're in the right environment: +\def\checkenv#1{% + \def\temp{#1}% + \ifx\thisenv\temp + \else + \badenverr + \fi +} + +% Evironment mismatch, #1 expected: +\def\badenverr{% + \errhelp = \EMsimple + \errmessage{This command can appear only \inenvironment\temp, + not \inenvironment\thisenv}% +} +\def\inenvironment#1{% + \ifx#1\empty + out of any environment% + \else + in environment \expandafter\string#1% + \fi +} + +% @end foo executes the definition of \Efoo. +% But first, it executes a specialized version of \checkenv +% +\parseargdef\end{% + \if 1\csname iscond.#1\endcsname + \else + % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03 + \expandafter\checkenv\csname#1\endcsname + \csname E#1\endcsname + \endgroup + \fi +} + +\newhelp\EMsimple{Press RETURN to continue.} + + +%% Simple single-character @ commands + +% @@ prints an @ +% Kludge this until the fonts are right (grr). +\def\@{{\tt\char64}} + +% This is turned off because it was never documented +% and you can use @w{...} around a quote to suppress ligatures. +%% Define @` and @' to be the same as ` and ' +%% but suppressing ligatures. +%\def\`{{`}} +%\def\'{{'}} + +% Used to generate quoted braces. +\def\mylbrace {{\tt\char123}} +\def\myrbrace {{\tt\char125}} +\let\{=\mylbrace +\let\}=\myrbrace +\begingroup + % Definitions to produce \{ and \} commands for indices, + % and @{ and @} for the aux/toc files. + \catcode`\{ = \other \catcode`\} = \other + \catcode`\[ = 1 \catcode`\] = 2 + \catcode`\! = 0 \catcode`\\ = \other + !gdef!lbracecmd[\{]% + !gdef!rbracecmd[\}]% + !gdef!lbraceatcmd[@{]% + !gdef!rbraceatcmd[@}]% +!endgroup + +% @comma{} to avoid , parsing problems. +\let\comma = , + +% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent +% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. +\let\, = \c +\let\dotaccent = \. +\def\ringaccent#1{{\accent23 #1}} +\let\tieaccent = \t +\let\ubaraccent = \b +\let\udotaccent = \d + +% Other special characters: @questiondown @exclamdown @ordf @ordm +% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. +\def\questiondown{?`} +\def\exclamdown{!`} +\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} +\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} + +% Dotless i and dotless j, used for accents. +\def\imacro{i} +\def\jmacro{j} +\def\dotless#1{% + \def\temp{#1}% + \ifx\temp\imacro \ptexi + \else\ifx\temp\jmacro \j + \else \errmessage{@dotless can be used only with i or j}% + \fi\fi +} + +% The \TeX{} logo, as in plain, but resetting the spacing so that a +% period following counts as ending a sentence. (Idea found in latex.) +% +\edef\TeX{\TeX \spacefactor=1000 } + +% @LaTeX{} logo. Not quite the same results as the definition in +% latex.ltx, since we use a different font for the raised A; it's most +% convenient for us to use an explicitly smaller font, rather than using +% the \scriptstyle font (since we don't reset \scriptstyle and +% \scriptscriptstyle). +% +\def\LaTeX{% + L\kern-.36em + {\setbox0=\hbox{T}% + \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}% + \kern-.15em + \TeX +} + +% Be sure we're in horizontal mode when doing a tie, since we make space +% equivalent to this in @example-like environments. Otherwise, a space +% at the beginning of a line will start with \penalty -- and +% since \penalty is valid in vertical mode, we'd end up putting the +% penalty on the vertical list instead of in the new paragraph. +{\catcode`@ = 11 + % Avoid using \@M directly, because that causes trouble + % if the definition is written into an index file. + \global\let\tiepenalty = \@M + \gdef\tie{\leavevmode\penalty\tiepenalty\ } +} + +% @: forces normal size whitespace following. +\def\:{\spacefactor=1000 } + +% @* forces a line break. +\def\*{\hfil\break\hbox{}\ignorespaces} + +% @/ allows a line break. +\let\/=\allowbreak + +% @. is an end-of-sentence period. +\def\.{.\spacefactor=\endofsentencespacefactor\space} + +% @! is an end-of-sentence bang. +\def\!{!\spacefactor=\endofsentencespacefactor\space} + +% @? is an end-of-sentence query. +\def\?{?\spacefactor=\endofsentencespacefactor\space} + +% @frenchspacing on|off says whether to put extra space after punctuation. +% +\def\onword{on} +\def\offword{off} +% +\parseargdef\frenchspacing{% + \def\temp{#1}% + \ifx\temp\onword \plainfrenchspacing + \else\ifx\temp\offword \plainnonfrenchspacing + \else + \errhelp = \EMsimple + \errmessage{Unknown @frenchspacing option `\temp', must be on/off}% + \fi\fi +} + +% @w prevents a word break. Without the \leavevmode, @w at the +% beginning of a paragraph, when TeX is still in vertical mode, would +% produce a whole line of output instead of starting the paragraph. +\def\w#1{\leavevmode\hbox{#1}} + +% @group ... @end group forces ... to be all on one page, by enclosing +% it in a TeX vbox. We use \vtop instead of \vbox to construct the box +% to keep its height that of a normal line. According to the rules for +% \topskip (p.114 of the TeXbook), the glue inserted is +% max (\topskip - \ht (first item), 0). If that height is large, +% therefore, no glue is inserted, and the space between the headline and +% the text is small, which looks bad. +% +% Another complication is that the group might be very large. This can +% cause the glue on the previous page to be unduly stretched, because it +% does not have much material. In this case, it's better to add an +% explicit \vfill so that the extra space is at the bottom. The +% threshold for doing this is if the group is more than \vfilllimit +% percent of a page (\vfilllimit can be changed inside of @tex). +% +\newbox\groupbox +\def\vfilllimit{0.7} +% +\envdef\group{% + \ifnum\catcode`\^^M=\active \else + \errhelp = \groupinvalidhelp + \errmessage{@group invalid in context where filling is enabled}% + \fi + \startsavinginserts + % + \setbox\groupbox = \vtop\bgroup + % Do @comment since we are called inside an environment such as + % @example, where each end-of-line in the input causes an + % end-of-line in the output. We don't want the end-of-line after + % the `@group' to put extra space in the output. Since @group + % should appear on a line by itself (according to the Texinfo + % manual), we don't worry about eating any user text. + \comment +} +% +% The \vtop produces a box with normal height and large depth; thus, TeX puts +% \baselineskip glue before it, and (when the next line of text is done) +% \lineskip glue after it. Thus, space below is not quite equal to space +% above. But it's pretty close. +\def\Egroup{% + % To get correct interline space between the last line of the group + % and the first line afterwards, we have to propagate \prevdepth. + \endgraf % Not \par, as it may have been set to \lisppar. + \global\dimen1 = \prevdepth + \egroup % End the \vtop. + % \dimen0 is the vertical size of the group's box. + \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox + % \dimen2 is how much space is left on the page (more or less). + \dimen2 = \pageheight \advance\dimen2 by -\pagetotal + % if the group doesn't fit on the current page, and it's a big big + % group, force a page break. + \ifdim \dimen0 > \dimen2 + \ifdim \pagetotal < \vfilllimit\pageheight + \page + \fi + \fi + \box\groupbox + \prevdepth = \dimen1 + \checkinserts +} +% +% TeX puts in an \escapechar (i.e., `@') at the beginning of the help +% message, so this ends up printing `@group can only ...'. +% +\newhelp\groupinvalidhelp{% +group can only be used in environments such as @example,^^J% +where each line of input produces a line of output.} + +% @need space-in-mils +% forces a page break if there is not space-in-mils remaining. + +\newdimen\mil \mil=0.001in + +% Old definition--didn't work. +%\parseargdef\need{\par % +%% This method tries to make TeX break the page naturally +%% if the depth of the box does not fit. +%{\baselineskip=0pt% +%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak +%\prevdepth=-1000pt +%}} + +\parseargdef\need{% + % Ensure vertical mode, so we don't make a big box in the middle of a + % paragraph. + \par + % + % If the @need value is less than one line space, it's useless. + \dimen0 = #1\mil + \dimen2 = \ht\strutbox + \advance\dimen2 by \dp\strutbox + \ifdim\dimen0 > \dimen2 + % + % Do a \strut just to make the height of this box be normal, so the + % normal leading is inserted relative to the preceding line. + % And a page break here is fine. + \vtop to #1\mil{\strut\vfil}% + % + % TeX does not even consider page breaks if a penalty added to the + % main vertical list is 10000 or more. But in order to see if the + % empty box we just added fits on the page, we must make it consider + % page breaks. On the other hand, we don't want to actually break the + % page after the empty box. So we use a penalty of 9999. + % + % There is an extremely small chance that TeX will actually break the + % page at this \penalty, if there are no other feasible breakpoints in + % sight. (If the user is using lots of big @group commands, which + % almost-but-not-quite fill up a page, TeX will have a hard time doing + % good page breaking, for example.) However, I could not construct an + % example where a page broke at this \penalty; if it happens in a real + % document, then we can reconsider our strategy. + \penalty9999 + % + % Back up by the size of the box, whether we did a page break or not. + \kern -#1\mil + % + % Do not allow a page break right after this kern. + \nobreak + \fi +} + +% @br forces paragraph break (and is undocumented). + +\let\br = \par + +% @page forces the start of a new page. +% +\def\page{\par\vfill\supereject} + +% @exdent text.... +% outputs text on separate line in roman font, starting at standard page margin + +% This records the amount of indent in the innermost environment. +% That's how much \exdent should take out. +\newskip\exdentamount + +% This defn is used inside fill environments such as @defun. +\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} + +% This defn is used inside nofill environments such as @example. +\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount + \leftline{\hskip\leftskip{\rm#1}}}} + +% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current +% paragraph. For more general purposes, use the \margin insertion +% class. WHICH is `l' or `r'. +% +\newskip\inmarginspacing \inmarginspacing=1cm +\def\strutdepth{\dp\strutbox} +% +\def\doinmargin#1#2{\strut\vadjust{% + \nobreak + \kern-\strutdepth + \vtop to \strutdepth{% + \baselineskip=\strutdepth + \vss + % if you have multiple lines of stuff to put here, you'll need to + % make the vbox yourself of the appropriate size. + \ifx#1l% + \llap{\ignorespaces #2\hskip\inmarginspacing}% + \else + \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% + \fi + \null + }% +}} +\def\inleftmargin{\doinmargin l} +\def\inrightmargin{\doinmargin r} +% +% @inmargin{TEXT [, RIGHT-TEXT]} +% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; +% else use TEXT for both). +% +\def\inmargin#1{\parseinmargin #1,,\finish} +\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \def\lefttext{#1}% have both texts + \def\righttext{#2}% + \else + \def\lefttext{#1}% have only one text + \def\righttext{#1}% + \fi + % + \ifodd\pageno + \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin + \else + \def\temp{\inleftmargin\lefttext}% + \fi + \temp +} + +% @include file insert text of that file as input. +% +\def\include{\parseargusing\filenamecatcodes\includezzz} +\def\includezzz#1{% + \pushthisfilestack + \def\thisfile{#1}% + {% + \makevalueexpandable + \def\temp{\input #1 }% + \expandafter + }\temp + \popthisfilestack +} +\def\filenamecatcodes{% + \catcode`\\=\other + \catcode`~=\other + \catcode`^=\other + \catcode`_=\other + \catcode`|=\other + \catcode`<=\other + \catcode`>=\other + \catcode`+=\other + \catcode`-=\other +} + +\def\pushthisfilestack{% + \expandafter\pushthisfilestackX\popthisfilestack\StackTerm +} +\def\pushthisfilestackX{% + \expandafter\pushthisfilestackY\thisfile\StackTerm +} +\def\pushthisfilestackY #1\StackTerm #2\StackTerm {% + \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% +} + +\def\popthisfilestack{\errthisfilestackempty} +\def\errthisfilestackempty{\errmessage{Internal error: + the stack of filenames is empty.}} + +\def\thisfile{} + +% @center line +% outputs that line, centered. +% +\parseargdef\center{% + \ifhmode + \let\next\centerH + \else + \let\next\centerV + \fi + \next{\hfil \ignorespaces#1\unskip \hfil}% +} +\def\centerH#1{% + {% + \hfil\break + \advance\hsize by -\leftskip + \advance\hsize by -\rightskip + \line{#1}% + \break + }% +} +\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}} + +% @sp n outputs n lines of vertical space + +\parseargdef\sp{\vskip #1\baselineskip} + +% @comment ...line which is ignored... +% @c is the same as @comment +% @ignore ... @end ignore is another way to write a comment + +\def\comment{\begingroup \catcode`\^^M=\other% +\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% +\commentxxx} +{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} + +\let\c=\comment + +% @paragraphindent NCHARS +% We'll use ems for NCHARS, close enough. +% NCHARS can also be the word `asis' or `none'. +% We cannot feasibly implement @paragraphindent asis, though. +% +\def\asisword{asis} % no translation, these are keywords +\def\noneword{none} +% +\parseargdef\paragraphindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \defaultparindent = 0pt + \else + \defaultparindent = #1em + \fi + \fi + \parindent = \defaultparindent +} + +% @exampleindent NCHARS +% We'll use ems for NCHARS like @paragraphindent. +% It seems @exampleindent asis isn't necessary, but +% I preserve it to make it similar to @paragraphindent. +\parseargdef\exampleindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \lispnarrowing = 0pt + \else + \lispnarrowing = #1em + \fi + \fi +} + +% @firstparagraphindent WORD +% If WORD is `none', then suppress indentation of the first paragraph +% after a section heading. If WORD is `insert', then do indent at such +% paragraphs. +% +% The paragraph indentation is suppressed or not by calling +% \suppressfirstparagraphindent, which the sectioning commands do. +% We switch the definition of this back and forth according to WORD. +% By default, we suppress indentation. +% +\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} +\def\insertword{insert} +% +\parseargdef\firstparagraphindent{% + \def\temp{#1}% + \ifx\temp\noneword + \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent + \else\ifx\temp\insertword + \let\suppressfirstparagraphindent = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @firstparagraphindent option `\temp'}% + \fi\fi +} + +% Here is how we actually suppress indentation. Redefine \everypar to +% \kern backwards by \parindent, and then reset itself to empty. +% +% We also make \indent itself not actually do anything until the next +% paragraph. +% +\gdef\dosuppressfirstparagraphindent{% + \gdef\indent{% + \restorefirstparagraphindent + \indent + }% + \gdef\noindent{% + \restorefirstparagraphindent + \noindent + }% + \global\everypar = {% + \kern -\parindent + \restorefirstparagraphindent + }% +} + +\gdef\restorefirstparagraphindent{% + \global \let \indent = \ptexindent + \global \let \noindent = \ptexnoindent + \global \everypar = {}% +} + + +% @asis just yields its argument. Used with @table, for example. +% +\def\asis#1{#1} + +% @math outputs its argument in math mode. +% +% One complication: _ usually means subscripts, but it could also mean +% an actual _ character, as in @math{@var{some_variable} + 1}. So make +% _ active, and distinguish by seeing if the current family is \slfam, +% which is what @var uses. +{ + \catcode`\_ = \active + \gdef\mathunderscore{% + \catcode`\_=\active + \def_{\ifnum\fam=\slfam \_\else\sb\fi}% + } +} +% Another complication: we want \\ (and @\) to output a \ character. +% FYI, plain.tex uses \\ as a temporary control sequence (why?), but +% this is not advertised and we don't care. Texinfo does not +% otherwise define @\. +% +% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. +\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} +% +\def\math{% + \tex + \mathunderscore + \let\\ = \mathbackslash + \mathactive + $\finishmath +} +\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. + +% Some active characters (such as <) are spaced differently in math. +% We have to reset their definitions in case the @math was an argument +% to a command which sets the catcodes (such as @item or @section). +% +{ + \catcode`^ = \active + \catcode`< = \active + \catcode`> = \active + \catcode`+ = \active + \gdef\mathactive{% + \let^ = \ptexhat + \let< = \ptexless + \let> = \ptexgtr + \let+ = \ptexplus + } +} + +% @bullet and @minus need the same treatment as @math, just above. +\def\bullet{$\ptexbullet$} +\def\minus{$-$} + +% @dots{} outputs an ellipsis using the current font. +% We do .5em per period so that it has the same spacing in the cm +% typewriter fonts as three actual period characters; on the other hand, +% in other typewriter fonts three periods are wider than 1.5em. So do +% whichever is larger. +% +\def\dots{% + \leavevmode + \setbox0=\hbox{...}% get width of three periods + \ifdim\wd0 > 1.5em + \dimen0 = \wd0 + \else + \dimen0 = 1.5em + \fi + \hbox to \dimen0{% + \hskip 0pt plus.25fil + .\hskip 0pt plus1fil + .\hskip 0pt plus1fil + .\hskip 0pt plus.5fil + }% +} + +% @enddots{} is an end-of-sentence ellipsis. +% +\def\enddots{% + \dots + \spacefactor=\endofsentencespacefactor +} + +% @comma{} is so commas can be inserted into text without messing up +% Texinfo's parsing. +% +\let\comma = , + +% @refill is a no-op. +\let\refill=\relax + +% If working on a large document in chapters, it is convenient to +% be able to disable indexing, cross-referencing, and contents, for test runs. +% This is done with @novalidate (before @setfilename). +% +\newif\iflinks \linkstrue % by default we want the aux files. +\let\novalidate = \linksfalse + +% @setfilename is done at the beginning of every texinfo file. +% So open here the files we need to have open while reading the input. +% This makes it possible to make a .fmt file for texinfo. +\def\setfilename{% + \fixbackslash % Turn off hack to swallow `\input texinfo'. + \iflinks + \tryauxfile + % Open the new aux file. TeX will close it automatically at exit. + \immediate\openout\auxfile=\jobname.aux + \fi % \openindices needs to do some work in any case. + \openindices + \let\setfilename=\comment % Ignore extra @setfilename cmds. + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. + \openin 1 texinfo.cnf + \ifeof 1 \else \input texinfo.cnf \fi + \closein 1 + % + \comment % Ignore the actual filename. +} + +% Called from \setfilename. +% +\def\openindices{% + \newindex{cp}% + \newcodeindex{fn}% + \newcodeindex{vr}% + \newcodeindex{tp}% + \newcodeindex{ky}% + \newcodeindex{pg}% +} + +% @bye. +\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} + + +\message{pdf,} +% adobe `portable' document format +\newcount\tempnum +\newcount\lnkcount +\newtoks\filename +\newcount\filenamelength +\newcount\pgn +\newtoks\toksA +\newtoks\toksB +\newtoks\toksC +\newtoks\toksD +\newbox\boxA +\newcount\countA +\newif\ifpdf +\newif\ifpdfmakepagedest + +% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 +% can be set). So we test for \relax and 0 as well as \undefined, +% borrowed from ifpdf.sty. +\ifx\pdfoutput\undefined +\else + \ifx\pdfoutput\relax + \else + \ifcase\pdfoutput + \else + \pdftrue + \fi + \fi +\fi + +% PDF uses PostScript string constants for the names of xref targets, +% for display in the outlines, and in other places. Thus, we have to +% double any backslashes. Otherwise, a name like "\node" will be +% interpreted as a newline (\n), followed by o, d, e. Not good. +% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html +% (and related messages, the final outcome is that it is up to the TeX +% user to double the backslashes and otherwise make the string valid, so +% that's what we do). + +% double active backslashes. +% +{\catcode`\@=0 \catcode`\\=\active + @gdef@activebackslashdouble{% + @catcode`@\=@active + @let\=@doublebackslash} +} + +% To handle parens, we must adopt a different approach, since parens are +% not active characters. hyperref.dtx (which has the same problem as +% us) handles it with this amazing macro to replace tokens. I've +% tinkered with it a little for texinfo, but it's definitely from there. +% +% #1 is the tokens to replace. +% #2 is the replacement. +% #3 is the control sequence with the string. +% +\def\HyPsdSubst#1#2#3{% + \def\HyPsdReplace##1#1##2\END{% + ##1% + \ifx\\##2\\% + \else + #2% + \HyReturnAfterFi{% + \HyPsdReplace##2\END + }% + \fi + }% + \xdef#3{\expandafter\HyPsdReplace#3#1\END}% +} +\long\def\HyReturnAfterFi#1\fi{\fi#1} + +% #1 is a control sequence in which to do the replacements. +\def\backslashparens#1{% + \xdef#1{#1}% redefine it as its expansion; the definition is simply + % \lastnode when called from \setref -> \pdfmkdest. + \HyPsdSubst{(}{\realbackslash(}{#1}% + \HyPsdSubst{)}{\realbackslash)}{#1}% +} + +\ifpdf + \input pdfcolor + \pdfcatalog{/PageMode /UseOutlines}% + % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). + \def\dopdfimage#1#2#3{% + \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% + \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% + % without \immediate, pdftex seg faults when the same image is + % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) + \ifnum\pdftexversion < 14 + \immediate\pdfimage + \else + \immediate\pdfximage + \fi + \ifdim \wd0 >0pt width \imagewidth \fi + \ifdim \wd2 >0pt height \imageheight \fi + \ifnum\pdftexversion<13 + #1.pdf% + \else + {#1.pdf}% + \fi + \ifnum\pdftexversion < 14 \else + \pdfrefximage \pdflastximage + \fi} + \def\pdfmkdest#1{{% + % We have to set dummies so commands such as @code, and characters + % such as \, aren't expanded when present in a section title. + \atdummies + \activebackslashdouble + \def\pdfdestname{#1}% + \backslashparens\pdfdestname + \pdfdest name{\pdfdestname} xyz% + }}% + % + % used to mark target names; must be expandable. + \def\pdfmkpgn#1{#1}% + % + \let\linkcolor = \Blue % was Cyan, but that seems light? + \def\endlink{\Black\pdfendlink} + % Adding outlines to PDF; macros for calculating structure of outlines + % come from Petr Olsak + \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% + \else \csname#1\endcsname \fi} + \def\advancenumber#1{\tempnum=\expnumber{#1}\relax + \advance\tempnum by 1 + \expandafter\xdef\csname#1\endcsname{\the\tempnum}} + % + % #1 is the section text, which is what will be displayed in the + % outline by the pdf viewer. #2 is the pdf expression for the number + % of subentries (or empty, for subsubsections). #3 is the node text, + % which might be empty if this toc entry had no corresponding node. + % #4 is the page number + % + \def\dopdfoutline#1#2#3#4{% + % Generate a link to the node text if that exists; else, use the + % page number. We could generate a destination for the section + % text in the case where a section has no node, but it doesn't + % seem worth the trouble, since most documents are normally structured. + \def\pdfoutlinedest{#3}% + \ifx\pdfoutlinedest\empty + \def\pdfoutlinedest{#4}% + \else + % Doubled backslashes in the name. + {\activebackslashdouble \xdef\pdfoutlinedest{#3}% + \backslashparens\pdfoutlinedest}% + \fi + % + % Also double the backslashes in the display string. + {\activebackslashdouble \xdef\pdfoutlinetext{#1}% + \backslashparens\pdfoutlinetext}% + % + \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% + } + % + \def\pdfmakeoutlines{% + \begingroup + % Thanh's hack / proper braces in bookmarks + \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace + \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace + % + % Read toc silently, to get counts of subentries for \pdfoutline. + \def\numchapentry##1##2##3##4{% + \def\thischapnum{##2}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + }% + \def\numsecentry##1##2##3##4{% + \advancenumber{chap\thischapnum}% + \def\thissecnum{##2}% + \def\thissubsecnum{0}% + }% + \def\numsubsecentry##1##2##3##4{% + \advancenumber{sec\thissecnum}% + \def\thissubsecnum{##2}% + }% + \def\numsubsubsecentry##1##2##3##4{% + \advancenumber{subsec\thissubsecnum}% + }% + \def\thischapnum{0}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + % + % use \def rather than \let here because we redefine \chapentry et + % al. a second time, below. + \def\appentry{\numchapentry}% + \def\appsecentry{\numsecentry}% + \def\appsubsecentry{\numsubsecentry}% + \def\appsubsubsecentry{\numsubsubsecentry}% + \def\unnchapentry{\numchapentry}% + \def\unnsecentry{\numsecentry}% + \def\unnsubsecentry{\numsubsecentry}% + \def\unnsubsubsecentry{\numsubsubsecentry}% + \readdatafile{toc}% + % + % Read toc second time, this time actually producing the outlines. + % The `-' means take the \expnumber as the absolute number of + % subentries, which we calculated on our first read of the .toc above. + % + % We use the node names as the destinations. + \def\numchapentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% + \def\numsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% + \def\numsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% + \def\numsubsubsecentry##1##2##3##4{% count is always zero + \dopdfoutline{##1}{}{##3}{##4}}% + % + % PDF outlines are displayed using system fonts, instead of + % document fonts. Therefore we cannot use special characters, + % since the encoding is unknown. For example, the eogonek from + % Latin 2 (0xea) gets translated to a | character. Info from + % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. + % + % xx to do this right, we have to translate 8-bit characters to + % their "best" equivalent, based on the @documentencoding. Right + % now, I guess we'll just let the pdf reader have its way. + \indexnofonts + \setupdatafile + \catcode`\\=\active \otherbackslash + \input \jobname.toc + \endgroup + } + % + \def\skipspaces#1{\def\PP{#1}\def\D{|}% + \ifx\PP\D\let\nextsp\relax + \else\let\nextsp\skipspaces + \ifx\p\space\else\addtokens{\filename}{\PP}% + \advance\filenamelength by 1 + \fi + \fi + \nextsp} + \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax} + \ifnum\pdftexversion < 14 + \let \startlink \pdfannotlink + \else + \let \startlink \pdfstartlink + \fi + % make a live url in pdf output. + \def\pdfurl#1{% + \begingroup + % it seems we really need yet another set of dummies; have not + % tried to figure out what each command should do in the context + % of @url. for now, just make @/ a no-op, that's the only one + % people have actually reported a problem with. + % + \normalturnoffactive + \def\@{@}% + \let\/=\empty + \makevalueexpandable + \leavevmode\Red + \startlink attr{/Border [0 0 0]}% + user{/Subtype /Link /A << /S /URI /URI (#1) >>}% + \endgroup} + \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} + \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} + \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} + \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} + \def\maketoks{% + \expandafter\poptoks\the\toksA|ENDTOKS|\relax + \ifx\first0\adn0 + \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 + \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 + \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 + \else + \ifnum0=\countA\else\makelink\fi + \ifx\first.\let\next=\done\else + \let\next=\maketoks + \addtokens{\toksB}{\the\toksD} + \ifx\first,\addtokens{\toksB}{\space}\fi + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \next} + \def\makelink{\addtokens{\toksB}% + {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} + \def\pdflink#1{% + \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} + \linkcolor #1\endlink} + \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} +\else + \let\pdfmkdest = \gobble + \let\pdfurl = \gobble + \let\endlink = \relax + \let\linkcolor = \relax + \let\pdfmakeoutlines = \relax +\fi % \ifx\pdfoutput + + +\message{fonts,} + +% Change the current font style to #1, remembering it in \curfontstyle. +% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in +% italics, not bold italics. +% +\def\setfontstyle#1{% + \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. + \csname ten#1\endcsname % change the current font +} + +% Select #1 fonts with the current style. +% +\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname} + +\def\rm{\fam=0 \setfontstyle{rm}} +\def\it{\fam=\itfam \setfontstyle{it}} +\def\sl{\fam=\slfam \setfontstyle{sl}} +\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} +\def\tt{\fam=\ttfam \setfontstyle{tt}} + +% Texinfo sort of supports the sans serif font style, which plain TeX does not. +% So we set up a \sf. +\newfam\sffam +\def\sf{\fam=\sffam \setfontstyle{sf}} +\let\li = \sf % Sometimes we call it \li, not \sf. + +% We don't need math for this font style. +\def\ttsl{\setfontstyle{ttsl}} + + +% Default leading. +\newdimen\textleading \textleading = 13.2pt + +% Set the baselineskip to #1, and the lineskip and strut size +% correspondingly. There is no deep meaning behind these magic numbers +% used as factors; they just match (closely enough) what Knuth defined. +% +\def\lineskipfactor{.08333} +\def\strutheightpercent{.70833} +\def\strutdepthpercent {.29167} +% +\def\setleading#1{% + \normalbaselineskip = #1\relax + \normallineskip = \lineskipfactor\normalbaselineskip + \normalbaselines + \setbox\strutbox =\hbox{% + \vrule width0pt height\strutheightpercent\baselineskip + depth \strutdepthpercent \baselineskip + }% +} + + +% Set the font macro #1 to the font named #2, adding on the +% specified font prefix (normally `cm'). +% #3 is the font's design size, #4 is a scale factor +\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4} + + +% Use cm as the default font prefix. +% To specify the font prefix, you must define \fontprefix +% before you read in texinfo.tex. +\ifx\fontprefix\undefined +\def\fontprefix{cm} +\fi +% Support font families that don't use the same naming scheme as CM. +\def\rmshape{r} +\def\rmbshape{bx} %where the normal face is bold +\def\bfshape{b} +\def\bxshape{bx} +\def\ttshape{tt} +\def\ttbshape{tt} +\def\ttslshape{sltt} +\def\itshape{ti} +\def\itbshape{bxti} +\def\slshape{sl} +\def\slbshape{bxsl} +\def\sfshape{ss} +\def\sfbshape{ss} +\def\scshape{csc} +\def\scbshape{csc} + +% Definitions for a main text size of 11pt. This is the default in +% Texinfo. +% +\def\definetextfontsizexi{ +% Text fonts (11.2pt, magstep1). +\def\textnominalsize{11pt} +\edef\mainmagstep{\magstephalf} +\setfont\textrm\rmshape{10}{\mainmagstep} +\setfont\texttt\ttshape{10}{\mainmagstep} +\setfont\textbf\bfshape{10}{\mainmagstep} +\setfont\textit\itshape{10}{\mainmagstep} +\setfont\textsl\slshape{10}{\mainmagstep} +\setfont\textsf\sfshape{10}{\mainmagstep} +\setfont\textsc\scshape{10}{\mainmagstep} +\setfont\textttsl\ttslshape{10}{\mainmagstep} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstep1} +\setfont\deftt\ttshape{10}{\magstep1} +\setfont\defttsl\ttslshape{10}{\magstep1} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000} +\setfont\smalltt\ttshape{9}{1000} +\setfont\smallbf\bfshape{10}{900} +\setfont\smallit\itshape{9}{1000} +\setfont\smallsl\slshape{9}{1000} +\setfont\smallsf\sfshape{9}{1000} +\setfont\smallsc\scshape{10}{900} +\setfont\smallttsl\ttslshape{10}{900} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000} +\setfont\smallertt\ttshape{8}{1000} +\setfont\smallerbf\bfshape{10}{800} +\setfont\smallerit\itshape{8}{1000} +\setfont\smallersl\slshape{8}{1000} +\setfont\smallersf\sfshape{8}{1000} +\setfont\smallersc\scshape{10}{800} +\setfont\smallerttsl\ttslshape{10}{800} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3} +\setfont\titleit\itbshape{10}{\magstep4} +\setfont\titlesl\slbshape{10}{\magstep4} +\setfont\titlett\ttbshape{12}{\magstep3} +\setfont\titlettsl\ttslshape{10}{\magstep4} +\setfont\titlesf\sfbshape{17}{\magstep1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\authorrm{\secrm} +\def\authortt{\sectt} + +% Chapter (and unnumbered) fonts (17.28pt). +\def\chapnominalsize{17pt} +\setfont\chaprm\rmbshape{12}{\magstep2} +\setfont\chapit\itbshape{10}{\magstep3} +\setfont\chapsl\slbshape{10}{\magstep3} +\setfont\chaptt\ttbshape{12}{\magstep2} +\setfont\chapttsl\ttslshape{10}{\magstep3} +\setfont\chapsf\sfbshape{17}{1000} +\let\chapbf=\chaprm +\setfont\chapsc\scbshape{10}{\magstep3} +\font\chapi=cmmi12 scaled \magstep2 +\font\chapsy=cmsy10 scaled \magstep3 + +% Section fonts (14.4pt). +\def\secnominalsize{14pt} +\setfont\secrm\rmbshape{12}{\magstep1} +\setfont\secit\itbshape{10}{\magstep2} +\setfont\secsl\slbshape{10}{\magstep2} +\setfont\sectt\ttbshape{12}{\magstep1} +\setfont\secttsl\ttslshape{10}{\magstep2} +\setfont\secsf\sfbshape{12}{\magstep1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep2} +\font\seci=cmmi12 scaled \magstep1 +\font\secsy=cmsy10 scaled \magstep2 + +% Subsection fonts (13.15pt). +\def\ssecnominalsize{13pt} +\setfont\ssecrm\rmbshape{12}{\magstephalf} +\setfont\ssecit\itbshape{10}{1315} +\setfont\ssecsl\slbshape{10}{1315} +\setfont\ssectt\ttbshape{12}{\magstephalf} +\setfont\ssecttsl\ttslshape{10}{1315} +\setfont\ssecsf\sfbshape{12}{\magstephalf} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1315} +\font\sseci=cmmi12 scaled \magstephalf +\font\ssecsy=cmsy10 scaled 1315 + +% Reduced fonts for @acro in text (10pt). +\def\reducednominalsize{10pt} +\setfont\reducedrm\rmshape{10}{1000} +\setfont\reducedtt\ttshape{10}{1000} +\setfont\reducedbf\bfshape{10}{1000} +\setfont\reducedit\itshape{10}{1000} +\setfont\reducedsl\slshape{10}{1000} +\setfont\reducedsf\sfshape{10}{1000} +\setfont\reducedsc\scshape{10}{1000} +\setfont\reducedttsl\ttslshape{10}{1000} +\font\reducedi=cmmi10 +\font\reducedsy=cmsy10 + +% reset the current fonts +\textfonts +\rm +} % end of 11pt text font size definitions + + +% Definitions to make the main text be 10pt Computer Modern, with +% section, chapter, etc., sizes following suit. This is for the GNU +% Press printing of the Emacs 22 manual. Maybe other manuals in the +% future. Used with @smallbook, which sets the leading to 12pt. +% +\def\definetextfontsizex{% +% Text fonts (10pt). +\def\textnominalsize{10pt} +\edef\mainmagstep{1000} +\setfont\textrm\rmshape{10}{\mainmagstep} +\setfont\texttt\ttshape{10}{\mainmagstep} +\setfont\textbf\bfshape{10}{\mainmagstep} +\setfont\textit\itshape{10}{\mainmagstep} +\setfont\textsl\slshape{10}{\mainmagstep} +\setfont\textsf\sfshape{10}{\mainmagstep} +\setfont\textsc\scshape{10}{\mainmagstep} +\setfont\textttsl\ttslshape{10}{\mainmagstep} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstephalf} +\setfont\deftt\ttshape{10}{\magstephalf} +\setfont\defttsl\ttslshape{10}{\magstephalf} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000} +\setfont\smalltt\ttshape{9}{1000} +\setfont\smallbf\bfshape{10}{900} +\setfont\smallit\itshape{9}{1000} +\setfont\smallsl\slshape{9}{1000} +\setfont\smallsf\sfshape{9}{1000} +\setfont\smallsc\scshape{10}{900} +\setfont\smallttsl\ttslshape{10}{900} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000} +\setfont\smallertt\ttshape{8}{1000} +\setfont\smallerbf\bfshape{10}{800} +\setfont\smallerit\itshape{8}{1000} +\setfont\smallersl\slshape{8}{1000} +\setfont\smallersf\sfshape{8}{1000} +\setfont\smallersc\scshape{10}{800} +\setfont\smallerttsl\ttslshape{10}{800} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3} +\setfont\titleit\itbshape{10}{\magstep4} +\setfont\titlesl\slbshape{10}{\magstep4} +\setfont\titlett\ttbshape{12}{\magstep3} +\setfont\titlettsl\ttslshape{10}{\magstep4} +\setfont\titlesf\sfbshape{17}{\magstep1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\authorrm{\secrm} +\def\authortt{\sectt} + +% Chapter fonts (14.4pt). +\def\chapnominalsize{14pt} +\setfont\chaprm\rmbshape{12}{\magstep1} +\setfont\chapit\itbshape{10}{\magstep2} +\setfont\chapsl\slbshape{10}{\magstep2} +\setfont\chaptt\ttbshape{12}{\magstep1} +\setfont\chapttsl\ttslshape{10}{\magstep2} +\setfont\chapsf\sfbshape{12}{\magstep1} +\let\chapbf\chaprm +\setfont\chapsc\scbshape{10}{\magstep2} +\font\chapi=cmmi12 scaled \magstep1 +\font\chapsy=cmsy10 scaled \magstep2 + +% Section fonts (12pt). +\def\secnominalsize{12pt} +\setfont\secrm\rmbshape{12}{1000} +\setfont\secit\itbshape{10}{\magstep1} +\setfont\secsl\slbshape{10}{\magstep1} +\setfont\sectt\ttbshape{12}{1000} +\setfont\secttsl\ttslshape{10}{\magstep1} +\setfont\secsf\sfbshape{12}{1000} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep1} +\font\seci=cmmi12 +\font\secsy=cmsy10 scaled \magstep1 + +% Subsection fonts (10pt). +\def\ssecnominalsize{10pt} +\setfont\ssecrm\rmbshape{10}{1000} +\setfont\ssecit\itbshape{10}{1000} +\setfont\ssecsl\slbshape{10}{1000} +\setfont\ssectt\ttbshape{10}{1000} +\setfont\ssecttsl\ttslshape{10}{1000} +\setfont\ssecsf\sfbshape{10}{1000} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1000} +\font\sseci=cmmi10 +\font\ssecsy=cmsy10 + +% Reduced fonts for @acro in text (9pt). +\def\reducednominalsize{9pt} +\setfont\reducedrm\rmshape{9}{1000} +\setfont\reducedtt\ttshape{9}{1000} +\setfont\reducedbf\bfshape{10}{900} +\setfont\reducedit\itshape{9}{1000} +\setfont\reducedsl\slshape{9}{1000} +\setfont\reducedsf\sfshape{9}{1000} +\setfont\reducedsc\scshape{10}{900} +\setfont\reducedttsl\ttslshape{10}{900} +\font\reducedi=cmmi9 +\font\reducedsy=cmsy9 + +% reduce space between paragraphs +\divide\parskip by 2 + +% reset the current fonts +\textfonts +\rm +} % end of 10pt text font size definitions + + +% We provide the user-level command +% @fonttextsize 10 +% (or 11) to redefine the text font size. pt is assumed. +% +\def\xword{10} +\def\xiword{11} +% +\parseargdef\fonttextsize{% + \def\textsizearg{#1}% + \wlog{doing @fonttextsize \textsizearg}% + % + % Set \globaldefs so that documents can use this inside @tex, since + % makeinfo 4.8 does not support it, but we need it nonetheless. + % + \begingroup \globaldefs=1 + \ifx\textsizearg\xword \definetextfontsizex + \else \ifx\textsizearg\xiword \definetextfontsizexi + \else + \errhelp=\EMsimple + \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} + \fi\fi + \endgroup +} + + +% In order for the font changes to affect most math symbols and letters, +% we have to define the \textfont of the standard families. Since +% texinfo doesn't allow for producing subscripts and superscripts except +% in the main text, we don't bother to reset \scriptfont and +% \scriptscriptfont (which would also require loading a lot more fonts). +% +\def\resetmathfonts{% + \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy + \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf + \textfont\ttfam=\tentt \textfont\sffam=\tensf +} + +% The font-changing commands redefine the meanings of \tenSTYLE, instead +% of just \STYLE. We do this because \STYLE needs to also set the +% current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire +% \tenSTYLE to set the current font. +% +% Each font-changing command also sets the names \lsize (one size lower) +% and \lllsize (three sizes lower). These relative commands are used in +% the LaTeX logo and acronyms. +% +% This all needs generalizing, badly. +% +\def\textfonts{% + \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl + \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc + \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy + \let\tenttsl=\textttsl + \def\curfontsize{text}% + \def\lsize{reduced}\def\lllsize{smaller}% + \resetmathfonts \setleading{\textleading}} +\def\titlefonts{% + \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl + \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc + \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy + \let\tenttsl=\titlettsl + \def\curfontsize{title}% + \def\lsize{chap}\def\lllsize{subsec}% + \resetmathfonts \setleading{25pt}} +\def\titlefont#1{{\titlefonts\rm #1}} +\def\chapfonts{% + \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl + \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc + \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy + \let\tenttsl=\chapttsl + \def\curfontsize{chap}% + \def\lsize{sec}\def\lllsize{text}% + \resetmathfonts \setleading{19pt}} +\def\secfonts{% + \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl + \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc + \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy + \let\tenttsl=\secttsl + \def\curfontsize{sec}% + \def\lsize{subsec}\def\lllsize{reduced}% + \resetmathfonts \setleading{16pt}} +\def\subsecfonts{% + \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl + \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc + \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy + \let\tenttsl=\ssecttsl + \def\curfontsize{ssec}% + \def\lsize{text}\def\lllsize{small}% + \resetmathfonts \setleading{15pt}} +\let\subsubsecfonts = \subsecfonts +\def\reducedfonts{% + \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl + \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc + \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy + \let\tenttsl=\reducedttsl + \def\curfontsize{reduced}% + \def\lsize{small}\def\lllsize{smaller}% + \resetmathfonts \setleading{10.5pt}} +\def\smallfonts{% + \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl + \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc + \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy + \let\tenttsl=\smallttsl + \def\curfontsize{small}% + \def\lsize{smaller}\def\lllsize{smaller}% + \resetmathfonts \setleading{10.5pt}} +\def\smallerfonts{% + \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl + \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc + \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy + \let\tenttsl=\smallerttsl + \def\curfontsize{smaller}% + \def\lsize{smaller}\def\lllsize{smaller}% + \resetmathfonts \setleading{9.5pt}} + +% Set the fonts to use with the @small... environments. +\let\smallexamplefonts = \smallfonts + +% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample +% can fit this many characters: +% 8.5x11=86 smallbook=72 a4=90 a5=69 +% If we use \scriptfonts (8pt), then we can fit this many characters: +% 8.5x11=90+ smallbook=80 a4=90+ a5=77 +% For me, subjectively, the few extra characters that fit aren't worth +% the additional smallness of 8pt. So I'm making the default 9pt. +% +% By the way, for comparison, here's what fits with @example (10pt): +% 8.5x11=71 smallbook=60 a4=75 a5=58 +% +% I wish the USA used A4 paper. +% --karl, 24jan03. + + +% Set up the default fonts, so we can use them for creating boxes. +% +\definetextfontsizexi + +% Define these so they can be easily changed for other fonts. +\def\angleleft{$\langle$} +\def\angleright{$\rangle$} + +% Count depth in font-changes, for error checks +\newcount\fontdepth \fontdepth=0 + +% Fonts for short table of contents. +\setfont\shortcontrm\rmshape{12}{1000} +\setfont\shortcontbf\bfshape{10}{\magstep1} % no cmb12 +\setfont\shortcontsl\slshape{12}{1000} +\setfont\shortconttt\ttshape{12}{1000} + +%% Add scribe-like font environments, plus @l for inline lisp (usually sans +%% serif) and @ii for TeX italic + +% \smartitalic{ARG} outputs arg in italics, followed by an italic correction +% unless the following character is such as not to need one. +\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else + \ptexslash\fi\fi\fi} +\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx} +\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx} + +% like \smartslanted except unconditionally uses \ttsl. +% @var is set to this for defun arguments. +\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx} + +% like \smartslanted except unconditionally use \sl. We never want +% ttsl for book titles, do we? +\def\cite#1{{\sl #1}\futurelet\next\smartitalicx} + +\let\i=\smartitalic +\let\slanted=\smartslanted +\let\var=\smartslanted +\let\dfn=\smartslanted +\let\emph=\smartitalic + +% @b, explicit bold. +\def\b#1{{\bf #1}} +\let\strong=\b + +% @sansserif, explicit sans. +\def\sansserif#1{{\sf #1}} + +% We can't just use \exhyphenpenalty, because that only has effect at +% the end of a paragraph. Restore normal hyphenation at the end of the +% group within which \nohyphenation is presumably called. +% +\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} +\def\restorehyphenation{\hyphenchar\font = `- } + +% Set sfcode to normal for the chars that usually have another value. +% Can't use plain's \frenchspacing because it uses the `\x notation, and +% sometimes \x has an active definition that messes things up. +% +\catcode`@=11 + \def\plainfrenchspacing{% + \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m + \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m + \def\endofsentencespacefactor{1000}% for @. and friends + } + \def\plainnonfrenchspacing{% + \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 + \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 + \def\endofsentencespacefactor{3000}% for @. and friends + } +\catcode`@=\other +\def\endofsentencespacefactor{3000}% default + +\def\t#1{% + {\tt \rawbackslash \plainfrenchspacing #1}% + \null +} +\def\samp#1{`\tclose{#1}'\null} +\setfont\keyrm\rmshape{8}{1000} +\font\keysy=cmsy9 +\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% + \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% + \vbox{\hrule\kern-0.4pt + \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% + \kern-0.4pt\hrule}% + \kern-.06em\raise0.4pt\hbox{\angleright}}}} +% The old definition, with no lozenge: +%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null} +\def\ctrl #1{{\tt \rawbackslash \hat}#1} + +% @file, @option are the same as @samp. +\let\file=\samp +\let\option=\samp + +% @code is a modification of @t, +% which makes spaces the same size as normal in the surrounding text. +\def\tclose#1{% + {% + % Change normal interword space to be same as for the current font. + \spaceskip = \fontdimen2\font + % + % Switch to typewriter. + \tt + % + % But `\ ' produces the large typewriter interword space. + \def\ {{\spaceskip = 0pt{} }}% + % + % Turn off hyphenation. + \nohyphenation + % + \rawbackslash + \plainfrenchspacing + #1% + }% + \null +} + +% We *must* turn on hyphenation at `-' and `_' in @code. +% Otherwise, it is too hard to avoid overfull hboxes +% in the Emacs manual, the Library manual, etc. + +% Unfortunately, TeX uses one parameter (\hyphenchar) to control +% both hyphenation at - and hyphenation within words. +% We must therefore turn them both off (\tclose does that) +% and arrange explicitly to hyphenate at a dash. +% -- rms. +{ + \catcode`\-=\active \catcode`\_=\active + \catcode`\'=\active \catcode`\`=\active + % + \global\def\code{\begingroup + \catcode\rquoteChar=\active \catcode\lquoteChar=\active + \let'\codequoteright \let`\codequoteleft + % + \catcode\dashChar=\active \catcode\underChar=\active + \ifallowcodebreaks + \let-\codedash + \let_\codeunder + \else + \let-\realdash + \let_\realunder + \fi + \codex + } +} + +\def\realdash{-} +\def\codedash{-\discretionary{}{}{}} +\def\codeunder{% + % this is all so @math{@code{var_name}+1} can work. In math mode, _ + % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) + % will therefore expand the active definition of _, which is us + % (inside @code that is), therefore an endless loop. + \ifusingtt{\ifmmode + \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. + \else\normalunderscore \fi + \discretionary{}{}{}}% + {\_}% +} +\def\codex #1{\tclose{#1}\endgroup} + +% An additional complication: the above will allow breaks after, e.g., +% each of the four underscores in __typeof__. This is undesirable in +% some manuals, especially if they don't have long identifiers in +% general. @allowcodebreaks provides a way to control this. +% +\newif\ifallowcodebreaks \allowcodebreakstrue + +\def\keywordtrue{true} +\def\keywordfalse{false} + +\parseargdef\allowcodebreaks{% + \def\txiarg{#1}% + \ifx\txiarg\keywordtrue + \allowcodebreakstrue + \else\ifx\txiarg\keywordfalse + \allowcodebreaksfalse + \else + \errhelp = \EMsimple + \errmessage{Unknown @allowcodebreaks option `\txiarg'}% + \fi\fi +} + +% @kbd is like @code, except that if the argument is just one @key command, +% then @kbd has no effect. + +% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), +% `example' (@kbd uses ttsl only inside of @example and friends), +% or `code' (@kbd uses normal tty font always). +\parseargdef\kbdinputstyle{% + \def\txiarg{#1}% + \ifx\txiarg\worddistinct + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% + \else\ifx\txiarg\wordexample + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% + \else\ifx\txiarg\wordcode + \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% + \else + \errhelp = \EMsimple + \errmessage{Unknown @kbdinputstyle option `\txiarg'}% + \fi\fi\fi +} +\def\worddistinct{distinct} +\def\wordexample{example} +\def\wordcode{code} + +% Default is `distinct.' +\kbdinputstyle distinct + +\def\xkey{\key} +\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% +\ifx\one\xkey\ifx\threex\three \key{#2}% +\else{\tclose{\kbdfont\look}}\fi +\else{\tclose{\kbdfont\look}}\fi} + +% For @indicateurl, @env, @command quotes seem unnecessary, so use \code. +\let\indicateurl=\code +\let\env=\code +\let\command=\code + +% @uref (abbreviation for `urlref') takes an optional (comma-separated) +% second argument specifying the text to display and an optional third +% arg as text to display instead of (rather than in addition to) the url +% itself. First (mandatory) arg is the url. Perhaps eventually put in +% a hypertex \special here. +% +\def\uref#1{\douref #1,,,\finish} +\def\douref#1,#2,#3,#4\finish{\begingroup + \unsepspaces + \pdfurl{#1}% + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt + \unhbox0 % third arg given, show only that + \else + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \ifpdf + \unhbox0 % PDF: 2nd arg given, show only it + \else + \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url + \fi + \else + \code{#1}% only url given, so show it + \fi + \fi + \endlink +\endgroup} + +% @url synonym for @uref, since that's how everyone uses it. +% +\let\url=\uref + +% rms does not like angle brackets --karl, 17may97. +% So now @email is just like @uref, unless we are pdf. +% +%\def\email#1{\angleleft{\tt #1}\angleright} +\ifpdf + \def\email#1{\doemail#1,,\finish} + \def\doemail#1,#2,#3\finish{\begingroup + \unsepspaces + \pdfurl{mailto:#1}% + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi + \endlink + \endgroup} +\else + \let\email=\uref +\fi + +% Check if we are currently using a typewriter font. Since all the +% Computer Modern typewriter fonts have zero interword stretch (and +% shrink), and it is reasonable to expect all typewriter fonts to have +% this property, we can check that font parameter. +% +\def\ifmonospace{\ifdim\fontdimen3\font=0pt } + +% Typeset a dimension, e.g., `in' or `pt'. The only reason for the +% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. +% +\def\dmn#1{\thinspace #1} + +\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par} + +% @l was never documented to mean ``switch to the Lisp font'', +% and it is not used as such in any manual I can find. We need it for +% Polish suppressed-l. --karl, 22sep96. +%\def\l#1{{\li #1}\null} + +% Explicit font changes: @r, @sc, undocumented @ii. +\def\r#1{{\rm #1}} % roman font +\def\sc#1{{\smallcaps#1}} % smallcaps font +\def\ii#1{{\it #1}} % italic font + +% @acronym for "FBI", "NATO", and the like. +% We print this one point size smaller, since it's intended for +% all-uppercase. +% +\def\acronym#1{\doacronym #1,,\finish} +\def\doacronym#1,#2,#3\finish{% + {\selectfonts\lsize #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi +} + +% @abbr for "Comput. J." and the like. +% No font change, but don't do end-of-sentence spacing. +% +\def\abbr#1{\doabbr #1,,\finish} +\def\doabbr#1,#2,#3\finish{% + {\plainfrenchspacing #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi +} + +% @pounds{} is a sterling sign, which Knuth put in the CM italic font. +% +\def\pounds{{\it\$}} + +% @euro{} comes from a separate font, depending on the current style. +% We use the free feym* fonts from the eurosym package by Henrik +% Theiling, which support regular, slanted, bold and bold slanted (and +% "outlined" (blackboard board, sort of) versions, which we don't need). +% It is available from http://www.ctan.org/tex-archive/fonts/eurosym. +% +% Although only regular is the truly official Euro symbol, we ignore +% that. The Euro is designed to be slightly taller than the regular +% font height. +% +% feymr - regular +% feymo - slanted +% feybr - bold +% feybo - bold slanted +% +% There is no good (free) typewriter version, to my knowledge. +% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. +% Hmm. +% +% Also doesn't work in math. Do we need to do math with euro symbols? +% Hope not. +% +% +\def\euro{{\eurofont e}} +\def\eurofont{% + % We set the font at each command, rather than predefining it in + % \textfonts and the other font-switching commands, so that + % installations which never need the symbol don't have to have the + % font installed. + % + % There is only one designed size (nominal 10pt), so we always scale + % that to the current nominal size. + % + % By the way, simply using "at 1em" works for cmr10 and the like, but + % does not work for cmbx10 and other extended/shrunken fonts. + % + \def\eurosize{\csname\curfontsize nominalsize\endcsname}% + % + \ifx\curfontstyle\bfstylename + % bold: + \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize + \else + % regular: + \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize + \fi + \thiseurofont +} + +% @registeredsymbol - R in a circle. The font for the R should really +% be smaller yet, but lllsize is the best we can do for now. +% Adapted from the plain.tex definition of \copyright. +% +\def\registeredsymbol{% + $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}% + \hfil\crcr\Orb}}% + }$% +} + +% @textdegree - the normal degrees sign. +% +\def\textdegree{$^\circ$} + +% Laurent Siebenmann reports \Orb undefined with: +% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 +% so we'll define it if necessary. +% +\ifx\Orb\undefined +\def\Orb{\mathhexbox20D} +\fi + + +\message{page headings,} + +\newskip\titlepagetopglue \titlepagetopglue = 1.5in +\newskip\titlepagebottomglue \titlepagebottomglue = 2pc + +% First the title page. Must do @settitle before @titlepage. +\newif\ifseenauthor +\newif\iffinishedtitlepage + +% Do an implicit @contents or @shortcontents after @end titlepage if the +% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. +% +\newif\ifsetcontentsaftertitlepage + \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue +\newif\ifsetshortcontentsaftertitlepage + \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue + +\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% + \endgroup\page\hbox{}\page} + +\envdef\titlepage{% + % Open one extra group, as we want to close it in the middle of \Etitlepage. + \begingroup + \parindent=0pt \textfonts + % Leave some space at the very top of the page. + \vglue\titlepagetopglue + % No rule at page bottom unless we print one at the top with @title. + \finishedtitlepagetrue + % + % Most title ``pages'' are actually two pages long, with space + % at the top of the second. We don't want the ragged left on the second. + \let\oldpage = \page + \def\page{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + \let\page = \oldpage + \page + \null + }% +} + +\def\Etitlepage{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + % It is important to do the page break before ending the group, + % because the headline and footline are only empty inside the group. + % If we use the new definition of \page, we always get a blank page + % after the title page, which we certainly don't want. + \oldpage + \endgroup + % + % Need this before the \...aftertitlepage checks so that if they are + % in effect the toc pages will come out with page numbers. + \HEADINGSon + % + % If they want short, they certainly want long too. + \ifsetshortcontentsaftertitlepage + \shortcontents + \contents + \global\let\shortcontents = \relax + \global\let\contents = \relax + \fi + % + \ifsetcontentsaftertitlepage + \contents + \global\let\contents = \relax + \global\let\shortcontents = \relax + \fi +} + +\def\finishtitlepage{% + \vskip4pt \hrule height 2pt width \hsize + \vskip\titlepagebottomglue + \finishedtitlepagetrue +} + +%%% Macros to be used within @titlepage: + +\let\subtitlerm=\tenrm +\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} + +\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines + \let\tt=\authortt} + +\parseargdef\title{% + \checkenv\titlepage + \leftline{\titlefonts\rm #1} + % print a rule at the page bottom also. + \finishedtitlepagefalse + \vskip4pt \hrule height 4pt width \hsize \vskip4pt +} + +\parseargdef\subtitle{% + \checkenv\titlepage + {\subtitlefont \rightline{#1}}% +} + +% @author should come last, but may come many times. +% It can also be used inside @quotation. +% +\parseargdef\author{% + \def\temp{\quotation}% + \ifx\thisenv\temp + \def\quotationauthor{#1}% printed in \Equotation. + \else + \checkenv\titlepage + \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi + {\authorfont \leftline{#1}}% + \fi +} + + +%%% Set up page headings and footings. + +\let\thispage=\folio + +\newtoks\evenheadline % headline on even pages +\newtoks\oddheadline % headline on odd pages +\newtoks\evenfootline % footline on even pages +\newtoks\oddfootline % footline on odd pages + +% Now make TeX use those variables +\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline + \else \the\evenheadline \fi}} +\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline + \else \the\evenfootline \fi}\HEADINGShook} +\let\HEADINGShook=\relax + +% Commands to set those variables. +% For example, this is what @headings on does +% @evenheading @thistitle|@thispage|@thischapter +% @oddheading @thischapter|@thispage|@thistitle +% @evenfooting @thisfile|| +% @oddfooting ||@thisfile + + +\def\evenheading{\parsearg\evenheadingxxx} +\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} +\def\evenheadingyyy #1\|#2\|#3\|#4\finish{% +\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\def\oddheading{\parsearg\oddheadingxxx} +\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} +\def\oddheadingyyy #1\|#2\|#3\|#4\finish{% +\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% + +\def\evenfooting{\parsearg\evenfootingxxx} +\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} +\def\evenfootingyyy #1\|#2\|#3\|#4\finish{% +\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\def\oddfooting{\parsearg\oddfootingxxx} +\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} +\def\oddfootingyyy #1\|#2\|#3\|#4\finish{% + \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% + % + % Leave some space for the footline. Hopefully ok to assume + % @evenfooting will not be used by itself. + \global\advance\pageheight by -12pt + \global\advance\vsize by -12pt +} + +\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} + + +% @headings double turns headings on for double-sided printing. +% @headings single turns headings on for single-sided printing. +% @headings off turns them off. +% @headings on same as @headings double, retained for compatibility. +% @headings after turns on double-sided headings after this page. +% @headings doubleafter turns on double-sided headings after this page. +% @headings singleafter turns on single-sided headings after this page. +% By default, they are off at the start of a document, +% and turned `on' after @end titlepage. + +\def\headings #1 {\csname HEADINGS#1\endcsname} + +\def\HEADINGSoff{% +\global\evenheadline={\hfil} \global\evenfootline={\hfil} +\global\oddheadline={\hfil} \global\oddfootline={\hfil}} +\HEADINGSoff +% When we turn headings on, set the page number to 1. +% For double-sided printing, put current file name in lower left corner, +% chapter name on inside top of right hand pages, document +% title on inside top of left hand pages, and page numbers on outside top +% edge of all pages. +\def\HEADINGSdouble{% +\global\pageno=1 +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\folio\hfil\thistitle}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage +} +\let\contentsalignmacro = \chappager + +% For single-sided printing, chapter title goes across top left of page, +% page number on top right. +\def\HEADINGSsingle{% +\global\pageno=1 +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} +\def\HEADINGSon{\HEADINGSdouble} + +\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} +\let\HEADINGSdoubleafter=\HEADINGSafter +\def\HEADINGSdoublex{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\folio\hfil\thistitle}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage +} + +\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} +\def\HEADINGSsinglex{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} + +% Subroutines used in generating headings +% This produces Day Month Year style of output. +% Only define if not already defined, in case a txi-??.tex file has set +% up a different format (e.g., txi-cs.tex does this). +\ifx\today\undefined +\def\today{% + \number\day\space + \ifcase\month + \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr + \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug + \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec + \fi + \space\number\year} +\fi + +% @settitle line... specifies the title of the document, for headings. +% It generates no output of its own. +\def\thistitle{\putwordNoTitle} +\def\settitle{\parsearg{\gdef\thistitle}} + + +\message{tables,} +% Tables -- @table, @ftable, @vtable, @item(x). + +% default indentation of table text +\newdimen\tableindent \tableindent=.8in +% default indentation of @itemize and @enumerate text +\newdimen\itemindent \itemindent=.3in +% margin between end of table item and start of table text. +\newdimen\itemmargin \itemmargin=.1in + +% used internally for \itemindent minus \itemmargin +\newdimen\itemmax + +% Note @table, @ftable, and @vtable define @item, @itemx, etc., with +% these defs. +% They also define \itemindex +% to index the item name in whatever manner is desired (perhaps none). + +\newif\ifitemxneedsnegativevskip + +\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} + +\def\internalBitem{\smallbreak \parsearg\itemzzz} +\def\internalBitemx{\itemxpar \parsearg\itemzzz} + +\def\itemzzz #1{\begingroup % + \advance\hsize by -\rightskip + \advance\hsize by -\tableindent + \setbox0=\hbox{\itemindicate{#1}}% + \itemindex{#1}% + \nobreak % This prevents a break before @itemx. + % + % If the item text does not fit in the space we have, put it on a line + % by itself, and do not allow a page break either before or after that + % line. We do not start a paragraph here because then if the next + % command is, e.g., @kindex, the whatsit would get put into the + % horizontal list on a line by itself, resulting in extra blank space. + \ifdim \wd0>\itemmax + % + % Make this a paragraph so we get the \parskip glue and wrapping, + % but leave it ragged-right. + \begingroup + \advance\leftskip by-\tableindent + \advance\hsize by\tableindent + \advance\rightskip by0pt plus1fil + \leavevmode\unhbox0\par + \endgroup + % + % We're going to be starting a paragraph, but we don't want the + % \parskip glue -- logically it's part of the @item we just started. + \nobreak \vskip-\parskip + % + % Stop a page break at the \parskip glue coming up. However, if + % what follows is an environment such as @example, there will be no + % \parskip glue; then the negative vskip we just inserted would + % cause the example and the item to crash together. So we use this + % bizarre value of 10001 as a signal to \aboveenvbreak to insert + % \parskip glue after all. Section titles are handled this way also. + % + \penalty 10001 + \endgroup + \itemxneedsnegativevskipfalse + \else + % The item text fits into the space. Start a paragraph, so that the + % following text (if any) will end up on the same line. + \noindent + % Do this with kerns and \unhbox so that if there is a footnote in + % the item text, it can migrate to the main vertical list and + % eventually be printed. + \nobreak\kern-\tableindent + \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 + \unhbox0 + \nobreak\kern\dimen0 + \endgroup + \itemxneedsnegativevskiptrue + \fi +} + +\def\item{\errmessage{@item while not in a list environment}} +\def\itemx{\errmessage{@itemx while not in a list environment}} + +% @table, @ftable, @vtable. +\envdef\table{% + \let\itemindex\gobble + \tablecheck{table}% +} +\envdef\ftable{% + \def\itemindex ##1{\doind {fn}{\code{##1}}}% + \tablecheck{ftable}% +} +\envdef\vtable{% + \def\itemindex ##1{\doind {vr}{\code{##1}}}% + \tablecheck{vtable}% +} +\def\tablecheck#1{% + \ifnum \the\catcode`\^^M=\active + \endgroup + \errmessage{This command won't work in this context; perhaps the problem is + that we are \inenvironment\thisenv}% + \def\next{\doignore{#1}}% + \else + \let\next\tablex + \fi + \next +} +\def\tablex#1{% + \def\itemindicate{#1}% + \parsearg\tabley +} +\def\tabley#1{% + {% + \makevalueexpandable + \edef\temp{\noexpand\tablez #1\space\space\space}% + \expandafter + }\temp \endtablez +} +\def\tablez #1 #2 #3 #4\endtablez{% + \aboveenvbreak + \ifnum 0#1>0 \advance \leftskip by #1\mil \fi + \ifnum 0#2>0 \tableindent=#2\mil \fi + \ifnum 0#3>0 \advance \rightskip by #3\mil \fi + \itemmax=\tableindent + \advance \itemmax by -\itemmargin + \advance \leftskip by \tableindent + \exdentamount=\tableindent + \parindent = 0pt + \parskip = \smallskipamount + \ifdim \parskip=0pt \parskip=2pt \fi + \let\item = \internalBitem + \let\itemx = \internalBitemx +} +\def\Etable{\endgraf\afterenvbreak} +\let\Eftable\Etable +\let\Evtable\Etable +\let\Eitemize\Etable +\let\Eenumerate\Etable + +% This is the counter used by @enumerate, which is really @itemize + +\newcount \itemno + +\envdef\itemize{\parsearg\doitemize} + +\def\doitemize#1{% + \aboveenvbreak + \itemmax=\itemindent + \advance\itemmax by -\itemmargin + \advance\leftskip by \itemindent + \exdentamount=\itemindent + \parindent=0pt + \parskip=\smallskipamount + \ifdim\parskip=0pt \parskip=2pt \fi + \def\itemcontents{#1}% + % @itemize with no arg is equivalent to @itemize @bullet. + \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi + \let\item=\itemizeitem +} + +% Definition of @item while inside @itemize and @enumerate. +% +\def\itemizeitem{% + \advance\itemno by 1 % for enumerations + {\let\par=\endgraf \smallbreak}% reasonable place to break + {% + % If the document has an @itemize directly after a section title, a + % \nobreak will be last on the list, and \sectionheading will have + % done a \vskip-\parskip. In that case, we don't want to zero + % parskip, or the item text will crash with the heading. On the + % other hand, when there is normal text preceding the item (as there + % usually is), we do want to zero parskip, or there would be too much + % space. In that case, we won't have a \nobreak before. At least + % that's the theory. + \ifnum\lastpenalty<10000 \parskip=0in \fi + \noindent + \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% + \vadjust{\penalty 1200}}% not good to break after first line of item. + \flushcr +} + +% \splitoff TOKENS\endmark defines \first to be the first token in +% TOKENS, and \rest to be the remainder. +% +\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% + +% Allow an optional argument of an uppercase letter, lowercase letter, +% or number, to specify the first label in the enumerated list. No +% argument is the same as `1'. +% +\envparseargdef\enumerate{\enumeratey #1 \endenumeratey} +\def\enumeratey #1 #2\endenumeratey{% + % If we were given no argument, pretend we were given `1'. + \def\thearg{#1}% + \ifx\thearg\empty \def\thearg{1}\fi + % + % Detect if the argument is a single token. If so, it might be a + % letter. Otherwise, the only valid thing it can be is a number. + % (We will always have one token, because of the test we just made. + % This is a good thing, since \splitoff doesn't work given nothing at + % all -- the first parameter is undelimited.) + \expandafter\splitoff\thearg\endmark + \ifx\rest\empty + % Only one token in the argument. It could still be anything. + % A ``lowercase letter'' is one whose \lccode is nonzero. + % An ``uppercase letter'' is one whose \lccode is both nonzero, and + % not equal to itself. + % Otherwise, we assume it's a number. + % + % We need the \relax at the end of the \ifnum lines to stop TeX from + % continuing to look for a . + % + \ifnum\lccode\expandafter`\thearg=0\relax + \numericenumerate % a number (we hope) + \else + % It's a letter. + \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax + \lowercaseenumerate % lowercase letter + \else + \uppercaseenumerate % uppercase letter + \fi + \fi + \else + % Multiple tokens in the argument. We hope it's a number. + \numericenumerate + \fi +} + +% An @enumerate whose labels are integers. The starting integer is +% given in \thearg. +% +\def\numericenumerate{% + \itemno = \thearg + \startenumeration{\the\itemno}% +} + +% The starting (lowercase) letter is in \thearg. +\def\lowercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more lowercase letters in @enumerate; get a bigger + alphabet}% + \fi + \char\lccode\itemno + }% +} + +% The starting (uppercase) letter is in \thearg. +\def\uppercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more uppercase letters in @enumerate; get a bigger + alphabet} + \fi + \char\uccode\itemno + }% +} + +% Call \doitemize, adding a period to the first argument and supplying the +% common last two arguments. Also subtract one from the initial value in +% \itemno, since @item increments \itemno. +% +\def\startenumeration#1{% + \advance\itemno by -1 + \doitemize{#1.}\flushcr +} + +% @alphaenumerate and @capsenumerate are abbreviations for giving an arg +% to @enumerate. +% +\def\alphaenumerate{\enumerate{a}} +\def\capsenumerate{\enumerate{A}} +\def\Ealphaenumerate{\Eenumerate} +\def\Ecapsenumerate{\Eenumerate} + + +% @multitable macros +% Amy Hendrickson, 8/18/94, 3/6/96 +% +% @multitable ... @end multitable will make as many columns as desired. +% Contents of each column will wrap at width given in preamble. Width +% can be specified either with sample text given in a template line, +% or in percent of \hsize, the current width of text on page. + +% Table can continue over pages but will only break between lines. + +% To make preamble: +% +% Either define widths of columns in terms of percent of \hsize: +% @multitable @columnfractions .25 .3 .45 +% @item ... +% +% Numbers following @columnfractions are the percent of the total +% current hsize to be used for each column. You may use as many +% columns as desired. + + +% Or use a template: +% @multitable {Column 1 template} {Column 2 template} {Column 3 template} +% @item ... +% using the widest term desired in each column. + +% Each new table line starts with @item, each subsequent new column +% starts with @tab. Empty columns may be produced by supplying @tab's +% with nothing between them for as many times as empty columns are needed, +% ie, @tab@tab@tab will produce two empty columns. + +% @item, @tab do not need to be on their own lines, but it will not hurt +% if they are. + +% Sample multitable: + +% @multitable {Column 1 template} {Column 2 template} {Column 3 template} +% @item first col stuff @tab second col stuff @tab third col +% @item +% first col stuff +% @tab +% second col stuff +% @tab +% third col +% @item first col stuff @tab second col stuff +% @tab Many paragraphs of text may be used in any column. +% +% They will wrap at the width determined by the template. +% @item@tab@tab This will be in third column. +% @end multitable + +% Default dimensions may be reset by user. +% @multitableparskip is vertical space between paragraphs in table. +% @multitableparindent is paragraph indent in table. +% @multitablecolmargin is horizontal space to be left between columns. +% @multitablelinespace is space to leave between table items, baseline +% to baseline. +% 0pt means it depends on current normal line spacing. +% +\newskip\multitableparskip +\newskip\multitableparindent +\newdimen\multitablecolspace +\newskip\multitablelinespace +\multitableparskip=0pt +\multitableparindent=6pt +\multitablecolspace=12pt +\multitablelinespace=0pt + +% Macros used to set up halign preamble: +% +\let\endsetuptable\relax +\def\xendsetuptable{\endsetuptable} +\let\columnfractions\relax +\def\xcolumnfractions{\columnfractions} +\newif\ifsetpercent + +% #1 is the @columnfraction, usually a decimal number like .5, but might +% be just 1. We just use it, whatever it is. +% +\def\pickupwholefraction#1 {% + \global\advance\colcount by 1 + \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% + \setuptable +} + +\newcount\colcount +\def\setuptable#1{% + \def\firstarg{#1}% + \ifx\firstarg\xendsetuptable + \let\go = \relax + \else + \ifx\firstarg\xcolumnfractions + \global\setpercenttrue + \else + \ifsetpercent + \let\go\pickupwholefraction + \else + \global\advance\colcount by 1 + \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a + % separator; typically that is always in the input, anyway. + \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% + \fi + \fi + \ifx\go\pickupwholefraction + % Put the argument back for the \pickupwholefraction call, so + % we'll always have a period there to be parsed. + \def\go{\pickupwholefraction#1}% + \else + \let\go = \setuptable + \fi% + \fi + \go +} + +% multitable-only commands. +% +% @headitem starts a heading row, which we typeset in bold. +% Assignments have to be global since we are inside the implicit group +% of an alignment entry. Note that \everycr resets \everytab. +\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}% +% +% A \tab used to include \hskip1sp. But then the space in a template +% line is not enough. That is bad. So let's go back to just `&' until +% we encounter the problem it was intended to solve again. +% --karl, nathan@acm.org, 20apr99. +\def\tab{\checkenv\multitable &\the\everytab}% + +% @multitable ... @end multitable definitions: +% +\newtoks\everytab % insert after every tab. +% +\envdef\multitable{% + \vskip\parskip + \startsavinginserts + % + % @item within a multitable starts a normal row. + % We use \def instead of \let so that if one of the multitable entries + % contains an @itemize, we don't choke on the \item (seen as \crcr aka + % \endtemplate) expanding \doitemize. + \def\item{\crcr}% + % + \tolerance=9500 + \hbadness=9500 + \setmultitablespacing + \parskip=\multitableparskip + \parindent=\multitableparindent + \overfullrule=0pt + \global\colcount=0 + % + \everycr = {% + \noalign{% + \global\everytab={}% + \global\colcount=0 % Reset the column counter. + % Check for saved footnotes, etc. + \checkinserts + % Keeps underfull box messages off when table breaks over pages. + %\filbreak + % Maybe so, but it also creates really weird page breaks when the + % table breaks over pages. Wouldn't \vfil be better? Wait until the + % problem manifests itself, so it can be fixed for real --karl. + }% + }% + % + \parsearg\domultitable +} +\def\domultitable#1{% + % To parse everything between @multitable and @item: + \setuptable#1 \endsetuptable + % + % This preamble sets up a generic column definition, which will + % be used as many times as user calls for columns. + % \vtop will set a single line and will also let text wrap and + % continue for many paragraphs if desired. + \halign\bgroup &% + \global\advance\colcount by 1 + \multistrut + \vtop{% + % Use the current \colcount to find the correct column width: + \hsize=\expandafter\csname col\the\colcount\endcsname + % + % In order to keep entries from bumping into each other + % we will add a \leftskip of \multitablecolspace to all columns after + % the first one. + % + % If a template has been used, we will add \multitablecolspace + % to the width of each template entry. + % + % If the user has set preamble in terms of percent of \hsize we will + % use that dimension as the width of the column, and the \leftskip + % will keep entries from bumping into each other. Table will start at + % left margin and final column will justify at right margin. + % + % Make sure we don't inherit \rightskip from the outer environment. + \rightskip=0pt + \ifnum\colcount=1 + % The first column will be indented with the surrounding text. + \advance\hsize by\leftskip + \else + \ifsetpercent \else + % If user has not set preamble in terms of percent of \hsize + % we will advance \hsize by \multitablecolspace. + \advance\hsize by \multitablecolspace + \fi + % In either case we will make \leftskip=\multitablecolspace: + \leftskip=\multitablecolspace + \fi + % Ignoring space at the beginning and end avoids an occasional spurious + % blank line, when TeX decides to break the line at the space before the + % box from the multistrut, so the strut ends up on a line by itself. + % For example: + % @multitable @columnfractions .11 .89 + % @item @code{#} + % @tab Legal holiday which is valid in major parts of the whole country. + % Is automatically provided with highlighting sequences respectively + % marking characters. + \noindent\ignorespaces##\unskip\multistrut + }\cr +} +\def\Emultitable{% + \crcr + \egroup % end the \halign + \global\setpercentfalse +} + +\def\setmultitablespacing{% + \def\multistrut{\strut}% just use the standard line spacing + % + % Compute \multitablelinespace (if not defined by user) for use in + % \multitableparskip calculation. We used define \multistrut based on + % this, but (ironically) that caused the spacing to be off. + % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. +\ifdim\multitablelinespace=0pt +\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip +\global\advance\multitablelinespace by-\ht0 +\fi +%% Test to see if parskip is larger than space between lines of +%% table. If not, do nothing. +%% If so, set to same dimension as multitablelinespace. +\ifdim\multitableparskip>\multitablelinespace +\global\multitableparskip=\multitablelinespace +\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller + %% than skip between lines in the table. +\fi% +\ifdim\multitableparskip=0pt +\global\multitableparskip=\multitablelinespace +\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller + %% than skip between lines in the table. +\fi} + + +\message{conditionals,} + +% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, +% @ifnotxml always succeed. They currently do nothing; we don't +% attempt to check whether the conditionals are properly nested. But we +% have to remember that they are conditionals, so that @end doesn't +% attempt to close an environment group. +% +\def\makecond#1{% + \expandafter\let\csname #1\endcsname = \relax + \expandafter\let\csname iscond.#1\endcsname = 1 +} +\makecond{iftex} +\makecond{ifnotdocbook} +\makecond{ifnothtml} +\makecond{ifnotinfo} +\makecond{ifnotplaintext} +\makecond{ifnotxml} + +% Ignore @ignore, @ifhtml, @ifinfo, and the like. +% +\def\direntry{\doignore{direntry}} +\def\documentdescription{\doignore{documentdescription}} +\def\docbook{\doignore{docbook}} +\def\html{\doignore{html}} +\def\ifdocbook{\doignore{ifdocbook}} +\def\ifhtml{\doignore{ifhtml}} +\def\ifinfo{\doignore{ifinfo}} +\def\ifnottex{\doignore{ifnottex}} +\def\ifplaintext{\doignore{ifplaintext}} +\def\ifxml{\doignore{ifxml}} +\def\ignore{\doignore{ignore}} +\def\menu{\doignore{menu}} +\def\xml{\doignore{xml}} + +% Ignore text until a line `@end #1', keeping track of nested conditionals. +% +% A count to remember the depth of nesting. +\newcount\doignorecount + +\def\doignore#1{\begingroup + % Scan in ``verbatim'' mode: + \obeylines + \catcode`\@ = \other + \catcode`\{ = \other + \catcode`\} = \other + % + % Make sure that spaces turn into tokens that match what \doignoretext wants. + \spaceisspace + % + % Count number of #1's that we've seen. + \doignorecount = 0 + % + % Swallow text until we reach the matching `@end #1'. + \dodoignore{#1}% +} + +{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. + \obeylines % + % + \gdef\dodoignore#1{% + % #1 contains the command name as a string, e.g., `ifinfo'. + % + % Define a command to find the next `@end #1'. + \long\def\doignoretext##1^^M@end #1{% + \doignoretextyyy##1^^M@#1\_STOP_}% + % + % And this command to find another #1 command, at the beginning of a + % line. (Otherwise, we would consider a line `@c @ifset', for + % example, to count as an @ifset for nesting.) + \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% + % + % And now expand that command. + \doignoretext ^^M% + }% +} + +\def\doignoreyyy#1{% + \def\temp{#1}% + \ifx\temp\empty % Nothing found. + \let\next\doignoretextzzz + \else % Found a nested condition, ... + \advance\doignorecount by 1 + \let\next\doignoretextyyy % ..., look for another. + % If we're here, #1 ends with ^^M\ifinfo (for example). + \fi + \next #1% the token \_STOP_ is present just after this macro. +} + +% We have to swallow the remaining "\_STOP_". +% +\def\doignoretextzzz#1{% + \ifnum\doignorecount = 0 % We have just found the outermost @end. + \let\next\enddoignore + \else % Still inside a nested condition. + \advance\doignorecount by -1 + \let\next\doignoretext % Look for the next @end. + \fi + \next +} + +% Finish off ignored text. +{ \obeylines% + % Ignore anything after the last `@end #1'; this matters in verbatim + % environments, where otherwise the newline after an ignored conditional + % would result in a blank line in the output. + \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% +} + + +% @set VAR sets the variable VAR to an empty value. +% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. +% +% Since we want to separate VAR from REST-OF-LINE (which might be +% empty), we can't just use \parsearg; we have to insert a space of our +% own to delimit the rest of the line, and then take it out again if we +% didn't need it. +% We rely on the fact that \parsearg sets \catcode`\ =10. +% +\parseargdef\set{\setyyy#1 \endsetyyy} +\def\setyyy#1 #2\endsetyyy{% + {% + \makevalueexpandable + \def\temp{#2}% + \edef\next{\gdef\makecsname{SET#1}}% + \ifx\temp\empty + \next{}% + \else + \setzzz#2\endsetzzz + \fi + }% +} +% Remove the trailing space \setxxx inserted. +\def\setzzz#1 \endsetzzz{\next{#1}} + +% @clear VAR clears (i.e., unsets) the variable VAR. +% +\parseargdef\clear{% + {% + \makevalueexpandable + \global\expandafter\let\csname SET#1\endcsname=\relax + }% +} + +% @value{foo} gets the text saved in variable foo. +\def\value{\begingroup\makevalueexpandable\valuexxx} +\def\valuexxx#1{\expandablevalue{#1}\endgroup} +{ + \catcode`\- = \active \catcode`\_ = \active + % + \gdef\makevalueexpandable{% + \let\value = \expandablevalue + % We don't want these characters active, ... + \catcode`\-=\other \catcode`\_=\other + % ..., but we might end up with active ones in the argument if + % we're called from @code, as @code{@value{foo-bar_}}, though. + % So \let them to their normal equivalents. + \let-\realdash \let_\normalunderscore + } +} + +% We have this subroutine so that we can handle at least some @value's +% properly in indexes (we call \makevalueexpandable in \indexdummies). +% The command has to be fully expandable (if the variable is set), since +% the result winds up in the index file. This means that if the +% variable's value contains other Texinfo commands, it's almost certain +% it will fail (although perhaps we could fix that with sufficient work +% to do a one-level expansion on the result, instead of complete). +% +\def\expandablevalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + {[No value for ``#1'']}% + \message{Variable `#1', used in @value, is not set.}% + \else + \csname SET#1\endcsname + \fi +} + +% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined +% with @set. +% +% To get special treatment of `@end ifset,' call \makeond and the redefine. +% +\makecond{ifset} +\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} +\def\doifset#1#2{% + {% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname SET#2\endcsname\relax + #1% If not set, redefine \next. + \fi + \expandafter + }\next +} +\def\ifsetfail{\doignore{ifset}} + +% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been +% defined with @set, or has been undefined with @clear. +% +% The `\else' inside the `\doifset' parameter is a trick to reuse the +% above code: if the variable is not set, do nothing, if it is set, +% then redefine \next to \ifclearfail. +% +\makecond{ifclear} +\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} +\def\ifclearfail{\doignore{ifclear}} + +% @dircategory CATEGORY -- specify a category of the dir file +% which this file should belong to. Ignore this in TeX. +\let\dircategory=\comment + +% @defininfoenclose. +\let\definfoenclose=\comment + + +\message{indexing,} +% Index generation facilities + +% Define \newwrite to be identical to plain tex's \newwrite +% except not \outer, so it can be used within macros and \if's. +\edef\newwrite{\makecsname{ptexnewwrite}} + +% \newindex {foo} defines an index named foo. +% It automatically defines \fooindex such that +% \fooindex ...rest of line... puts an entry in the index foo. +% It also defines \fooindfile to be the number of the output channel for +% the file that accumulates this index. The file's extension is foo. +% The name of an index should be no more than 2 characters long +% for the sake of vms. +% +\def\newindex#1{% + \iflinks + \expandafter\newwrite \csname#1indfile\endcsname + \openout \csname#1indfile\endcsname \jobname.#1 % Open the file + \fi + \expandafter\xdef\csname#1index\endcsname{% % Define @#1index + \noexpand\doindex{#1}} +} + +% @defindex foo == \newindex{foo} +% +\def\defindex{\parsearg\newindex} + +% Define @defcodeindex, like @defindex except put all entries in @code. +% +\def\defcodeindex{\parsearg\newcodeindex} +% +\def\newcodeindex#1{% + \iflinks + \expandafter\newwrite \csname#1indfile\endcsname + \openout \csname#1indfile\endcsname \jobname.#1 + \fi + \expandafter\xdef\csname#1index\endcsname{% + \noexpand\docodeindex{#1}}% +} + + +% @synindex foo bar makes index foo feed into index bar. +% Do this instead of @defindex foo if you don't want it as a separate index. +% +% @syncodeindex foo bar similar, but put all entries made for index foo +% inside @code. +% +\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} +\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} + +% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), +% #3 the target index (bar). +\def\dosynindex#1#2#3{% + % Only do \closeout if we haven't already done it, else we'll end up + % closing the target index. + \expandafter \ifx\csname donesynindex#2\endcsname \undefined + % The \closeout helps reduce unnecessary open files; the limit on the + % Acorn RISC OS is a mere 16 files. + \expandafter\closeout\csname#2indfile\endcsname + \expandafter\let\csname\donesynindex#2\endcsname = 1 + \fi + % redefine \fooindfile: + \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname + \expandafter\let\csname#2indfile\endcsname=\temp + % redefine \fooindex: + \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% +} + +% Define \doindex, the driver for all \fooindex macros. +% Argument #1 is generated by the calling \fooindex macro, +% and it is "foo", the name of the index. + +% \doindex just uses \parsearg; it calls \doind for the actual work. +% This is because \doind is more useful to call from other macros. + +% There is also \dosubind {index}{topic}{subtopic} +% which makes an entry in a two-level index such as the operation index. + +\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} +\def\singleindexer #1{\doind{\indexname}{#1}} + +% like the previous two, but they put @code around the argument. +\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} +\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} + +% Take care of Texinfo commands that can appear in an index entry. +% Since there are some commands we want to expand, and others we don't, +% we have to laboriously prevent expansion for those that we don't. +% +\def\indexdummies{% + \escapechar = `\\ % use backslash in output files. + \def\@{@}% change to @@ when we switch to @ as escape char in index files. + \def\ {\realbackslash\space }% + % + % Need these in case \tex is in effect and \{ is a \delimiter again. + % But can't use \lbracecmd and \rbracecmd because texindex assumes + % braces and backslashes are used only as delimiters. + \let\{ = \mylbrace + \let\} = \myrbrace + % + % I don't entirely understand this, but when an index entry is + % generated from a macro call, the \endinput which \scanmacro inserts + % causes processing to be prematurely terminated. This is, + % apparently, because \indexsorttmp is fully expanded, and \endinput + % is an expandable command. The redefinition below makes \endinput + % disappear altogether for that purpose -- although logging shows that + % processing continues to some further point. On the other hand, it + % seems \endinput does not hurt in the printed index arg, since that + % is still getting written without apparent harm. + % + % Sample source (mac-idx3.tex, reported by Graham Percival to + % help-texinfo, 22may06): + % @macro funindex {WORD} + % @findex xyz + % @end macro + % ... + % @funindex commtest + % + % The above is not enough to reproduce the bug, but it gives the flavor. + % + % Sample whatsit resulting: + % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} + % + % So: + \let\endinput = \empty + % + % Do the redefinitions. + \commondummies +} + +% For the aux and toc files, @ is the escape character. So we want to +% redefine everything using @ as the escape character (instead of +% \realbackslash, still used for index files). When everything uses @, +% this will be simpler. +% +\def\atdummies{% + \def\@{@@}% + \def\ {@ }% + \let\{ = \lbraceatcmd + \let\} = \rbraceatcmd + % + % Do the redefinitions. + \commondummies + \otherbackslash +} + +% Called from \indexdummies and \atdummies. +% +\def\commondummies{% + % + % \definedummyword defines \#1 as \string\#1\space, thus effectively + % preventing its expansion. This is used only for control% words, + % not control letters, because the \space would be incorrect for + % control characters, but is needed to separate the control word + % from whatever follows. + % + % For control letters, we have \definedummyletter, which omits the + % space. + % + % These can be used both for control words that take an argument and + % those that do not. If it is followed by {arg} in the input, then + % that will dutifully get written to the index (or wherever). + % + \def\definedummyword ##1{\def##1{\string##1\space}}% + \def\definedummyletter##1{\def##1{\string##1}}% + \let\definedummyaccent\definedummyletter + % + \commondummiesnofonts + % + \definedummyletter\_% + % + % Non-English letters. + \definedummyword\AA + \definedummyword\AE + \definedummyword\L + \definedummyword\OE + \definedummyword\O + \definedummyword\aa + \definedummyword\ae + \definedummyword\l + \definedummyword\oe + \definedummyword\o + \definedummyword\ss + \definedummyword\exclamdown + \definedummyword\questiondown + \definedummyword\ordf + \definedummyword\ordm + % + % Although these internal commands shouldn't show up, sometimes they do. + \definedummyword\bf + \definedummyword\gtr + \definedummyword\hat + \definedummyword\less + \definedummyword\sf + \definedummyword\sl + \definedummyword\tclose + \definedummyword\tt + % + \definedummyword\LaTeX + \definedummyword\TeX + % + % Assorted special characters. + \definedummyword\bullet + \definedummyword\comma + \definedummyword\copyright + \definedummyword\registeredsymbol + \definedummyword\dots + \definedummyword\enddots + \definedummyword\equiv + \definedummyword\error + \definedummyword\euro + \definedummyword\expansion + \definedummyword\minus + \definedummyword\pounds + \definedummyword\point + \definedummyword\print + \definedummyword\result + \definedummyword\textdegree + % + % We want to disable all macros so that they are not expanded by \write. + \macrolist + % + \normalturnoffactive + % + % Handle some cases of @value -- where it does not contain any + % (non-fully-expandable) commands. + \makevalueexpandable +} + +% \commondummiesnofonts: common to \commondummies and \indexnofonts. +% +\def\commondummiesnofonts{% + % Control letters and accents. + \definedummyletter\!% + \definedummyaccent\"% + \definedummyaccent\'% + \definedummyletter\*% + \definedummyaccent\,% + \definedummyletter\.% + \definedummyletter\/% + \definedummyletter\:% + \definedummyaccent\=% + \definedummyletter\?% + \definedummyaccent\^% + \definedummyaccent\`% + \definedummyaccent\~% + \definedummyword\u + \definedummyword\v + \definedummyword\H + \definedummyword\dotaccent + \definedummyword\ringaccent + \definedummyword\tieaccent + \definedummyword\ubaraccent + \definedummyword\udotaccent + \definedummyword\dotless + % + % Texinfo font commands. + \definedummyword\b + \definedummyword\i + \definedummyword\r + \definedummyword\sc + \definedummyword\t + % + % Commands that take arguments. + \definedummyword\acronym + \definedummyword\cite + \definedummyword\code + \definedummyword\command + \definedummyword\dfn + \definedummyword\emph + \definedummyword\env + \definedummyword\file + \definedummyword\kbd + \definedummyword\key + \definedummyword\math + \definedummyword\option + \definedummyword\pxref + \definedummyword\ref + \definedummyword\samp + \definedummyword\strong + \definedummyword\tie + \definedummyword\uref + \definedummyword\url + \definedummyword\var + \definedummyword\verb + \definedummyword\w + \definedummyword\xref +} + +% \indexnofonts is used when outputting the strings to sort the index +% by, and when constructing control sequence names. It eliminates all +% control sequences and just writes whatever the best ASCII sort string +% would be for a given command (usually its argument). +% +\def\indexnofonts{% + % Accent commands should become @asis. + \def\definedummyaccent##1{\let##1\asis}% + % We can just ignore other control letters. + \def\definedummyletter##1{\let##1\empty}% + % Hopefully, all control words can become @asis. + \let\definedummyword\definedummyaccent + % + \commondummiesnofonts + % + % Don't no-op \tt, since it isn't a user-level command + % and is used in the definitions of the active chars like <, >, |, etc. + % Likewise with the other plain tex font commands. + %\let\tt=\asis + % + \def\ { }% + \def\@{@}% + % how to handle braces? + \def\_{\normalunderscore}% + % + % Non-English letters. + \def\AA{AA}% + \def\AE{AE}% + \def\L{L}% + \def\OE{OE}% + \def\O{O}% + \def\aa{aa}% + \def\ae{ae}% + \def\l{l}% + \def\oe{oe}% + \def\o{o}% + \def\ss{ss}% + \def\exclamdown{!}% + \def\questiondown{?}% + \def\ordf{a}% + \def\ordm{o}% + % + \def\LaTeX{LaTeX}% + \def\TeX{TeX}% + % + % Assorted special characters. + % (The following {} will end up in the sort string, but that's ok.) + \def\bullet{bullet}% + \def\comma{,}% + \def\copyright{copyright}% + \def\registeredsymbol{R}% + \def\dots{...}% + \def\enddots{...}% + \def\equiv{==}% + \def\error{error}% + \def\euro{euro}% + \def\expansion{==>}% + \def\minus{-}% + \def\pounds{pounds}% + \def\point{.}% + \def\print{-|}% + \def\result{=>}% + \def\textdegree{degrees}% + % + % We need to get rid of all macros, leaving only the arguments (if present). + % Of course this is not nearly correct, but it is the best we can do for now. + % makeinfo does not expand macros in the argument to @deffn, which ends up + % writing an index entry, and texindex isn't prepared for an index sort entry + % that starts with \. + % + % Since macro invocations are followed by braces, we can just redefine them + % to take a single TeX argument. The case of a macro invocation that + % goes to end-of-line is not handled. + % + \macrolist +} + +\let\indexbackslash=0 %overridden during \printindex. +\let\SETmarginindex=\relax % put index entries in margin (undocumented)? + +% Most index entries go through here, but \dosubind is the general case. +% #1 is the index name, #2 is the entry text. +\def\doind#1#2{\dosubind{#1}{#2}{}} + +% Workhorse for all \fooindexes. +% #1 is name of index, #2 is stuff to put there, #3 is subentry -- +% empty if called from \doind, as we usually are (the main exception +% is with most defuns, which call us directly). +% +\def\dosubind#1#2#3{% + \iflinks + {% + % Store the main index entry text (including the third arg). + \toks0 = {#2}% + % If third arg is present, precede it with a space. + \def\thirdarg{#3}% + \ifx\thirdarg\empty \else + \toks0 = \expandafter{\the\toks0 \space #3}% + \fi + % + \edef\writeto{\csname#1indfile\endcsname}% + % + \ifvmode + \dosubindsanitize + \else + \dosubindwrite + \fi + }% + \fi +} + +% Write the entry in \toks0 to the index file: +% +\def\dosubindwrite{% + % Put the index entry in the margin if desired. + \ifx\SETmarginindex\relax\else + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% + \fi + % + % Remember, we are within a group. + \indexdummies % Must do this here, since \bf, etc expand at this stage + \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now + % so it will be output as is; and it will print as backslash. + % + % Process the index entry with all font commands turned off, to + % get the string to sort by. + {\indexnofonts + \edef\temp{\the\toks0}% need full expansion + \xdef\indexsorttmp{\temp}% + }% + % + % Set up the complete index entry, with both the sort key and + % the original text, including any font commands. We write + % three arguments to \entry to the .?? file (four in the + % subentry case), texindex reduces to two when writing the .??s + % sorted result. + \edef\temp{% + \write\writeto{% + \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}% + }% + \temp +} + +% Take care of unwanted page breaks: +% +% If a skip is the last thing on the list now, preserve it +% by backing up by \lastskip, doing the \write, then inserting +% the skip again. Otherwise, the whatsit generated by the +% \write will make \lastskip zero. The result is that sequences +% like this: +% @end defun +% @tindex whatever +% @defun ... +% will have extra space inserted, because the \medbreak in the +% start of the @defun won't see the skip inserted by the @end of +% the previous defun. +% +% But don't do any of this if we're not in vertical mode. We +% don't want to do a \vskip and prematurely end a paragraph. +% +% Avoid page breaks due to these extra skips, too. +% +% But wait, there is a catch there: +% We'll have to check whether \lastskip is zero skip. \ifdim is not +% sufficient for this purpose, as it ignores stretch and shrink parts +% of the skip. The only way seems to be to check the textual +% representation of the skip. +% +% The following is almost like \def\zeroskipmacro{0.0pt} except that +% the ``p'' and ``t'' characters have catcode \other, not 11 (letter). +% +\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} +% +% ..., ready, GO: +% +\def\dosubindsanitize{% + % \lastskip and \lastpenalty cannot both be nonzero simultaneously. + \skip0 = \lastskip + \edef\lastskipmacro{\the\lastskip}% + \count255 = \lastpenalty + % + % If \lastskip is nonzero, that means the last item was a + % skip. And since a skip is discardable, that means this + % -\skip0 glue we're inserting is preceded by a + % non-discardable item, therefore it is not a potential + % breakpoint, therefore no \nobreak needed. + \ifx\lastskipmacro\zeroskipmacro + \else + \vskip-\skip0 + \fi + % + \dosubindwrite + % + \ifx\lastskipmacro\zeroskipmacro + % If \lastskip was zero, perhaps the last item was a penalty, and + % perhaps it was >=10000, e.g., a \nobreak. In that case, we want + % to re-insert the same penalty (values >10000 are used for various + % signals); since we just inserted a non-discardable item, any + % following glue (such as a \parskip) would be a breakpoint. For example: + % + % @deffn deffn-whatever + % @vindex index-whatever + % Description. + % would allow a break between the index-whatever whatsit + % and the "Description." paragraph. + \ifnum\count255>9999 \penalty\count255 \fi + \else + % On the other hand, if we had a nonzero \lastskip, + % this make-up glue would be preceded by a non-discardable item + % (the whatsit from the \write), so we must insert a \nobreak. + \nobreak\vskip\skip0 + \fi +} + +% The index entry written in the file actually looks like +% \entry {sortstring}{page}{topic} +% or +% \entry {sortstring}{page}{topic}{subtopic} +% The texindex program reads in these files and writes files +% containing these kinds of lines: +% \initial {c} +% before the first topic whose initial is c +% \entry {topic}{pagelist} +% for a topic that is used without subtopics +% \primary {topic} +% for the beginning of a topic that is used with subtopics +% \secondary {subtopic}{pagelist} +% for each subtopic. + +% Define the user-accessible indexing commands +% @findex, @vindex, @kindex, @cindex. + +\def\findex {\fnindex} +\def\kindex {\kyindex} +\def\cindex {\cpindex} +\def\vindex {\vrindex} +\def\tindex {\tpindex} +\def\pindex {\pgindex} + +\def\cindexsub {\begingroup\obeylines\cindexsub} +{\obeylines % +\gdef\cindexsub "#1" #2^^M{\endgroup % +\dosubind{cp}{#2}{#1}}} + +% Define the macros used in formatting output of the sorted index material. + +% @printindex causes a particular index (the ??s file) to get printed. +% It does not print any chapter heading (usually an @unnumbered). +% +\parseargdef\printindex{\begingroup + \dobreak \chapheadingskip{10000}% + % + \smallfonts \rm + \tolerance = 9500 + \everypar = {}% don't want the \kern\-parindent from indentation suppression. + % + % See if the index file exists and is nonempty. + % Change catcode of @ here so that if the index file contains + % \initial {@} + % as its first line, TeX doesn't complain about mismatched braces + % (because it thinks @} is a control sequence). + \catcode`\@ = 11 + \openin 1 \jobname.#1s + \ifeof 1 + % \enddoublecolumns gets confused if there is no text in the index, + % and it loses the chapter title and the aux file entries for the + % index. The easiest way to prevent this problem is to make sure + % there is some text. + \putwordIndexNonexistent + \else + % + % If the index file exists but is empty, then \openin leaves \ifeof + % false. We have to make TeX try to read something from the file, so + % it can discover if there is anything in it. + \read 1 to \temp + \ifeof 1 + \putwordIndexIsEmpty + \else + % Index files are almost Texinfo source, but we use \ as the escape + % character. It would be better to use @, but that's too big a change + % to make right now. + \def\indexbackslash{\backslashcurfont}% + \catcode`\\ = 0 + \escapechar = `\\ + \begindoublecolumns + \input \jobname.#1s + \enddoublecolumns + \fi + \fi + \closein 1 +\endgroup} + +% These macros are used by the sorted index file itself. +% Change them to control the appearance of the index. + +\def\initial#1{{% + % Some minor font changes for the special characters. + \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt + % + % Remove any glue we may have, we'll be inserting our own. + \removelastskip + % + % We like breaks before the index initials, so insert a bonus. + \nobreak + \vskip 0pt plus 3\baselineskip + \penalty 0 + \vskip 0pt plus -3\baselineskip + % + % Typeset the initial. Making this add up to a whole number of + % baselineskips increases the chance of the dots lining up from column + % to column. It still won't often be perfect, because of the stretch + % we need before each entry, but it's better. + % + % No shrink because it confuses \balancecolumns. + \vskip 1.67\baselineskip plus .5\baselineskip + \leftline{\secbf #1}% + % Do our best not to break after the initial. + \nobreak + \vskip .33\baselineskip plus .1\baselineskip +}} + +% \entry typesets a paragraph consisting of the text (#1), dot leaders, and +% then page number (#2) flushed to the right margin. It is used for index +% and table of contents entries. The paragraph is indented by \leftskip. +% +% A straightforward implementation would start like this: +% \def\entry#1#2{... +% But this frozes the catcodes in the argument, and can cause problems to +% @code, which sets - active. This problem was fixed by a kludge--- +% ``-'' was active throughout whole index, but this isn't really right. +% +% The right solution is to prevent \entry from swallowing the whole text. +% --kasal, 21nov03 +\def\entry{% + \begingroup + % + % Start a new paragraph if necessary, so our assignments below can't + % affect previous text. + \par + % + % Do not fill out the last line with white space. + \parfillskip = 0in + % + % No extra space above this paragraph. + \parskip = 0in + % + % Do not prefer a separate line ending with a hyphen to fewer lines. + \finalhyphendemerits = 0 + % + % \hangindent is only relevant when the entry text and page number + % don't both fit on one line. In that case, bob suggests starting the + % dots pretty far over on the line. Unfortunately, a large + % indentation looks wrong when the entry text itself is broken across + % lines. So we use a small indentation and put up with long leaders. + % + % \hangafter is reset to 1 (which is the value we want) at the start + % of each paragraph, so we need not do anything with that. + \hangindent = 2em + % + % When the entry text needs to be broken, just fill out the first line + % with blank space. + \rightskip = 0pt plus1fil + % + % A bit of stretch before each entry for the benefit of balancing + % columns. + \vskip 0pt plus1pt + % + % Swallow the left brace of the text (first parameter): + \afterassignment\doentry + \let\temp = +} +\def\doentry{% + \bgroup % Instead of the swallowed brace. + \noindent + \aftergroup\finishentry + % And now comes the text of the entry. +} +\def\finishentry#1{% + % #1 is the page number. + % + % The following is kludged to not output a line of dots in the index if + % there are no page numbers. The next person who breaks this will be + % cursed by a Unix daemon. + \def\tempa{{\rm }}% + \def\tempb{#1}% + \edef\tempc{\tempa}% + \edef\tempd{\tempb}% + \ifx\tempc\tempd + \ % + \else + % + % If we must, put the page number on a line of its own, and fill out + % this line with blank space. (The \hfil is overwhelmed with the + % fill leaders glue in \indexdotfill if the page number does fit.) + \hfil\penalty50 + \null\nobreak\indexdotfill % Have leaders before the page number. + % + % The `\ ' here is removed by the implicit \unskip that TeX does as + % part of (the primitive) \par. Without it, a spurious underfull + % \hbox ensues. + \ifpdf + \pdfgettoks#1.% + \ \the\toksA + \else + \ #1% + \fi + \fi + \par + \endgroup +} + +% Like plain.tex's \dotfill, except uses up at least 1 em. +\def\indexdotfill{\cleaders + \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill} + +\def\primary #1{\line{#1\hfil}} + +\newskip\secondaryindent \secondaryindent=0.5cm +\def\secondary#1#2{{% + \parfillskip=0in + \parskip=0in + \hangindent=1in + \hangafter=1 + \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill + \ifpdf + \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. + \else + #2 + \fi + \par +}} + +% Define two-column mode, which we use to typeset indexes. +% Adapted from the TeXbook, page 416, which is to say, +% the manmac.tex format used to print the TeXbook itself. +\catcode`\@=11 + +\newbox\partialpage +\newdimen\doublecolumnhsize + +\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns + % Grab any single-column material above us. + \output = {% + % + % Here is a possibility not foreseen in manmac: if we accumulate a + % whole lot of material, we might end up calling this \output + % routine twice in a row (see the doublecol-lose test, which is + % essentially a couple of indexes with @setchapternewpage off). In + % that case we just ship out what is in \partialpage with the normal + % output routine. Generally, \partialpage will be empty when this + % runs and this will be a no-op. See the indexspread.tex test case. + \ifvoid\partialpage \else + \onepageout{\pagecontents\partialpage}% + \fi + % + \global\setbox\partialpage = \vbox{% + % Unvbox the main output page. + \unvbox\PAGE + \kern-\topskip \kern\baselineskip + }% + }% + \eject % run that output routine to set \partialpage + % + % Use the double-column output routine for subsequent pages. + \output = {\doublecolumnout}% + % + % Change the page size parameters. We could do this once outside this + % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 + % format, but then we repeat the same computation. Repeating a couple + % of assignments once per index is clearly meaningless for the + % execution time, so we may as well do it in one place. + % + % First we halve the line length, less a little for the gutter between + % the columns. We compute the gutter based on the line length, so it + % changes automatically with the paper format. The magic constant + % below is chosen so that the gutter has the same value (well, +-<1pt) + % as it did when we hard-coded it. + % + % We put the result in a separate register, \doublecolumhsize, so we + % can restore it in \pagesofar, after \hsize itself has (potentially) + % been clobbered. + % + \doublecolumnhsize = \hsize + \advance\doublecolumnhsize by -.04154\hsize + \divide\doublecolumnhsize by 2 + \hsize = \doublecolumnhsize + % + % Double the \vsize as well. (We don't need a separate register here, + % since nobody clobbers \vsize.) + \vsize = 2\vsize +} + +% The double-column output routine for all double-column pages except +% the last. +% +\def\doublecolumnout{% + \splittopskip=\topskip \splitmaxdepth=\maxdepth + % Get the available space for the double columns -- the normal + % (undoubled) page height minus any material left over from the + % previous page. + \dimen@ = \vsize + \divide\dimen@ by 2 + \advance\dimen@ by -\ht\partialpage + % + % box0 will be the left-hand column, box2 the right. + \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ + \onepageout\pagesofar + \unvbox255 + \penalty\outputpenalty +} +% +% Re-output the contents of the output page -- any previous material, +% followed by the two boxes we just split, in box0 and box2. +\def\pagesofar{% + \unvbox\partialpage + % + \hsize = \doublecolumnhsize + \wd0=\hsize \wd2=\hsize + \hbox to\pagewidth{\box0\hfil\box2}% +} +% +% All done with double columns. +\def\enddoublecolumns{% + \output = {% + % Split the last of the double-column material. Leave it on the + % current page, no automatic page break. + \balancecolumns + % + % If we end up splitting too much material for the current page, + % though, there will be another page break right after this \output + % invocation ends. Having called \balancecolumns once, we do not + % want to call it again. Therefore, reset \output to its normal + % definition right away. (We hope \balancecolumns will never be + % called on to balance too much material, but if it is, this makes + % the output somewhat more palatable.) + \global\output = {\onepageout{\pagecontents\PAGE}}% + }% + \eject + \endgroup % started in \begindoublecolumns + % + % \pagegoal was set to the doubled \vsize above, since we restarted + % the current page. We're now back to normal single-column + % typesetting, so reset \pagegoal to the normal \vsize (after the + % \endgroup where \vsize got restored). + \pagegoal = \vsize +} +% +% Called at the end of the double column material. +\def\balancecolumns{% + \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. + \dimen@ = \ht0 + \advance\dimen@ by \topskip + \advance\dimen@ by-\baselineskip + \divide\dimen@ by 2 % target to split to + %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% + \splittopskip = \topskip + % Loop until we get a decent breakpoint. + {% + \vbadness = 10000 + \loop + \global\setbox3 = \copy0 + \global\setbox1 = \vsplit3 to \dimen@ + \ifdim\ht3>\dimen@ + \global\advance\dimen@ by 1pt + \repeat + }% + %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% + \setbox0=\vbox to\dimen@{\unvbox1}% + \setbox2=\vbox to\dimen@{\unvbox3}% + % + \pagesofar +} +\catcode`\@ = \other + + +\message{sectioning,} +% Chapters, sections, etc. + +% \unnumberedno is an oxymoron, of course. But we count the unnumbered +% sections so that we can refer to them unambiguously in the pdf +% outlines by their "section number". We avoid collisions with chapter +% numbers by starting them at 10000. (If a document ever has 10000 +% chapters, we're in trouble anyway, I'm sure.) +\newcount\unnumberedno \unnumberedno = 10000 +\newcount\chapno +\newcount\secno \secno=0 +\newcount\subsecno \subsecno=0 +\newcount\subsubsecno \subsubsecno=0 + +% This counter is funny since it counts through charcodes of letters A, B, ... +\newcount\appendixno \appendixno = `\@ +% +% \def\appendixletter{\char\the\appendixno} +% We do the following ugly conditional instead of the above simple +% construct for the sake of pdftex, which needs the actual +% letter in the expansion, not just typeset. +% +\def\appendixletter{% + \ifnum\appendixno=`A A% + \else\ifnum\appendixno=`B B% + \else\ifnum\appendixno=`C C% + \else\ifnum\appendixno=`D D% + \else\ifnum\appendixno=`E E% + \else\ifnum\appendixno=`F F% + \else\ifnum\appendixno=`G G% + \else\ifnum\appendixno=`H H% + \else\ifnum\appendixno=`I I% + \else\ifnum\appendixno=`J J% + \else\ifnum\appendixno=`K K% + \else\ifnum\appendixno=`L L% + \else\ifnum\appendixno=`M M% + \else\ifnum\appendixno=`N N% + \else\ifnum\appendixno=`O O% + \else\ifnum\appendixno=`P P% + \else\ifnum\appendixno=`Q Q% + \else\ifnum\appendixno=`R R% + \else\ifnum\appendixno=`S S% + \else\ifnum\appendixno=`T T% + \else\ifnum\appendixno=`U U% + \else\ifnum\appendixno=`V V% + \else\ifnum\appendixno=`W W% + \else\ifnum\appendixno=`X X% + \else\ifnum\appendixno=`Y Y% + \else\ifnum\appendixno=`Z Z% + % The \the is necessary, despite appearances, because \appendixletter is + % expanded while writing the .toc file. \char\appendixno is not + % expandable, thus it is written literally, thus all appendixes come out + % with the same letter (or @) in the toc without it. + \else\char\the\appendixno + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} + +% Each @chapter defines this as the name of the chapter. +% page headings and footings can use it. @section does likewise. +% However, they are not reliable, because we don't use marks. +\def\thischapter{} +\def\thissection{} + +\newcount\absseclevel % used to calculate proper heading level +\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count + +% @raisesections: treat @section as chapter, @subsection as section, etc. +\def\raisesections{\global\advance\secbase by -1} +\let\up=\raisesections % original BFox name + +% @lowersections: treat @chapter as section, @section as subsection, etc. +\def\lowersections{\global\advance\secbase by 1} +\let\down=\lowersections % original BFox name + +% we only have subsub. +\chardef\maxseclevel = 3 +% +% A numbered section within an unnumbered changes to unnumbered too. +% To achive this, remember the "biggest" unnum. sec. we are currently in: +\chardef\unmlevel = \maxseclevel +% +% Trace whether the current chapter is an appendix or not: +% \chapheadtype is "N" or "A", unnumbered chapters are ignored. +\def\chapheadtype{N} + +% Choose a heading macro +% #1 is heading type +% #2 is heading level +% #3 is text for heading +\def\genhead#1#2#3{% + % Compute the abs. sec. level: + \absseclevel=#2 + \advance\absseclevel by \secbase + % Make sure \absseclevel doesn't fall outside the range: + \ifnum \absseclevel < 0 + \absseclevel = 0 + \else + \ifnum \absseclevel > 3 + \absseclevel = 3 + \fi + \fi + % The heading type: + \def\headtype{#1}% + \if \headtype U% + \ifnum \absseclevel < \unmlevel + \chardef\unmlevel = \absseclevel + \fi + \else + % Check for appendix sections: + \ifnum \absseclevel = 0 + \edef\chapheadtype{\headtype}% + \else + \if \headtype A\if \chapheadtype N% + \errmessage{@appendix... within a non-appendix chapter}% + \fi\fi + \fi + % Check for numbered within unnumbered: + \ifnum \absseclevel > \unmlevel + \def\headtype{U}% + \else + \chardef\unmlevel = 3 + \fi + \fi + % Now print the heading: + \if \headtype U% + \ifcase\absseclevel + \unnumberedzzz{#3}% + \or \unnumberedseczzz{#3}% + \or \unnumberedsubseczzz{#3}% + \or \unnumberedsubsubseczzz{#3}% + \fi + \else + \if \headtype A% + \ifcase\absseclevel + \appendixzzz{#3}% + \or \appendixsectionzzz{#3}% + \or \appendixsubseczzz{#3}% + \or \appendixsubsubseczzz{#3}% + \fi + \else + \ifcase\absseclevel + \chapterzzz{#3}% + \or \seczzz{#3}% + \or \numberedsubseczzz{#3}% + \or \numberedsubsubseczzz{#3}% + \fi + \fi + \fi + \suppressfirstparagraphindent +} + +% an interface: +\def\numhead{\genhead N} +\def\apphead{\genhead A} +\def\unnmhead{\genhead U} + +% @chapter, @appendix, @unnumbered. Increment top-level counter, reset +% all lower-level sectioning counters to zero. +% +% Also set \chaplevelprefix, which we prepend to @float sequence numbers +% (e.g., figures), q.v. By default (before any chapter), that is empty. +\let\chaplevelprefix = \empty +% +\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz +\def\chapterzzz#1{% + % section resetting is \global in case the chapter is in a group, such + % as an @include file. + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\chapno by 1 + % + % Used for \float. + \gdef\chaplevelprefix{\the\chapno.}% + \resetallfloatnos + % + \message{\putwordChapter\space \the\chapno}% + % + % Write the actual heading. + \chapmacro{#1}{Ynumbered}{\the\chapno}% + % + % So @section and the like are numbered underneath this chapter. + \global\let\section = \numberedsec + \global\let\subsection = \numberedsubsec + \global\let\subsubsection = \numberedsubsubsec +} + +\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz +\def\appendixzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\appendixno by 1 + \gdef\chaplevelprefix{\appendixletter.}% + \resetallfloatnos + % + \def\appendixnum{\putwordAppendix\space \appendixletter}% + \message{\appendixnum}% + % + \chapmacro{#1}{Yappendix}{\appendixletter}% + % + \global\let\section = \appendixsec + \global\let\subsection = \appendixsubsec + \global\let\subsubsection = \appendixsubsubsec +} + +\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz +\def\unnumberedzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\unnumberedno by 1 + % + % Since an unnumbered has no number, no prefix for figures. + \global\let\chaplevelprefix = \empty + \resetallfloatnos + % + % This used to be simply \message{#1}, but TeX fully expands the + % argument to \message. Therefore, if #1 contained @-commands, TeX + % expanded them. For example, in `@unnumbered The @cite{Book}', TeX + % expanded @cite (which turns out to cause errors because \cite is meant + % to be executed, not expanded). + % + % Anyway, we don't want the fully-expanded definition of @cite to appear + % as a result of the \message, we just want `@cite' itself. We use + % \the to achieve this: TeX expands \the only once, + % simply yielding the contents of . (We also do this for + % the toc entries.) + \toks0 = {#1}% + \message{(\the\toks0)}% + % + \chapmacro{#1}{Ynothing}{\the\unnumberedno}% + % + \global\let\section = \unnumberedsec + \global\let\subsection = \unnumberedsubsec + \global\let\subsubsection = \unnumberedsubsubsec +} + +% @centerchap is like @unnumbered, but the heading is centered. +\outer\parseargdef\centerchap{% + % Well, we could do the following in a group, but that would break + % an assumption that \chapmacro is called at the outermost level. + % Thus we are safer this way: --kasal, 24feb04 + \let\centerparametersmaybe = \centerparameters + \unnmhead0{#1}% + \let\centerparametersmaybe = \relax +} + +% @top is like @unnumbered. +\let\top\unnumbered + +% Sections. +\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz +\def\seczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% +} + +\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz +\def\appendixsectionzzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% +} +\let\appendixsec\appendixsection + +\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz +\def\unnumberedseczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% +} + +% Subsections. +\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz +\def\numberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% +} + +\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz +\def\appendixsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno}% +} + +\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz +\def\unnumberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno}% +} + +% Subsubsections. +\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz +\def\numberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynumbered}% + {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz +\def\appendixsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz +\def\unnumberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% These macros control what the section commands do, according +% to what kind of chapter we are in (ordinary, appendix, or unnumbered). +% Define them by default for a numbered chapter. +\let\section = \numberedsec +\let\subsection = \numberedsubsec +\let\subsubsection = \numberedsubsubsec + +% Define @majorheading, @heading and @subheading + +% NOTE on use of \vbox for chapter headings, section headings, and such: +% 1) We use \vbox rather than the earlier \line to permit +% overlong headings to fold. +% 2) \hyphenpenalty is set to 10000 because hyphenation in a +% heading is obnoxious; this forbids it. +% 3) Likewise, headings look best if no \parindent is used, and +% if justification is not attempted. Hence \raggedright. + + +\def\majorheading{% + {\advance\chapheadingskip by 10pt \chapbreak }% + \parsearg\chapheadingzzz +} + +\def\chapheading{\chapbreak \parsearg\chapheadingzzz} +\def\chapheadingzzz#1{% + {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt\raggedright + \rm #1\hfill}}% + \bigskip \par\penalty 200\relax + \suppressfirstparagraphindent +} + +% @heading, @subheading, @subsubheading. +\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} + +% These macros generate a chapter, section, etc. heading only +% (including whitespace, linebreaking, etc. around it), +% given all the information in convenient, parsed form. + +%%% Args are the skip and penalty (usually negative) +\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} + +%%% Define plain chapter starts, and page on/off switching for it +% Parameter controlling skip before chapter headings (if needed) + +\newskip\chapheadingskip + +\def\chapbreak{\dobreak \chapheadingskip {-4000}} +\def\chappager{\par\vfill\supereject} +\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi} + +\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} + +\def\CHAPPAGoff{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chapbreak +\global\let\pagealignmacro=\chappager} + +\def\CHAPPAGon{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chappager +\global\let\pagealignmacro=\chappager +\global\def\HEADINGSon{\HEADINGSsingle}} + +\def\CHAPPAGodd{% +\global\let\contentsalignmacro = \chapoddpage +\global\let\pchapsepmacro=\chapoddpage +\global\let\pagealignmacro=\chapoddpage +\global\def\HEADINGSon{\HEADINGSdouble}} + +\CHAPPAGon + +% Chapter opening. +% +% #1 is the text, #2 is the section type (Ynumbered, Ynothing, +% Yappendix, Yomitfromtoc), #3 the chapter number. +% +% To test against our argument. +\def\Ynothingkeyword{Ynothing} +\def\Yomitfromtockeyword{Yomitfromtoc} +\def\Yappendixkeyword{Yappendix} +% +\def\chapmacro#1#2#3{% + \pchapsepmacro + {% + \chapfonts \rm + % + % Have to define \thissection before calling \donoderef, because the + % xref code eventually uses it. On the other hand, it has to be called + % after \pchapsepmacro, or the headline will change too soon. + \gdef\thissection{#1}% + \gdef\thischaptername{#1}% + % + % Only insert the separating space if we have a chapter/appendix + % number, and don't print the unnumbered ``number''. + \def\temptype{#2}% + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unnchap}% + \gdef\thischapternum{}% + \gdef\thischapter{#1}% + \else\ifx\temptype\Yomitfromtockeyword + \setbox0 = \hbox{}% contents like unnumbered, but no toc entry + \def\toctype{omit}% + \gdef\thischapternum{}% + \gdef\thischapter{}% + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% + \def\toctype{app}% + \xdef\thischapternum{\appendixletter}% + % We don't substitute the actual chapter name into \thischapter + % because we don't want its macros evaluated now. And we don't + % use \thissection because that changes with each section. + % + \xdef\thischapter{\putwordAppendix{} \appendixletter: + \noexpand\thischaptername}% + \else + \setbox0 = \hbox{#3\enspace}% + \def\toctype{numchap}% + \xdef\thischapternum{\the\chapno}% + \xdef\thischapter{\putwordChapter{} \the\chapno: + \noexpand\thischaptername}% + \fi\fi\fi + % + % Write the toc entry for this chapter. Must come before the + % \donoderef, because we include the current node name in the toc + % entry, and \donoderef resets it to empty. + \writetocentry{\toctype}{#1}{#3}% + % + % For pdftex, we have to write out the node definition (aka, make + % the pdfdest) after any page break, but before the actual text has + % been typeset. If the destination for the pdf outline is after the + % text, then jumping from the outline may wind up with the text not + % being visible, for instance under high magnification. + \donoderef{#2}% + % + % Typeset the actual heading. + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \hangindent=\wd0 \centerparametersmaybe + \unhbox0 #1\par}% + }% + \nobreak\bigskip % no page break after a chapter title + \nobreak +} + +% @centerchap -- centered and unnumbered. +\let\centerparametersmaybe = \relax +\def\centerparameters{% + \advance\rightskip by 3\rightskip + \leftskip = \rightskip + \parfillskip = 0pt +} + + +% I don't think this chapter style is supported any more, so I'm not +% updating it with the new noderef stuff. We'll see. --karl, 11aug03. +% +\def\setchapterstyle #1 {\csname CHAPF#1\endcsname} +% +\def\unnchfopen #1{% +\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt\raggedright + \rm #1\hfill}}\bigskip \par\nobreak +} +\def\chfopen #1#2{\chapoddpage {\chapfonts +\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% +\par\penalty 5000 % +} +\def\centerchfopen #1{% +\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt + \hfill {\rm #1}\hfill}}\bigskip \par\nobreak +} +\def\CHAPFopen{% + \global\let\chapmacro=\chfopen + \global\let\centerchapmacro=\centerchfopen} + + +% Section titles. These macros combine the section number parts and +% call the generic \sectionheading to do the printing. +% +\newskip\secheadingskip +\def\secheadingbreak{\dobreak \secheadingskip{-1000}} + +% Subsection titles. +\newskip\subsecheadingskip +\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} + +% Subsubsection titles. +\def\subsubsecheadingskip{\subsecheadingskip} +\def\subsubsecheadingbreak{\subsecheadingbreak} + + +% Print any size, any type, section title. +% +% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is +% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the +% section number. +% +\def\sectionheading#1#2#3#4{% + {% + % Switch to the right set of fonts. + \csname #2fonts\endcsname \rm + % + % Insert space above the heading. + \csname #2headingbreak\endcsname + % + % Only insert the space after the number if we have a section number. + \def\sectionlevel{#2}% + \def\temptype{#3}% + % + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unn}% + \gdef\thissection{#1}% + \else\ifx\temptype\Yomitfromtockeyword + % for @headings -- no section number, don't include in toc, + % and don't redefine \thissection. + \setbox0 = \hbox{}% + \def\toctype{omit}% + \let\sectionlevel=\empty + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{#4\enspace}% + \def\toctype{app}% + \gdef\thissection{#1}% + \else + \setbox0 = \hbox{#4\enspace}% + \def\toctype{num}% + \gdef\thissection{#1}% + \fi\fi\fi + % + % Write the toc entry (before \donoderef). See comments in \chapmacro. + \writetocentry{\toctype\sectionlevel}{#1}{#4}% + % + % Write the node reference (= pdf destination for pdftex). + % Again, see comments in \chapmacro. + \donoderef{#3}% + % + % Interline glue will be inserted when the vbox is completed. + % That glue will be a valid breakpoint for the page, since it'll be + % preceded by a whatsit (usually from the \donoderef, or from the + % \writetocentry if there was no node). We don't want to allow that + % break, since then the whatsits could end up on page n while the + % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. + \nobreak + % + % Output the actual section heading. + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \hangindent=\wd0 % zero if no section number + \unhbox0 #1}% + }% + % Add extra space after the heading -- half of whatever came above it. + % Don't allow stretch, though. + \kern .5 \csname #2headingskip\endcsname + % + % Do not let the kern be a potential breakpoint, as it would be if it + % was followed by glue. + \nobreak + % + % We'll almost certainly start a paragraph next, so don't let that + % glue accumulate. (Not a breakpoint because it's preceded by a + % discardable item.) + \vskip-\parskip + % + % This is purely so the last item on the list is a known \penalty > + % 10000. This is so \startdefun can avoid allowing breakpoints after + % section headings. Otherwise, it would insert a valid breakpoint between: + % + % @section sec-whatever + % @deffn def-whatever + \penalty 10001 +} + + +\message{toc,} +% Table of contents. +\newwrite\tocfile + +% Write an entry to the toc file, opening it if necessary. +% Called from @chapter, etc. +% +% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} +% We append the current node name (if any) and page number as additional +% arguments for the \{chap,sec,...}entry macros which will eventually +% read this. The node name is used in the pdf outlines as the +% destination to jump to. +% +% We open the .toc file for writing here instead of at @setfilename (or +% any other fixed time) so that @contents can be anywhere in the document. +% But if #1 is `omit', then we don't do anything. This is used for the +% table of contents chapter openings themselves. +% +\newif\iftocfileopened +\def\omitkeyword{omit}% +% +\def\writetocentry#1#2#3{% + \edef\writetoctype{#1}% + \ifx\writetoctype\omitkeyword \else + \iftocfileopened\else + \immediate\openout\tocfile = \jobname.toc + \global\tocfileopenedtrue + \fi + % + \iflinks + {\atdummies + \edef\temp{% + \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% + \temp + }% + \fi + \fi + % + % Tell \shipout to create a pdf destination on each page, if we're + % writing pdf. These are used in the table of contents. We can't + % just write one on every page because the title pages are numbered + % 1 and 2 (the page numbers aren't printed), and so are the first + % two pages of the document. Thus, we'd have two destinations named + % `1', and two named `2'. + \ifpdf \global\pdfmakepagedesttrue \fi +} + + +% These characters do not print properly in the Computer Modern roman +% fonts, so we must take special care. This is more or less redundant +% with the Texinfo input format setup at the end of this file. +% +\def\activecatcodes{% + \catcode`\"=\active + \catcode`\$=\active + \catcode`\<=\active + \catcode`\>=\active + \catcode`\\=\active + \catcode`\^=\active + \catcode`\_=\active + \catcode`\|=\active + \catcode`\~=\active +} + + +% Read the toc file, which is essentially Texinfo input. +\def\readtocfile{% + \setupdatafile + \activecatcodes + \input \jobname.toc +} + +\newskip\contentsrightmargin \contentsrightmargin=1in +\newcount\savepageno +\newcount\lastnegativepageno \lastnegativepageno = -1 + +% Prepare to read what we've written to \tocfile. +% +\def\startcontents#1{% + % If @setchapternewpage on, and @headings double, the contents should + % start on an odd page, unlike chapters. Thus, we maintain + % \contentsalignmacro in parallel with \pagealignmacro. + % From: Torbjorn Granlund + \contentsalignmacro + \immediate\closeout\tocfile + % + % Don't need to put `Contents' or `Short Contents' in the headline. + % It is abundantly clear what they are. + \def\thischapter{}% + \chapmacro{#1}{Yomitfromtoc}{}% + % + \savepageno = \pageno + \begingroup % Set up to handle contents files properly. + \raggedbottom % Worry more about breakpoints than the bottom. + \advance\hsize by -\contentsrightmargin % Don't use the full line length. + % + % Roman numerals for page numbers. + \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi +} + + +% Normal (long) toc. +\def\contents{% + \startcontents{\putwordTOC}% + \openin 1 \jobname.toc + \ifeof 1 \else + \readtocfile + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \ifeof 1 \else + \pdfmakeoutlines + \fi + \closein 1 + \endgroup + \lastnegativepageno = \pageno + \global\pageno = \savepageno +} + +% And just the chapters. +\def\summarycontents{% + \startcontents{\putwordShortTOC}% + % + \let\numchapentry = \shortchapentry + \let\appentry = \shortchapentry + \let\unnchapentry = \shortunnchapentry + % We want a true roman here for the page numbers. + \secfonts + \let\rm=\shortcontrm \let\bf=\shortcontbf + \let\sl=\shortcontsl \let\tt=\shortconttt + \rm + \hyphenpenalty = 10000 + \advance\baselineskip by 1pt % Open it up a little. + \def\numsecentry##1##2##3##4{} + \let\appsecentry = \numsecentry + \let\unnsecentry = \numsecentry + \let\numsubsecentry = \numsecentry + \let\appsubsecentry = \numsecentry + \let\unnsubsecentry = \numsecentry + \let\numsubsubsecentry = \numsecentry + \let\appsubsubsecentry = \numsecentry + \let\unnsubsubsecentry = \numsecentry + \openin 1 \jobname.toc + \ifeof 1 \else + \readtocfile + \fi + \closein 1 + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \endgroup + \lastnegativepageno = \pageno + \global\pageno = \savepageno +} +\let\shortcontents = \summarycontents + +% Typeset the label for a chapter or appendix for the short contents. +% The arg is, e.g., `A' for an appendix, or `3' for a chapter. +% +\def\shortchaplabel#1{% + % This space should be enough, since a single number is .5em, and the + % widest letter (M) is 1em, at least in the Computer Modern fonts. + % But use \hss just in case. + % (This space doesn't include the extra space that gets added after + % the label; that gets put in by \shortchapentry above.) + % + % We'd like to right-justify chapter numbers, but that looks strange + % with appendix letters. And right-justifying numbers and + % left-justifying letters looks strange when there is less than 10 + % chapters. Have to read the whole toc once to know how many chapters + % there are before deciding ... + \hbox to 1em{#1\hss}% +} + +% These macros generate individual entries in the table of contents. +% The first argument is the chapter or section name. +% The last argument is the page number. +% The arguments in between are the chapter number, section number, ... + +% Chapters, in the main contents. +\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} +% +% Chapters, in the short toc. +% See comments in \dochapentry re vbox and related settings. +\def\shortchapentry#1#2#3#4{% + \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% +} + +% Appendices, in the main contents. +% Need the word Appendix, and a fixed-size box. +% +\def\appendixbox#1{% + % We use M since it's probably the widest letter. + \setbox0 = \hbox{\putwordAppendix{} M}% + \hbox to \wd0{\putwordAppendix{} #1\hss}} +% +\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}} + +% Unnumbered chapters. +\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} +\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} + +% Sections. +\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} +\let\appsecentry=\numsecentry +\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} + +% Subsections. +\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} +\let\appsubsecentry=\numsubsecentry +\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} + +% And subsubsections. +\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} +\let\appsubsubsecentry=\numsubsubsecentry +\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} + +% This parameter controls the indentation of the various levels. +% Same as \defaultparindent. +\newdimen\tocindent \tocindent = 15pt + +% Now for the actual typesetting. In all these, #1 is the text and #2 is the +% page number. +% +% If the toc has to be broken over pages, we want it to be at chapters +% if at all possible; hence the \penalty. +\def\dochapentry#1#2{% + \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip + \begingroup + \chapentryfonts + \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \endgroup + \nobreak\vskip .25\baselineskip plus.1\baselineskip +} + +\def\dosecentry#1#2{\begingroup + \secentryfonts \leftskip=\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +\def\dosubsecentry#1#2{\begingroup + \subsecentryfonts \leftskip=2\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +\def\dosubsubsecentry#1#2{\begingroup + \subsubsecentryfonts \leftskip=3\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +% We use the same \entry macro as for the index entries. +\let\tocentry = \entry + +% Space between chapter (or whatever) number and the title. +\def\labelspace{\hskip1em \relax} + +\def\dopageno#1{{\rm #1}} +\def\doshortpageno#1{{\rm #1}} + +\def\chapentryfonts{\secfonts \rm} +\def\secentryfonts{\textfonts} +\def\subsecentryfonts{\textfonts} +\def\subsubsecentryfonts{\textfonts} + + +\message{environments,} +% @foo ... @end foo. + +% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. +% +% Since these characters are used in examples, it should be an even number of +% \tt widths. Each \tt character is 1en, so two makes it 1em. +% +\def\point{$\star$} +\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} +\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} +\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} +\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} + +% The @error{} command. +% Adapted from the TeXbook's \boxit. +% +\newbox\errorbox +% +{\tentt \global\dimen0 = 3em}% Width of the box. +\dimen2 = .55pt % Thickness of rules +% The text. (`r' is open on the right, `e' somewhat less so on the left.) +\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt} +% +\setbox\errorbox=\hbox to \dimen0{\hfil + \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. + \advance\hsize by -2\dimen2 % Rules. + \vbox{% + \hrule height\dimen2 + \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. + \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. + \kern3pt\vrule width\dimen2}% Space to right. + \hrule height\dimen2} + \hfil} +% +\def\error{\leavevmode\lower.7ex\copy\errorbox} + +% @tex ... @end tex escapes into raw Tex temporarily. +% One exception: @ is still an escape character, so that @end tex works. +% But \@ or @@ will get a plain tex @ character. + +\envdef\tex{% + \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie + \catcode `\%=14 + \catcode `\+=\other + \catcode `\"=\other + \catcode `\|=\other + \catcode `\<=\other + \catcode `\>=\other + \escapechar=`\\ + % + \let\b=\ptexb + \let\bullet=\ptexbullet + \let\c=\ptexc + \let\,=\ptexcomma + \let\.=\ptexdot + \let\dots=\ptexdots + \let\equiv=\ptexequiv + \let\!=\ptexexclam + \let\i=\ptexi + \let\indent=\ptexindent + \let\noindent=\ptexnoindent + \let\{=\ptexlbrace + \let\+=\tabalign + \let\}=\ptexrbrace + \let\/=\ptexslash + \let\*=\ptexstar + \let\t=\ptext + \let\frenchspacing=\plainfrenchspacing + % + \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% + \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% + \def\@{@}% +} +% There is no need to define \Etex. + +% Define @lisp ... @end lisp. +% @lisp environment forms a group so it can rebind things, +% including the definition of @end lisp (which normally is erroneous). + +% Amount to narrow the margins by for @lisp. +\newskip\lispnarrowing \lispnarrowing=0.4in + +% This is the definition that ^^M gets inside @lisp, @example, and other +% such environments. \null is better than a space, since it doesn't +% have any width. +\def\lisppar{\null\endgraf} + +% This space is always present above and below environments. +\newskip\envskipamount \envskipamount = 0pt + +% Make spacing and below environment symmetrical. We use \parskip here +% to help in doing that, since in @example-like environments \parskip +% is reset to zero; thus the \afterenvbreak inserts no space -- but the +% start of the next paragraph will insert \parskip. +% +\def\aboveenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + % it's not a good place to break if the last penalty was \nobreak + % or better ... + \ifnum\lastpenalty<10000 \penalty-50 \fi + \vskip\envskipamount + \fi + \fi +}} + +\let\afterenvbreak = \aboveenvbreak + +% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will +% also clear it, so that its embedded environments do the narrowing again. +\let\nonarrowing=\relax + +% @cartouche ... @end cartouche: draw rectangle w/rounded corners around +% environment contents. +\font\circle=lcircle10 +\newdimen\circthick +\newdimen\cartouter\newdimen\cartinner +\newskip\normbskip\newskip\normpskip\newskip\normlskip +\circthick=\fontdimen8\circle +% +\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth +\def\ctr{{\hskip 6pt\circle\char'010}} +\def\cbl{{\circle\char'012\hskip -6pt}} +\def\cbr{{\hskip 6pt\circle\char'011}} +\def\carttop{\hbox to \cartouter{\hskip\lskip + \ctl\leaders\hrule height\circthick\hfil\ctr + \hskip\rskip}} +\def\cartbot{\hbox to \cartouter{\hskip\lskip + \cbl\leaders\hrule height\circthick\hfil\cbr + \hskip\rskip}} +% +\newskip\lskip\newskip\rskip + +\envdef\cartouche{% + \ifhmode\par\fi % can't be in the midst of a paragraph. + \startsavinginserts + \lskip=\leftskip \rskip=\rightskip + \leftskip=0pt\rightskip=0pt % we want these *outside*. + \cartinner=\hsize \advance\cartinner by-\lskip + \advance\cartinner by-\rskip + \cartouter=\hsize + \advance\cartouter by 18.4pt % allow for 3pt kerns on either + % side, and for 6pt waste from + % each corner char, and rule thickness + \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip + % Flag to tell @lisp, etc., not to narrow margin. + \let\nonarrowing = t% + \vbox\bgroup + \baselineskip=0pt\parskip=0pt\lineskip=0pt + \carttop + \hbox\bgroup + \hskip\lskip + \vrule\kern3pt + \vbox\bgroup + \kern3pt + \hsize=\cartinner + \baselineskip=\normbskip + \lineskip=\normlskip + \parskip=\normpskip + \vskip -\parskip + \comment % For explanation, see the end of \def\group. +} +\def\Ecartouche{% + \ifhmode\par\fi + \kern3pt + \egroup + \kern3pt\vrule + \hskip\rskip + \egroup + \cartbot + \egroup + \checkinserts +} + + +% This macro is called at the beginning of all the @example variants, +% inside a group. +\def\nonfillstart{% + \aboveenvbreak + \hfuzz = 12pt % Don't be fussy + \sepspaces % Make spaces be word-separators rather than space tokens. + \let\par = \lisppar % don't ignore blank lines + \obeylines % each line of input is a line of output + \parskip = 0pt + \parindent = 0pt + \emergencystretch = 0pt % don't try to avoid overfull boxes + \ifx\nonarrowing\relax + \advance \leftskip by \lispnarrowing + \exdentamount=\lispnarrowing + \else + \let\nonarrowing = \relax + \fi + \let\exdent=\nofillexdent +} + +% If you want all examples etc. small: @set dispenvsize small. +% If you want even small examples the full size: @set dispenvsize nosmall. +% This affects the following displayed environments: +% @example, @display, @format, @lisp +% +\def\smallword{small} +\def\nosmallword{nosmall} +\let\SETdispenvsize\relax +\def\setnormaldispenv{% + \ifx\SETdispenvsize\smallword + \smallexamplefonts \rm + \fi +} +\def\setsmalldispenv{% + \ifx\SETdispenvsize\nosmallword + \else + \smallexamplefonts \rm + \fi +} + +% We often define two environments, @foo and @smallfoo. +% Let's do it by one command: +\def\makedispenv #1#2{ + \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2} + \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2} + \expandafter\let\csname E#1\endcsname \afterenvbreak + \expandafter\let\csname Esmall#1\endcsname \afterenvbreak +} + +% Define two synonyms: +\def\maketwodispenvs #1#2#3{ + \makedispenv{#1}{#3} + \makedispenv{#2}{#3} +} + +% @lisp: indented, narrowed, typewriter font; @example: same as @lisp. +% +% @smallexample and @smalllisp: use smaller fonts. +% Originally contributed by Pavel@xerox. +% +\maketwodispenvs {lisp}{example}{% + \nonfillstart + \tt\quoteexpand + \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. + \gobble % eat return +} +% @display/@smalldisplay: same as @lisp except keep current font. +% +\makedispenv {display}{% + \nonfillstart + \gobble +} + +% @format/@smallformat: same as @display except don't narrow margins. +% +\makedispenv{format}{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} + +% @flushleft: same as @format, but doesn't obey \SETdispenvsize. +\envdef\flushleft{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} +\let\Eflushleft = \afterenvbreak + +% @flushright. +% +\envdef\flushright{% + \let\nonarrowing = t% + \nonfillstart + \advance\leftskip by 0pt plus 1fill + \gobble +} +\let\Eflushright = \afterenvbreak + + +% @quotation does normal linebreaking (hence we can't use \nonfillstart) +% and narrows the margins. We keep \parskip nonzero in general, since +% we're doing normal filling. So, when using \aboveenvbreak and +% \afterenvbreak, temporarily make \parskip 0. +% +\envdef\quotation{% + {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip + \parindent=0pt + % + % @cartouche defines \nonarrowing to inhibit narrowing at next level down. + \ifx\nonarrowing\relax + \advance\leftskip by \lispnarrowing + \advance\rightskip by \lispnarrowing + \exdentamount = \lispnarrowing + \else + \let\nonarrowing = \relax + \fi + \parsearg\quotationlabel +} + +% We have retained a nonzero parskip for the environment, since we're +% doing normal filling. +% +\def\Equotation{% + \par + \ifx\quotationauthor\undefined\else + % indent a bit. + \leftline{\kern 2\leftskip \sl ---\quotationauthor}% + \fi + {\parskip=0pt \afterenvbreak}% +} + +% If we're given an argument, typeset it in bold with a colon after. +\def\quotationlabel#1{% + \def\temp{#1}% + \ifx\temp\empty \else + {\bf #1: }% + \fi +} + + +% LaTeX-like @verbatim...@end verbatim and @verb{...} +% If we want to allow any as delimiter, +% we need the curly braces so that makeinfo sees the @verb command, eg: +% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org +% +% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. +% +% [Knuth] p.344; only we need to do the other characters Texinfo sets +% active too. Otherwise, they get lost as the first character on a +% verbatim line. +\def\dospecials{% + \do\ \do\\\do\{\do\}\do\$\do\&% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% + \do\<\do\>\do\|\do\@\do+\do\"% +} +% +% [Knuth] p. 380 +\def\uncatcodespecials{% + \def\do##1{\catcode`##1=\other}\dospecials} +% +% [Knuth] pp. 380,381,391 +% Disable Spanish ligatures ?` and !` of \tt font +\begingroup + \catcode`\`=\active\gdef`{\relax\lq} +\endgroup +% +% Setup for the @verb command. +% +% Eight spaces for a tab +\begingroup + \catcode`\^^I=\active + \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} +\endgroup +% +\def\setupverb{% + \tt % easiest (and conventionally used) font for verbatim + \def\par{\leavevmode\endgraf}% + \catcode`\`=\active + \tabeightspaces + % Respect line breaks, + % print special symbols as themselves, and + % make each space count + % must do in this order: + \obeylines \uncatcodespecials \sepspaces +} + +% Setup for the @verbatim environment +% +% Real tab expansion +\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount +% +\def\starttabbox{\setbox0=\hbox\bgroup} + +% Allow an option to not replace quotes with a regular directed right +% quote/apostrophe (char 0x27), but instead use the undirected quote +% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it +% the default, but it works for pasting with more pdf viewers (at least +% evince), the lilypond developers report. xpdf does work with the +% regular 0x27. +% +\def\codequoteright{% + \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax + '% + \else + \char'15 + \fi +} +% +% and a similar option for the left quote char vs. a grave accent. +% Modern fonts display ASCII 0x60 as a grave accent, so some people like +% the code environments to do likewise. +% +\def\codequoteleft{% + \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax + `% + \else + \char'22 + \fi +} +% +\begingroup + \catcode`\^^I=\active + \gdef\tabexpand{% + \catcode`\^^I=\active + \def^^I{\leavevmode\egroup + \dimen0=\wd0 % the width so far, or since the previous tab + \divide\dimen0 by\tabw + \multiply\dimen0 by\tabw % compute previous multiple of \tabw + \advance\dimen0 by\tabw % advance to next multiple of \tabw + \wd0=\dimen0 \box0 \starttabbox + }% + } + \catcode`\'=\active + \gdef\rquoteexpand{\catcode\rquoteChar=\active \def'{\codequoteright}}% + % + \catcode`\`=\active + \gdef\lquoteexpand{\catcode\lquoteChar=\active \def`{\codequoteleft}}% + % + \gdef\quoteexpand{\rquoteexpand \lquoteexpand}% +\endgroup + +% start the verbatim environment. +\def\setupverbatim{% + \let\nonarrowing = t% + \nonfillstart + % Easiest (and conventionally used) font for verbatim + \tt + \def\par{\leavevmode\egroup\box0\endgraf}% + \catcode`\`=\active + \tabexpand + \quoteexpand + % Respect line breaks, + % print special symbols as themselves, and + % make each space count + % must do in this order: + \obeylines \uncatcodespecials \sepspaces + \everypar{\starttabbox}% +} + +% Do the @verb magic: verbatim text is quoted by unique +% delimiter characters. Before first delimiter expect a +% right brace, after last delimiter expect closing brace: +% +% \def\doverb'{'#1'}'{#1} +% +% [Knuth] p. 382; only eat outer {} +\begingroup + \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other + \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] +\endgroup +% +\def\verb{\begingroup\setupverb\doverb} +% +% +% Do the @verbatim magic: define the macro \doverbatim so that +% the (first) argument ends when '@end verbatim' is reached, ie: +% +% \def\doverbatim#1@end verbatim{#1} +% +% For Texinfo it's a lot easier than for LaTeX, +% because texinfo's \verbatim doesn't stop at '\end{verbatim}': +% we need not redefine '\', '{' and '}'. +% +% Inspired by LaTeX's verbatim command set [latex.ltx] +% +\begingroup + \catcode`\ =\active + \obeylines % + % ignore everything up to the first ^^M, that's the newline at the end + % of the @verbatim input line itself. Otherwise we get an extra blank + % line in the output. + \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% + % We really want {...\end verbatim} in the body of the macro, but + % without the active space; thus we have to use \xdef and \gobble. +\endgroup +% +\envdef\verbatim{% + \setupverbatim\doverbatim +} +\let\Everbatim = \afterenvbreak + + +% @verbatiminclude FILE - insert text of file in verbatim environment. +% +\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} +% +\def\doverbatiminclude#1{% + {% + \makevalueexpandable + \setupverbatim + \input #1 + \afterenvbreak + }% +} + +% @copying ... @end copying. +% Save the text away for @insertcopying later. +% +% We save the uninterpreted tokens, rather than creating a box. +% Saving the text in a box would be much easier, but then all the +% typesetting commands (@smallbook, font changes, etc.) have to be done +% beforehand -- and a) we want @copying to be done first in the source +% file; b) letting users define the frontmatter in as flexible order as +% possible is very desirable. +% +\def\copying{\checkenv{}\begingroup\scanargctxt\docopying} +\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} +% +\def\insertcopying{% + \begingroup + \parindent = 0pt % paragraph indentation looks wrong on title page + \scanexp\copyingtext + \endgroup +} + +\message{defuns,} +% @defun etc. + +\newskip\defbodyindent \defbodyindent=.4in +\newskip\defargsindent \defargsindent=50pt +\newskip\deflastargmargin \deflastargmargin=18pt + +% Start the processing of @deffn: +\def\startdefun{% + \ifnum\lastpenalty<10000 + \medbreak + \else + % If there are two @def commands in a row, we'll have a \nobreak, + % which is there to keep the function description together with its + % header. But if there's nothing but headers, we need to allow a + % break somewhere. Check specifically for penalty 10002, inserted + % by \defargscommonending, instead of 10000, since the sectioning + % commands also insert a nobreak penalty, and we don't want to allow + % a break between a section heading and a defun. + % + \ifnum\lastpenalty=10002 \penalty2000 \fi + % + % Similarly, after a section heading, do not allow a break. + % But do insert the glue. + \medskip % preceded by discardable penalty, so not a breakpoint + \fi + % + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent +} + +\def\dodefunx#1{% + % First, check whether we are in the right environment: + \checkenv#1% + % + % As above, allow line break if we have multiple x headers in a row. + % It's not a great place, though. + \ifnum\lastpenalty=10002 \penalty3000 \fi + % + % And now, it's time to reuse the body of the original defun: + \expandafter\gobbledefun#1% +} +\def\gobbledefun#1\startdefun{} + +% \printdefunline \deffnheader{text} +% +\def\printdefunline#1#2{% + \begingroup + % call \deffnheader: + #1#2 \endheader + % common ending: + \interlinepenalty = 10000 + \advance\rightskip by 0pt plus 1fil + \endgraf + \nobreak\vskip -\parskip + \penalty 10002 % signal to \startdefun and \dodefunx + % Some of the @defun-type tags do not enable magic parentheses, + % rendering the following check redundant. But we don't optimize. + \checkparencounts + \endgroup +} + +\def\Edefun{\endgraf\medbreak} + +% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; +% the only thing remainnig is to define \deffnheader. +% +\def\makedefun#1{% + \expandafter\let\csname E#1\endcsname = \Edefun + \edef\temp{\noexpand\domakedefun + \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% + \temp +} + +% \domakedefun \deffn \deffnx \deffnheader +% +% Define \deffn and \deffnx, without parameters. +% \deffnheader has to be defined explicitly. +% +\def\domakedefun#1#2#3{% + \envdef#1{% + \startdefun + \parseargusing\activeparens{\printdefunline#3}% + }% + \def#2{\dodefunx#1}% + \def#3% +} + +%%% Untyped functions: + +% @deffn category name args +\makedefun{deffn}{\deffngeneral{}} + +% @deffn category class name args +\makedefun{defop}#1 {\defopon{#1\ \putwordon}} + +% \defopon {category on}class name args +\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + +% \deffngeneral {subind}category name args +% +\def\deffngeneral#1#2 #3 #4\endheader{% + % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}. + \dosubind{fn}{\code{#3}}{#1}% + \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% +} + +%%% Typed functions: + +% @deftypefn category type name args +\makedefun{deftypefn}{\deftypefngeneral{}} + +% @deftypeop category class type name args +\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} + +% \deftypeopon {category on}class type name args +\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + +% \deftypefngeneral {subind}category type name args +% +\def\deftypefngeneral#1#2 #3 #4 #5\endheader{% + \dosubind{fn}{\code{#4}}{#1}% + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +} + +%%% Typed variables: + +% @deftypevr category type var args +\makedefun{deftypevr}{\deftypecvgeneral{}} + +% @deftypecv category class type var args +\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} + +% \deftypecvof {category of}class type var args +\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } + +% \deftypecvgeneral {subind}category type var args +% +\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% + \dosubind{vr}{\code{#4}}{#1}% + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +} + +%%% Untyped variables: + +% @defvr category var args +\makedefun{defvr}#1 {\deftypevrheader{#1} {} } + +% @defcv category class var args +\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} + +% \defcvof {category of}class var args +\def\defcvof#1#2 {\deftypecvof{#1}#2 {} } + +%%% Type: +% @deftp category name args +\makedefun{deftp}#1 #2 #3\endheader{% + \doind{tp}{\code{#2}}% + \defname{#1}{}{#2}\defunargs{#3\unskip}% +} + +% Remaining @defun-like shortcuts: +\makedefun{defun}{\deffnheader{\putwordDeffunc} } +\makedefun{defmac}{\deffnheader{\putwordDefmac} } +\makedefun{defspec}{\deffnheader{\putwordDefspec} } +\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } +\makedefun{defvar}{\defvrheader{\putwordDefvar} } +\makedefun{defopt}{\defvrheader{\putwordDefopt} } +\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } +\makedefun{defmethod}{\defopon\putwordMethodon} +\makedefun{deftypemethod}{\deftypeopon\putwordMethodon} +\makedefun{defivar}{\defcvof\putwordInstanceVariableof} +\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} + +% \defname, which formats the name of the @def (not the args). +% #1 is the category, such as "Function". +% #2 is the return type, if any. +% #3 is the function name. +% +% We are followed by (but not passed) the arguments, if any. +% +\def\defname#1#2#3{% + % Get the values of \leftskip and \rightskip as they were outside the @def... + \advance\leftskip by -\defbodyindent + % + % How we'll format the type name. Putting it in brackets helps + % distinguish it from the body text that may end up on the next line + % just below it. + \def\temp{#1}% + \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} + % + % Figure out line sizes for the paragraph shape. + % The first line needs space for \box0; but if \rightskip is nonzero, + % we need only space for the part of \box0 which exceeds it: + \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip + % The continuations: + \dimen2=\hsize \advance\dimen2 by -\defargsindent + % (plain.tex says that \dimen1 should be used only as global.) + \parshape 2 0in \dimen0 \defargsindent \dimen2 + % + % Put the type name to the right margin. + \noindent + \hbox to 0pt{% + \hfil\box0 \kern-\hsize + % \hsize has to be shortened this way: + \kern\leftskip + % Intentionally do not respect \rightskip, since we need the space. + }% + % + % Allow all lines to be underfull without complaint: + \tolerance=10000 \hbadness=10000 + \exdentamount=\defbodyindent + {% + % defun fonts. We use typewriter by default (used to be bold) because: + % . we're printing identifiers, they should be in tt in principle. + % . in languages with many accents, such as Czech or French, it's + % common to leave accents off identifiers. The result looks ok in + % tt, but exceedingly strange in rm. + % . we don't want -- and --- to be treated as ligatures. + % . this still does not fix the ?` and !` ligatures, but so far no + % one has made identifiers using them :). + \df \tt + \def\temp{#2}% return value type + \ifx\temp\empty\else \tclose{\temp} \fi + #3% output function name + }% + {\rm\enskip}% hskip 0.5 em of \tenrm + % + \boldbrax + % arguments will be output next, if any. +} + +% Print arguments in slanted roman (not ttsl), inconsistently with using +% tt for the name. This is because literal text is sometimes needed in +% the argument list (groff manual), and ttsl and tt are not very +% distinguishable. Prevent hyphenation at `-' chars. +% +\def\defunargs#1{% + % use sl by default (not ttsl), + % tt for the names. + \df \sl \hyphenchar\font=0 + % + % On the other hand, if an argument has two dashes (for instance), we + % want a way to get ttsl. Let's try @var for that. + \let\var=\ttslanted + #1% + \sl\hyphenchar\font=45 +} + +% We want ()&[] to print specially on the defun line. +% +\def\activeparens{% + \catcode`\(=\active \catcode`\)=\active + \catcode`\[=\active \catcode`\]=\active + \catcode`\&=\active +} + +% Make control sequences which act like normal parenthesis chars. +\let\lparen = ( \let\rparen = ) + +% Be sure that we always have a definition for `(', etc. For example, +% if the fn name has parens in it, \boldbrax will not be in effect yet, +% so TeX would otherwise complain about undefined control sequence. +{ + \activeparens + \global\let(=\lparen \global\let)=\rparen + \global\let[=\lbrack \global\let]=\rbrack + \global\let& = \& + + \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} + \gdef\magicamp{\let&=\amprm} +} + +\newcount\parencount + +% If we encounter &foo, then turn on ()-hacking afterwards +\newif\ifampseen +\def\amprm#1 {\ampseentrue{\bf\ }} + +\def\parenfont{% + \ifampseen + % At the first level, print parens in roman, + % otherwise use the default font. + \ifnum \parencount=1 \rm \fi + \else + % The \sf parens (in \boldbrax) actually are a little bolder than + % the contained text. This is especially needed for [ and ] . + \sf + \fi +} +\def\infirstlevel#1{% + \ifampseen + \ifnum\parencount=1 + #1% + \fi + \fi +} +\def\bfafterword#1 {#1 \bf} + +\def\opnr{% + \global\advance\parencount by 1 + {\parenfont(}% + \infirstlevel \bfafterword +} +\def\clnr{% + {\parenfont)}% + \infirstlevel \sl + \global\advance\parencount by -1 +} + +\newcount\brackcount +\def\lbrb{% + \global\advance\brackcount by 1 + {\bf[}% +} +\def\rbrb{% + {\bf]}% + \global\advance\brackcount by -1 +} + +\def\checkparencounts{% + \ifnum\parencount=0 \else \badparencount \fi + \ifnum\brackcount=0 \else \badbrackcount \fi +} +\def\badparencount{% + \errmessage{Unbalanced parentheses in @def}% + \global\parencount=0 +} +\def\badbrackcount{% + \errmessage{Unbalanced square braces in @def}% + \global\brackcount=0 +} + + +\message{macros,} +% @macro. + +% To do this right we need a feature of e-TeX, \scantokens, +% which we arrange to emulate with a temporary file in ordinary TeX. +\ifx\eTeXversion\undefined + \newwrite\macscribble + \def\scantokens#1{% + \toks0={#1}% + \immediate\openout\macscribble=\jobname.tmp + \immediate\write\macscribble{\the\toks0}% + \immediate\closeout\macscribble + \input \jobname.tmp + } +\fi + +\def\scanmacro#1{% + \begingroup + \newlinechar`\^^M + \let\xeatspaces\eatspaces + % Undo catcode changes of \startcontents and \doprintindex + % When called from @insertcopying or (short)caption, we need active + % backslash to get it printed correctly. Previously, we had + % \catcode`\\=\other instead. We'll see whether a problem appears + % with macro expansion. --kasal, 19aug04 + \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ + % ... and \example + \spaceisspace + % + % Append \endinput to make sure that TeX does not see the ending newline. + % I've verified that it is necessary both for e-TeX and for ordinary TeX + % --kasal, 29nov03 + \scantokens{#1\endinput}% + \endgroup +} + +\def\scanexp#1{% + \edef\temp{\noexpand\scanmacro{#1}}% + \temp +} + +\newcount\paramno % Count of parameters +\newtoks\macname % Macro name +\newif\ifrecursive % Is it recursive? + +% List of all defined macros in the form +% \definedummyword\macro1\definedummyword\macro2... +% Currently is also contains all @aliases; the list can be split +% if there is a need. +\def\macrolist{} + +% Add the macro to \macrolist +\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} +\def\addtomacrolistxxx#1{% + \toks0 = \expandafter{\macrolist\definedummyword#1}% + \xdef\macrolist{\the\toks0}% +} + +% Utility routines. +% This does \let #1 = #2, with \csnames; that is, +% \let \csname#1\endcsname = \csname#2\endcsname +% (except of course we have to play expansion games). +% +\def\cslet#1#2{% + \expandafter\let + \csname#1\expandafter\endcsname + \csname#2\endcsname +} + +% Trim leading and trailing spaces off a string. +% Concepts from aro-bend problem 15 (see CTAN). +{\catcode`\@=11 +\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} +\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} +\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} +\def\unbrace#1{#1} +\unbrace{\gdef\trim@@@ #1 } #2@{#1} +} + +% Trim a single trailing ^^M off a string. +{\catcode`\^^M=\other \catcode`\Q=3% +\gdef\eatcr #1{\eatcra #1Q^^MQ}% +\gdef\eatcra#1^^MQ{\eatcrb#1Q}% +\gdef\eatcrb#1Q#2Q{#1}% +} + +% Macro bodies are absorbed as an argument in a context where +% all characters are catcode 10, 11 or 12, except \ which is active +% (as in normal texinfo). It is necessary to change the definition of \. + +% It's necessary to have hard CRs when the macro is executed. This is +% done by making ^^M (\endlinechar) catcode 12 when reading the macro +% body, and then making it the \newlinechar in \scanmacro. + +\def\scanctxt{% + \catcode`\"=\other + \catcode`\+=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\@=\other + \catcode`\^=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\~=\other +} + +\def\scanargctxt{% + \scanctxt + \catcode`\\=\other + \catcode`\^^M=\other +} + +\def\macrobodyctxt{% + \scanctxt + \catcode`\{=\other + \catcode`\}=\other + \catcode`\^^M=\other + \usembodybackslash +} + +\def\macroargctxt{% + \scanctxt + \catcode`\\=\other +} + +% \mbodybackslash is the definition of \ in @macro bodies. +% It maps \foo\ => \csname macarg.foo\endcsname => #N +% where N is the macro parameter number. +% We define \csname macarg.\endcsname to be \realbackslash, so +% \\ in macro replacement text gets you a backslash. + +{\catcode`@=0 @catcode`@\=@active + @gdef@usembodybackslash{@let\=@mbodybackslash} + @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} +} +\expandafter\def\csname macarg.\endcsname{\realbackslash} + +\def\macro{\recursivefalse\parsearg\macroxxx} +\def\rmacro{\recursivetrue\parsearg\macroxxx} + +\def\macroxxx#1{% + \getargs{#1}% now \macname is the macname and \argl the arglist + \ifx\argl\empty % no arguments + \paramno=0% + \else + \expandafter\parsemargdef \argl;% + \fi + \if1\csname ismacro.\the\macname\endcsname + \message{Warning: redefining \the\macname}% + \else + \expandafter\ifx\csname \the\macname\endcsname \relax + \else \errmessage{Macro name \the\macname\space already defined}\fi + \global\cslet{macsave.\the\macname}{\the\macname}% + \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% + \addtomacrolist{\the\macname}% + \fi + \begingroup \macrobodyctxt + \ifrecursive \expandafter\parsermacbody + \else \expandafter\parsemacbody + \fi} + +\parseargdef\unmacro{% + \if1\csname ismacro.#1\endcsname + \global\cslet{#1}{macsave.#1}% + \global\expandafter\let \csname ismacro.#1\endcsname=0% + % Remove the macro name from \macrolist: + \begingroup + \expandafter\let\csname#1\endcsname \relax + \let\definedummyword\unmacrodo + \xdef\macrolist{\macrolist}% + \endgroup + \else + \errmessage{Macro #1 not defined}% + \fi +} + +% Called by \do from \dounmacro on each macro. The idea is to omit any +% macro definitions that have been changed to \relax. +% +\def\unmacrodo#1{% + \ifx #1\relax + % remove this + \else + \noexpand\definedummyword \noexpand#1% + \fi +} + +% This makes use of the obscure feature that if the last token of a +% is #, then the preceding argument is delimited by +% an opening brace, and that opening brace is not consumed. +\def\getargs#1{\getargsxxx#1{}} +\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} +\def\getmacname #1 #2\relax{\macname={#1}} +\def\getmacargs#1{\def\argl{#1}} + +% Parse the optional {params} list. Set up \paramno and \paramlist +% so \defmacro knows what to do. Define \macarg.blah for each blah +% in the params list, to be ##N where N is the position in that list. +% That gets used by \mbodybackslash (above). + +% We need to get `macro parameter char #' into several definitions. +% The technique used is stolen from LaTeX: let \hash be something +% unexpandable, insert that wherever you need a #, and then redefine +% it to # just before using the token list produced. +% +% The same technique is used to protect \eatspaces till just before +% the macro is used. + +\def\parsemargdef#1;{\paramno=0\def\paramlist{}% + \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,} +\def\parsemargdefxxx#1,{% + \if#1;\let\next=\relax + \else \let\next=\parsemargdefxxx + \advance\paramno by 1% + \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname + {\xeatspaces{\hash\the\paramno}}% + \edef\paramlist{\paramlist\hash\the\paramno,}% + \fi\next} + +% These two commands read recursive and nonrecursive macro bodies. +% (They're different since rec and nonrec macros end differently.) + +\long\def\parsemacbody#1@end macro% +{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% +\long\def\parsermacbody#1@end rmacro% +{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% + +% This defines the macro itself. There are six cases: recursive and +% nonrecursive macros of zero, one, and many arguments. +% Much magic with \expandafter here. +% \xdef is used so that macro definitions will survive the file +% they're defined in; @include reads the file inside a group. +\def\defmacro{% + \let\hash=##% convert placeholders to macro parameter chars + \ifrecursive + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\scanmacro{\temp}}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname xxx\endcsname}% + \expandafter\xdef\csname\the\macname xxx\endcsname##1{% + \egroup\noexpand\scanmacro{\temp}}% + \else % many + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\csname\the\macname xx\endcsname}% + \expandafter\xdef\csname\the\macname xx\endcsname##1{% + \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname xxx\endcsname + \paramlist{\egroup\noexpand\scanmacro{\temp}}% + \fi + \else + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname xxx\endcsname}% + \expandafter\xdef\csname\the\macname xxx\endcsname##1{% + \egroup + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \else % many + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \expandafter\noexpand\csname\the\macname xx\endcsname}% + \expandafter\xdef\csname\the\macname xx\endcsname##1{% + \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname xxx\endcsname + \paramlist{% + \egroup + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \fi + \fi} + +\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} + +% \braceorline decides whether the next nonwhitespace character is a +% {. If so it reads up to the closing }, if not, it reads the whole +% line. Whatever was read is then fed to the next control sequence +% as an argument (by \parsebrace or \parsearg) +\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} +\def\braceorlinexxx{% + \ifx\nchar\bgroup\else + \expandafter\parsearg + \fi \macnamexxx} + + +% @alias. +% We need some trickery to remove the optional spaces around the equal +% sign. Just make them active and then expand them all to nothing. +\def\alias{\parseargusing\obeyspaces\aliasxxx} +\def\aliasxxx #1{\aliasyyy#1\relax} +\def\aliasyyy #1=#2\relax{% + {% + \expandafter\let\obeyedspace=\empty + \addtomacrolist{#1}% + \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% + }% + \next +} + + +\message{cross references,} + +\newwrite\auxfile + +\newif\ifhavexrefs % True if xref values are known. +\newif\ifwarnedxrefs % True if we warned once that they aren't known. + +% @inforef is relatively simple. +\def\inforef #1{\inforefzzz #1,,,,**} +\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, + node \samp{\ignorespaces#1{}}} + +% @node's only job in TeX is to define \lastnode, which is used in +% cross-references. The @node line might or might not have commas, and +% might or might not have spaces before the first comma, like: +% @node foo , bar , ... +% We don't want such trailing spaces in the node name. +% +\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} +% +% also remove a trailing comma, in case of something like this: +% @node Help-Cross, , , Cross-refs +\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} +\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} + +\let\nwnode=\node +\let\lastnode=\empty + +% Write a cross-reference definition for the current node. #1 is the +% type (Ynumbered, Yappendix, Ynothing). +% +\def\donoderef#1{% + \ifx\lastnode\empty\else + \setref{\lastnode}{#1}% + \global\let\lastnode=\empty + \fi +} + +% @anchor{NAME} -- define xref target at arbitrary point. +% +\newcount\savesfregister +% +\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} +\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} +\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} + +% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an +% anchor), which consists of three parts: +% 1) NAME-title - the current sectioning name taken from \thissection, +% or the anchor name. +% 2) NAME-snt - section number and type, passed as the SNT arg, or +% empty for anchors. +% 3) NAME-pg - the page number. +% +% This is called from \donoderef, \anchor, and \dofloat. In the case of +% floats, there is an additional part, which is not written here: +% 4) NAME-lof - the text as it should appear in a @listoffloats. +% +\def\setref#1#2{% + \pdfmkdest{#1}% + \iflinks + {% + \atdummies % preserve commands, but don't expand them + \edef\writexrdef##1##2{% + \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef + ##1}{##2}}% these are parameters of \writexrdef + }% + \toks0 = \expandafter{\thissection}% + \immediate \writexrdef{title}{\the\toks0 }% + \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. + \writexrdef{pg}{\folio}% will be written later, during \shipout + }% + \fi +} + +% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is +% the node name, #2 the name of the Info cross-reference, #3 the printed +% node name, #4 the name of the Info file, #5 the name of the printed +% manual. All but the node name can be omitted. +% +\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} +\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} +\def\ref#1{\xrefX[#1,,,,,,,]} +\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup + \unsepspaces + \def\printedmanual{\ignorespaces #5}% + \def\printedrefname{\ignorespaces #3}% + \setbox1=\hbox{\printedmanual\unskip}% + \setbox0=\hbox{\printedrefname\unskip}% + \ifdim \wd0 = 0pt + % No printed node name was explicitly given. + \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax + % Use the node name inside the square brackets. + \def\printedrefname{\ignorespaces #1}% + \else + % Use the actual chapter/section title appear inside + % the square brackets. Use the real section title if we have it. + \ifdim \wd1 > 0pt + % It is in another manual, so we don't have it. + \def\printedrefname{\ignorespaces #1}% + \else + \ifhavexrefs + % We know the real title if we have the xref values. + \def\printedrefname{\refx{#1-title}{}}% + \else + % Otherwise just copy the Info node name. + \def\printedrefname{\ignorespaces #1}% + \fi% + \fi + \fi + \fi + % + % Make link in pdf output. + \ifpdf + \leavevmode + \getfilename{#4}% + {\turnoffactive + % See comments at \activebackslashdouble. + {\activebackslashdouble \xdef\pdfxrefdest{#1}% + \backslashparens\pdfxrefdest}% + % + \ifnum\filenamelength>0 + \startlink attr{/Border [0 0 0]}% + goto file{\the\filename.pdf} name{\pdfxrefdest}% + \else + \startlink attr{/Border [0 0 0]}% + goto name{\pdfmkpgn{\pdfxrefdest}}% + \fi + }% + \linkcolor + \fi + % + % Float references are printed completely differently: "Figure 1.2" + % instead of "[somenode], p.3". We distinguish them by the + % LABEL-title being set to a magic string. + {% + % Have to otherify everything special to allow the \csname to + % include an _ in the xref name, etc. + \indexnofonts + \turnoffactive + \expandafter\global\expandafter\let\expandafter\Xthisreftitle + \csname XR#1-title\endcsname + }% + \iffloat\Xthisreftitle + % If the user specified the print name (third arg) to the ref, + % print it instead of our usual "Figure 1.2". + \ifdim\wd0 = 0pt + \refx{#1-snt}{}% + \else + \printedrefname + \fi + % + % if the user also gave the printed manual name (fifth arg), append + % "in MANUALNAME". + \ifdim \wd1 > 0pt + \space \putwordin{} \cite{\printedmanual}% + \fi + \else + % node/anchor (non-float) references. + % + % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not + % insert empty discretionaries after hyphens, which means that it will + % not find a line break at a hyphen in a node names. Since some manuals + % are best written with fairly long node names, containing hyphens, this + % is a loss. Therefore, we give the text of the node name again, so it + % is as if TeX is seeing it for the first time. + \ifdim \wd1 > 0pt + \putwordsection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}% + \else + % _ (for example) has to be the character _ for the purposes of the + % control sequence corresponding to the node, but it has to expand + % into the usual \leavevmode...\vrule stuff for purposes of + % printing. So we \turnoffactive for the \refx-snt, back on for the + % printing, back off for the \refx-pg. + {\turnoffactive + % Only output a following space if the -snt ref is nonempty; for + % @unnumbered and @anchor, it won't be. + \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% + \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi + }% + % output the `[mynode]' via a macro so it can be overridden. + \xrefprintnodename\printedrefname + % + % But we always want a comma and a space: + ,\space + % + % output the `page 3'. + \turnoffactive \putwordpage\tie\refx{#1-pg}{}% + \fi + \fi + \endlink +\endgroup} + +% This macro is called from \xrefX for the `[nodename]' part of xref +% output. It's a separate macro only so it can be changed more easily, +% since square brackets don't work well in some documents. Particularly +% one that Bob is working on :). +% +\def\xrefprintnodename#1{[#1]} + +% Things referred to by \setref. +% +\def\Ynothing{} +\def\Yomitfromtoc{} +\def\Ynumbered{% + \ifnum\secno=0 + \putwordChapter@tie \the\chapno + \else \ifnum\subsecno=0 + \putwordSection@tie \the\chapno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno + \else + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} +\def\Yappendix{% + \ifnum\secno=0 + \putwordAppendix@tie @char\the\appendixno{}% + \else \ifnum\subsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno + \else + \putwordSection@tie + @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} + +% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. +% If its value is nonempty, SUFFIX is output afterward. +% +\def\refx#1#2{% + {% + \indexnofonts + \otherbackslash + \expandafter\global\expandafter\let\expandafter\thisrefX + \csname XR#1\endcsname + }% + \ifx\thisrefX\relax + % If not defined, say something at least. + \angleleft un\-de\-fined\angleright + \iflinks + \ifhavexrefs + \message{\linenumber Undefined cross reference `#1'.}% + \else + \ifwarnedxrefs\else + \global\warnedxrefstrue + \message{Cross reference values unknown; you must run TeX again.}% + \fi + \fi + \fi + \else + % It's defined, so just use it. + \thisrefX + \fi + #2% Output the suffix in any case. +} + +% This is the macro invoked by entries in the aux file. Usually it's +% just a \def (we prepend XR to the control sequence name to avoid +% collisions). But if this is a float type, we have more work to do. +% +\def\xrdef#1#2{% + \expandafter\gdef\csname XR#1\endcsname{#2}% remember this xref value. + % + % Was that xref control sequence that we just defined for a float? + \expandafter\iffloat\csname XR#1\endcsname + % it was a float, and we have the (safe) float type in \iffloattype. + \expandafter\let\expandafter\floatlist + \csname floatlist\iffloattype\endcsname + % + % Is this the first time we've seen this float type? + \expandafter\ifx\floatlist\relax + \toks0 = {\do}% yes, so just \do + \else + % had it before, so preserve previous elements in list. + \toks0 = \expandafter{\floatlist\do}% + \fi + % + % Remember this xref in the control sequence \floatlistFLOATTYPE, + % for later use in \listoffloats. + \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0{#1}}% + \fi +} + +% Read the last existing aux file, if any. No error if none exists. +% +\def\tryauxfile{% + \openin 1 \jobname.aux + \ifeof 1 \else + \readdatafile{aux}% + \global\havexrefstrue + \fi + \closein 1 +} + +\def\setupdatafile{% + \catcode`\^^@=\other + \catcode`\^^A=\other + \catcode`\^^B=\other + \catcode`\^^C=\other + \catcode`\^^D=\other + \catcode`\^^E=\other + \catcode`\^^F=\other + \catcode`\^^G=\other + \catcode`\^^H=\other + \catcode`\^^K=\other + \catcode`\^^L=\other + \catcode`\^^N=\other + \catcode`\^^P=\other + \catcode`\^^Q=\other + \catcode`\^^R=\other + \catcode`\^^S=\other + \catcode`\^^T=\other + \catcode`\^^U=\other + \catcode`\^^V=\other + \catcode`\^^W=\other + \catcode`\^^X=\other + \catcode`\^^Z=\other + \catcode`\^^[=\other + \catcode`\^^\=\other + \catcode`\^^]=\other + \catcode`\^^^=\other + \catcode`\^^_=\other + % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. + % in xref tags, i.e., node names. But since ^^e4 notation isn't + % supported in the main text, it doesn't seem desirable. Furthermore, + % that is not enough: for node names that actually contain a ^ + % character, we would end up writing a line like this: 'xrdef {'hat + % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first + % argument, and \hat is not an expandable control sequence. It could + % all be worked out, but why? Either we support ^^ or we don't. + % + % The other change necessary for this was to define \auxhat: + % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter + % and then to call \auxhat in \setq. + % + \catcode`\^=\other + % + % Special characters. Should be turned off anyway, but... + \catcode`\~=\other + \catcode`\[=\other + \catcode`\]=\other + \catcode`\"=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\$=\other + \catcode`\#=\other + \catcode`\&=\other + \catcode`\%=\other + \catcode`+=\other % avoid \+ for paranoia even though we've turned it off + % + % This is to support \ in node names and titles, since the \ + % characters end up in a \csname. It's easier than + % leaving it active and making its active definition an actual \ + % character. What I don't understand is why it works in the *value* + % of the xrdef. Seems like it should be a catcode12 \, and that + % should not typeset properly. But it works, so I'm moving on for + % now. --karl, 15jan04. + \catcode`\\=\other + % + % Make the characters 128-255 be printing characters. + {% + \count1=128 + \def\loop{% + \catcode\count1=\other + \advance\count1 by 1 + \ifnum \count1<256 \loop \fi + }% + }% + % + % @ is our escape character in .aux files, and we need braces. + \catcode`\{=1 + \catcode`\}=2 + \catcode`\@=0 +} + +\def\readdatafile#1{% +\begingroup + \setupdatafile + \input\jobname.#1 +\endgroup} + +\message{insertions,} +% including footnotes. + +\newcount \footnoteno + +% The trailing space in the following definition for supereject is +% vital for proper filling; pages come out unaligned when you do a +% pagealignmacro call if that space before the closing brace is +% removed. (Generally, numeric constants should always be followed by a +% space to prevent strange expansion errors.) +\def\supereject{\par\penalty -20000\footnoteno =0 } + +% @footnotestyle is meaningful for info output only. +\let\footnotestyle=\comment + +{\catcode `\@=11 +% +% Auto-number footnotes. Otherwise like plain. +\gdef\footnote{% + \let\indent=\ptexindent + \let\noindent=\ptexnoindent + \global\advance\footnoteno by \@ne + \edef\thisfootno{$^{\the\footnoteno}$}% + % + % In case the footnote comes at the end of a sentence, preserve the + % extra spacing after we do the footnote number. + \let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi + % + % Remove inadvertent blank space before typesetting the footnote number. + \unskip + \thisfootno\@sf + \dofootnote +}% + +% Don't bother with the trickery in plain.tex to not require the +% footnote text as a parameter. Our footnotes don't need to be so general. +% +% Oh yes, they do; otherwise, @ifset (and anything else that uses +% \parseargline) fails inside footnotes because the tokens are fixed when +% the footnote is read. --karl, 16nov96. +% +\gdef\dofootnote{% + \insert\footins\bgroup + % We want to typeset this text as a normal paragraph, even if the + % footnote reference occurs in (for example) a display environment. + % So reset some parameters. + \hsize=\pagewidth + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox + \floatingpenalty\@MM + \leftskip\z@skip + \rightskip\z@skip + \spaceskip\z@skip + \xspaceskip\z@skip + \parindent\defaultparindent + % + \smallfonts \rm + % + % Because we use hanging indentation in footnotes, a @noindent appears + % to exdent this text, so make it be a no-op. makeinfo does not use + % hanging indentation so @noindent can still be needed within footnote + % text after an @example or the like (not that this is good style). + \let\noindent = \relax + % + % Hang the footnote text off the number. Use \everypar in case the + % footnote extends for more than one paragraph. + \everypar = {\hang}% + \textindent{\thisfootno}% + % + % Don't crash into the line above the footnote text. Since this + % expands into a box, it must come within the paragraph, lest it + % provide a place where TeX can split the footnote. + \footstrut + \futurelet\next\fo@t +} +}%end \catcode `\@=11 + +% In case a @footnote appears in a vbox, save the footnote text and create +% the real \insert just after the vbox finished. Otherwise, the insertion +% would be lost. +% Similarily, if a @footnote appears inside an alignment, save the footnote +% text to a box and make the \insert when a row of the table is finished. +% And the same can be done for other insert classes. --kasal, 16nov03. + +% Replace the \insert primitive by a cheating macro. +% Deeper inside, just make sure that the saved insertions are not spilled +% out prematurely. +% +\def\startsavinginserts{% + \ifx \insert\ptexinsert + \let\insert\saveinsert + \else + \let\checkinserts\relax + \fi +} + +% This \insert replacement works for both \insert\footins{foo} and +% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. +% +\def\saveinsert#1{% + \edef\next{\noexpand\savetobox \makeSAVEname#1}% + \afterassignment\next + % swallow the left brace + \let\temp = +} +\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} +\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} + +\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} + +\def\placesaveins#1{% + \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname + {\box#1}% +} + +% eat @SAVE -- beware, all of them have catcode \other: +{ + \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) + \gdef\gobblesave @SAVE{} +} + +% initialization: +\def\newsaveins #1{% + \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% + \next +} +\def\newsaveinsX #1{% + \csname newbox\endcsname #1% + \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts + \checksaveins #1}% +} + +% initialize: +\let\checkinserts\empty +\newsaveins\footins +\newsaveins\margin + + +% @image. We use the macros from epsf.tex to support this. +% If epsf.tex is not installed and @image is used, we complain. +% +% Check for and read epsf.tex up front. If we read it only at @image +% time, we might be inside a group, and then its definitions would get +% undone and the next image would fail. +\openin 1 = epsf.tex +\ifeof 1 \else + % Do not bother showing banner with epsf.tex v2.7k (available in + % doc/epsf.tex and on ctan). + \def\epsfannounce{\toks0 = }% + \input epsf.tex +\fi +\closein 1 +% +% We will only complain once about lack of epsf.tex. +\newif\ifwarnednoepsf +\newhelp\noepsfhelp{epsf.tex must be installed for images to + work. It is also included in the Texinfo distribution, or you can get + it from ftp://tug.org/tex/epsf.tex.} +% +\def\image#1{% + \ifx\epsfbox\undefined + \ifwarnednoepsf \else + \errhelp = \noepsfhelp + \errmessage{epsf.tex not found, images will be ignored}% + \global\warnednoepsftrue + \fi + \else + \imagexxx #1,,,,,\finish + \fi +} +% +% Arguments to @image: +% #1 is (mandatory) image filename; we tack on .eps extension. +% #2 is (optional) width, #3 is (optional) height. +% #4 is (ignored optional) html alt text. +% #5 is (ignored optional) extension. +% #6 is just the usual extra ignored arg for parsing this stuff. +\newif\ifimagevmode +\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup + \catcode`\^^M = 5 % in case we're inside an example + \normalturnoffactive % allow _ et al. in names + % If the image is by itself, center it. + \ifvmode + \imagevmodetrue + \nobreak\bigskip + % Usually we'll have text after the image which will insert + % \parskip glue, so insert it here too to equalize the space + % above and below. + \nobreak\vskip\parskip + \nobreak + \line\bgroup + \fi + % + % Output the image. + \ifpdf + \dopdfimage{#1}{#2}{#3}% + \else + % \epsfbox itself resets \epsf?size at each figure. + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi + \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi + \epsfbox{#1.eps}% + \fi + % + \ifimagevmode \egroup \bigbreak \fi % space after the image +\endgroup} + + +% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, +% etc. We don't actually implement floating yet, we always include the +% float "here". But it seemed the best name for the future. +% +\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} + +% There may be a space before second and/or third parameter; delete it. +\def\eatcommaspace#1, {#1,} + +% #1 is the optional FLOATTYPE, the text label for this float, typically +% "Figure", "Table", "Example", etc. Can't contain commas. If omitted, +% this float will not be numbered and cannot be referred to. +% +% #2 is the optional xref label. Also must be present for the float to +% be referable. +% +% #3 is the optional positioning argument; for now, it is ignored. It +% will somehow specify the positions allowed to float to (here, top, bottom). +% +% We keep a separate counter for each FLOATTYPE, which we reset at each +% chapter-level command. +\let\resetallfloatnos=\empty +% +\def\dofloat#1,#2,#3,#4\finish{% + \let\thiscaption=\empty + \let\thisshortcaption=\empty + % + % don't lose footnotes inside @float. + % + % BEWARE: when the floats start float, we have to issue warning whenever an + % insert appears inside a float which could possibly float. --kasal, 26may04 + % + \startsavinginserts + % + % We can't be used inside a paragraph. + \par + % + \vtop\bgroup + \def\floattype{#1}% + \def\floatlabel{#2}% + \def\floatloc{#3}% we do nothing with this yet. + % + \ifx\floattype\empty + \let\safefloattype=\empty + \else + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + \fi + % + % If label is given but no type, we handle that as the empty type. + \ifx\floatlabel\empty \else + % We want each FLOATTYPE to be numbered separately (Figure 1, + % Table 1, Figure 2, ...). (And if no label, no number.) + % + \expandafter\getfloatno\csname\safefloattype floatno\endcsname + \global\advance\floatno by 1 + % + {% + % This magic value for \thissection is output by \setref as the + % XREFLABEL-title value. \xrefX uses it to distinguish float + % labels (which have a completely different output format) from + % node and anchor labels. And \xrdef uses it to construct the + % lists of floats. + % + \edef\thissection{\floatmagic=\safefloattype}% + \setref{\floatlabel}{Yfloat}% + }% + \fi + % + % start with \parskip glue, I guess. + \vskip\parskip + % + % Don't suppress indentation if a float happens to start a section. + \restorefirstparagraphindent +} + +% we have these possibilities: +% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap +% @float Foo,lbl & no caption: Foo 1.1 +% @float Foo & @caption{Cap}: Foo: Cap +% @float Foo & no caption: Foo +% @float ,lbl & Caption{Cap}: 1.1: Cap +% @float ,lbl & no caption: 1.1 +% @float & @caption{Cap}: Cap +% @float & no caption: +% +\def\Efloat{% + \let\floatident = \empty + % + % In all cases, if we have a float type, it comes first. + \ifx\floattype\empty \else \def\floatident{\floattype}\fi + % + % If we have an xref label, the number comes next. + \ifx\floatlabel\empty \else + \ifx\floattype\empty \else % if also had float type, need tie first. + \appendtomacro\floatident{\tie}% + \fi + % the number. + \appendtomacro\floatident{\chaplevelprefix\the\floatno}% + \fi + % + % Start the printed caption with what we've constructed in + % \floatident, but keep it separate; we need \floatident again. + \let\captionline = \floatident + % + \ifx\thiscaption\empty \else + \ifx\floatident\empty \else + \appendtomacro\captionline{: }% had ident, so need a colon between + \fi + % + % caption text. + \appendtomacro\captionline{\scanexp\thiscaption}% + \fi + % + % If we have anything to print, print it, with space before. + % Eventually this needs to become an \insert. + \ifx\captionline\empty \else + \vskip.5\parskip + \captionline + % + % Space below caption. + \vskip\parskip + \fi + % + % If have an xref label, write the list of floats info. Do this + % after the caption, to avoid chance of it being a breakpoint. + \ifx\floatlabel\empty \else + % Write the text that goes in the lof to the aux file as + % \floatlabel-lof. Besides \floatident, we include the short + % caption if specified, else the full caption if specified, else nothing. + {% + \atdummies + % + % since we read the caption text in the macro world, where ^^M + % is turned into a normal character, we have to scan it back, so + % we don't write the literal three characters "^^M" into the aux file. + \scanexp{% + \xdef\noexpand\gtemp{% + \ifx\thisshortcaption\empty + \thiscaption + \else + \thisshortcaption + \fi + }% + }% + \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident + \ifx\gtemp\empty \else : \gtemp \fi}}% + }% + \fi + \egroup % end of \vtop + % + % place the captured inserts + % + % BEWARE: when the floats start floating, we have to issue warning + % whenever an insert appears inside a float which could possibly + % float. --kasal, 26may04 + % + \checkinserts +} + +% Append the tokens #2 to the definition of macro #1, not expanding either. +% +\def\appendtomacro#1#2{% + \expandafter\def\expandafter#1\expandafter{#1#2}% +} + +% @caption, @shortcaption +% +\def\caption{\docaption\thiscaption} +\def\shortcaption{\docaption\thisshortcaption} +\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} +\def\defcaption#1#2{\egroup \def#1{#2}} + +% The parameter is the control sequence identifying the counter we are +% going to use. Create it if it doesn't exist and assign it to \floatno. +\def\getfloatno#1{% + \ifx#1\relax + % Haven't seen this figure type before. + \csname newcount\endcsname #1% + % + % Remember to reset this floatno at the next chap. + \expandafter\gdef\expandafter\resetallfloatnos + \expandafter{\resetallfloatnos #1=0 }% + \fi + \let\floatno#1% +} + +% \setref calls this to get the XREFLABEL-snt value. We want an @xref +% to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we +% first read the @float command. +% +\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% + +% Magic string used for the XREFLABEL-title value, so \xrefX can +% distinguish floats from other xref types. +\def\floatmagic{!!float!!} + +% #1 is the control sequence we are passed; we expand into a conditional +% which is true if #1 represents a float ref. That is, the magic +% \thissection value which we \setref above. +% +\def\iffloat#1{\expandafter\doiffloat#1==\finish} +% +% #1 is (maybe) the \floatmagic string. If so, #2 will be the +% (safe) float type for this float. We set \iffloattype to #2. +% +\def\doiffloat#1=#2=#3\finish{% + \def\temp{#1}% + \def\iffloattype{#2}% + \ifx\temp\floatmagic +} + +% @listoffloats FLOATTYPE - print a list of floats like a table of contents. +% +\parseargdef\listoffloats{% + \def\floattype{#1}% floattype + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + % + % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. + \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax + \ifhavexrefs + % if the user said @listoffloats foo but never @float foo. + \message{\linenumber No `\safefloattype' floats to list.}% + \fi + \else + \begingroup + \leftskip=\tocindent % indent these entries like a toc + \let\do=\listoffloatsdo + \csname floatlist\safefloattype\endcsname + \endgroup + \fi +} + +% This is called on each entry in a list of floats. We're passed the +% xref label, in the form LABEL-title, which is how we save it in the +% aux file. We strip off the -title and look up \XRLABEL-lof, which +% has the text we're supposed to typeset here. +% +% Figures without xref labels will not be included in the list (since +% they won't appear in the aux file). +% +\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} +\def\listoffloatsdoentry#1-title\finish{{% + % Can't fully expand XR#1-lof because it can contain anything. Just + % pass the control sequence. On the other hand, XR#1-pg is just the + % page number, and we want to fully expand that so we can get a link + % in pdf output. + \toksA = \expandafter{\csname XR#1-lof\endcsname}% + % + % use the same \entry macro we use to generate the TOC and index. + \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% + \writeentry +}} + +\message{localization,} +% and i18n. + +% @documentlanguage is usually given very early, just after +% @setfilename. If done too late, it may not override everything +% properly. Single argument is the language abbreviation. +% It would be nice if we could set up a hyphenation file here. +% +\parseargdef\documentlanguage{% + \tex % read txi-??.tex file in plain TeX. + % Read the file if it exists. + \openin 1 txi-#1.tex + \ifeof 1 + \errhelp = \nolanghelp + \errmessage{Cannot read language file txi-#1.tex}% + \else + \input txi-#1.tex + \fi + \closein 1 + \endgroup +} +\newhelp\nolanghelp{The given language definition file cannot be found or +is empty. Maybe you need to install it? In the current directory +should work if nowhere else does.} + + +% @documentencoding should change something in TeX eventually, most +% likely, but for now just recognize it. +\let\documentencoding = \comment + + +% Page size parameters. +% +\newdimen\defaultparindent \defaultparindent = 15pt + +\chapheadingskip = 15pt plus 4pt minus 2pt +\secheadingskip = 12pt plus 3pt minus 2pt +\subsecheadingskip = 9pt plus 2pt minus 2pt + +% Prevent underfull vbox error messages. +\vbadness = 10000 + +% Don't be so finicky about underfull hboxes, either. +\hbadness = 2000 + +% Following George Bush, just get rid of widows and orphans. +\widowpenalty=10000 +\clubpenalty=10000 + +% Use TeX 3.0's \emergencystretch to help line breaking, but if we're +% using an old version of TeX, don't do anything. We want the amount of +% stretch added to depend on the line length, hence the dependence on +% \hsize. We call this whenever the paper size is set. +% +\def\setemergencystretch{% + \ifx\emergencystretch\thisisundefined + % Allow us to assign to \emergencystretch anyway. + \def\emergencystretch{\dimen0}% + \else + \emergencystretch = .15\hsize + \fi +} + +% Parameters in order: 1) textheight; 2) textwidth; +% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; +% 7) physical page height; 8) physical page width. +% +% We also call \setleading{\textleading}, so the caller should define +% \textleading. The caller should also set \parskip. +% +\def\internalpagesizes#1#2#3#4#5#6#7#8{% + \voffset = #3\relax + \topskip = #6\relax + \splittopskip = \topskip + % + \vsize = #1\relax + \advance\vsize by \topskip + \outervsize = \vsize + \advance\outervsize by 2\topandbottommargin + \pageheight = \vsize + % + \hsize = #2\relax + \outerhsize = \hsize + \advance\outerhsize by 0.5in + \pagewidth = \hsize + % + \normaloffset = #4\relax + \bindingoffset = #5\relax + % + \ifpdf + \pdfpageheight #7\relax + \pdfpagewidth #8\relax + \fi + % + \setleading{\textleading} + % + \parindent = \defaultparindent + \setemergencystretch +} + +% @letterpaper (the default). +\def\letterpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % If page is nothing but text, make it come out even. + \internalpagesizes{46\baselineskip}{6in}% + {\voffset}{.25in}% + {\bindingoffset}{36pt}% + {11in}{8.5in}% +}} + +% Use @smallbook to reset parameters for 7x9.25 trim size. +\def\smallbook{{\globaldefs = 1 + \parskip = 2pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.5in}{5in}% + {\voffset}{.25in}% + {\bindingoffset}{16pt}% + {9.25in}{7in}% + % + \lispnarrowing = 0.3in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = .5cm +}} + +% Use @smallerbook to reset parameters for 6x9 trim size. +% (Just testing, parameters still in flux.) +\def\smallerbook{{\globaldefs = 1 + \parskip = 1.5pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.4in}{4.8in}% + {-.2in}{-.4in}% + {0pt}{14pt}% + {9in}{6in}% + % + \lispnarrowing = 0.25in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = .4cm +}} + +% Use @afourpaper to print on European A4 paper. +\def\afourpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % Double-side printing via postscript on Laserjet 4050 + % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. + % To change the settings for a different printer or situation, adjust + % \normaloffset until the front-side and back-side texts align. Then + % do the same for \bindingoffset. You can set these for testing in + % your texinfo source file like this: + % @tex + % \global\normaloffset = -6mm + % \global\bindingoffset = 10mm + % @end tex + \internalpagesizes{51\baselineskip}{160mm} + {\voffset}{\hoffset}% + {\bindingoffset}{44pt}% + {297mm}{210mm}% + % + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = 5mm +}} + +% Use @afivepaper to print on European A5 paper. +% From romildo@urano.iceb.ufop.br, 2 July 2000. +% He also recommends making @example and @lisp be small. +\def\afivepaper{{\globaldefs = 1 + \parskip = 2pt plus 1pt minus 0.1pt + \textleading = 12.5pt + % + \internalpagesizes{160mm}{120mm}% + {\voffset}{\hoffset}% + {\bindingoffset}{8pt}% + {210mm}{148mm}% + % + \lispnarrowing = 0.2in + \tolerance = 800 + \hfuzz = 1.2pt + \contentsrightmargin = 0pt + \defbodyindent = 2mm + \tableindent = 12mm +}} + +% A specific text layout, 24x15cm overall, intended for A4 paper. +\def\afourlatex{{\globaldefs = 1 + \afourpaper + \internalpagesizes{237mm}{150mm}% + {\voffset}{4.6mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + % + % Must explicitly reset to 0 because we call \afourpaper. + \globaldefs = 0 +}} + +% Use @afourwide to print on A4 paper in landscape format. +\def\afourwide{{\globaldefs = 1 + \afourpaper + \internalpagesizes{241mm}{165mm}% + {\voffset}{-2.95mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + \globaldefs = 0 +}} + +% @pagesizes TEXTHEIGHT[,TEXTWIDTH] +% Perhaps we should allow setting the margins, \topskip, \parskip, +% and/or leading, also. Or perhaps we should compute them somehow. +% +\parseargdef\pagesizes{\pagesizesyyy #1,,\finish} +\def\pagesizesyyy#1,#2,#3\finish{{% + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi + \globaldefs = 1 + % + \parskip = 3pt plus 2pt minus 1pt + \setleading{\textleading}% + % + \dimen0 = #1 + \advance\dimen0 by \voffset + % + \dimen2 = \hsize + \advance\dimen2 by \normaloffset + % + \internalpagesizes{#1}{\hsize}% + {\voffset}{\normaloffset}% + {\bindingoffset}{44pt}% + {\dimen0}{\dimen2}% +}} + +% Set default to letter. +% +\letterpaper + + +\message{and turning on texinfo input format.} + +% Define macros to output various characters with catcode for normal text. +\catcode`\"=\other +\catcode`\~=\other +\catcode`\^=\other +\catcode`\_=\other +\catcode`\|=\other +\catcode`\<=\other +\catcode`\>=\other +\catcode`\+=\other +\catcode`\$=\other +\def\normaldoublequote{"} +\def\normaltilde{~} +\def\normalcaret{^} +\def\normalunderscore{_} +\def\normalverticalbar{|} +\def\normalless{<} +\def\normalgreater{>} +\def\normalplus{+} +\def\normaldollar{$}%$ font-lock fix + +% This macro is used to make a character print one way in \tt +% (where it can probably be output as-is), and another way in other fonts, +% where something hairier probably needs to be done. +% +% #1 is what to print if we are indeed using \tt; #2 is what to print +% otherwise. Since all the Computer Modern typewriter fonts have zero +% interword stretch (and shrink), and it is reasonable to expect all +% typewriter fonts to have this, we can check that font parameter. +% +\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} + +% Same as above, but check for italic font. Actually this also catches +% non-italic slanted fonts since it is impossible to distinguish them from +% italic fonts. But since this is only used by $ and it uses \sl anyway +% this is not a problem. +\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} + +% Turn off all special characters except @ +% (and those which the user can use as if they were ordinary). +% Most of these we simply print from the \tt font, but for some, we can +% use math or other variants that look better in normal text. + +\catcode`\"=\active +\def\activedoublequote{{\tt\char34}} +\let"=\activedoublequote +\catcode`\~=\active +\def~{{\tt\char126}} +\chardef\hat=`\^ +\catcode`\^=\active +\def^{{\tt \hat}} + +\catcode`\_=\active +\def_{\ifusingtt\normalunderscore\_} +\let\realunder=_ +% Subroutine for the previous macro. +\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } + +\catcode`\|=\active +\def|{{\tt\char124}} +\chardef \less=`\< +\catcode`\<=\active +\def<{{\tt \less}} +\chardef \gtr=`\> +\catcode`\>=\active +\def>{{\tt \gtr}} +\catcode`\+=\active +\def+{{\tt \char 43}} +\catcode`\$=\active +\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix + +% If a .fmt file is being used, characters that might appear in a file +% name cannot be active until we have parsed the command line. +% So turn them off again, and have \everyjob (or @setfilename) turn them on. +% \otherifyactive is called near the end of this file. +\def\otherifyactive{\catcode`+=\other \catcode`\_=\other} + +% Used sometimes to turn off (effectively) the active characters even after +% parsing them. +\def\turnoffactive{% + \normalturnoffactive + \otherbackslash +} + +\catcode`\@=0 + +% \backslashcurfont outputs one backslash character in current font, +% as in \char`\\. +\global\chardef\backslashcurfont=`\\ +\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work + +% \realbackslash is an actual character `\' with catcode other, and +% \doublebackslash is two of them (for the pdf outlines). +{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} + +% In texinfo, backslash is an active character; it prints the backslash +% in fixed width font. +\catcode`\\=\active +@def@normalbackslash{{@tt@backslashcurfont}} +% On startup, @fixbackslash assigns: +% @let \ = @normalbackslash + +% \rawbackslash defines an active \ to do \backslashcurfont. +% \otherbackslash defines an active \ to be a literal `\' character with +% catcode other. +@gdef@rawbackslash{@let\=@backslashcurfont} +@gdef@otherbackslash{@let\=@realbackslash} + +% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of +% the literal character `\'. +% +@def@normalturnoffactive{% + @let\=@normalbackslash + @let"=@normaldoublequote + @let~=@normaltilde + @let^=@normalcaret + @let_=@normalunderscore + @let|=@normalverticalbar + @let<=@normalless + @let>=@normalgreater + @let+=@normalplus + @let$=@normaldollar %$ font-lock fix + @unsepspaces +} + +% Make _ and + \other characters, temporarily. +% This is canceled by @fixbackslash. +@otherifyactive + +% If a .fmt file is being used, we don't want the `\input texinfo' to show up. +% That is what \eatinput is for; after that, the `\' should revert to printing +% a backslash. +% +@gdef@eatinput input texinfo{@fixbackslash} +@global@let\ = @eatinput + +% On the other hand, perhaps the file did not have a `\input texinfo'. Then +% the first `\' in the file would cause an error. This macro tries to fix +% that, assuming it is called before the first `\' could plausibly occur. +% Also turn back on active characters that might appear in the input +% file name, in case not using a pre-dumped format. +% +@gdef@fixbackslash{% + @ifx\@eatinput @let\ = @normalbackslash @fi + @catcode`+=@active + @catcode`@_=@active +} + +% Say @foo, not \foo, in error messages. +@escapechar = `@@ + +% These look ok in all fonts, so just make them not special. +@catcode`@& = @other +@catcode`@# = @other +@catcode`@% = @other + + +@c Local variables: +@c eval: (add-hook 'write-file-hooks 'time-stamp) +@c page-delimiter: "^\\\\message" +@c time-stamp-start: "def\\\\texinfoversion{" +@c time-stamp-format: "%:y-%02m-%02d.%02H" +@c time-stamp-end: "}" +@c End: + +@c vim:sw=2: + +@ignore + arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 +@end ignore diff --git a/doc/unshar.1 b/doc/unshar.1 new file mode 100644 index 0000000..f356391 --- /dev/null +++ b/doc/unshar.1 @@ -0,0 +1,60 @@ +.TH UNSHAR 1 "September 10, 1995" +.SH NAME +unshar \- unpack a shar file +.SH SYNOPSIS +unshar [ options ] [ file ... ] +.SH DESCRIPTION +.PP +Unshar scans mail messages looking for the start of a shell archive. It +then passes the archive through a copy of the shell to unpack it. It +will accept multiple files. If no files are given, standard input is used. +.SH OPTIONS +.PP +Options have a one letter version starting with \- or a long version starting +with \-\-. The exception is \f2\-\-help\f1 and \f2\-\-version\f1, +which does not have a short version. +.IP "\f2\-\-version\f1" +Print the version number of the program on standard output, +then immediately exits. +.IP "\f2\-\-help\f1" +Print a help summary on standard output, then immediately exits. +.IP "\f2\-d\f1 DIRECTORY \f2\-\-directory=\f1DIRECTORY" +Change directory to DIRECTORY before unpacking any files. +.IP "\f2\-c\f1 \f2\-\-overwrite\f1" +Passed as an option to the shar file. Many shell archive scripts +(including those produced by `shar' 3.40 and newer) accepts a \f2\-c\f1 +argument to indicate that existing files should be overwritten. +.IP "\f2\-e\f1 \f2\-\-exit-0\f1" +This option exists mainly for people who collect many shell +archives into a single mail folder. With this option, `unshar' +isolates each different shell archive from the others which have +been put in the same file, unpacking each in turn, from the +beginning of the file towards its end. Its proper operation +relies on the fact that many shar files are terminated by a +`exit 0' at the beginning of a line. + +Option \f2\-e\f1 is internally equivalent to \f2\-E\f1 "exit 0". +.IP "\f2\-E\f1 STRING \f2\-\-split-at=\f1STRING" +This option works like \f2\-e\f1, but it allows you to specify the +string that separates archives if `exit 0' isn't appropriate. + +For example, noticing that most `.signatures' have a `\-\-' on a +line right before them, one can sometimes use `\f2\-\-split-at\f1=\-\-' for +splitting shell archives which lack the `exit 0' line at end. The +signature will then be skipped altogether with the headers of the +following message. +.IP "\f2\-f\f1 \f2\-\-force\f1" +The same as \f2\-c\f1. +.SH SEE ALSO +shar(1) +.SH DIAGNOSTICS +Any message from the shell may be displayed. +.SH AUTHORS +The shar and unshar programs is the collective work of many authors. +Many people contributed by reporting problems, suggesting +various improvements or submitting actual code. A list of +these people is in the THANKS file in the sharutils distribution. +.SH REPORTING BUGS +Report bugs to . Please put +.I sharutils +in the subject line. It helps to spot the message. diff --git a/doc/uuencode.1 b/doc/uuencode.1 new file mode 100644 index 0000000..456a1ad --- /dev/null +++ b/doc/uuencode.1 @@ -0,0 +1,138 @@ +'.\" Copyright (c) 1980, 1990 The Regents of the University of California. +'.\" All rights reserved. +'.\" +'.\" Redistribution and use in source and binary forms, with or without +'.\" modification, are permitted provided that the following conditions +'.\" are met: +'.\" 1. Redistributions of source code must retain the above copyright +'.\" notice, this list of conditions and the following disclaimer. +'.\" 2. Redistributions in binary form must reproduce the above copyright +'.\" notice, this list of conditions and the following disclaimer in the +'.\" documentation and/or other materials provided with the distribution. +'.\" 3. All advertising materials mentioning features or use of this software +'.\" must display the following acknowledgement: +'.\" This product includes software developed by the University of +'.\" California, Berkeley and its contributors. +'.\" 4. Neither the name of the University nor the names of its contributors +'.\" may be used to endorse or promote products derived from this software +'.\" without specific prior written permission. +'.\" +'.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +'.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +'.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +'.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +'.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +'.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +'.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +'.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +'.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +'.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +'.\" SUCH DAMAGE. +'.\" +'.\" Modified from +'.\" @(#)uuencode.1 6.9 (Berkeley) 4/23/91 +'.\" +.TH uuencode 1 +.SH NAME +uuencode, uudecode \- encode a binary file, or decode its representation +.SH SYNOPSIS +.B uuencode +[\-m] [ file ] name +.PP +.B uudecode +[-o outfile] [ file ]... +.SH DESCRIPTION +.I Uuencode +and +.I uudecode +are used to transmit binary files over transmission mediums +that do not support other than simple +ASCII +data. +.PP +.I Uuencode +reads +.I file +(or by default the standard input) and writes an encoded version +to the standard output. +The encoding uses only printing +ASCII +characters and includes the +mode of the file and the operand +.I name +for use by +.I uudecode. +If +.I name +is +.I /dev/stdout +the result will be written to standard output. By default the standard +UU encoding format will be used. If the option +.I \-m +is given on the command line +.B base64 +encoding is used instead. +.PP +.B Note: +.I uuencode +uses buffered input and assumes that it is not hand typed from a tty. +The consequence is that at a tty, you may need to hit Ctl-D several times +to terminate input. +.PP +.I Uudecode +transforms +uuencoded +.I files +(or by default, the standard input) into the original form. +The resulting file is named +.I name +(or +.I outfile +if the \-o option is given) +and will have the mode of the original file except that setuid +and execute bits are not retained. If +.I outfile +or +.I name +is /dev/stdout the result will be written to standard output. +.I Uudecode +ignores any leading and trailing lines. The program can automatically decide +which of the two supported encoding schemes are used. +.SH EXAMPLES +The following example packages up a source tree, compresses it, +uuencodes it and mails it to a user on another system. +When +.I uudecode +is run on the target system, the file ``src_tree.tar.Z'' will be +created which may then be uncompressed and extracted into the original +tree. +.PP +.IP +.NF +tar cf \- src_tree \&| compress \&| +uuencode src_tree.tar.Z \&| mail sys1!sys2!user +.FI +.LP +.SH SEE ALSO +compress(1), mail(1), uucp(1), uuencode(5) +.SH STANDARDS +This implementation is compliant with P1003.2b/D11. +.SH BUGS +If more than one file is given to +.I uudecode +and the \-o option is given or more than one +.I name +in the encoded files are the same the result is probably not what is expected. +.PP +The encoded form of the file is expanded by 37% for UU encoding and by 35% +for base64 encoding (3 bytes become 4 plus control information). +.SH REPORTING BUGS +Report bugs to . Please put +.I sharutils +or +.I uuencode +in the subject line. It helps to spot the message. +.SH HISTORY +The +.I uuencode +command appeared in BSD 4.0. diff --git a/doc/uuencode.5 b/doc/uuencode.5 new file mode 100644 index 0000000..852121d --- /dev/null +++ b/doc/uuencode.5 @@ -0,0 +1,90 @@ +'.\" Copyright (c) 1989, 1991 The Regents of the University of California. +'.\" All rights reserved. +'.\" +'.\" Redistribution and use in source and binary forms, with or without +'.\" modification, are permitted provided that the following conditions +'.\" are met: +'.\" 1. Redistributions of source code must retain the above copyright +'.\" notice, this list of conditions and the following disclaimer. +'.\" 2. Redistributions in binary form must reproduce the above copyright +'.\" notice, this list of conditions and the following disclaimer in the +'.\" documentation and/or other materials provided with the distribution. +'.\" 3. All advertising materials mentioning features or use of this software +'.\" must display the following acknowledgement: +'.\" This product includes software developed by the University of +'.\" California, Berkeley and its contributors. +'.\" 4. Neither the name of the University nor the names of its contributors +'.\" may be used to endorse or promote products derived from this software +'.\" without specific prior written permission. +'.\" +'.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +'.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +'.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +'.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +'.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +'.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +'.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +'.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +'.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +'.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +'.\" SUCH DAMAGE. +'.\" +'.\" @(#)uuencode.format.5 6.4 (Berkeley) 5/10/91 +'.\" +.TH UUENCODE 5 +.SH NAME +uuencode \- format of an encoded uuencode file +.SH DESCRIPTION +Files output by +uuencode(1) +consist of a header line, +followed by a number of body lines, +and a trailer line. +The +uudecode(1) +command +will ignore any lines preceding the header or +following the trailer. +Lines preceding a header must not, of course, +look like a header. +.PP +The header line is distinguished by having the first +6 characters +.I begin\ \& +The word +.I begin +is followed by a mode (in octal), +and a string which names the remote file. +A space separates the three items in the header line. +.PP +The body consists of a number of lines, each at most 62 characters +long (including the trailing newline). +These consist of a character count, +followed by encoded characters, +followed by a newline. +The character count is a single printing character, +and represents an integer, the number of bytes +the rest of the line represents. +Such integers are always in the range from 0 to 63 and can +be determined by subtracting the character space (octal 40) +from the character. +.PP +Groups of 3 bytes are stored in 4 characters, 6 bits per character. +All are offset by a space to make the characters printing. +The last line may be shorter than the normal 45 bytes. +If the size is not a multiple of 3, this fact can be determined +by the value of the count on the last line. +Extra garbage will be included to make the character count a multiple +of 4. +The body is terminated by a line with a count of zero. +This line consists of one ASCII space. +.PP +The trailer line consists of +.I end +on a line by itself. +.SH SEE ALSO +uuencode(1), uudecode(1), uusend(1), uucp(1), mail(1) +.SH HISTORY +The +.I uuencode +file format appeared in BSD 4.0 . diff --git a/doc/version.texi b/doc/version.texi new file mode 100644 index 0000000..5457c21 --- /dev/null +++ b/doc/version.texi @@ -0,0 +1,4 @@ +@set UPDATED 20 November 2005 +@set UPDATED-MONTH November 2005 +@set EDITION 4.7 +@set VERSION 4.7 diff --git a/install-sh b/install-sh new file mode 100755 index 0000000..4fbbae7 --- /dev/null +++ b/install-sh @@ -0,0 +1,507 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2006-10-14.15 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# 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. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment 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}" + +posix_glob= +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chmodcmd=$chmodprog +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= +dstarg= +no_target_directory= + +usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: +-c (ignored) +-d create directories instead of installing files. +-g GROUP $chgrpprog installed files to GROUP. +-m MODE $chmodprog installed files to MODE. +-o USER $chownprog installed files to USER. +-s $stripprog installed files. +-t DIRECTORY install into DIRECTORY. +-T report an error if DSTFILE is a directory. +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + shift + shift + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t) dstarg=$2 + shift + shift + continue;; + + -T) no_target_directory=true + shift + continue;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac +done + +if test $# -ne 0 && test -z "$dir_arg$dstarg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + trap '(exit $?); exit' 1 2 13 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix=/ ;; + -*) prefix=./ ;; + *) prefix= ;; + esac + + case $posix_glob in + '') + if (set -f) 2>/dev/null; then + posix_glob=true + else + posix_glob=false + fi ;; + esac + + oIFS=$IFS + IFS=/ + $posix_glob && set -f + set fnord $dstdir + shift + $posix_glob && set +f + IFS=$oIFS + + prefixes= + + for d + do + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # 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 $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dst"; then + $doit $rmcmd -f "$dst" 2>/dev/null \ + || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \ + && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\ + || { + echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + } || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/intl/ChangeLog b/intl/ChangeLog new file mode 100644 index 0000000..5229816 --- /dev/null +++ b/intl/ChangeLog @@ -0,0 +1,4 @@ +2005-05-23 GNU + + * Version 0.14.5 released. + diff --git a/intl/Makefile.in b/intl/Makefile.in new file mode 100644 index 0000000..060ef49 --- /dev/null +++ b/intl/Makefile.in @@ -0,0 +1,500 @@ +# Makefile for directory with message catalog handling library of GNU gettext +# Copyright (C) 1995-1998, 2000-2005 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# 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) $(MKINSTALLDIRS) + +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)\" -DIN_LIBINTL \ +-DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \ +-Dset_relocation_prefix=libintl_set_relocation_prefix \ +-Drelocate=libintl_relocate \ +-DDEPENDS_ON_LIBICONV=1 @DEFS@ +CPPFLAGS = @CPPFLAGS@ +CFLAGS = @CFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +HEADERS = \ + gmo.h \ + gettextP.h \ + hash-string.h \ + loadinfo.h \ + plural-exp.h \ + eval-plural.h \ + localcharset.h \ + relocatable.h \ + xsize.h \ + printf-args.h printf-args.c \ + printf-parse.h wprintf-parse.h printf-parse.c \ + vasnprintf.h vasnwprintf.h vasnprintf.c \ + os2compat.h \ + libgnuintl.h.in +SOURCES = \ + 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 \ + plural-exp.c \ + localcharset.c \ + relocatable.c \ + langprefs.c \ + localename.c \ + log.c \ + printf.c \ + osdep.c \ + os2compat.c \ + intl-compat.c +OBJECTS = \ + 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 \ + plural-exp.$lo \ + localcharset.$lo \ + relocatable.$lo \ + langprefs.$lo \ + localename.$lo \ + log.$lo \ + printf.$lo \ + osdep.$lo \ + 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 = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc \ +libgnuintl.h_vms Makefile.vms \ +libgnuintl.h.msvc-static libgnuintl.h.msvc-shared README.woe32 Makefile.msvc +DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \ +COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h + +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) @LTLIBICONV@ @INTL_MACOSX_LIBS@ $(LIBS) -lc \ + -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \ + -rpath $(libdir) \ + -no-undefined + +# 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=7 +LTV_REVISION=3 +LTV_AGE=4 + +.SUFFIXES: +.SUFFIXES: .c .y .o .lo .sin .sed + +.c.o: + $(COMPILE) $< + +.y.c: + $(YACC) $(YFLAGS) --output $@ $< + rm -f $*.h + +bindtextdom.lo: $(srcdir)/bindtextdom.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/bindtextdom.c +dcgettext.lo: $(srcdir)/dcgettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcgettext.c +dgettext.lo: $(srcdir)/dgettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dgettext.c +gettext.lo: $(srcdir)/gettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/gettext.c +finddomain.lo: $(srcdir)/finddomain.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/finddomain.c +loadmsgcat.lo: $(srcdir)/loadmsgcat.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/loadmsgcat.c +localealias.lo: $(srcdir)/localealias.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localealias.c +textdomain.lo: $(srcdir)/textdomain.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/textdomain.c +l10nflist.lo: $(srcdir)/l10nflist.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/l10nflist.c +explodename.lo: $(srcdir)/explodename.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/explodename.c +dcigettext.lo: $(srcdir)/dcigettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcigettext.c +dcngettext.lo: $(srcdir)/dcngettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcngettext.c +dngettext.lo: $(srcdir)/dngettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dngettext.c +ngettext.lo: $(srcdir)/ngettext.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/ngettext.c +plural.lo: $(srcdir)/plural.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural.c +plural-exp.lo: $(srcdir)/plural-exp.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural-exp.c +localcharset.lo: $(srcdir)/localcharset.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localcharset.c +relocatable.lo: $(srcdir)/relocatable.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/relocatable.c +langprefs.lo: $(srcdir)/langprefs.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/langprefs.c +localename.lo: $(srcdir)/localename.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localename.c +log.lo: $(srcdir)/log.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/log.c +printf.lo: $(srcdir)/printf.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/printf.c +osdep.lo: $(srcdir)/osdep.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/osdep.c +intl-compat.lo: $(srcdir)/intl-compat.c + $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/intl-compat.c + +ref-add.sed: $(srcdir)/ref-add.sin + sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-add.sin > t-ref-add.sed + mv t-ref-add.sed ref-add.sed +ref-del.sed: $(srcdir)/ref-del.sin + sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-del.sin > t-ref-del.sed + mv t-ref-del.sed ref-del.sed + +INCLUDES = -I. -I$(srcdir) -I.. + +libgnuintl.h: $(srcdir)/libgnuintl.h.in + sed -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \ + -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \ + -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \ + -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \ + < $(srcdir)/libgnuintl.h.in > libgnuintl.h + +libintl.h: libgnuintl.h + cp libgnuintl.h libintl.h + +charset.alias: $(srcdir)/config.charset + $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ + mv t-$@ $@ + +check: all + +# 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-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test '@USE_INCLUDED_LIBINTL@' = yes; 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; \ + if test "@RELOCATABLE@" = yes; then \ + dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < $(DESTDIR)$(libdir)/libintl.la | sed -e "s,^',," -e "s,'\$$,,"`; \ + if test -n "$$dependencies"; then \ + rm -f $(DESTDIR)$(libdir)/libintl.la; \ + fi; \ + fi; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test '@USE_INCLUDED_LIBINTL@' = no \ + && test @GLIBC2@ != no; then \ + $(mkinstalldirs) $(DESTDIR)$(libdir); \ + $(LIBTOOL) --mode=install \ + $(INSTALL_DATA) libgnuintl.$la $(DESTDIR)$(libdir)/libgnuintl.$la; \ + rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + $(INSTALL_DATA) $(DESTDIR)$(libdir)/libgnuintl.so $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + $(LIBTOOL) --mode=uninstall \ + rm -f $(DESTDIR)$(libdir)/libgnuintl.$la; \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + test @GLIBC21@ != no || $(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-tools"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \ + $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \ + dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(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 + +install-strip: install + +installdirs: + if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test '@USE_INCLUDED_LIBINTL@' = yes; then \ + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test '@USE_INCLUDED_LIBINTL@' = no \ + && test @GLIBC2@ != no; then \ + $(mkinstalldirs) $(DESTDIR)$(libdir); \ + else \ + : ; \ + fi + if test '@USE_INCLUDED_LIBINTL@' = yes; then \ + test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \ + $(mkinstalldirs) $(DESTDIR)$(localedir); \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ + && test '@USE_INCLUDED_LIBINTL@' = yes; then \ + rm -f $(DESTDIR)$(includedir)/libintl.h; \ + $(LIBTOOL) --mode=uninstall \ + rm -f $(DESTDIR)$(libdir)/libintl.$la; \ + else \ + : ; \ + fi + if test "$(PACKAGE)" = "gettext-tools" \ + && test '@USE_INCLUDED_LIBINTL@' = no \ + && test @GLIBC2@ != no; then \ + rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ + 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-tools"; then \ + for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +info dvi ps pdf html: + +$(OBJECTS): ../config.h libgnuintl.h +bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: $(srcdir)/gettextP.h $(srcdir)/gmo.h $(srcdir)/loadinfo.h +dcigettext.$lo loadmsgcat.$lo: $(srcdir)/hash-string.h +explodename.$lo l10nflist.$lo: $(srcdir)/loadinfo.h +dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)/plural-exp.h +dcigettext.$lo: $(srcdir)/eval-plural.h +localcharset.$lo: $(srcdir)/localcharset.h +localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h +printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c + +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) + +ctags: CTAGS + +CTAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && ctags -o $$here/CTAGS $(HEADERS) $(SOURCES) + +id: ID + +ID: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) + + +mostlyclean: + rm -f *.a *.la *.o *.obj *.lo core core.* + rm -f libgnuintl.h 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-runtime" || test "$(PACKAGE)" = "gettext-tools"; 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-tools"; then \ + : ; \ + else \ + if test "$(PACKAGE)" = "gettext-runtime"; 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; \ + cp -p $$dir/$$file $(distdir) || test $$file = Makefile.in || exit 1; \ + done; \ + fi + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status +# This would be more efficient, but doesn't work any more with autoconf-2.57, +# when AC_CONFIG_FILES([intl/Makefile:somedir/Makefile.in]) is used. +# cd $(top_builddir) && 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..ea89761 --- /dev/null +++ b/intl/VERSION @@ -0,0 +1 @@ +GNU gettext library from gettext-0.14.5 diff --git a/intl/bindtextdom.c b/intl/bindtextdom.c new file mode 100644 index 0000000..7a26062 --- /dev/null +++ b/intl/bindtextdom.c @@ -0,0 +1,363 @@ +/* Implementation of the bindtextdomain(3) function + Copyright (C) 1995-1998, 2000-2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + 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 libintl_nl_default_dirname +# define _nl_domain_bindings libintl_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[]; +#ifdef _LIBC +extern const char _nl_default_dirname_internal[] attribute_hidden; +#else +# define INTUSE(name) name +#endif + +/* 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 attribute_hidden) + + +/* 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 libintl_bindtextdomain +# define BIND_TEXTDOMAIN_CODESET libintl_bind_textdomain_codeset +#endif + +/* 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 (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, INTUSE(_nl_default_dirname)) == 0) + result = (char *) INTUSE(_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 != INTUSE(_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 = INTUSE(_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 = INTUSE(_nl_default_dirname); + else + { + if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0) + dirname = INTUSE(_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 *) INTUSE(_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 != INTUSE(_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 (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 (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..9090c80 --- /dev/null +++ b/intl/config.charset @@ -0,0 +1,638 @@ +#! /bin/sh +# Output a system dependent table of character encoding aliases. +# +# Copyright (C) 2000-2004 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# 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 MIME? used by which systems +# ASCII, ANSI_X3.4-1968 glibc solaris freebsd darwin +# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd darwin +# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd darwin +# ISO-8859-3 Y glibc solaris +# ISO-8859-4 Y osf solaris freebsd darwin +# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd darwin +# ISO-8859-6 Y glibc aix hpux solaris +# ISO-8859-7 Y glibc aix hpux irix osf solaris darwin +# ISO-8859-8 Y glibc aix hpux osf solaris +# ISO-8859-9 Y glibc aix hpux irix osf solaris darwin +# ISO-8859-13 glibc darwin +# ISO-8859-14 glibc +# ISO-8859-15 glibc aix osf solaris freebsd darwin +# KOI8-R Y glibc solaris freebsd darwin +# KOI8-U Y glibc freebsd darwin +# KOI8-T glibc +# 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 darwin dos +# CP869 dos +# CP874 woe32 dos +# CP922 aix +# CP932 aix woe32 dos +# CP943 aix +# CP949 osf woe32 dos +# CP950 woe32 dos +# CP1046 aix +# CP1124 aix +# CP1125 dos +# CP1129 aix +# CP1250 woe32 +# CP1251 glibc solaris darwin woe32 +# CP1252 aix woe32 +# CP1253 woe32 +# CP1254 woe32 +# CP1255 glibc woe32 +# CP1256 woe32 +# CP1257 woe32 +# GB2312 Y glibc aix hpux irix solaris freebsd darwin +# EUC-JP Y glibc aix hpux irix osf solaris freebsd darwin +# EUC-KR Y glibc aix hpux irix osf solaris freebsd darwin +# EUC-TW glibc aix hpux irix osf solaris +# BIG5 Y glibc aix hpux osf solaris freebsd darwin +# BIG5-HKSCS glibc solaris +# GBK glibc aix osf solaris woe32 dos +# GB18030 glibc solaris +# SHIFT_JIS Y hpux osf solaris freebsd darwin +# JOHAB glibc solaris woe32 +# TIS-620 glibc aix hpux osf solaris +# VISCII Y glibc +# TCVN5712-1 glibc +# GEORGIAN-PS glibc +# 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 Y glibc aix hpux osf solaris darwin +# +# 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-gnulibc1*) + # Linux libc5 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 "POSIX ASCII" + for l in af af_ZA ca ca_ES da da_DK de de_AT de_BE de_CH de_DE de_LU \ + en en_AU en_BW en_CA en_DK en_GB en_IE en_NZ en_US en_ZA \ + en_ZW es es_AR es_BO es_CL es_CO es_DO es_EC es_ES es_GT \ + es_HN es_MX es_PA es_PE es_PY es_SV es_US es_UY es_VE et \ + et_EE eu eu_ES fi fi_FI fo fo_FO fr fr_BE fr_CA fr_CH fr_FR \ + fr_LU ga ga_IE gl gl_ES id id_ID in in_ID is is_IS it it_CH \ + it_IT kl kl_GL nl nl_BE nl_NL no no_NO pt pt_BR pt_PT sv \ + sv_FI sv_SE; do + echo "$l ISO-8859-1" + echo "$l.iso-8859-1 ISO-8859-1" + echo "$l.iso-8859-15 ISO-8859-15" + echo "$l.iso-8859-15@euro ISO-8859-15" + echo "$l@euro ISO-8859-15" + echo "$l.cp-437 CP437" + echo "$l.cp-850 CP850" + echo "$l.cp-1252 CP1252" + echo "$l.cp-1252@euro CP1252" + #echo "$l.atari-st ATARI-ST" # not a commonly used encoding + echo "$l.utf-8 UTF-8" + echo "$l.utf-8@euro UTF-8" + done + for l in cs cs_CZ hr hr_HR hu hu_HU pl pl_PL ro ro_RO sk sk_SK sl \ + sl_SI sr sr_CS sr_YU; do + echo "$l ISO-8859-2" + echo "$l.iso-8859-2 ISO-8859-2" + echo "$l.cp-852 CP852" + echo "$l.cp-1250 CP1250" + echo "$l.utf-8 UTF-8" + done + for l in mk mk_MK ru ru_RU; do + echo "$l ISO-8859-5" + echo "$l.iso-8859-5 ISO-8859-5" + echo "$l.koi8-r KOI8-R" + echo "$l.cp-866 CP866" + echo "$l.cp-1251 CP1251" + echo "$l.utf-8 UTF-8" + done + for l in ar ar_SA; do + echo "$l ISO-8859-6" + echo "$l.iso-8859-6 ISO-8859-6" + echo "$l.cp-864 CP864" + #echo "$l.cp-868 CP868" # not a commonly used encoding + echo "$l.cp-1256 CP1256" + echo "$l.utf-8 UTF-8" + done + for l in el el_GR gr gr_GR; do + echo "$l ISO-8859-7" + echo "$l.iso-8859-7 ISO-8859-7" + echo "$l.cp-869 CP869" + echo "$l.cp-1253 CP1253" + echo "$l.cp-1253@euro CP1253" + echo "$l.utf-8 UTF-8" + echo "$l.utf-8@euro UTF-8" + done + for l in he he_IL iw iw_IL; do + echo "$l ISO-8859-8" + echo "$l.iso-8859-8 ISO-8859-8" + echo "$l.cp-862 CP862" + echo "$l.cp-1255 CP1255" + echo "$l.utf-8 UTF-8" + done + for l in tr tr_TR; do + echo "$l ISO-8859-9" + echo "$l.iso-8859-9 ISO-8859-9" + echo "$l.cp-857 CP857" + echo "$l.cp-1254 CP1254" + echo "$l.utf-8 UTF-8" + done + for l in lt lt_LT lv lv_LV; do + #echo "$l BALTIC" # not a commonly used encoding, wrong encoding name + echo "$l ISO-8859-13" + done + for l in ru_UA uk uk_UA; do + echo "$l KOI8-U" + done + for l in zh zh_CN; do + #echo "$l GB_2312-80" # not a commonly used encoding, wrong encoding name + echo "$l GB2312" + done + for l in ja ja_JP ja_JP.EUC; do + echo "$l EUC-JP" + done + for l in ko ko_KR; do + echo "$l EUC-KR" + done + for l in th th_TH; do + echo "$l TIS-620" + done + for l in fa fa_IR; do + #echo "$l ISIRI-3342" # a broken encoding + echo "$l.utf-8 UTF-8" + done + ;; + 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 SHIFT_JIS" + 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 SHIFT_JIS" + 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-3 ISO-8859-3" + 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 "ansi-1251 CP1251" + echo "BIG5 BIG5" + echo "Big5-HKSCS BIG5-HKSCS" + echo "gb2312 GB2312" + echo "GBK GBK" + echo "GB18030 GB18030" + echo "cns11643 EUC-TW" + echo "5601 EUC-KR" + echo "ko_KR.johap92 JOHAB" + echo "eucJP EUC-JP" + echo "PCK SHIFT_JIS" + echo "TIS620.2533 TIS-620" + #echo "sun_eu_greek ?" # what is this? + echo "UTF-8 UTF-8" + ;; + freebsd* | os2*) + # FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + # Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just + # reuse FreeBSD's locale data for OS/2. + 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 SHIFT_JIS" + echo "ja_JP.Shift_JIS SHIFT_JIS" + echo "ko_KR.EUC EUC-KR" + ;; + netbsd*) + 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-15 ISO-8859-15" + echo "eucCN GB2312" + echo "eucJP EUC-JP" + echo "eucKR EUC-KR" + echo "eucTW EUC-TW" + echo "BIG5 BIG5" + echo "SJIS SHIFT_JIS" + ;; + darwin[56]*) + # Darwin 6.8 doesn't have nl_langinfo(CODESET); therefore + # localcharset.c falls back to using the full locale name + # from the environment variables. + echo "C ASCII" + for l in en_AU en_CA en_GB en_US la_LN; do + echo "$l.US-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 nl_BE \ + nl_NL no_NO pt_PT sv_SE; do + echo "$l ISO-8859-1" + echo "$l.ISO8859-1 ISO-8859-1" + echo "$l.ISO8859-15 ISO-8859-15" + done + for l in la_LN; do + echo "$l.ISO8859-1 ISO-8859-1" + echo "$l.ISO8859-15 ISO-8859-15" + done + for l in cs_CZ hr_HR hu_HU la_LN pl_PL sl_SI; do + echo "$l.ISO8859-2 ISO-8859-2" + done + for l in la_LN lt_LT; do + echo "$l.ISO8859-4 ISO-8859-4" + done + for l in ru_RU; do + echo "$l.KOI8-R KOI8-R" + echo "$l.ISO8859-5 ISO-8859-5" + echo "$l.CP866 CP866" + done + for l in bg_BG; do + echo "$l.CP1251 CP1251" + 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 SHIFT_JIS" + echo "ko_KR.EUC EUC-KR" + ;; + darwin*) + # Darwin 7.5 has nl_langinfo(CODESET), but it is useless: + # - It returns the empty string when LANG is set to a locale of the + # form ll_CC, although ll_CC/LC_CTYPE is a symlink to an UTF-8 + # LC_CTYPE file. + # - The environment variables LANG, LC_CTYPE, LC_ALL are not set by + # the system; nl_langinfo(CODESET) returns "US-ASCII" in this case. + # - The documentation says: + # "... all code that calls BSD system routines should ensure + # that the const *char parameters of these routines are in UTF-8 + # encoding. All BSD system functions expect their string + # parameters to be in UTF-8 encoding and nothing else." + # It also says + # "An additional caveat is that string parameters for files, + # paths, and other file-system entities must be in canonical + # UTF-8. In a canonical UTF-8 Unicode string, all decomposable + # characters are decomposed ..." + # but this is not true: You can pass non-decomposed UTF-8 strings + # to file system functions, and it is the OS which will convert + # them to decomposed UTF-8 before accessing the file system. + # - The Apple Terminal application displays UTF-8 by default. + # - However, other applications are free to use different encodings: + # - xterm uses ISO-8859-1 by default. + # - TextEdit uses MacRoman by default. + # We prefer UTF-8 over decomposed UTF-8-MAC because one should + # minimize the use of decomposed Unicode. Unfortunately, through the + # Darwin file system, decomposed UTF-8 strings are leaked into user + # space nevertheless. + echo "* UTF-8" + ;; + 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_CS 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 CP866" + echo "ru_RU CP866" + echo "uk CP1125" + echo "uk_UA CP1125" + # 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..c2a63f0 --- /dev/null +++ b/intl/dcgettext.c @@ -0,0 +1,56 @@ +/* Implementation of the dcgettext(3) function. + Copyright (C) 1995-1999, 2000-2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + 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 libintl_dcgettext +# define DCIGETTEXT libintl_dcigettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCGETTEXT (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. */ +INTDEF(__dcgettext) +weak_alias (__dcgettext, dcgettext); +#endif diff --git a/intl/dcigettext.c b/intl/dcigettext.c new file mode 100644 index 0000000..c7f4506 --- /dev/null +++ b/intl/dcigettext.c @@ -0,0 +1,1258 @@ +/* Implementation of the internal dcigettext function. + Copyright (C) 1995-1999, 2000-2005 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + 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 +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# 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 defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include + +#ifdef _LIBC + /* Guess whether integer division by zero raises signal SIGFPE. + Set to 1 only if you know for sure. In case of doubt, set to 0. */ +# if defined __alpha__ || defined __arm__ || defined __i386__ \ + || defined __m68k__ || defined __s390__ +# define INTDIV0_RAISES_SIGFPE 1 +# else +# define INTDIV0_RAISES_SIGFPE 0 +# endif +#endif +#if !INTDIV0_RAISES_SIGFPE +# include +#endif + +#if defined HAVE_SYS_PARAM_H || defined _LIBC +# include +#endif + +#include "gettextP.h" +#include "plural-exp.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 libintl_nl_default_default_domain +# define _nl_current_default_domain libintl_nl_current_default_domain +# define _nl_default_dirname libintl_nl_default_dirname +# define _nl_domain_bindings libintl_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 +# if VMS +# define getcwd(buf, max) (getcwd) (buf, max, 0) +# else +char *getcwd (); +# endif +# endif +# ifndef HAVE_STPCPY +static char *stpcpy (char *dest, const char *src); +# endif +# ifndef HAVE_MEMPCPY +static void *mempcpy (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 __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, 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 + +/* 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 (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 + +#ifndef INTVARDEF +# define INTVARDEF(name) +#endif +#ifndef INTUSE +# define INTUSE(name) name +#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[] attribute_hidden = "messages"; + +/* Value used as the default domain for gettext(3). */ +const char *_nl_current_default_domain attribute_hidden + = _nl_default_default_domain; + +/* Contains the default location of the message catalogs. */ +#if defined __EMX__ +extern const char _nl_default_dirname[]; +#else +const char _nl_default_dirname[] = LOCALEDIR; +INTVARDEF (_nl_default_dirname) +#endif + +/* List with bindings of specific domains created by bindtextdomain() + calls. */ +struct binding *_nl_domain_bindings; + +/* Prototypes for local functions. */ +static char *plural_lookup (struct loaded_l10nfile *domain, + unsigned long int n, + const char *translation, size_t translation_len) + internal_function; +static const char *guess_category_value (int category, + const char *categoryname) + internal_function; +#ifdef _LIBC +# include "../locale/localeinfo.h" +# define category_to_name(category) _nl_category_names[category] +#else +static const char *category_to_name (int category) internal_function; +#endif + + +/* 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 freea(p) /* nothing */ +# 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->address); \ + free (old); \ + } \ + } while (0) +# undef alloca +# define alloca(size) (malloc (size)) +# define freea(p) free (p) +#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 libintl_dcigettext +#endif + +/* Lock variable to protect the global data in the gettext implementation. */ +#ifdef _LIBC +__libc_rwlock_define_initialized (, _nl_state_lock attribute_hidden) +#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 + +/* Get the function to evaluate the plural expression. */ +#include "eval-plural.h" + +/* 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 (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; + +#ifdef _LIBC + if (category < 0 || category >= __LC_LAST || category == LC_ALL) + /* Bogus. */ + return (plural == 0 + ? (char *) msgid1 + /* Use the Germanic plural rule. */ + : n == 1 ? (char *) msgid1 : (char *) msgid2); +#endif + + __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; + + /* OS/2 specific: backward compatibility with older libintl versions */ +#ifdef LC_MESSAGES_COMPAT + if (category == LC_MESSAGES_COMPAT) + category = LC_MESSAGES; +#endif + +#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); + freea (search); + 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 *) INTUSE(_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. */ + goto return_untranslated; + + 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) + break; + + /* 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); +#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 + __set_errno (saved_errno); + + /* Now deal with plural. */ + if (plural) + retval = plural_lookup (domain, n, retval, retlen); + + __libc_rwlock_unlock (_nl_state_lock); + return retval; + } + } + } + + return_untranslated: + /* Return the untranslated MSGID. */ + FREE_BLOCKS (block_list); + __libc_rwlock_unlock (_nl_state_lock); +#ifndef _LIBC + if (!ENABLE_SECURE) + { + extern void _nl_log_untranslated (const char *logfilename, + const char *domainname, + const char *msgid1, const char *msgid2, + int plural); + const char *logfilename = getenv ("GETTEXT_LOG_UNTRANSLATED"); + + if (logfilename != NULL && logfilename[0] != '\0') + _nl_log_untranslated (logfilename, domainname, msgid1, msgid2, plural); + } +#endif + __set_errno (saved_errno); + return (plural == 0 + ? (char *) msgid1 + /* Use the Germanic plural rule. */ + : n == 1 ? (char *) msgid1 : (char *) msgid2); +} + + +char * +internal_function +_nl_find_msg (struct loaded_l10nfile *domain_file, + struct binding *domainbinding, const char *msgid, + size_t *lengthp) +{ + struct loaded_domain *domain; + nls_uint32 nstrings; + 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; + + nstrings = domain->nstrings; + + /* Locate the MSGID and its translation. */ + if (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_hash_tab, domain->hash_tab[idx]); + + if (nstr == 0) + /* Hash table entry is empty. */ + return NULL; + + nstr--; + + /* Compare msgid with the original string at index nstr. + We compare the lengths with >=, not ==, because plural entries + are represented by strings with an embedded NUL. */ + if (nstr < nstrings + ? W (domain->must_swap, domain->orig_tab[nstr].length) >= len + && (strcmp (msgid, + domain->data + W (domain->must_swap, + domain->orig_tab[nstr].offset)) + == 0) + : domain->orig_sysdep_tab[nstr - nstrings].length > len + && (strcmp (msgid, + domain->orig_sysdep_tab[nstr - nstrings].pointer) + == 0)) + { + act = nstr; + 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 = 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. */ + if (act < nstrings) + { + result = (char *) + (domain->data + W (domain->must_swap, domain->trans_tab[act].offset)); + resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1; + } + else + { + result = (char *) domain->trans_sysdep_tab[act - nstrings].pointer; + resultlen = domain->trans_sysdep_tab[act - nstrings].length; + } + +#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 (nstrings + domain->n_sysdep_strings, + 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 (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; +} + +#ifndef _LIBC +/* Return string representation of locale CATEGORY. */ +static const char * +internal_function +category_to_name (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; +} +#endif + +/* Guess value of current locale from value of the environment variables + or system-dependent defaults. */ +static const char * +internal_function +guess_category_value (int category, const char *categoryname) +{ + const char *language; + const char *locale; +#ifndef _LIBC + const char *language_default; + int locale_defaulted; +#endif + + /* We use the settings in the following order: + 1. The value of the environment variable 'LANGUAGE'. This is a GNU + extension. Its value can be a colon-separated list of locale names. + 2. The value of the environment variable 'LC_ALL', 'LC_xxx', or 'LANG'. + More precisely, the first among these that is set to a non-empty value. + This is how POSIX specifies it. The value is a single locale name. + 3. A system-dependent preference list of languages. Its value can be a + colon-separated list of locale names. + 4. A system-dependent default locale name. + This way: + - System-dependent settings can be overridden by environment variables. + - If the system provides both a list of languages and a default locale, + the former is used. */ + + /* Fetch the locale name, through the POSIX method of looking to `LC_ALL', + `LC_xxx', and `LANG'. On some systems this can be done by the + `setlocale' function itself. */ +#ifdef _LIBC + locale = __current_locale_name (category); +#else + locale = _nl_locale_name_posix (category, categoryname); + locale_defaulted = 0; + if (locale == NULL) + { + locale = _nl_locale_name_default (); + locale_defaulted = 1; + } +#endif + + /* Ignore LANGUAGE and its system-dependent analogon if the locale is set + to "C" because + 1. "C" locale usually uses the ASCII encoding, and most international + messages use non-ASCII characters. These characters get displayed + as question marks (if using glibc's iconv()) or as invalid 8-bit + characters (because other iconv()s refuse to convert most non-ASCII + characters to ASCII). In any case, the output is ugly. + 2. The precise output of some programs in the "C" locale is specified + by POSIX and should not depend on environment variables like + "LANGUAGE" or system-dependent information. We allow such programs + to use gettext(). */ + if (strcmp (locale, "C") == 0) + return locale; + + /* The highest priority value is the value of the 'LANGUAGE' environment + variable. */ + language = getenv ("LANGUAGE"); + if (language != NULL && language[0] != '\0') + return language; +#ifndef _LIBC + /* The next priority value is the locale name, if not defaulted. */ + if (locale_defaulted) + { + /* The next priority value is the default language preferences list. */ + language_default = _nl_language_preferences_default (); + if (language_default != NULL) + return language_default; + } + /* The least priority value is the locale name, if defaulted. */ +#endif + return locale; +} + +/* @@ 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 (char *dest, const char *src) +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif + +#if !_LIBC && !HAVE_MEMPCPY +static void * +mempcpy (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. */ +libc_freeres_fn (free_mem) +{ + void *old; + + while (_nl_domain_bindings != NULL) + { + struct binding *oldp = _nl_domain_bindings; + _nl_domain_bindings = _nl_domain_bindings->next; + if (oldp->dirname != INTUSE(_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); + } +} +#endif diff --git a/intl/dcngettext.c b/intl/dcngettext.c new file mode 100644 index 0000000..eb36833 --- /dev/null +++ b/intl/dcngettext.c @@ -0,0 +1,57 @@ +/* Implementation of the dcngettext(3) function. + Copyright (C) 1995-1999, 2000-2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + 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 libintl_dcngettext +# define DCIGETTEXT libintl_dcigettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCNGETTEXT (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..9b0d0de --- /dev/null +++ b/intl/dgettext.c @@ -0,0 +1,58 @@ +/* Implementation of the dgettext(3) function. + Copyright (C) 1995-1997, 2000-2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" + +#include + +#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 INTUSE(__dcgettext) +#else +# define DGETTEXT libintl_dgettext +# define DCGETTEXT libintl_dcgettext +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale. */ +char * +DGETTEXT (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..3278438 --- /dev/null +++ b/intl/dngettext.c @@ -0,0 +1,59 @@ +/* Implementation of the dngettext(3) function. + Copyright (C) 1995-1997, 2000-2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" + +#include + +#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 libintl_dngettext +# define DCNGETTEXT libintl_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 (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/eval-plural.h b/intl/eval-plural.h new file mode 100644 index 0000000..dacd003 --- /dev/null +++ b/intl/eval-plural.h @@ -0,0 +1,108 @@ +/* Plural expression evaluation. + Copyright (C) 2000-2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef STATIC +#define STATIC static +#endif + +/* Evaluate the plural expression and return an index value. */ +STATIC +unsigned long int +internal_function +plural_eval (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: +#if !INTDIV0_RAISES_SIGFPE + if (rightarg == 0) + raise (SIGFPE); +#endif + return leftarg / rightarg; + case module: +#if !INTDIV0_RAISES_SIGFPE + if (rightarg == 0) + raise (SIGFPE); +#endif + 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; +} diff --git a/intl/explodename.c b/intl/explodename.c new file mode 100644 index 0000000..1361418 --- /dev/null +++ b/intl/explodename.c @@ -0,0 +1,185 @@ +/* Copyright (C) 1995-1998, 2000-2001, 2003 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + 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 (const char *name) +{ + while (name[0] != '\0' && name[0] != '_' && name[0] != '@' + && name[0] != '+' && name[0] != ',') + ++name; + + return (char *) name; +} + + +int +_nl_explode_name (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..498f858 --- /dev/null +++ b/intl/finddomain.c @@ -0,0 +1,192 @@ +/* Handle list of needed message catalogs + Copyright (C) 1995-1999, 2000-2001, 2003 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + 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 (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 +libc_freeres_fn (free_mem) +{ + 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); + } +} +#endif diff --git a/intl/gettext.c b/intl/gettext.c new file mode 100644 index 0000000..d82d439 --- /dev/null +++ b/intl/gettext.c @@ -0,0 +1,63 @@ +/* Implementation of gettext(3) function. + Copyright (C) 1995, 1997, 2000-2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + 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 INTUSE(__dcgettext) +#else +# define GETTEXT libintl_gettext +# define DCGETTEXT libintl_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 (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/gettextP.h b/intl/gettextP.h new file mode 100644 index 0000000..0816bfb --- /dev/null +++ b/intl/gettextP.h @@ -0,0 +1,218 @@ +/* Header describing internals of libintl library. + Copyright (C) 1995-1999, 2000-2005 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + 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 "gmo.h" /* Get nls_uint32. */ + +/* @@ end of prolog @@ */ + +#ifndef internal_function +# define internal_function +#endif + +#ifndef attribute_hidden +# define attribute_hidden +#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 + + +/* In-memory representation of system dependent string. */ +struct sysdep_string_desc +{ + /* Length of addressed string, including the trailing NUL. */ + size_t length; + /* Pointer to addressed string. */ + const char *pointer; +}; + +/* The representation of an opened message catalog. */ +struct loaded_domain +{ + /* Pointer to memory containing the .mo file. */ + const char *data; + /* 1 if the memory is mmap()ed, 0 if the memory is malloc()ed. */ + int use_mmap; + /* Size of mmap()ed memory. */ + size_t mmap_size; + /* 1 if the .mo file uses a different endianness than this machine. */ + int must_swap; + /* Pointer to additional malloc()ed memory. */ + void *malloced; + + /* Number of static strings pairs. */ + nls_uint32 nstrings; + /* Pointer to descriptors of original strings in the file. */ + const struct string_desc *orig_tab; + /* Pointer to descriptors of translated strings in the file. */ + const struct string_desc *trans_tab; + + /* Number of system dependent strings pairs. */ + nls_uint32 n_sysdep_strings; + /* Pointer to descriptors of original sysdep strings. */ + const struct sysdep_string_desc *orig_sysdep_tab; + /* Pointer to descriptors of translated sysdep strings. */ + const struct sysdep_string_desc *trans_sysdep_tab; + + /* Size of hash table. */ + nls_uint32 hash_size; + /* Pointer to hash table. */ + const nls_uint32 *hash_tab; + /* 1 if the hash table uses a different endianness than this machine. */ + int must_swap_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; + +#ifndef _LIBC +const char *_nl_language_preferences_default (void); +const char *_nl_locale_name_posix (int category, const char *categoryname); +const char *_nl_locale_name_default (void); +const char *_nl_locale_name (int category, const char *categoryname); +#endif + +struct loaded_l10nfile *_nl_find_domain (const char *__dirname, char *__locale, + const char *__domainname, + struct binding *__domainbinding) + internal_function; +void _nl_load_domain (struct loaded_l10nfile *__domain, + struct binding *__domainbinding) + internal_function; +void _nl_unload_domain (struct loaded_domain *__domain) + internal_function; +const char *_nl_init_domain_conv (struct loaded_l10nfile *__domain_file, + struct loaded_domain *__domain, + struct binding *__domainbinding) + internal_function; +void _nl_free_domain_conv (struct loaded_domain *__domain) + internal_function; + +char *_nl_find_msg (struct loaded_l10nfile *domain_file, + struct binding *domainbinding, const char *msgid, + size_t *lengthp) + internal_function; + +#ifdef _LIBC +extern char *__gettext (const char *__msgid); +extern char *__dgettext (const char *__domainname, const char *__msgid); +extern char *__dcgettext (const char *__domainname, const char *__msgid, + int __category); +extern char *__ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n); +extern char *__dngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int n); +extern char *__dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category); +extern char *__dcigettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category); +extern char *__textdomain (const char *__domainname); +extern char *__bindtextdomain (const char *__domainname, + const char *__dirname); +extern char *__bind_textdomain_codeset (const char *__domainname, + const char *__codeset); +#else +/* Declare the exported libintl_* functions, in a way that allows us to + call them under their real name. */ +# undef _INTL_REDIRECT_INLINE +# undef _INTL_REDIRECT_MACROS +# define _INTL_REDIRECT_MACROS +# include "libgnuintl.h" +extern char *libintl_dcigettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + int __plural, unsigned long int __n, + int __category); +#endif + +/* @@ begin of epilog @@ */ + +#endif /* gettextP.h */ diff --git a/intl/gmo.h b/intl/gmo.h new file mode 100644 index 0000000..26515fe --- /dev/null +++ b/intl/gmo.h @@ -0,0 +1,149 @@ +/* Description of GNU message catalog format: general file layout. + Copyright (C) 1995, 1997, 2000-2002, 2004 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _GETTEXT_H +#define _GETTEXT_H 1 + +#include + +/* @@ 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 +#define MO_REVISION_NUMBER_WITH_SYSDEP_I 1 + +/* 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 following are only used in .mo files with major revision 0 or 1. */ + + /* 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 translated strings. */ + nls_uint32 trans_tab_offset; + /* Size of hash table. */ + nls_uint32 hash_tab_size; + /* Offset of first hash table entry. */ + nls_uint32 hash_tab_offset; + + /* The following are only used in .mo files with minor revision >= 1. */ + + /* The number of system dependent segments. */ + nls_uint32 n_sysdep_segments; + /* Offset of table describing system dependent segments. */ + nls_uint32 sysdep_segments_offset; + /* The number of system dependent strings pairs. */ + nls_uint32 n_sysdep_strings; + /* Offset of table with start offsets of original sysdep strings. */ + nls_uint32 orig_sysdep_tab_offset; + /* Offset of table with start offsets of translated sysdep strings. */ + nls_uint32 trans_sysdep_tab_offset; +}; + +/* Descriptor for static string contained in the binary .mo file. */ +struct string_desc +{ + /* Length of addressed string, not including the trailing NUL. */ + nls_uint32 length; + /* Offset of string in file. */ + nls_uint32 offset; +}; + +/* The following are only used in .mo files with minor revision >= 1. */ + +/* Descriptor for system dependent string segment. */ +struct sysdep_segment +{ + /* Length of addressed string, including the trailing NUL. */ + nls_uint32 length; + /* Offset of string in file. */ + nls_uint32 offset; +}; + +/* Descriptor for system dependent string. */ +struct sysdep_string +{ + /* Offset of static string segments in file. */ + nls_uint32 offset; + /* Alternating sequence of static and system dependent segments. + The last segment is a static segment, including the trailing NUL. */ + struct segment_pair + { + /* Size of static segment. */ + nls_uint32 segsize; + /* Reference to system dependent string segment, or ~0 at the end. */ + nls_uint32 sysdepref; + } segments[1]; +}; + +/* Marker for the end of the segments[] array. This has the value 0xFFFFFFFF, + regardless whether 'int' is 16 bit, 32 bit, or 64 bit. */ +#define SEGMENTS_END ((nls_uint32) ~0) + +/* @@ begin of epilog @@ */ + +#endif /* gettext.h */ diff --git a/intl/hash-string.h b/intl/hash-string.h new file mode 100644 index 0000000..2c9a3a5 --- /dev/null +++ b/intl/hash-string.h @@ -0,0 +1,48 @@ +/* Description of GNU message catalog format: string hashing function. + Copyright (C) 1995, 1997-1998, 2000-2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* @@ end of prolog @@ */ + +/* 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 inline unsigned long int +hash_string (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 char) *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..15be09c --- /dev/null +++ b/intl/intl-compat.c @@ -0,0 +1,131 @@ +/* intl-compat.c - Stub functions to call gettext functions from GNU gettext + Library. + Copyright (C) 1995, 2000-2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +/* This file redirects the gettext functions (without prefix) to those + defined in the included GNU libintl library (with "libintl_" prefix). + It is compiled into libintl in order to make the AM_GNU_GETTEXT test + of gettext <= 0.11.2 work with the libintl library >= 0.11.3 which + has the redirections primarily in the include file. + It is also compiled into libgnuintl so that libgnuintl.so can be used + as LD_PRELOADable library on glibc systems, to provide the extra + features that the functions in the libc don't have (namely, logging). */ + + +#undef gettext +#undef dgettext +#undef dcgettext +#undef ngettext +#undef dngettext +#undef dcngettext +#undef textdomain +#undef bindtextdomain +#undef bind_textdomain_codeset + + +/* When building a DLL, we must export some functions. Note that because + the functions are only defined for binary backward compatibility, we + don't need to use __declspec(dllimport) in any case. */ +#if defined _MSC_VER && BUILDING_DLL +# define DLL_EXPORTED __declspec(dllexport) +#else +# define DLL_EXPORTED +#endif + + +DLL_EXPORTED +char * +gettext (const char *msgid) +{ + return libintl_gettext (msgid); +} + + +DLL_EXPORTED +char * +dgettext (const char *domainname, const char *msgid) +{ + return libintl_dgettext (domainname, msgid); +} + + +DLL_EXPORTED +char * +dcgettext (const char *domainname, const char *msgid, int category) +{ + return libintl_dcgettext (domainname, msgid, category); +} + + +DLL_EXPORTED +char * +ngettext (const char *msgid1, const char *msgid2, unsigned long int n) +{ + return libintl_ngettext (msgid1, msgid2, n); +} + + +DLL_EXPORTED +char * +dngettext (const char *domainname, + const char *msgid1, const char *msgid2, unsigned long int n) +{ + return libintl_dngettext (domainname, msgid1, msgid2, n); +} + + +DLL_EXPORTED +char * +dcngettext (const char *domainname, + const char *msgid1, const char *msgid2, unsigned long int n, + int category) +{ + return libintl_dcngettext (domainname, msgid1, msgid2, n, category); +} + + +DLL_EXPORTED +char * +textdomain (const char *domainname) +{ + return libintl_textdomain (domainname); +} + + +DLL_EXPORTED +char * +bindtextdomain (const char *domainname, const char *dirname) +{ + return libintl_bindtextdomain (domainname, dirname); +} + + +DLL_EXPORTED +char * +bind_textdomain_codeset (const char *domainname, const char *codeset) +{ + return libintl_bind_textdomain_codeset (domainname, codeset); +} diff --git a/intl/l10nflist.c b/intl/l10nflist.c new file mode 100644 index 0000000..0501b97 --- /dev/null +++ b/intl/l10nflist.c @@ -0,0 +1,421 @@ +/* Copyright (C) 1995-1999, 2000-2004 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + 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 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 (char *dest, const char *src); +# endif +#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. + */ +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, 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)) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) +#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__ (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) +#else +# ifdef _LIBC +# define __argz_count(argz, len) INTUSE(__argz_count) (argz, len) +# endif +#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__ (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) +#else +# ifdef _LIBC +# define __argz_stringify(argz, len, sep) \ + INTUSE(__argz_stringify) (argz, len, sep) +# endif +#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */ + +#if !defined _LIBC && !defined HAVE___ARGZ_NEXT +static char * +argz_next__ (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 inline int +pop (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 (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 **lastp; + struct loaded_l10nfile *retval; + char *cp; + size_t dirlist_count; + size_t entries; + int cnt; + + /* If LANGUAGE contains an absolute directory specification, we ignore + DIRLIST. */ + if (IS_ABSOLUTE_PATH (language)) + dirlist_len = 0; + + /* 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) : 0) + + ((mask & CEN_REVISION) != 0 + ? strlen (revision) + 1 : 0)) : 0) + + 1 + strlen (filename) + 1); + + if (abs_filename == NULL) + return NULL; + + /* Construct file name. */ + cp = abs_filename; + if (dirlist_len > 0) + { + memcpy (cp, dirlist, dirlist_len); + __argz_stringify (cp, dirlist_len, PATH_SEPARATOR); + cp += dirlist_len; + cp[-1] = '/'; + } + + 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. */ + lastp = l10nfile_list; + 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; + } + + lastp = &retval->next; + } + + if (retval != NULL || do_allocate == 0) + { + free (abs_filename); + return retval; + } + + dirlist_count = (dirlist_len > 0 ? __argz_count (dirlist, dirlist_len) : 1); + + /* Allocate a new loaded_l10nfile. */ + retval = + (struct loaded_l10nfile *) + malloc (sizeof (*retval) + + (((dirlist_count << pop (mask)) + (dirlist_count > 1 ? 1 : 0)) + * sizeof (struct loaded_l10nfile *))); + if (retval == NULL) + return NULL; + + retval->filename = abs_filename; + + /* We set retval->data to NULL here; it is filled in later. + Setting retval->decided to 1 here means that retval does not + correspond to a real file (dirlist_count > 1) or is not worth + looking up (if an unnormalized codeset was specified). */ + retval->decided = (dirlist_count > 1 + || ((mask & XPG_CODESET) != 0 + && (mask & XPG_NORM_CODESET) != 0)); + retval->data = NULL; + + retval->next = *lastp; + *lastp = retval; + + entries = 0; + /* Recurse to fill the inheritance list of RETVAL. + If the DIRLIST is a real list (i.e. DIRLIST_COUNT > 1), the RETVAL + entry does not correspond to a real file; retval->filename contains + colons. In this case we loop across all elements of DIRLIST and + across all bit patterns dominated by MASK. + If the DIRLIST is a single directory or entirely redundant (i.e. + DIRLIST_COUNT == 1), we loop across all bit patterns dominated by + MASK, excluding MASK itself. + In either case, we loop down from MASK to 0. This has the effect + that the extra bits in the locale name are dropped in this order: + first the modifier, then the territory, then the codeset, then the + normalized_codeset. */ + for (cnt = dirlist_count > 1 ? mask : mask - 1; cnt >= 0; --cnt) + if ((cnt & ~mask) == 0 + && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0) + && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0)) + { + if (dirlist_count > 1) + { + /* 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); + } + else + retval->successor[entries++] + = _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, + 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 (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 ((unsigned char) codeset[cnt])) + { + ++len; + + if (isalpha ((unsigned char) 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 ((unsigned char) codeset[cnt])) + *wp++ = tolower ((unsigned char) codeset[cnt]); + else if (isdigit ((unsigned char) 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 (char *dest, const char *src) +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif diff --git a/intl/langprefs.c b/intl/langprefs.c new file mode 100644 index 0000000..20137b6 --- /dev/null +++ b/intl/langprefs.c @@ -0,0 +1,130 @@ +/* Determine the user's language preferences. + Copyright (C) 2004-2005 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#if HAVE_CFPREFERENCESCOPYAPPVALUE +# include +# include +# include +# include +# include +extern void _nl_locale_name_canonicalize (char *name); +#endif + +/* Determine the user's language preferences, as a colon separated list of + locale names in XPG syntax + language[_territory[.codeset]][@modifier] + The result must not be freed; it is statically allocated. + The LANGUAGE environment variable does not need to be considered; it is + already taken into account by the caller. */ + +const char * +_nl_language_preferences_default (void) +{ +#if HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.2 or newer */ + { + /* Cache the preferences list, since CoreFoundation calls are expensive. */ + static const char *cached_languages; + static int cache_initialized; + + if (!cache_initialized) + { + CFTypeRef preferences = + CFPreferencesCopyAppValue (CFSTR ("AppleLanguages"), + kCFPreferencesCurrentApplication); + if (preferences != NULL + && CFGetTypeID (preferences) == CFArrayGetTypeID ()) + { + CFArrayRef prefArray = (CFArrayRef)preferences; + int n = CFArrayGetCount (prefArray); + char buf[256]; + size_t size = 0; + int i; + + for (i = 0; i < n; i++) + { + CFTypeRef element = CFArrayGetValueAtIndex (prefArray, i); + if (element != NULL + && CFGetTypeID (element) == CFStringGetTypeID () + && CFStringGetCString ((CFStringRef)element, + buf, sizeof (buf), + kCFStringEncodingASCII)) + { + _nl_locale_name_canonicalize (buf); + size += strlen (buf) + 1; + /* Most GNU programs use msgids in English and don't ship + an en.mo message catalog. Therefore when we see "en" + in the preferences list, arrange for gettext() to + return the msgid, and ignore all further elements of + the preferences list. */ + if (strcmp (buf, "en") == 0) + break; + } + else + break; + } + if (size > 0) + { + char *languages = (char *) malloc (size); + + if (languages != NULL) + { + char *p = languages; + + for (i = 0; i < n; i++) + { + CFTypeRef element = + CFArrayGetValueAtIndex (prefArray, i); + if (element != NULL + && CFGetTypeID (element) == CFStringGetTypeID () + && CFStringGetCString ((CFStringRef)element, + buf, sizeof (buf), + kCFStringEncodingASCII)) + { + _nl_locale_name_canonicalize (buf); + strcpy (p, buf); + p += strlen (buf); + *p++ = ':'; + if (strcmp (buf, "en") == 0) + break; + } + else + break; + } + *--p = '\0'; + + cached_languages = languages; + } + } + } + cache_initialized = 1; + } + if (cached_languages != NULL) + return cached_languages; + } +#endif + + return NULL; +} diff --git a/intl/libgnuintl.h.in b/intl/libgnuintl.h.in new file mode 100644 index 0000000..d1df17e --- /dev/null +++ b/intl/libgnuintl.h.in @@ -0,0 +1,383 @@ +/* Message catalogs for internationalization. + Copyright (C) 1995-1997, 2000-2004 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + 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 (or _LOCALE_H in Solaris 2.5) + 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 || (defined _LOCALE_H && defined __sun)) +# 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 + +/* Provide information about the supported file formats. Returns the + maximum minor revision number supported for a given major revision. */ +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \ + ((major) == 0 || (major) == 1 ? 1 : -1) + +/* Resolve a platform specific conflict on DJGPP. GNU gettext takes + precedence over _conio_gettext. */ +#ifdef __DJGPP__ +# undef gettext +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/* We redirect the functions to those prefixed with "libintl_". This is + necessary, because some systems define gettext/textdomain/... in the C + library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer). + If we used the unprefixed names, there would be cases where the + definition in the C library would override the one in the libintl.so + shared library. Recall that on ELF systems, the symbols are looked + up in the following order: + 1. in the executable, + 2. in the shared libraries specified on the link command line, in order, + 3. in the dependencies of the shared libraries specified on the link + command line, + 4. in the dlopen()ed shared libraries, in the order in which they were + dlopen()ed. + The definition in the C library would override the one in libintl.so if + either + * -lc is given on the link command line and -lintl isn't, or + * -lc is given on the link command line before -lintl, or + * libintl.so is a dependency of a dlopen()ed shared library but not + linked to the executable at link time. + Since Solaris gettext() behaves differently than GNU gettext(), this + would be unacceptable. + + The redirection happens by default through macros in C, so that &gettext + is independent of the compilation unit, but through inline functions in + C++, in order not to interfere with the name mangling of class fields or + class methods called 'gettext'. */ + +/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS. + If he doesn't, we choose the method. A third possible method is + _INTL_REDIRECT_ASM, supported only by GCC. */ +#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS) +# if __GNUC__ >= 2 && !defined __APPLE_CC__ && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus) +# define _INTL_REDIRECT_ASM +# else +# ifdef __cplusplus +# define _INTL_REDIRECT_INLINE +# else +# define _INTL_REDIRECT_MACROS +# endif +# endif +#endif +/* Auxiliary macros. */ +#ifdef _INTL_REDIRECT_ASM +# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname)) +# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring +# define _INTL_STRINGIFY(prefix) #prefix +#else +# define _INTL_ASM(cname) +#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). */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_gettext (const char *__msgid); +static inline char *gettext (const char *__msgid) +{ + return libintl_gettext (__msgid); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define gettext libintl_gettext +#endif +extern char *gettext (const char *__msgid) + _INTL_ASM (libintl_gettext); +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current + LC_MESSAGES locale. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dgettext (const char *__domainname, const char *__msgid); +static inline char *dgettext (const char *__domainname, const char *__msgid) +{ + return libintl_dgettext (__domainname, __msgid); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dgettext libintl_dgettext +#endif +extern char *dgettext (const char *__domainname, const char *__msgid) + _INTL_ASM (libintl_dgettext); +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dcgettext (const char *__domainname, const char *__msgid, + int __category); +static inline char *dcgettext (const char *__domainname, const char *__msgid, + int __category) +{ + return libintl_dcgettext (__domainname, __msgid, __category); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dcgettext libintl_dcgettext +#endif +extern char *dcgettext (const char *__domainname, const char *__msgid, + int __category) + _INTL_ASM (libintl_dcgettext); +#endif + + +/* Similar to `gettext' but select the plural form corresponding to the + number N. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n); +static inline char *ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n) +{ + return libintl_ngettext (__msgid1, __msgid2, __n); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define ngettext libintl_ngettext +#endif +extern char *ngettext (const char *__msgid1, const char *__msgid2, + unsigned long int __n) + _INTL_ASM (libintl_ngettext); +#endif + +/* Similar to `dgettext' but select the plural form corresponding to the + number N. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dngettext (const char *__domainname, const char *__msgid1, + const char *__msgid2, unsigned long int __n); +static inline char *dngettext (const char *__domainname, const char *__msgid1, + const char *__msgid2, unsigned long int __n) +{ + return libintl_dngettext (__domainname, __msgid1, __msgid2, __n); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dngettext libintl_dngettext +#endif +extern char *dngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n) + _INTL_ASM (libintl_dngettext); +#endif + +/* Similar to `dcgettext' but select the plural form corresponding to the + number N. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category); +static inline char *dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category) +{ + return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define dcngettext libintl_dcngettext +#endif +extern char *dcngettext (const char *__domainname, + const char *__msgid1, const char *__msgid2, + unsigned long int __n, int __category) + _INTL_ASM (libintl_dcngettext); +#endif + + +/* 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". */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_textdomain (const char *__domainname); +static inline char *textdomain (const char *__domainname) +{ + return libintl_textdomain (__domainname); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define textdomain libintl_textdomain +#endif +extern char *textdomain (const char *__domainname) + _INTL_ASM (libintl_textdomain); +#endif + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_bindtextdomain (const char *__domainname, + const char *__dirname); +static inline char *bindtextdomain (const char *__domainname, + const char *__dirname) +{ + return libintl_bindtextdomain (__domainname, __dirname); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define bindtextdomain libintl_bindtextdomain +#endif +extern char *bindtextdomain (const char *__domainname, const char *__dirname) + _INTL_ASM (libintl_bindtextdomain); +#endif + +/* Specify the character encoding in which the messages from the + DOMAINNAME message catalog will be returned. */ +#ifdef _INTL_REDIRECT_INLINE +extern char *libintl_bind_textdomain_codeset (const char *__domainname, + const char *__codeset); +static inline char *bind_textdomain_codeset (const char *__domainname, + const char *__codeset) +{ + return libintl_bind_textdomain_codeset (__domainname, __codeset); +} +#else +#ifdef _INTL_REDIRECT_MACROS +# define bind_textdomain_codeset libintl_bind_textdomain_codeset +#endif +extern char *bind_textdomain_codeset (const char *__domainname, + const char *__codeset) + _INTL_ASM (libintl_bind_textdomain_codeset); +#endif + + +/* Support for format strings with positions in *printf(), following the + POSIX/XSI specification. + Note: These replacements for the *printf() functions are visible only + in source files that #include or #include "gettext.h". + Packages that use *printf() in source files that don't refer to _() + or gettext() but for which the format string could be the return value + of _() or gettext() need to add this #include. Oh well. */ + +#if !@HAVE_POSIX_PRINTF@ + +#include +#include + +/* Get va_list. */ +#if __STDC__ || defined __cplusplus || defined _MSC_VER +# include +#else +# include +#endif + +#undef fprintf +#define fprintf libintl_fprintf +extern int fprintf (FILE *, const char *, ...); +#undef vfprintf +#define vfprintf libintl_vfprintf +extern int vfprintf (FILE *, const char *, va_list); + +#undef printf +#define printf libintl_printf +extern int printf (const char *, ...); +#undef vprintf +#define vprintf libintl_vprintf +extern int vprintf (const char *, va_list); + +#undef sprintf +#define sprintf libintl_sprintf +extern int sprintf (char *, const char *, ...); +#undef vsprintf +#define vsprintf libintl_vsprintf +extern int vsprintf (char *, const char *, va_list); + +#if @HAVE_SNPRINTF@ + +#undef snprintf +#define snprintf libintl_snprintf +extern int snprintf (char *, size_t, const char *, ...); +#undef vsnprintf +#define vsnprintf libintl_vsnprintf +extern int vsnprintf (char *, size_t, const char *, va_list); + +#endif + +#if @HAVE_ASPRINTF@ + +#undef asprintf +#define asprintf libintl_asprintf +extern int asprintf (char **, const char *, ...); +#undef vasprintf +#define vasprintf libintl_vasprintf +extern int vasprintf (char **, const char *, va_list); + +#endif + +#if @HAVE_WPRINTF@ + +#undef fwprintf +#define fwprintf libintl_fwprintf +extern int fwprintf (FILE *, const wchar_t *, ...); +#undef vfwprintf +#define vfwprintf libintl_vfwprintf +extern int vfwprintf (FILE *, const wchar_t *, va_list); + +#undef wprintf +#define wprintf libintl_wprintf +extern int wprintf (const wchar_t *, ...); +#undef vwprintf +#define vwprintf libintl_vwprintf +extern int vwprintf (const wchar_t *, va_list); + +#undef swprintf +#define swprintf libintl_swprintf +extern int swprintf (wchar_t *, size_t, const wchar_t *, ...); +#undef vswprintf +#define vswprintf libintl_vswprintf +extern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list); + +#endif + +#endif + + +/* Support for relocatable packages. */ + +/* Sets the original and the current installation prefix of the package. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +#define libintl_set_relocation_prefix libintl_set_relocation_prefix +extern void + libintl_set_relocation_prefix (const char *orig_prefix, + const char *curr_prefix); + + +#ifdef __cplusplus +} +#endif + +#endif /* libintl.h */ diff --git a/intl/loadinfo.h b/intl/loadinfo.h new file mode 100644 index 0000000..d6408f2 --- /dev/null +++ b/intl/loadinfo.h @@ -0,0 +1,145 @@ +/* Copyright (C) 1996-1999, 2000-2003 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _LOADINFO_H +#define _LOADINFO_H 1 + +/* Declarations of locale dependent catalog lookup functions. + Implemented in + + localealias.c Possibly replace a locale name by another. + explodename.c Split a locale name into its various fields. + l10nflist.c Generate a list of filenames of possible message catalogs. + finddomain.c Find and open the relevant message catalogs. + + The main function _nl_find_domain() in finddomain.c is declared + in gettextP.h. + */ + +#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 (const char *codeset, + size_t name_len); + +/* Lookup a locale dependent file. + *L10NFILE_LIST denotes a pool of lookup results of locale dependent + files of the same kind, sorted in decreasing order of ->filename. + DIRLIST and DIRLIST_LEN are an argz list of directories in which to + look, containing at least one directory (i.e. DIRLIST_LEN > 0). + MASK, LANGUAGE, TERRITORY, CODESET, NORMALIZED_CODESET, MODIFIER, + SPECIAL, SPONSOR, REVISION are the pieces of the locale name, as + produced by _nl_explode_name(). FILENAME is the filename suffix. + The return value is the lookup result, either found in *L10NFILE_LIST, + or - if DO_ALLOCATE is nonzero - freshly allocated, or possibly NULL. + If the return value is non-NULL, it is added to *L10NFILE_LIST, and + its ->next field denotes the chaining inside *L10NFILE_LIST, and + furthermore its ->successor[] field contains a list of other lookup + results from which this lookup result inherits. */ +extern struct loaded_l10nfile * +_nl_make_l10nflist (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); + +/* Lookup the real locale name for a locale alias NAME, or NULL if + NAME is not a locale alias (but possibly a real locale name). + The return value is statically allocated and must not be freed. */ +extern const char *_nl_expand_alias (const char *name); + +/* Split a locale name NAME into its pieces: language, modifier, + territory, codeset, special, sponsor, revision. + NAME gets destructively modified: NUL bytes are inserted here and + there. *LANGUAGE gets assigned NAME. Each of *MODIFIER, *TERRITORY, + *CODESET, *SPECIAL, *SPONSOR, *REVISION gets assigned either a + pointer into the old NAME string, or NULL. *NORMALIZED_CODESET + gets assigned the expanded *CODESET, if it is different from *CODESET; + this one is dynamically allocated and has to be freed by the caller. + The return value is a bitmask, where each bit corresponds to one + filled-in value: + XPG_MODIFIER, CEN_AUDIENCE for *MODIFIER, + TERRITORY for *TERRITORY, + XPG_CODESET for *CODESET, + XPG_NORM_CODESET for *NORMALIZED_CODESET, + CEN_SPECIAL for *SPECIAL, + CEN_SPONSOR for *SPONSOR, + CEN_REVISION for *REVISION. + */ +extern int _nl_explode_name (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); + +/* Split a locale name NAME into a leading language part and all the + rest. Return a pointer to the first character after the language, + i.e. to the first byte of the rest. */ +extern char *_nl_find_language (const char *name); + +#endif /* loadinfo.h */ diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c new file mode 100644 index 0000000..0d59ad8 --- /dev/null +++ b/intl/loadmsgcat.c @@ -0,0 +1,1420 @@ +/* Load needed message catalogs. + Copyright (C) 1995-1999, 2000-2004 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + 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__ +# undef alloca +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# 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 + +#if defined HAVE_STDINT_H_WITH_UINTMAX || defined _LIBC +# include +#endif +#if defined HAVE_INTTYPES_H || defined _LIBC +# include +#endif + +#include "gmo.h" +#include "gettextP.h" +#include "hash-string.h" +#include "plural-exp.h" + +#ifdef _LIBC +# include "../locale/localeinfo.h" +#endif + +/* Provide fallback values for macros that ought to be defined in . + Note that our fallback values need not be literal strings, because we don't + use them with preprocessor string concatenation. */ +#if !defined PRId8 || PRI_MACROS_BROKEN +# undef PRId8 +# define PRId8 "d" +#endif +#if !defined PRIi8 || PRI_MACROS_BROKEN +# undef PRIi8 +# define PRIi8 "i" +#endif +#if !defined PRIo8 || PRI_MACROS_BROKEN +# undef PRIo8 +# define PRIo8 "o" +#endif +#if !defined PRIu8 || PRI_MACROS_BROKEN +# undef PRIu8 +# define PRIu8 "u" +#endif +#if !defined PRIx8 || PRI_MACROS_BROKEN +# undef PRIx8 +# define PRIx8 "x" +#endif +#if !defined PRIX8 || PRI_MACROS_BROKEN +# undef PRIX8 +# define PRIX8 "X" +#endif +#if !defined PRId16 || PRI_MACROS_BROKEN +# undef PRId16 +# define PRId16 "d" +#endif +#if !defined PRIi16 || PRI_MACROS_BROKEN +# undef PRIi16 +# define PRIi16 "i" +#endif +#if !defined PRIo16 || PRI_MACROS_BROKEN +# undef PRIo16 +# define PRIo16 "o" +#endif +#if !defined PRIu16 || PRI_MACROS_BROKEN +# undef PRIu16 +# define PRIu16 "u" +#endif +#if !defined PRIx16 || PRI_MACROS_BROKEN +# undef PRIx16 +# define PRIx16 "x" +#endif +#if !defined PRIX16 || PRI_MACROS_BROKEN +# undef PRIX16 +# define PRIX16 "X" +#endif +#if !defined PRId32 || PRI_MACROS_BROKEN +# undef PRId32 +# define PRId32 "d" +#endif +#if !defined PRIi32 || PRI_MACROS_BROKEN +# undef PRIi32 +# define PRIi32 "i" +#endif +#if !defined PRIo32 || PRI_MACROS_BROKEN +# undef PRIo32 +# define PRIo32 "o" +#endif +#if !defined PRIu32 || PRI_MACROS_BROKEN +# undef PRIu32 +# define PRIu32 "u" +#endif +#if !defined PRIx32 || PRI_MACROS_BROKEN +# undef PRIx32 +# define PRIx32 "x" +#endif +#if !defined PRIX32 || PRI_MACROS_BROKEN +# undef PRIX32 +# define PRIX32 "X" +#endif +#if !defined PRId64 || PRI_MACROS_BROKEN +# undef PRId64 +# define PRId64 (sizeof (long) == 8 ? "ld" : "lld") +#endif +#if !defined PRIi64 || PRI_MACROS_BROKEN +# undef PRIi64 +# define PRIi64 (sizeof (long) == 8 ? "li" : "lli") +#endif +#if !defined PRIo64 || PRI_MACROS_BROKEN +# undef PRIo64 +# define PRIo64 (sizeof (long) == 8 ? "lo" : "llo") +#endif +#if !defined PRIu64 || PRI_MACROS_BROKEN +# undef PRIu64 +# define PRIu64 (sizeof (long) == 8 ? "lu" : "llu") +#endif +#if !defined PRIx64 || PRI_MACROS_BROKEN +# undef PRIx64 +# define PRIx64 (sizeof (long) == 8 ? "lx" : "llx") +#endif +#if !defined PRIX64 || PRI_MACROS_BROKEN +# undef PRIX64 +# define PRIX64 (sizeof (long) == 8 ? "lX" : "llX") +#endif +#if !defined PRIdLEAST8 || PRI_MACROS_BROKEN +# undef PRIdLEAST8 +# define PRIdLEAST8 "d" +#endif +#if !defined PRIiLEAST8 || PRI_MACROS_BROKEN +# undef PRIiLEAST8 +# define PRIiLEAST8 "i" +#endif +#if !defined PRIoLEAST8 || PRI_MACROS_BROKEN +# undef PRIoLEAST8 +# define PRIoLEAST8 "o" +#endif +#if !defined PRIuLEAST8 || PRI_MACROS_BROKEN +# undef PRIuLEAST8 +# define PRIuLEAST8 "u" +#endif +#if !defined PRIxLEAST8 || PRI_MACROS_BROKEN +# undef PRIxLEAST8 +# define PRIxLEAST8 "x" +#endif +#if !defined PRIXLEAST8 || PRI_MACROS_BROKEN +# undef PRIXLEAST8 +# define PRIXLEAST8 "X" +#endif +#if !defined PRIdLEAST16 || PRI_MACROS_BROKEN +# undef PRIdLEAST16 +# define PRIdLEAST16 "d" +#endif +#if !defined PRIiLEAST16 || PRI_MACROS_BROKEN +# undef PRIiLEAST16 +# define PRIiLEAST16 "i" +#endif +#if !defined PRIoLEAST16 || PRI_MACROS_BROKEN +# undef PRIoLEAST16 +# define PRIoLEAST16 "o" +#endif +#if !defined PRIuLEAST16 || PRI_MACROS_BROKEN +# undef PRIuLEAST16 +# define PRIuLEAST16 "u" +#endif +#if !defined PRIxLEAST16 || PRI_MACROS_BROKEN +# undef PRIxLEAST16 +# define PRIxLEAST16 "x" +#endif +#if !defined PRIXLEAST16 || PRI_MACROS_BROKEN +# undef PRIXLEAST16 +# define PRIXLEAST16 "X" +#endif +#if !defined PRIdLEAST32 || PRI_MACROS_BROKEN +# undef PRIdLEAST32 +# define PRIdLEAST32 "d" +#endif +#if !defined PRIiLEAST32 || PRI_MACROS_BROKEN +# undef PRIiLEAST32 +# define PRIiLEAST32 "i" +#endif +#if !defined PRIoLEAST32 || PRI_MACROS_BROKEN +# undef PRIoLEAST32 +# define PRIoLEAST32 "o" +#endif +#if !defined PRIuLEAST32 || PRI_MACROS_BROKEN +# undef PRIuLEAST32 +# define PRIuLEAST32 "u" +#endif +#if !defined PRIxLEAST32 || PRI_MACROS_BROKEN +# undef PRIxLEAST32 +# define PRIxLEAST32 "x" +#endif +#if !defined PRIXLEAST32 || PRI_MACROS_BROKEN +# undef PRIXLEAST32 +# define PRIXLEAST32 "X" +#endif +#if !defined PRIdLEAST64 || PRI_MACROS_BROKEN +# undef PRIdLEAST64 +# define PRIdLEAST64 PRId64 +#endif +#if !defined PRIiLEAST64 || PRI_MACROS_BROKEN +# undef PRIiLEAST64 +# define PRIiLEAST64 PRIi64 +#endif +#if !defined PRIoLEAST64 || PRI_MACROS_BROKEN +# undef PRIoLEAST64 +# define PRIoLEAST64 PRIo64 +#endif +#if !defined PRIuLEAST64 || PRI_MACROS_BROKEN +# undef PRIuLEAST64 +# define PRIuLEAST64 PRIu64 +#endif +#if !defined PRIxLEAST64 || PRI_MACROS_BROKEN +# undef PRIxLEAST64 +# define PRIxLEAST64 PRIx64 +#endif +#if !defined PRIXLEAST64 || PRI_MACROS_BROKEN +# undef PRIXLEAST64 +# define PRIXLEAST64 PRIX64 +#endif +#if !defined PRIdFAST8 || PRI_MACROS_BROKEN +# undef PRIdFAST8 +# define PRIdFAST8 "d" +#endif +#if !defined PRIiFAST8 || PRI_MACROS_BROKEN +# undef PRIiFAST8 +# define PRIiFAST8 "i" +#endif +#if !defined PRIoFAST8 || PRI_MACROS_BROKEN +# undef PRIoFAST8 +# define PRIoFAST8 "o" +#endif +#if !defined PRIuFAST8 || PRI_MACROS_BROKEN +# undef PRIuFAST8 +# define PRIuFAST8 "u" +#endif +#if !defined PRIxFAST8 || PRI_MACROS_BROKEN +# undef PRIxFAST8 +# define PRIxFAST8 "x" +#endif +#if !defined PRIXFAST8 || PRI_MACROS_BROKEN +# undef PRIXFAST8 +# define PRIXFAST8 "X" +#endif +#if !defined PRIdFAST16 || PRI_MACROS_BROKEN +# undef PRIdFAST16 +# define PRIdFAST16 "d" +#endif +#if !defined PRIiFAST16 || PRI_MACROS_BROKEN +# undef PRIiFAST16 +# define PRIiFAST16 "i" +#endif +#if !defined PRIoFAST16 || PRI_MACROS_BROKEN +# undef PRIoFAST16 +# define PRIoFAST16 "o" +#endif +#if !defined PRIuFAST16 || PRI_MACROS_BROKEN +# undef PRIuFAST16 +# define PRIuFAST16 "u" +#endif +#if !defined PRIxFAST16 || PRI_MACROS_BROKEN +# undef PRIxFAST16 +# define PRIxFAST16 "x" +#endif +#if !defined PRIXFAST16 || PRI_MACROS_BROKEN +# undef PRIXFAST16 +# define PRIXFAST16 "X" +#endif +#if !defined PRIdFAST32 || PRI_MACROS_BROKEN +# undef PRIdFAST32 +# define PRIdFAST32 "d" +#endif +#if !defined PRIiFAST32 || PRI_MACROS_BROKEN +# undef PRIiFAST32 +# define PRIiFAST32 "i" +#endif +#if !defined PRIoFAST32 || PRI_MACROS_BROKEN +# undef PRIoFAST32 +# define PRIoFAST32 "o" +#endif +#if !defined PRIuFAST32 || PRI_MACROS_BROKEN +# undef PRIuFAST32 +# define PRIuFAST32 "u" +#endif +#if !defined PRIxFAST32 || PRI_MACROS_BROKEN +# undef PRIxFAST32 +# define PRIxFAST32 "x" +#endif +#if !defined PRIXFAST32 || PRI_MACROS_BROKEN +# undef PRIXFAST32 +# define PRIXFAST32 "X" +#endif +#if !defined PRIdFAST64 || PRI_MACROS_BROKEN +# undef PRIdFAST64 +# define PRIdFAST64 PRId64 +#endif +#if !defined PRIiFAST64 || PRI_MACROS_BROKEN +# undef PRIiFAST64 +# define PRIiFAST64 PRIi64 +#endif +#if !defined PRIoFAST64 || PRI_MACROS_BROKEN +# undef PRIoFAST64 +# define PRIoFAST64 PRIo64 +#endif +#if !defined PRIuFAST64 || PRI_MACROS_BROKEN +# undef PRIuFAST64 +# define PRIuFAST64 PRIu64 +#endif +#if !defined PRIxFAST64 || PRI_MACROS_BROKEN +# undef PRIxFAST64 +# define PRIxFAST64 PRIx64 +#endif +#if !defined PRIXFAST64 || PRI_MACROS_BROKEN +# undef PRIXFAST64 +# define PRIXFAST64 PRIX64 +#endif +#if !defined PRIdMAX || PRI_MACROS_BROKEN +# undef PRIdMAX +# define PRIdMAX (sizeof (uintmax_t) == sizeof (long) ? "ld" : "lld") +#endif +#if !defined PRIiMAX || PRI_MACROS_BROKEN +# undef PRIiMAX +# define PRIiMAX (sizeof (uintmax_t) == sizeof (long) ? "li" : "lli") +#endif +#if !defined PRIoMAX || PRI_MACROS_BROKEN +# undef PRIoMAX +# define PRIoMAX (sizeof (uintmax_t) == sizeof (long) ? "lo" : "llo") +#endif +#if !defined PRIuMAX || PRI_MACROS_BROKEN +# undef PRIuMAX +# define PRIuMAX (sizeof (uintmax_t) == sizeof (long) ? "lu" : "llu") +#endif +#if !defined PRIxMAX || PRI_MACROS_BROKEN +# undef PRIxMAX +# define PRIxMAX (sizeof (uintmax_t) == sizeof (long) ? "lx" : "llx") +#endif +#if !defined PRIXMAX || PRI_MACROS_BROKEN +# undef PRIXMAX +# define PRIXMAX (sizeof (uintmax_t) == sizeof (long) ? "lX" : "llX") +#endif +#if !defined PRIdPTR || PRI_MACROS_BROKEN +# undef PRIdPTR +# define PRIdPTR \ + (sizeof (void *) == sizeof (long) ? "ld" : \ + sizeof (void *) == sizeof (int) ? "d" : \ + "lld") +#endif +#if !defined PRIiPTR || PRI_MACROS_BROKEN +# undef PRIiPTR +# define PRIiPTR \ + (sizeof (void *) == sizeof (long) ? "li" : \ + sizeof (void *) == sizeof (int) ? "i" : \ + "lli") +#endif +#if !defined PRIoPTR || PRI_MACROS_BROKEN +# undef PRIoPTR +# define PRIoPTR \ + (sizeof (void *) == sizeof (long) ? "lo" : \ + sizeof (void *) == sizeof (int) ? "o" : \ + "llo") +#endif +#if !defined PRIuPTR || PRI_MACROS_BROKEN +# undef PRIuPTR +# define PRIuPTR \ + (sizeof (void *) == sizeof (long) ? "lu" : \ + sizeof (void *) == sizeof (int) ? "u" : \ + "llu") +#endif +#if !defined PRIxPTR || PRI_MACROS_BROKEN +# undef PRIxPTR +# define PRIxPTR \ + (sizeof (void *) == sizeof (long) ? "lx" : \ + sizeof (void *) == sizeof (int) ? "x" : \ + "llx") +#endif +#if !defined PRIXPTR || PRI_MACROS_BROKEN +# undef PRIXPTR +# define PRIXPTR \ + (sizeof (void *) == sizeof (long) ? "lX" : \ + sizeof (void *) == sizeof (int) ? "X" : \ + "llX") +#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 + +/* 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; + + +/* Expand a system dependent string segment. Return NULL if unsupported. */ +static const char * +get_sysdep_segment_value (const char *name) +{ + /* Test for an ISO C 99 section 7.8.1 format string directive. + Syntax: + P R I { d | i | o | u | x | X } + { { | LEAST | FAST } { 8 | 16 | 32 | 64 } | MAX | PTR } */ + /* We don't use a table of 14 times 6 'const char *' strings here, because + data relocations cost startup time. */ + if (name[0] == 'P' && name[1] == 'R' && name[2] == 'I') + { + if (name[3] == 'd' || name[3] == 'i' || name[3] == 'o' || name[3] == 'u' + || name[3] == 'x' || name[3] == 'X') + { + if (name[4] == '8' && name[5] == '\0') + { + if (name[3] == 'd') + return PRId8; + if (name[3] == 'i') + return PRIi8; + if (name[3] == 'o') + return PRIo8; + if (name[3] == 'u') + return PRIu8; + if (name[3] == 'x') + return PRIx8; + if (name[3] == 'X') + return PRIX8; + abort (); + } + if (name[4] == '1' && name[5] == '6' && name[6] == '\0') + { + if (name[3] == 'd') + return PRId16; + if (name[3] == 'i') + return PRIi16; + if (name[3] == 'o') + return PRIo16; + if (name[3] == 'u') + return PRIu16; + if (name[3] == 'x') + return PRIx16; + if (name[3] == 'X') + return PRIX16; + abort (); + } + if (name[4] == '3' && name[5] == '2' && name[6] == '\0') + { + if (name[3] == 'd') + return PRId32; + if (name[3] == 'i') + return PRIi32; + if (name[3] == 'o') + return PRIo32; + if (name[3] == 'u') + return PRIu32; + if (name[3] == 'x') + return PRIx32; + if (name[3] == 'X') + return PRIX32; + abort (); + } + if (name[4] == '6' && name[5] == '4' && name[6] == '\0') + { + if (name[3] == 'd') + return PRId64; + if (name[3] == 'i') + return PRIi64; + if (name[3] == 'o') + return PRIo64; + if (name[3] == 'u') + return PRIu64; + if (name[3] == 'x') + return PRIx64; + if (name[3] == 'X') + return PRIX64; + abort (); + } + if (name[4] == 'L' && name[5] == 'E' && name[6] == 'A' + && name[7] == 'S' && name[8] == 'T') + { + if (name[9] == '8' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST8; + if (name[3] == 'i') + return PRIiLEAST8; + if (name[3] == 'o') + return PRIoLEAST8; + if (name[3] == 'u') + return PRIuLEAST8; + if (name[3] == 'x') + return PRIxLEAST8; + if (name[3] == 'X') + return PRIXLEAST8; + abort (); + } + if (name[9] == '1' && name[10] == '6' && name[11] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST16; + if (name[3] == 'i') + return PRIiLEAST16; + if (name[3] == 'o') + return PRIoLEAST16; + if (name[3] == 'u') + return PRIuLEAST16; + if (name[3] == 'x') + return PRIxLEAST16; + if (name[3] == 'X') + return PRIXLEAST16; + abort (); + } + if (name[9] == '3' && name[10] == '2' && name[11] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST32; + if (name[3] == 'i') + return PRIiLEAST32; + if (name[3] == 'o') + return PRIoLEAST32; + if (name[3] == 'u') + return PRIuLEAST32; + if (name[3] == 'x') + return PRIxLEAST32; + if (name[3] == 'X') + return PRIXLEAST32; + abort (); + } + if (name[9] == '6' && name[10] == '4' && name[11] == '\0') + { + if (name[3] == 'd') + return PRIdLEAST64; + if (name[3] == 'i') + return PRIiLEAST64; + if (name[3] == 'o') + return PRIoLEAST64; + if (name[3] == 'u') + return PRIuLEAST64; + if (name[3] == 'x') + return PRIxLEAST64; + if (name[3] == 'X') + return PRIXLEAST64; + abort (); + } + } + if (name[4] == 'F' && name[5] == 'A' && name[6] == 'S' + && name[7] == 'T') + { + if (name[8] == '8' && name[9] == '\0') + { + if (name[3] == 'd') + return PRIdFAST8; + if (name[3] == 'i') + return PRIiFAST8; + if (name[3] == 'o') + return PRIoFAST8; + if (name[3] == 'u') + return PRIuFAST8; + if (name[3] == 'x') + return PRIxFAST8; + if (name[3] == 'X') + return PRIXFAST8; + abort (); + } + if (name[8] == '1' && name[9] == '6' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdFAST16; + if (name[3] == 'i') + return PRIiFAST16; + if (name[3] == 'o') + return PRIoFAST16; + if (name[3] == 'u') + return PRIuFAST16; + if (name[3] == 'x') + return PRIxFAST16; + if (name[3] == 'X') + return PRIXFAST16; + abort (); + } + if (name[8] == '3' && name[9] == '2' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdFAST32; + if (name[3] == 'i') + return PRIiFAST32; + if (name[3] == 'o') + return PRIoFAST32; + if (name[3] == 'u') + return PRIuFAST32; + if (name[3] == 'x') + return PRIxFAST32; + if (name[3] == 'X') + return PRIXFAST32; + abort (); + } + if (name[8] == '6' && name[9] == '4' && name[10] == '\0') + { + if (name[3] == 'd') + return PRIdFAST64; + if (name[3] == 'i') + return PRIiFAST64; + if (name[3] == 'o') + return PRIoFAST64; + if (name[3] == 'u') + return PRIuFAST64; + if (name[3] == 'x') + return PRIxFAST64; + if (name[3] == 'X') + return PRIXFAST64; + abort (); + } + } + if (name[4] == 'M' && name[5] == 'A' && name[6] == 'X' + && name[7] == '\0') + { + if (name[3] == 'd') + return PRIdMAX; + if (name[3] == 'i') + return PRIiMAX; + if (name[3] == 'o') + return PRIoMAX; + if (name[3] == 'u') + return PRIuMAX; + if (name[3] == 'x') + return PRIxMAX; + if (name[3] == 'X') + return PRIXMAX; + abort (); + } + if (name[4] == 'P' && name[5] == 'T' && name[6] == 'R' + && name[7] == '\0') + { + if (name[3] == 'd') + return PRIdPTR; + if (name[3] == 'i') + return PRIiPTR; + if (name[3] == 'o') + return PRIoPTR; + if (name[3] == 'u') + return PRIuPTR; + if (name[3] == 'x') + return PRIxPTR; + if (name[3] == 'X') + return PRIXPTR; + abort (); + } + } + } + /* Test for a glibc specific printf() format directive flag. */ + if (name[0] == 'I' && name[1] == '\0') + { +#if defined _LIBC || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) + /* The 'I' flag, in numeric format directives, replaces ASCII digits + with the 'outdigits' defined in the LC_CTYPE locale facet. This is + used for Farsi (Persian) and maybe Arabic. */ + return "I"; +#else + return ""; +#endif + } + /* Other system dependent strings are not valid. */ + return NULL; +} + +/* Initialize the codeset dependent parts of an opened message catalog. + Return the header entry. */ +const char * +internal_function +_nl_init_domain_conv (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, CODESET); +# 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 libc >= 2.2 or GNU libiconv >= 1.5, + we want to use transliteration. */ +# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \ + || _LIBICONV_VERSION >= 0x0105 + if (strchr (outcharset, '/') == NULL) + { + char *tmp; + + len = strlen (outcharset); + tmp = (char *) alloca (len + 10 + 1); + memcpy (tmp, outcharset, len); + memcpy (tmp + len, "//TRANSLIT", 10 + 1); + outcharset = tmp; + + domain->conv = iconv_open (outcharset, charset); + + freea (outcharset); + } + else +# endif + domain->conv = iconv_open (outcharset, charset); +# 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 (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 (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; + int revision; + 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; + domain->malloced = NULL; + + /* Fill in the information about the available tables. */ + revision = W (domain->must_swap, data->revision); + /* We support only the major revisions 0 and 1. */ + switch (revision >> 16) + { + case 0: + case 1: + domain->nstrings = W (domain->must_swap, data->nstrings); + domain->orig_tab = (const struct string_desc *) + ((char *) data + W (domain->must_swap, data->orig_tab_offset)); + domain->trans_tab = (const 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 = + (domain->hash_size > 2 + ? (const nls_uint32 *) + ((char *) data + W (domain->must_swap, data->hash_tab_offset)) + : NULL); + domain->must_swap_hash_tab = domain->must_swap; + + /* Now dispatch on the minor revision. */ + switch (revision & 0xffff) + { + case 0: + domain->n_sysdep_strings = 0; + domain->orig_sysdep_tab = NULL; + domain->trans_sysdep_tab = NULL; + break; + case 1: + default: + { + nls_uint32 n_sysdep_strings; + + if (domain->hash_tab == NULL) + /* This is invalid. These minor revisions need a hash table. */ + goto invalid; + + n_sysdep_strings = + W (domain->must_swap, data->n_sysdep_strings); + if (n_sysdep_strings > 0) + { + nls_uint32 n_sysdep_segments; + const struct sysdep_segment *sysdep_segments; + const char **sysdep_segment_values; + const nls_uint32 *orig_sysdep_tab; + const nls_uint32 *trans_sysdep_tab; + nls_uint32 n_inmem_sysdep_strings; + size_t memneed; + char *mem; + struct sysdep_string_desc *inmem_orig_sysdep_tab; + struct sysdep_string_desc *inmem_trans_sysdep_tab; + nls_uint32 *inmem_hash_tab; + unsigned int i, j; + + /* Get the values of the system dependent segments. */ + n_sysdep_segments = + W (domain->must_swap, data->n_sysdep_segments); + sysdep_segments = (const struct sysdep_segment *) + ((char *) data + + W (domain->must_swap, data->sysdep_segments_offset)); + sysdep_segment_values = + alloca (n_sysdep_segments * sizeof (const char *)); + for (i = 0; i < n_sysdep_segments; i++) + { + const char *name = + (char *) data + + W (domain->must_swap, sysdep_segments[i].offset); + nls_uint32 namelen = + W (domain->must_swap, sysdep_segments[i].length); + + if (!(namelen > 0 && name[namelen - 1] == '\0')) + { + freea (sysdep_segment_values); + goto invalid; + } + + sysdep_segment_values[i] = get_sysdep_segment_value (name); + } + + orig_sysdep_tab = (const nls_uint32 *) + ((char *) data + + W (domain->must_swap, data->orig_sysdep_tab_offset)); + trans_sysdep_tab = (const nls_uint32 *) + ((char *) data + + W (domain->must_swap, data->trans_sysdep_tab_offset)); + + /* Compute the amount of additional memory needed for the + system dependent strings and the augmented hash table. + At the same time, also drop string pairs which refer to + an undefined system dependent segment. */ + n_inmem_sysdep_strings = 0; + memneed = domain->hash_size * sizeof (nls_uint32); + for (i = 0; i < n_sysdep_strings; i++) + { + int valid = 1; + size_t needs[2]; + + for (j = 0; j < 2; j++) + { + const struct sysdep_string *sysdep_string = + (const struct sysdep_string *) + ((char *) data + + W (domain->must_swap, + j == 0 + ? orig_sysdep_tab[i] + : trans_sysdep_tab[i])); + size_t need = 0; + const struct segment_pair *p = sysdep_string->segments; + + if (W (domain->must_swap, p->sysdepref) != SEGMENTS_END) + for (p = sysdep_string->segments;; p++) + { + nls_uint32 sysdepref; + + need += W (domain->must_swap, p->segsize); + + sysdepref = W (domain->must_swap, p->sysdepref); + if (sysdepref == SEGMENTS_END) + break; + + if (sysdepref >= n_sysdep_segments) + { + /* Invalid. */ + freea (sysdep_segment_values); + goto invalid; + } + + if (sysdep_segment_values[sysdepref] == NULL) + { + /* This particular string pair is invalid. */ + valid = 0; + break; + } + + need += strlen (sysdep_segment_values[sysdepref]); + } + + needs[j] = need; + if (!valid) + break; + } + + if (valid) + { + n_inmem_sysdep_strings++; + memneed += needs[0] + needs[1]; + } + } + memneed += 2 * n_inmem_sysdep_strings + * sizeof (struct sysdep_string_desc); + + if (n_inmem_sysdep_strings > 0) + { + unsigned int k; + + /* Allocate additional memory. */ + mem = (char *) malloc (memneed); + if (mem == NULL) + goto invalid; + + domain->malloced = mem; + inmem_orig_sysdep_tab = (struct sysdep_string_desc *) mem; + mem += n_inmem_sysdep_strings + * sizeof (struct sysdep_string_desc); + inmem_trans_sysdep_tab = (struct sysdep_string_desc *) mem; + mem += n_inmem_sysdep_strings + * sizeof (struct sysdep_string_desc); + inmem_hash_tab = (nls_uint32 *) mem; + mem += domain->hash_size * sizeof (nls_uint32); + + /* Compute the system dependent strings. */ + k = 0; + for (i = 0; i < n_sysdep_strings; i++) + { + int valid = 1; + + for (j = 0; j < 2; j++) + { + const struct sysdep_string *sysdep_string = + (const struct sysdep_string *) + ((char *) data + + W (domain->must_swap, + j == 0 + ? orig_sysdep_tab[i] + : trans_sysdep_tab[i])); + const struct segment_pair *p = + sysdep_string->segments; + + if (W (domain->must_swap, p->sysdepref) + != SEGMENTS_END) + for (p = sysdep_string->segments;; p++) + { + nls_uint32 sysdepref; + + sysdepref = + W (domain->must_swap, p->sysdepref); + if (sysdepref == SEGMENTS_END) + break; + + if (sysdep_segment_values[sysdepref] == NULL) + { + /* This particular string pair is + invalid. */ + valid = 0; + break; + } + } + + if (!valid) + break; + } + + if (valid) + { + for (j = 0; j < 2; j++) + { + const struct sysdep_string *sysdep_string = + (const struct sysdep_string *) + ((char *) data + + W (domain->must_swap, + j == 0 + ? orig_sysdep_tab[i] + : trans_sysdep_tab[i])); + const char *static_segments = + (char *) data + + W (domain->must_swap, sysdep_string->offset); + const struct segment_pair *p = + sysdep_string->segments; + + /* Concatenate the segments, and fill + inmem_orig_sysdep_tab[k] (for j == 0) and + inmem_trans_sysdep_tab[k] (for j == 1). */ + + struct sysdep_string_desc *inmem_tab_entry = + (j == 0 + ? inmem_orig_sysdep_tab + : inmem_trans_sysdep_tab) + + k; + + if (W (domain->must_swap, p->sysdepref) + == SEGMENTS_END) + { + /* Only one static segment. */ + inmem_tab_entry->length = + W (domain->must_swap, p->segsize); + inmem_tab_entry->pointer = static_segments; + } + else + { + inmem_tab_entry->pointer = mem; + + for (p = sysdep_string->segments;; p++) + { + nls_uint32 segsize = + W (domain->must_swap, p->segsize); + nls_uint32 sysdepref = + W (domain->must_swap, p->sysdepref); + size_t n; + + if (segsize > 0) + { + memcpy (mem, static_segments, segsize); + mem += segsize; + static_segments += segsize; + } + + if (sysdepref == SEGMENTS_END) + break; + + n = strlen (sysdep_segment_values[sysdepref]); + memcpy (mem, sysdep_segment_values[sysdepref], n); + mem += n; + } + + inmem_tab_entry->length = + mem - inmem_tab_entry->pointer; + } + } + + k++; + } + } + if (k != n_inmem_sysdep_strings) + abort (); + + /* Compute the augmented hash table. */ + for (i = 0; i < domain->hash_size; i++) + inmem_hash_tab[i] = + W (domain->must_swap_hash_tab, domain->hash_tab[i]); + for (i = 0; i < n_inmem_sysdep_strings; i++) + { + const char *msgid = inmem_orig_sysdep_tab[i].pointer; + 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)); + + for (;;) + { + if (inmem_hash_tab[idx] == 0) + { + /* Hash table entry is empty. Use it. */ + inmem_hash_tab[idx] = 1 + domain->nstrings + i; + break; + } + + if (idx >= domain->hash_size - incr) + idx -= domain->hash_size - incr; + else + idx += incr; + } + } + + domain->n_sysdep_strings = n_inmem_sysdep_strings; + domain->orig_sysdep_tab = inmem_orig_sysdep_tab; + domain->trans_sysdep_tab = inmem_trans_sysdep_tab; + + domain->hash_tab = inmem_hash_tab; + domain->must_swap_hash_tab = 0; + } + else + { + domain->n_sysdep_strings = 0; + domain->orig_sysdep_tab = NULL; + domain->trans_sysdep_tab = NULL; + } + + freea (sysdep_segment_values); + } + else + { + domain->n_sysdep_strings = 0; + domain->orig_sysdep_tab = NULL; + domain->trans_sysdep_tab = NULL; + } + } + break; + } + break; + default: + /* This is an invalid revision. */ + invalid: + /* This is an invalid .mo file. */ + if (domain->malloced) + free (domain->malloced); +#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. */ + EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals); +} + + +#ifdef _LIBC +void +internal_function +_nl_unload_domain (struct loaded_domain *domain) +{ + if (domain->plural != &__gettext_germanic_plural) + __gettext_free_exp (domain->plural); + + _nl_free_domain_conv (domain); + + if (domain->malloced) + free (domain->malloced); + +# 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..1252f3f --- /dev/null +++ b/intl/localcharset.c @@ -0,0 +1,409 @@ +/* Determine a canonical name for the current locale's character encoding. + + Copyright (C) 2000-2004 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +/* Specification. */ +#include "localcharset.h" + +#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 + +#if defined __EMX__ +/* Assume EMX program runs on OS/2, even if compiled under DOS. */ +# define OS2 +#endif + +#if !defined WIN32 +# if HAVE_LANGINFO_CODESET +# include +# else +# if HAVE_SETLOCALE +# include +# endif +# endif +#elif defined WIN32 +# define WIN32_LEAN_AND_MEAN +# include +#endif +#if defined OS2 +# define INCL_DOS +# include +#endif + +#if ENABLE_RELOCATABLE +# include "relocatable.h" +#else +# define relocate(pathname) (pathname) +#endif + +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS */ +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +#endif + +#ifndef DIRECTORY_SEPARATOR +# define DIRECTORY_SEPARATOR '/' +#endif + +#ifndef ISSLASH +# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) +#endif + +#if HAVE_DECL_GETC_UNLOCKED +# undef getc +# define getc getc_unlocked +#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 const char * volatile charset_aliases; + +/* Return a pointer to the contents of the charset.alias file. */ +static const char * +get_charset_aliases () +{ + const char *cp; + + cp = charset_aliases; + if (cp == NULL) + { +#if !(defined VMS || defined WIN32) + FILE *fp; + const char *dir; + const char *base = "charset.alias"; + char *file_name; + + /* Make it possible to override the charset.alias location. This is + necessary for running the testsuite before "make install". */ + dir = getenv ("CHARSETALIASDIR"); + if (dir == NULL || dir[0] == '\0') + dir = relocate (LIBDIR); + + /* 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. */ + char *res_ptr = NULL; + size_t res_size = 0; + + for (;;) + { + int c; + char buf1[50+1]; + char buf2[50+1]; + size_t l1, l2; + char *old_res_ptr; + + 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); + old_res_ptr = res_ptr; + if (res_size == 0) + { + res_size = l1 + 1 + l2 + 1; + res_ptr = (char *) malloc (res_size + 1); + } + else + { + res_size += l1 + 1 + l2 + 1; + res_ptr = (char *) realloc (res_ptr, res_size + 1); + } + if (res_ptr == NULL) + { + /* Out of memory. */ + res_size = 0; + if (old_res_ptr != NULL) + free (old_res_ptr); + 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 + +# if defined VMS + /* To avoid the troubles of an extra file charset.alias_vms in the + sources of many GNU packages, simply inline the aliases here. */ + /* The list of encodings is taken from the OpenVMS 7.3-1 documentation + "Compaq C Run-Time Library Reference Manual for OpenVMS systems" + section 10.7 "Handling Different Character Sets". */ + cp = "ISO8859-1" "\0" "ISO-8859-1" "\0" + "ISO8859-2" "\0" "ISO-8859-2" "\0" + "ISO8859-5" "\0" "ISO-8859-5" "\0" + "ISO8859-7" "\0" "ISO-8859-7" "\0" + "ISO8859-8" "\0" "ISO-8859-8" "\0" + "ISO8859-9" "\0" "ISO-8859-9" "\0" + /* Japanese */ + "eucJP" "\0" "EUC-JP" "\0" + "SJIS" "\0" "SHIFT_JIS" "\0" + "DECKANJI" "\0" "DEC-KANJI" "\0" + "SDECKANJI" "\0" "EUC-JP" "\0" + /* Chinese */ + "eucTW" "\0" "EUC-TW" "\0" + "DECHANYU" "\0" "DEC-HANYU" "\0" + "DECHANZI" "\0" "GB2312" "\0" + /* Korean */ + "DECKOREAN" "\0" "EUC-KR" "\0"; +# endif + +# if defined 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" + "CP20127" "\0" "ASCII" "\0" + "CP20866" "\0" "KOI8-R" "\0" + "CP21866" "\0" "KOI8-RU" "\0" + "CP28591" "\0" "ISO-8859-1" "\0" + "CP28592" "\0" "ISO-8859-2" "\0" + "CP28593" "\0" "ISO-8859-3" "\0" + "CP28594" "\0" "ISO-8859-4" "\0" + "CP28595" "\0" "ISO-8859-5" "\0" + "CP28596" "\0" "ISO-8859-6" "\0" + "CP28597" "\0" "ISO-8859-7" "\0" + "CP28598" "\0" "ISO-8859-8" "\0" + "CP28599" "\0" "ISO-8859-9" "\0" + "CP28605" "\0" "ISO-8859-15" "\0"; +# endif +#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; + +#if !(defined WIN32 || defined OS2) + +# 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 + +#elif defined WIN32 + + static char buf[2 + 10 + 1]; + + /* Woe32 has a function returning the locale's codepage as a number. */ + sprintf (buf, "CP%u", GetACP ()); + codeset = buf; + +#elif defined OS2 + + const char *locale; + static char buf[2 + 10 + 1]; + ULONG cp[3]; + ULONG cplen; + + /* Allow user to override the codeset, as set in the operating system, + with standard language environment variables. */ + locale = getenv ("LC_ALL"); + if (locale == NULL || locale[0] == '\0') + { + locale = getenv ("LC_CTYPE"); + if (locale == NULL || locale[0] == '\0') + locale = getenv ("LANG"); + } + if (locale != NULL && locale[0] != '\0') + { + /* If the locale name contains an encoding after the dot, return it. */ + const char *dot = strchr (locale, '.'); + + if (dot != NULL) + { + const char *modifier; + + dot++; + /* Look for the possible @... trailer and remove it, if any. */ + modifier = strchr (dot, '@'); + if (modifier == NULL) + return dot; + if (modifier - dot < sizeof (buf)) + { + memcpy (buf, dot, modifier - dot); + buf [modifier - dot] = '\0'; + return buf; + } + } + + /* Resolve through the charset.alias file. */ + codeset = locale; + } + else + { + /* OS/2 has a function returning the locale's codepage as a number. */ + if (DosQueryCp (sizeof (cp), cp, &cplen)) + codeset = ""; + else + { + sprintf (buf, "CP%u", cp[0]); + 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; + } + + /* Don't return an empty string. GNU libc and GNU libiconv interpret + the empty string as denoting "the locale's character encoding", + thus GNU libiconv would call this function a second time. */ + if (codeset[0] == '\0') + codeset = "ASCII"; + + return codeset; +} diff --git a/intl/localcharset.h b/intl/localcharset.h new file mode 100644 index 0000000..129e4a4 --- /dev/null +++ b/intl/localcharset.h @@ -0,0 +1,42 @@ +/* Determine a canonical name for the current locale's character encoding. + Copyright (C) 2000-2003 Free Software Foundation, Inc. + This file is part of the GNU CHARSET Library. + + 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _LOCALCHARSET_H +#define _LOCALCHARSET_H + + +#ifdef __cplusplus +extern "C" { +#endif + + +/* 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. */ +extern const char * locale_charset (void); + + +#ifdef __cplusplus +} +#endif + + +#endif /* _LOCALCHARSET_H */ diff --git a/intl/locale.alias b/intl/locale.alias new file mode 100644 index 0000000..faa6969 --- /dev/null +++ b/intl/locale.alias @@ -0,0 +1,78 @@ +# Locale name alias data base. +# Copyright (C) 1996-2001,2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# 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 nb_NO.ISO-8859-1 +bokmål nb_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 he_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 +no_NO nb_NO.ISO-8859-1 +no_NO.ISO-8859-1 nb_NO.ISO-8859-1 +norwegian nb_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..7a092a0 --- /dev/null +++ b/intl/localealias.c @@ -0,0 +1,414 @@ +/* Handle aliases for locale names. + Copyright (C) 1995-1999, 2000-2001, 2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + 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 +#if defined _LIBC || defined HAVE___FSETLOCKING +# include +#endif +#include + +#ifdef __GNUC__ +# undef alloca +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#include +#include + +#include "gettextP.h" + +#if ENABLE_RELOCATABLE +# include "relocatable.h" +#else +# define relocate(pathname) (pathname) +#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 strcasecmp __strcasecmp + +# ifndef mempcpy +# define mempcpy __mempcpy +# endif +# define HAVE_MEMPCPY 1 +# define HAVE___FSETLOCKING 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 + +/* Some optimizations for glibc. */ +#ifdef _LIBC +# define FEOF(fp) feof_unlocked (fp) +# define FGETS(buf, n, fp) fgets_unlocked (buf, n, fp) +#else +# define FEOF(fp) feof (fp) +# define FGETS(buf, n, fp) fgets (buf, n, fp) +#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 || HAVE_DECL_FGETS_UNLOCKED +# undef fgets +# define fgets(buf, len, s) fgets_unlocked (buf, len, s) +#endif +#if defined _LIBC_REENTRANT || HAVE_DECL_FEOF_UNLOCKED +# undef feof +# define feof(s) feof_unlocked (s) +#endif + + +struct alias_map +{ + const char *alias; + const char *value; +}; + + +#ifndef _LIBC +# define libc_freeres_ptr(decl) decl +#endif + +libc_freeres_ptr (static char *string_space); +static size_t string_space_act; +static size_t string_space_max; +libc_freeres_ptr (static struct alias_map *map); +static size_t nmap; +static size_t maxmap; + + +/* Prototypes for local functions. */ +static size_t read_alias_file (const char *fname, int fname_len) + internal_function; +static int extend_alias_table (void); +static int alias_compare (const struct alias_map *map1, + const struct alias_map *map2); + + +const char * +_nl_expand_alias (const char *name) +{ + static const char *locale_alias_path; + struct alias_map *retval; + const char *result = NULL; + size_t added; + +#ifdef _LIBC + __libc_lock_lock (lock); +#endif + + if (locale_alias_path == NULL) + locale_alias_path = LOCALE_ALIAS_PATH; + + do + { + struct alias_map item; + + item.alias = name; + + if (nmap > 0) + retval = (struct alias_map *) bsearch (&item, map, nmap, + sizeof (struct alias_map), + (int (*) (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 (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 (relocate (full_fname), "r"); + freea (full_fname); + if (fp == NULL) + return 0; + +#ifdef HAVE___FSETLOCKING + /* No threads present. */ + __fsetlocking (fp, FSETLOCKING_BYCALLER); +#endif + + 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 + We avoid a multi-kilobyte buffer here since this would use up + stack space which we might not have if the program ran out of + memory. */ + char buf[400]; + char *alias; + char *value; + char *cp; + + if (FGETS (buf, sizeof buf, fp) == NULL) + /* EOF reached. */ + break; + + cp = buf; + /* Ignore leading white space. */ + while (isspace ((unsigned char) cp[0])) + ++cp; + + /* A leading '#' signals a comment line. */ + if (cp[0] != '\0' && cp[0] != '#') + { + alias = cp++; + while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) + ++cp; + /* Terminate alias name. */ + if (cp[0] != '\0') + *cp++ = '\0'; + + /* Now look for the beginning of the value. */ + while (isspace ((unsigned char) cp[0])) + ++cp; + + if (cp[0] != '\0') + { + size_t alias_len; + size_t value_len; + + value = cp++; + while (cp[0] != '\0' && !isspace ((unsigned char) 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; + } + } + + /* Possibly not the whole line fits into the buffer. Ignore + the rest of the line. */ + while (strchr (buf, '\n') == NULL) + if (FGETS (buf, sizeof buf, fp) == NULL) + /* Make sure the inner loop will be left. The outer loop + will exit at the `feof' test. */ + break; + } + + /* 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 (*) (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; +} + + +static int +alias_compare (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/localename.c b/intl/localename.c new file mode 100644 index 0000000..b855ace --- /dev/null +++ b/intl/localename.c @@ -0,0 +1,1500 @@ +/* Determine the current selected locale. + Copyright (C) 1995-1999, 2000-2005 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Ulrich Drepper , 1995. */ +/* Win32 code written by Tor Lillqvist . */ +/* MacOS X code written by Bruno Haible . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE +# include +# include +# if HAVE_CFLOCALECOPYCURRENT +# include +# elif HAVE_CFPREFERENCESCOPYAPPVALUE +# include +# endif +#endif + +#if defined _WIN32 || defined __WIN32__ +# undef WIN32 /* avoid warning on mingw32 */ +# define WIN32 +#endif + +#ifdef WIN32 +# define WIN32_LEAN_AND_MEAN +# include +/* List of language codes, sorted by value: + 0x01 LANG_ARABIC + 0x02 LANG_BULGARIAN + 0x03 LANG_CATALAN + 0x04 LANG_CHINESE + 0x05 LANG_CZECH + 0x06 LANG_DANISH + 0x07 LANG_GERMAN + 0x08 LANG_GREEK + 0x09 LANG_ENGLISH + 0x0a LANG_SPANISH + 0x0b LANG_FINNISH + 0x0c LANG_FRENCH + 0x0d LANG_HEBREW + 0x0e LANG_HUNGARIAN + 0x0f LANG_ICELANDIC + 0x10 LANG_ITALIAN + 0x11 LANG_JAPANESE + 0x12 LANG_KOREAN + 0x13 LANG_DUTCH + 0x14 LANG_NORWEGIAN + 0x15 LANG_POLISH + 0x16 LANG_PORTUGUESE + 0x17 LANG_RHAETO_ROMANCE + 0x18 LANG_ROMANIAN + 0x19 LANG_RUSSIAN + 0x1a LANG_CROATIAN == LANG_SERBIAN + 0x1b LANG_SLOVAK + 0x1c LANG_ALBANIAN + 0x1d LANG_SWEDISH + 0x1e LANG_THAI + 0x1f LANG_TURKISH + 0x20 LANG_URDU + 0x21 LANG_INDONESIAN + 0x22 LANG_UKRAINIAN + 0x23 LANG_BELARUSIAN + 0x24 LANG_SLOVENIAN + 0x25 LANG_ESTONIAN + 0x26 LANG_LATVIAN + 0x27 LANG_LITHUANIAN + 0x28 LANG_TAJIK + 0x29 LANG_FARSI + 0x2a LANG_VIETNAMESE + 0x2b LANG_ARMENIAN + 0x2c LANG_AZERI + 0x2d LANG_BASQUE + 0x2e LANG_SORBIAN + 0x2f LANG_MACEDONIAN + 0x30 LANG_SUTU + 0x31 LANG_TSONGA + 0x32 LANG_TSWANA + 0x33 LANG_VENDA + 0x34 LANG_XHOSA + 0x35 LANG_ZULU + 0x36 LANG_AFRIKAANS + 0x37 LANG_GEORGIAN + 0x38 LANG_FAEROESE + 0x39 LANG_HINDI + 0x3a LANG_MALTESE + 0x3b LANG_SAAMI + 0x3c LANG_GAELIC + 0x3d LANG_YIDDISH + 0x3e LANG_MALAY + 0x3f LANG_KAZAK + 0x40 LANG_KYRGYZ + 0x41 LANG_SWAHILI + 0x42 LANG_TURKMEN + 0x43 LANG_UZBEK + 0x44 LANG_TATAR + 0x45 LANG_BENGALI + 0x46 LANG_PUNJABI + 0x47 LANG_GUJARATI + 0x48 LANG_ORIYA + 0x49 LANG_TAMIL + 0x4a LANG_TELUGU + 0x4b LANG_KANNADA + 0x4c LANG_MALAYALAM + 0x4d LANG_ASSAMESE + 0x4e LANG_MARATHI + 0x4f LANG_SANSKRIT + 0x50 LANG_MONGOLIAN + 0x51 LANG_TIBETAN + 0x52 LANG_WELSH + 0x53 LANG_CAMBODIAN + 0x54 LANG_LAO + 0x55 LANG_BURMESE + 0x56 LANG_GALICIAN + 0x57 LANG_KONKANI + 0x58 LANG_MANIPURI + 0x59 LANG_SINDHI + 0x5a LANG_SYRIAC + 0x5b LANG_SINHALESE + 0x5c LANG_CHEROKEE + 0x5d LANG_INUKTITUT + 0x5e LANG_AMHARIC + 0x5f LANG_TAMAZIGHT + 0x60 LANG_KASHMIRI + 0x61 LANG_NEPALI + 0x62 LANG_FRISIAN + 0x63 LANG_PASHTO + 0x64 LANG_TAGALOG + 0x65 LANG_DIVEHI + 0x66 LANG_EDO + 0x67 LANG_FULFULDE + 0x68 LANG_HAUSA + 0x69 LANG_IBIBIO + 0x6a LANG_YORUBA + 0x70 LANG_IGBO + 0x71 LANG_KANURI + 0x72 LANG_OROMO + 0x73 LANG_TIGRINYA + 0x74 LANG_GUARANI + 0x75 LANG_HAWAIIAN + 0x76 LANG_LATIN + 0x77 LANG_SOMALI + 0x78 LANG_YI + 0x79 LANG_PAPIAMENTU +*/ +/* Mingw headers don't have latest language and sublanguage codes. */ +# ifndef LANG_AFRIKAANS +# define LANG_AFRIKAANS 0x36 +# endif +# ifndef LANG_ALBANIAN +# define LANG_ALBANIAN 0x1c +# endif +# ifndef LANG_AMHARIC +# define LANG_AMHARIC 0x5e +# endif +# ifndef LANG_ARABIC +# define LANG_ARABIC 0x01 +# endif +# ifndef LANG_ARMENIAN +# define LANG_ARMENIAN 0x2b +# endif +# ifndef LANG_ASSAMESE +# define LANG_ASSAMESE 0x4d +# endif +# ifndef LANG_AZERI +# define LANG_AZERI 0x2c +# endif +# ifndef LANG_BASQUE +# define LANG_BASQUE 0x2d +# endif +# ifndef LANG_BELARUSIAN +# define LANG_BELARUSIAN 0x23 +# endif +# ifndef LANG_BENGALI +# define LANG_BENGALI 0x45 +# endif +# ifndef LANG_BURMESE +# define LANG_BURMESE 0x55 +# endif +# ifndef LANG_CAMBODIAN +# define LANG_CAMBODIAN 0x53 +# endif +# ifndef LANG_CATALAN +# define LANG_CATALAN 0x03 +# endif +# ifndef LANG_CHEROKEE +# define LANG_CHEROKEE 0x5c +# endif +# ifndef LANG_DIVEHI +# define LANG_DIVEHI 0x65 +# endif +# ifndef LANG_EDO +# define LANG_EDO 0x66 +# endif +# ifndef LANG_ESTONIAN +# define LANG_ESTONIAN 0x25 +# endif +# ifndef LANG_FAEROESE +# define LANG_FAEROESE 0x38 +# endif +# ifndef LANG_FARSI +# define LANG_FARSI 0x29 +# endif +# ifndef LANG_FRISIAN +# define LANG_FRISIAN 0x62 +# endif +# ifndef LANG_FULFULDE +# define LANG_FULFULDE 0x67 +# endif +# ifndef LANG_GAELIC +# define LANG_GAELIC 0x3c +# endif +# ifndef LANG_GALICIAN +# define LANG_GALICIAN 0x56 +# endif +# ifndef LANG_GEORGIAN +# define LANG_GEORGIAN 0x37 +# endif +# ifndef LANG_GUARANI +# define LANG_GUARANI 0x74 +# endif +# ifndef LANG_GUJARATI +# define LANG_GUJARATI 0x47 +# endif +# ifndef LANG_HAUSA +# define LANG_HAUSA 0x68 +# endif +# ifndef LANG_HAWAIIAN +# define LANG_HAWAIIAN 0x75 +# endif +# ifndef LANG_HEBREW +# define LANG_HEBREW 0x0d +# endif +# ifndef LANG_HINDI +# define LANG_HINDI 0x39 +# endif +# ifndef LANG_IBIBIO +# define LANG_IBIBIO 0x69 +# endif +# ifndef LANG_IGBO +# define LANG_IGBO 0x70 +# endif +# ifndef LANG_INDONESIAN +# define LANG_INDONESIAN 0x21 +# endif +# ifndef LANG_INUKTITUT +# define LANG_INUKTITUT 0x5d +# endif +# ifndef LANG_KANNADA +# define LANG_KANNADA 0x4b +# endif +# ifndef LANG_KANURI +# define LANG_KANURI 0x71 +# endif +# ifndef LANG_KASHMIRI +# define LANG_KASHMIRI 0x60 +# endif +# ifndef LANG_KAZAK +# define LANG_KAZAK 0x3f +# endif +# ifndef LANG_KONKANI +# define LANG_KONKANI 0x57 +# endif +# ifndef LANG_KYRGYZ +# define LANG_KYRGYZ 0x40 +# endif +# ifndef LANG_LAO +# define LANG_LAO 0x54 +# endif +# ifndef LANG_LATIN +# define LANG_LATIN 0x76 +# endif +# ifndef LANG_LATVIAN +# define LANG_LATVIAN 0x26 +# endif +# ifndef LANG_LITHUANIAN +# define LANG_LITHUANIAN 0x27 +# endif +# ifndef LANG_MACEDONIAN +# define LANG_MACEDONIAN 0x2f +# endif +# ifndef LANG_MALAY +# define LANG_MALAY 0x3e +# endif +# ifndef LANG_MALAYALAM +# define LANG_MALAYALAM 0x4c +# endif +# ifndef LANG_MALTESE +# define LANG_MALTESE 0x3a +# endif +# ifndef LANG_MANIPURI +# define LANG_MANIPURI 0x58 +# endif +# ifndef LANG_MARATHI +# define LANG_MARATHI 0x4e +# endif +# ifndef LANG_MONGOLIAN +# define LANG_MONGOLIAN 0x50 +# endif +# ifndef LANG_NEPALI +# define LANG_NEPALI 0x61 +# endif +# ifndef LANG_ORIYA +# define LANG_ORIYA 0x48 +# endif +# ifndef LANG_OROMO +# define LANG_OROMO 0x72 +# endif +# ifndef LANG_PAPIAMENTU +# define LANG_PAPIAMENTU 0x79 +# endif +# ifndef LANG_PASHTO +# define LANG_PASHTO 0x63 +# endif +# ifndef LANG_PUNJABI +# define LANG_PUNJABI 0x46 +# endif +# ifndef LANG_RHAETO_ROMANCE +# define LANG_RHAETO_ROMANCE 0x17 +# endif +# ifndef LANG_SAAMI +# define LANG_SAAMI 0x3b +# endif +# ifndef LANG_SANSKRIT +# define LANG_SANSKRIT 0x4f +# endif +# ifndef LANG_SERBIAN +# define LANG_SERBIAN 0x1a +# endif +# ifndef LANG_SINDHI +# define LANG_SINDHI 0x59 +# endif +# ifndef LANG_SINHALESE +# define LANG_SINHALESE 0x5b +# endif +# ifndef LANG_SLOVAK +# define LANG_SLOVAK 0x1b +# endif +# ifndef LANG_SOMALI +# define LANG_SOMALI 0x77 +# endif +# ifndef LANG_SORBIAN +# define LANG_SORBIAN 0x2e +# endif +# ifndef LANG_SUTU +# define LANG_SUTU 0x30 +# endif +# ifndef LANG_SWAHILI +# define LANG_SWAHILI 0x41 +# endif +# ifndef LANG_SYRIAC +# define LANG_SYRIAC 0x5a +# endif +# ifndef LANG_TAGALOG +# define LANG_TAGALOG 0x64 +# endif +# ifndef LANG_TAJIK +# define LANG_TAJIK 0x28 +# endif +# ifndef LANG_TAMAZIGHT +# define LANG_TAMAZIGHT 0x5f +# endif +# ifndef LANG_TAMIL +# define LANG_TAMIL 0x49 +# endif +# ifndef LANG_TATAR +# define LANG_TATAR 0x44 +# endif +# ifndef LANG_TELUGU +# define LANG_TELUGU 0x4a +# endif +# ifndef LANG_THAI +# define LANG_THAI 0x1e +# endif +# ifndef LANG_TIBETAN +# define LANG_TIBETAN 0x51 +# endif +# ifndef LANG_TIGRINYA +# define LANG_TIGRINYA 0x73 +# endif +# ifndef LANG_TSONGA +# define LANG_TSONGA 0x31 +# endif +# ifndef LANG_TSWANA +# define LANG_TSWANA 0x32 +# endif +# ifndef LANG_TURKMEN +# define LANG_TURKMEN 0x42 +# endif +# ifndef LANG_UKRAINIAN +# define LANG_UKRAINIAN 0x22 +# endif +# ifndef LANG_URDU +# define LANG_URDU 0x20 +# endif +# ifndef LANG_UZBEK +# define LANG_UZBEK 0x43 +# endif +# ifndef LANG_VENDA +# define LANG_VENDA 0x33 +# endif +# ifndef LANG_VIETNAMESE +# define LANG_VIETNAMESE 0x2a +# endif +# ifndef LANG_WELSH +# define LANG_WELSH 0x52 +# endif +# ifndef LANG_XHOSA +# define LANG_XHOSA 0x34 +# endif +# ifndef LANG_YI +# define LANG_YI 0x78 +# endif +# ifndef LANG_YIDDISH +# define LANG_YIDDISH 0x3d +# endif +# ifndef LANG_YORUBA +# define LANG_YORUBA 0x6a +# endif +# ifndef LANG_ZULU +# define LANG_ZULU 0x35 +# endif +# ifndef SUBLANG_ARABIC_SAUDI_ARABIA +# define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 +# endif +# ifndef SUBLANG_ARABIC_IRAQ +# define SUBLANG_ARABIC_IRAQ 0x02 +# endif +# ifndef SUBLANG_ARABIC_EGYPT +# define SUBLANG_ARABIC_EGYPT 0x03 +# endif +# ifndef SUBLANG_ARABIC_LIBYA +# define SUBLANG_ARABIC_LIBYA 0x04 +# endif +# ifndef SUBLANG_ARABIC_ALGERIA +# define SUBLANG_ARABIC_ALGERIA 0x05 +# endif +# ifndef SUBLANG_ARABIC_MOROCCO +# define SUBLANG_ARABIC_MOROCCO 0x06 +# endif +# ifndef SUBLANG_ARABIC_TUNISIA +# define SUBLANG_ARABIC_TUNISIA 0x07 +# endif +# ifndef SUBLANG_ARABIC_OMAN +# define SUBLANG_ARABIC_OMAN 0x08 +# endif +# ifndef SUBLANG_ARABIC_YEMEN +# define SUBLANG_ARABIC_YEMEN 0x09 +# endif +# ifndef SUBLANG_ARABIC_SYRIA +# define SUBLANG_ARABIC_SYRIA 0x0a +# endif +# ifndef SUBLANG_ARABIC_JORDAN +# define SUBLANG_ARABIC_JORDAN 0x0b +# endif +# ifndef SUBLANG_ARABIC_LEBANON +# define SUBLANG_ARABIC_LEBANON 0x0c +# endif +# ifndef SUBLANG_ARABIC_KUWAIT +# define SUBLANG_ARABIC_KUWAIT 0x0d +# endif +# ifndef SUBLANG_ARABIC_UAE +# define SUBLANG_ARABIC_UAE 0x0e +# endif +# ifndef SUBLANG_ARABIC_BAHRAIN +# define SUBLANG_ARABIC_BAHRAIN 0x0f +# endif +# ifndef SUBLANG_ARABIC_QATAR +# define SUBLANG_ARABIC_QATAR 0x10 +# endif +# ifndef SUBLANG_AZERI_LATIN +# define SUBLANG_AZERI_LATIN 0x01 +# endif +# ifndef SUBLANG_AZERI_CYRILLIC +# define SUBLANG_AZERI_CYRILLIC 0x02 +# endif +# ifndef SUBLANG_BENGALI_INDIA +# define SUBLANG_BENGALI_INDIA 0x00 +# endif +# ifndef SUBLANG_BENGALI_BANGLADESH +# define SUBLANG_BENGALI_BANGLADESH 0x01 +# endif +# ifndef SUBLANG_CHINESE_MACAU +# define SUBLANG_CHINESE_MACAU 0x05 +# endif +# ifndef SUBLANG_ENGLISH_SOUTH_AFRICA +# define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 +# endif +# ifndef SUBLANG_ENGLISH_JAMAICA +# define SUBLANG_ENGLISH_JAMAICA 0x08 +# endif +# ifndef SUBLANG_ENGLISH_CARIBBEAN +# define SUBLANG_ENGLISH_CARIBBEAN 0x09 +# endif +# ifndef SUBLANG_ENGLISH_BELIZE +# define SUBLANG_ENGLISH_BELIZE 0x0a +# endif +# ifndef SUBLANG_ENGLISH_TRINIDAD +# define SUBLANG_ENGLISH_TRINIDAD 0x0b +# endif +# ifndef SUBLANG_ENGLISH_ZIMBABWE +# define SUBLANG_ENGLISH_ZIMBABWE 0x0c +# endif +# ifndef SUBLANG_ENGLISH_PHILIPPINES +# define SUBLANG_ENGLISH_PHILIPPINES 0x0d +# endif +# ifndef SUBLANG_ENGLISH_INDONESIA +# define SUBLANG_ENGLISH_INDONESIA 0x0e +# endif +# ifndef SUBLANG_ENGLISH_HONGKONG +# define SUBLANG_ENGLISH_HONGKONG 0x0f +# endif +# ifndef SUBLANG_ENGLISH_INDIA +# define SUBLANG_ENGLISH_INDIA 0x10 +# endif +# ifndef SUBLANG_ENGLISH_MALAYSIA +# define SUBLANG_ENGLISH_MALAYSIA 0x11 +# endif +# ifndef SUBLANG_ENGLISH_SINGAPORE +# define SUBLANG_ENGLISH_SINGAPORE 0x12 +# endif +# ifndef SUBLANG_FRENCH_LUXEMBOURG +# define SUBLANG_FRENCH_LUXEMBOURG 0x05 +# endif +# ifndef SUBLANG_FRENCH_MONACO +# define SUBLANG_FRENCH_MONACO 0x06 +# endif +# ifndef SUBLANG_FRENCH_WESTINDIES +# define SUBLANG_FRENCH_WESTINDIES 0x07 +# endif +# ifndef SUBLANG_FRENCH_REUNION +# define SUBLANG_FRENCH_REUNION 0x08 +# endif +# ifndef SUBLANG_FRENCH_CONGO +# define SUBLANG_FRENCH_CONGO 0x09 +# endif +# ifndef SUBLANG_FRENCH_SENEGAL +# define SUBLANG_FRENCH_SENEGAL 0x0a +# endif +# ifndef SUBLANG_FRENCH_CAMEROON +# define SUBLANG_FRENCH_CAMEROON 0x0b +# endif +# ifndef SUBLANG_FRENCH_COTEDIVOIRE +# define SUBLANG_FRENCH_COTEDIVOIRE 0x0c +# endif +# ifndef SUBLANG_FRENCH_MALI +# define SUBLANG_FRENCH_MALI 0x0d +# endif +# ifndef SUBLANG_FRENCH_MOROCCO +# define SUBLANG_FRENCH_MOROCCO 0x0e +# endif +# ifndef SUBLANG_FRENCH_HAITI +# define SUBLANG_FRENCH_HAITI 0x0f +# endif +# ifndef SUBLANG_GERMAN_LUXEMBOURG +# define SUBLANG_GERMAN_LUXEMBOURG 0x04 +# endif +# ifndef SUBLANG_GERMAN_LIECHTENSTEIN +# define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 +# endif +# ifndef SUBLANG_KASHMIRI_INDIA +# define SUBLANG_KASHMIRI_INDIA 0x02 +# endif +# ifndef SUBLANG_MALAY_MALAYSIA +# define SUBLANG_MALAY_MALAYSIA 0x01 +# endif +# ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM +# define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02 +# endif +# ifndef SUBLANG_NEPALI_INDIA +# define SUBLANG_NEPALI_INDIA 0x02 +# endif +# ifndef SUBLANG_PUNJABI_INDIA +# define SUBLANG_PUNJABI_INDIA 0x00 +# endif +# ifndef SUBLANG_PUNJABI_PAKISTAN +# define SUBLANG_PUNJABI_PAKISTAN 0x01 +# endif +# ifndef SUBLANG_ROMANIAN_ROMANIA +# define SUBLANG_ROMANIAN_ROMANIA 0x00 +# endif +# ifndef SUBLANG_ROMANIAN_MOLDOVA +# define SUBLANG_ROMANIAN_MOLDOVA 0x01 +# endif +# ifndef SUBLANG_SERBIAN_LATIN +# define SUBLANG_SERBIAN_LATIN 0x02 +# endif +# ifndef SUBLANG_SERBIAN_CYRILLIC +# define SUBLANG_SERBIAN_CYRILLIC 0x03 +# endif +# ifndef SUBLANG_SINDHI_INDIA +# define SUBLANG_SINDHI_INDIA 0x00 +# endif +# ifndef SUBLANG_SINDHI_PAKISTAN +# define SUBLANG_SINDHI_PAKISTAN 0x01 +# endif +# ifndef SUBLANG_SPANISH_GUATEMALA +# define SUBLANG_SPANISH_GUATEMALA 0x04 +# endif +# ifndef SUBLANG_SPANISH_COSTA_RICA +# define SUBLANG_SPANISH_COSTA_RICA 0x05 +# endif +# ifndef SUBLANG_SPANISH_PANAMA +# define SUBLANG_SPANISH_PANAMA 0x06 +# endif +# ifndef SUBLANG_SPANISH_DOMINICAN_REPUBLIC +# define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 +# endif +# ifndef SUBLANG_SPANISH_VENEZUELA +# define SUBLANG_SPANISH_VENEZUELA 0x08 +# endif +# ifndef SUBLANG_SPANISH_COLOMBIA +# define SUBLANG_SPANISH_COLOMBIA 0x09 +# endif +# ifndef SUBLANG_SPANISH_PERU +# define SUBLANG_SPANISH_PERU 0x0a +# endif +# ifndef SUBLANG_SPANISH_ARGENTINA +# define SUBLANG_SPANISH_ARGENTINA 0x0b +# endif +# ifndef SUBLANG_SPANISH_ECUADOR +# define SUBLANG_SPANISH_ECUADOR 0x0c +# endif +# ifndef SUBLANG_SPANISH_CHILE +# define SUBLANG_SPANISH_CHILE 0x0d +# endif +# ifndef SUBLANG_SPANISH_URUGUAY +# define SUBLANG_SPANISH_URUGUAY 0x0e +# endif +# ifndef SUBLANG_SPANISH_PARAGUAY +# define SUBLANG_SPANISH_PARAGUAY 0x0f +# endif +# ifndef SUBLANG_SPANISH_BOLIVIA +# define SUBLANG_SPANISH_BOLIVIA 0x10 +# endif +# ifndef SUBLANG_SPANISH_EL_SALVADOR +# define SUBLANG_SPANISH_EL_SALVADOR 0x11 +# endif +# ifndef SUBLANG_SPANISH_HONDURAS +# define SUBLANG_SPANISH_HONDURAS 0x12 +# endif +# ifndef SUBLANG_SPANISH_NICARAGUA +# define SUBLANG_SPANISH_NICARAGUA 0x13 +# endif +# ifndef SUBLANG_SPANISH_PUERTO_RICO +# define SUBLANG_SPANISH_PUERTO_RICO 0x14 +# endif +# ifndef SUBLANG_SWEDISH_FINLAND +# define SUBLANG_SWEDISH_FINLAND 0x02 +# endif +# ifndef SUBLANG_TAMAZIGHT_ARABIC +# define SUBLANG_TAMAZIGHT_ARABIC 0x01 +# endif +# ifndef SUBLANG_TAMAZIGHT_LATIN +# define SUBLANG_TAMAZIGHT_LATIN 0x02 +# endif +# ifndef SUBLANG_TIGRINYA_ETHIOPIA +# define SUBLANG_TIGRINYA_ETHIOPIA 0x00 +# endif +# ifndef SUBLANG_TIGRINYA_ERITREA +# define SUBLANG_TIGRINYA_ERITREA 0x01 +# endif +# ifndef SUBLANG_URDU_PAKISTAN +# define SUBLANG_URDU_PAKISTAN 0x01 +# endif +# ifndef SUBLANG_URDU_INDIA +# define SUBLANG_URDU_INDIA 0x02 +# endif +# ifndef SUBLANG_UZBEK_LATIN +# define SUBLANG_UZBEK_LATIN 0x01 +# endif +# ifndef SUBLANG_UZBEK_CYRILLIC +# define SUBLANG_UZBEK_CYRILLIC 0x02 +# endif +#endif + +# if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE +/* MacOS X 10.2 or newer */ + +/* Canonicalize a MacOS X locale name to a Unix locale name. + NAME is a sufficiently large buffer. + On input, it contains the MacOS X locale name. + On output, it contains the Unix locale name. */ +void +_nl_locale_name_canonicalize (char *name) +{ + /* This conversion is based on a posting by + Deborah GoldSmith on 2005-03-08, + http://lists.apple.com/archives/carbon-dev/2005/Mar/msg00293.html */ + + /* Convert legacy (NeXTstep inherited) English names to Unix (ISO 639 and + ISO 3166) names. Prior to MacOS X 10.3, there is no API for doing this. + Therefore we do it ourselves, using a table based on the results of the + MacOS X 10.3.8 function + CFLocaleCreateCanonicalLocaleIdentifierFromString(). */ + typedef struct { const char legacy[21+1]; const char unixy[5+1]; } + legacy_entry; + static const legacy_entry legacy_table[] = { + { "Afrikaans", "af" }, + { "Albanian", "sq" }, + { "Amharic", "am" }, + { "Arabic", "ar" }, + { "Armenian", "hy" }, + { "Assamese", "as" }, + { "Aymara", "ay" }, + { "Azerbaijani", "az" }, + { "Basque", "eu" }, + { "Belarusian", "be" }, + { "Belorussian", "be" }, + { "Bengali", "bn" }, + { "Brazilian Portugese", "pt_BR" }, + { "Brazilian Portuguese", "pt_BR" }, + { "Breton", "br" }, + { "Bulgarian", "bg" }, + { "Burmese", "my" }, + { "Byelorussian", "be" }, + { "Catalan", "ca" }, + { "Chewa", "ny" }, + { "Chichewa", "ny" }, + { "Chinese", "zh" }, + { "Chinese, Simplified", "zh_CN" }, + { "Chinese, Traditional", "zh_TW" }, + { "Chinese, Tradtional", "zh_TW" }, + { "Croatian", "hr" }, + { "Czech", "cs" }, + { "Danish", "da" }, + { "Dutch", "nl" }, + { "Dzongkha", "dz" }, + { "English", "en" }, + { "Esperanto", "eo" }, + { "Estonian", "et" }, + { "Faroese", "fo" }, + { "Farsi", "fa" }, + { "Finnish", "fi" }, + { "Flemish", "nl_BE" }, + { "French", "fr" }, + { "Galician", "gl" }, + { "Gallegan", "gl" }, + { "Georgian", "ka" }, + { "German", "de" }, + { "Greek", "el" }, + { "Greenlandic", "kl" }, + { "Guarani", "gn" }, + { "Gujarati", "gu" }, + { "Hawaiian", "haw" }, /* Yes, "haw", not "cpe". */ + { "Hebrew", "he" }, + { "Hindi", "hi" }, + { "Hungarian", "hu" }, + { "Icelandic", "is" }, + { "Indonesian", "id" }, + { "Inuktitut", "iu" }, + { "Irish", "ga" }, + { "Italian", "it" }, + { "Japanese", "ja" }, + { "Javanese", "jv" }, + { "Kalaallisut", "kl" }, + { "Kannada", "kn" }, + { "Kashmiri", "ks" }, + { "Kazakh", "kk" }, + { "Khmer", "km" }, + { "Kinyarwanda", "rw" }, + { "Kirghiz", "ky" }, + { "Korean", "ko" }, + { "Kurdish", "ku" }, + { "Latin", "la" }, + { "Latvian", "lv" }, + { "Lithuanian", "lt" }, + { "Macedonian", "mk" }, + { "Malagasy", "mg" }, + { "Malay", "ms" }, + { "Malayalam", "ml" }, + { "Maltese", "mt" }, + { "Manx", "gv" }, + { "Marathi", "mr" }, + { "Moldavian", "mo" }, + { "Mongolian", "mn" }, + { "Nepali", "ne" }, + { "Norwegian", "nb" }, /* Yes, "nb", not the obsolete "no". */ + { "Nyanja", "ny" }, + { "Nynorsk", "nn" }, + { "Oriya", "or" }, + { "Oromo", "om" }, + { "Panjabi", "pa" }, + { "Pashto", "ps" }, + { "Persian", "fa" }, + { "Polish", "pl" }, + { "Portuguese", "pt" }, + { "Portuguese, Brazilian", "pt_BR" }, + { "Punjabi", "pa" }, + { "Pushto", "ps" }, + { "Quechua", "qu" }, + { "Romanian", "ro" }, + { "Ruanda", "rw" }, + { "Rundi", "rn" }, + { "Russian", "ru" }, + { "Sami", "se_NO" }, /* Not just "se". */ + { "Sanskrit", "sa" }, + { "Scottish", "gd" }, + { "Serbian", "sr" }, + { "Simplified Chinese", "zh_CN" }, + { "Sindhi", "sd" }, + { "Sinhalese", "si" }, + { "Slovak", "sk" }, + { "Slovenian", "sl" }, + { "Somali", "so" }, + { "Spanish", "es" }, + { "Sundanese", "su" }, + { "Swahili", "sw" }, + { "Swedish", "sv" }, + { "Tagalog", "tl" }, + { "Tajik", "tg" }, + { "Tajiki", "tg" }, + { "Tamil", "ta" }, + { "Tatar", "tt" }, + { "Telugu", "te" }, + { "Thai", "th" }, + { "Tibetan", "bo" }, + { "Tigrinya", "ti" }, + { "Tongan", "to" }, + { "Traditional Chinese", "zh_TW" }, + { "Turkish", "tr" }, + { "Turkmen", "tk" }, + { "Uighur", "ug" }, + { "Ukrainian", "uk" }, + { "Urdu", "ur" }, + { "Uzbek", "uz" }, + { "Vietnamese", "vi" }, + { "Welsh", "cy" }, + { "Yiddish", "yi" } + }; + + /* Convert new-style locale names with language tags (ISO 639 and ISO 15924) + to Unix (ISO 639 and ISO 3166) names. */ + typedef struct { const char langtag[7+1]; const char unixy[12+1]; } + langtag_entry; + static const langtag_entry langtag_table[] = { + /* MacOS X has "az-Arab", "az-Cyrl", "az-Latn". + The default script for az on Unix is Latin. */ + { "az-Latn", "az" }, + /* MacOS X has "ga-dots". Does not yet exist on Unix. */ + { "ga-dots", "ga" }, + /* MacOS X has "kk-Cyrl". Does not yet exist on Unix. */ + /* MacOS X has "mn-Cyrl", "mn-Mong". + The default script for mn on Unix is Cyrillic. */ + { "mn-Cyrl", "mn" }, + /* MacOS X has "ms-Arab", "ms-Latn". + The default script for ms on Unix is Latin. */ + { "ms-Latn", "ms" }, + /* MacOS X has "tg-Cyrl". + The default script for tg on Unix is Cyrillic. */ + { "tg-Cyrl", "tg" }, + /* MacOS X has "tk-Cyrl". Does not yet exist on Unix. */ + /* MacOS X has "tt-Cyrl". + The default script for tt on Unix is Cyrillic. */ + { "tt-Cyrl", "tt" }, + /* MacOS X has "zh-Hans", "zh-Hant". + Country codes are used to distinguish these on Unix. */ + { "zh-Hans", "zh_CN" }, + { "zh-Hant", "zh_TW" } + }; + + /* Convert script names (ISO 15924) to Unix conventions. + See http://www.unicode.org/iso15924/iso15924-codes.html */ + typedef struct { const char script[4+1]; const char unixy[9+1]; } + script_entry; + static const script_entry script_table[] = { + { "Arab", "arabic" }, + { "Cyrl", "cyrillic" }, + { "Mong", "mongolian" } + }; + + /* Step 1: Convert using legacy_table. */ + if (name[0] >= 'A' && name[0] <= 'Z') + { + unsigned int i1, i2; + i1 = 0; + i2 = sizeof (legacy_table) / sizeof (legacy_entry); + while (i2 - i1 > 1) + { + /* At this point we know that if name occurs in legacy_table, + its index must be >= i1 and < i2. */ + unsigned int i = (i1 + i2) >> 1; + const legacy_entry *p = &legacy_table[i]; + if (strcmp (name, p->legacy) < 0) + i2 = i; + else + i1 = i; + } + if (strcmp (name, legacy_table[i1].legacy) == 0) + { + strcpy (name, legacy_table[i1].unixy); + return; + } + } + + /* Step 2: Convert using langtag_table and script_table. */ + if (strlen (name) == 7 && name[2] == '-') + { + unsigned int i1, i2; + i1 = 0; + i2 = sizeof (langtag_table) / sizeof (langtag_entry); + while (i2 - i1 > 1) + { + /* At this point we know that if name occurs in langtag_table, + its index must be >= i1 and < i2. */ + unsigned int i = (i1 + i2) >> 1; + const langtag_entry *p = &langtag_table[i]; + if (strcmp (name, p->langtag) < 0) + i2 = i; + else + i1 = i; + } + if (strcmp (name, langtag_table[i1].langtag) == 0) + { + strcpy (name, langtag_table[i1].unixy); + return; + } + + i1 = 0; + i2 = sizeof (script_table) / sizeof (script_entry); + while (i2 - i1 > 1) + { + /* At this point we know that if (name + 3) occurs in script_table, + its index must be >= i1 and < i2. */ + unsigned int i = (i1 + i2) >> 1; + const script_entry *p = &script_table[i]; + if (strcmp (name + 3, p->script) < 0) + i2 = i; + else + i1 = i; + } + if (strcmp (name + 3, script_table[i1].script) == 0) + { + name[2] = '@'; + strcpy (name + 3, script_table[i1].unixy); + return; + } + } + + /* Step 3: Convert new-style dash to Unix underscore. */ + { + char *p; + for (p = name; *p != '\0'; p++) + if (*p == '-') + *p = '_'; + } +} + +#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 + +/* Determine the current locale's name, and canonicalize it into XPG syntax + language[_territory[.codeset]][@modifier] + The codeset part in the result is not reliable; the locale_charset() + should be used for codeset information instead. + The result must not be freed; it is statically allocated. */ + +const char * +_nl_locale_name_posix (int category, const char *categoryname) +{ + /* Use 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 HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL + return setlocale (category, NULL); +#else + const char *retval; + + /* Setting of LC_ALL overrides all other. */ + retval = getenv ("LC_ALL"); + if (retval != NULL && retval[0] != '\0') + return retval; + /* Next comes the name of the desired category. */ + retval = getenv (categoryname); + if (retval != NULL && retval[0] != '\0') + return retval; + /* Last possibility is the LANG environment variable. */ + retval = getenv ("LANG"); + if (retval != NULL && retval[0] != '\0') + return retval; + + return NULL; +#endif +} + +const char * +_nl_locale_name_default (void) +{ + /* POSIX:2001 says: + "All implementations shall define a locale as the default locale, to be + invoked when no environment variables are set, or set to the empty + string. This default locale can be the POSIX locale or any other + implementation-defined locale. Some implementations may provide + facilities for local installation administrators to set the default + locale, customizing it for each location. POSIX:2001 does not require + such a facility. */ + +#if !(HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE || defined(WIN32)) + + /* The system does not have a way of setting the locale, other than the + POSIX specified environment variables. We use C as default locale. */ + return "C"; + +#else + + /* Return an XPG style locale name language[_territory][@modifier]. + Don't even bother determining the codeset; it's not useful in this + context, because message catalogs are not specific to a single + codeset. */ + +# if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE + /* MacOS X 10.2 or newer */ + { + /* Cache the locale name, since CoreFoundation calls are expensive. */ + static const char *cached_localename; + + if (cached_localename == NULL) + { + char namebuf[256]; +# if HAVE_CFLOCALECOPYCURRENT /* MacOS X 10.3 or newer */ + CFLocaleRef locale = CFLocaleCopyCurrent (); + CFStringRef name = CFLocaleGetIdentifier (locale); + + if (CFStringGetCString (name, namebuf, sizeof(namebuf), + kCFStringEncodingASCII)) + { + _nl_locale_name_canonicalize (namebuf); + cached_localename = strdup (namebuf); + } + CFRelease (locale); +# elif HAVE_CFPREFERENCESCOPYAPPVALUE /* MacOS X 10.2 or newer */ + CFTypeRef value = + CFPreferencesCopyAppValue (CFSTR ("AppleLocale"), + kCFPreferencesCurrentApplication); + if (value != NULL + && CFGetTypeID (value) == CFStringGetTypeID () + && CFStringGetCString ((CFStringRef)value, namebuf, sizeof(namebuf), + kCFStringEncodingASCII)) + { + _nl_locale_name_canonicalize (namebuf); + cached_localename = strdup (namebuf); + } +# endif + if (cached_localename == NULL) + cached_localename = "C"; + } + return cached_localename; + } + +# endif + +# if defined(WIN32) /* WIN32 */ + { + LCID lcid; + LANGID langid; + int primary, sub; + + /* Use native Win32 API locale ID. */ + lcid = GetThreadLocale (); + + /* Strip off the sorting rules, keep only the language part. */ + langid = LANGIDFROMLCID (lcid); + + /* Split into language and territory part. */ + primary = PRIMARYLANGID (langid); + sub = SUBLANGID (langid); + + /* Dispatch on language. + See also http://www.unicode.org/unicode/onlinedat/languages.html . + For details about languages, see http://www.ethnologue.com/ . */ + switch (primary) + { + case LANG_AFRIKAANS: return "af_ZA"; + case LANG_ALBANIAN: return "sq_AL"; + case LANG_AMHARIC: return "am_ET"; + case LANG_ARABIC: + switch (sub) + { + case SUBLANG_ARABIC_SAUDI_ARABIA: return "ar_SA"; + case SUBLANG_ARABIC_IRAQ: return "ar_IQ"; + case SUBLANG_ARABIC_EGYPT: return "ar_EG"; + case SUBLANG_ARABIC_LIBYA: return "ar_LY"; + case SUBLANG_ARABIC_ALGERIA: return "ar_DZ"; + case SUBLANG_ARABIC_MOROCCO: return "ar_MA"; + case SUBLANG_ARABIC_TUNISIA: return "ar_TN"; + case SUBLANG_ARABIC_OMAN: return "ar_OM"; + case SUBLANG_ARABIC_YEMEN: return "ar_YE"; + case SUBLANG_ARABIC_SYRIA: return "ar_SY"; + case SUBLANG_ARABIC_JORDAN: return "ar_JO"; + case SUBLANG_ARABIC_LEBANON: return "ar_LB"; + case SUBLANG_ARABIC_KUWAIT: return "ar_KW"; + case SUBLANG_ARABIC_UAE: return "ar_AE"; + case SUBLANG_ARABIC_BAHRAIN: return "ar_BH"; + case SUBLANG_ARABIC_QATAR: return "ar_QA"; + } + return "ar"; + case LANG_ARMENIAN: return "hy_AM"; + case LANG_ASSAMESE: return "as_IN"; + case LANG_AZERI: + switch (sub) + { + /* FIXME: Adjust this when Azerbaijani locales appear on Unix. */ + case SUBLANG_AZERI_LATIN: return "az_AZ@latin"; + case SUBLANG_AZERI_CYRILLIC: return "az_AZ@cyrillic"; + } + return "az"; + case LANG_BASQUE: + switch (sub) + { + case SUBLANG_DEFAULT: return "eu_ES"; + } + return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR". */ + case LANG_BELARUSIAN: return "be_BY"; + case LANG_BENGALI: + switch (sub) + { + case SUBLANG_BENGALI_INDIA: return "bn_IN"; + case SUBLANG_BENGALI_BANGLADESH: return "bn_BD"; + } + return "bn"; + case LANG_BULGARIAN: return "bg_BG"; + case LANG_BURMESE: return "my_MM"; + case LANG_CAMBODIAN: return "km_KH"; + case LANG_CATALAN: return "ca_ES"; + case LANG_CHEROKEE: return "chr_US"; + case LANG_CHINESE: + switch (sub) + { + case SUBLANG_CHINESE_TRADITIONAL: return "zh_TW"; + case SUBLANG_CHINESE_SIMPLIFIED: return "zh_CN"; + case SUBLANG_CHINESE_HONGKONG: return "zh_HK"; + case SUBLANG_CHINESE_SINGAPORE: return "zh_SG"; + case SUBLANG_CHINESE_MACAU: return "zh_MO"; + } + return "zh"; + case LANG_CROATIAN: /* LANG_CROATIAN == LANG_SERBIAN + * What used to be called Serbo-Croatian + * should really now be two separate + * languages because of political reasons. + * (Says tml, who knows nothing about Serbian + * or Croatian.) + * (I can feel those flames coming already.) + */ + switch (sub) + { + case SUBLANG_DEFAULT: return "hr_HR"; + case SUBLANG_SERBIAN_LATIN: return "sr_CS"; + case SUBLANG_SERBIAN_CYRILLIC: return "sr_CS@cyrillic"; + } + return "hr"; + case LANG_CZECH: return "cs_CZ"; + case LANG_DANISH: return "da_DK"; + case LANG_DIVEHI: return "dv_MV"; + case LANG_DUTCH: + switch (sub) + { + case SUBLANG_DUTCH: return "nl_NL"; + case SUBLANG_DUTCH_BELGIAN: /* FLEMISH, VLAAMS */ return "nl_BE"; + } + return "nl"; + case LANG_EDO: return "bin_NG"; + case LANG_ENGLISH: + switch (sub) + { + /* SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. Heh. I thought + * English was the language spoken in England. + * Oh well. + */ + case SUBLANG_ENGLISH_US: return "en_US"; + case SUBLANG_ENGLISH_UK: return "en_GB"; + case SUBLANG_ENGLISH_AUS: return "en_AU"; + case SUBLANG_ENGLISH_CAN: return "en_CA"; + case SUBLANG_ENGLISH_NZ: return "en_NZ"; + case SUBLANG_ENGLISH_EIRE: return "en_IE"; + case SUBLANG_ENGLISH_SOUTH_AFRICA: return "en_ZA"; + case SUBLANG_ENGLISH_JAMAICA: return "en_JM"; + case SUBLANG_ENGLISH_CARIBBEAN: return "en_GD"; /* Grenada? */ + case SUBLANG_ENGLISH_BELIZE: return "en_BZ"; + case SUBLANG_ENGLISH_TRINIDAD: return "en_TT"; + case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW"; + case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH"; + case SUBLANG_ENGLISH_INDONESIA: return "en_ID"; + case SUBLANG_ENGLISH_HONGKONG: return "en_HK"; + case SUBLANG_ENGLISH_INDIA: return "en_IN"; + case SUBLANG_ENGLISH_MALAYSIA: return "en_MY"; + case SUBLANG_ENGLISH_SINGAPORE: return "en_SG"; + } + return "en"; + case LANG_ESTONIAN: return "et_EE"; + case LANG_FAEROESE: return "fo_FO"; + case LANG_FARSI: return "fa_IR"; + case LANG_FINNISH: return "fi_FI"; + case LANG_FRENCH: + switch (sub) + { + case SUBLANG_FRENCH: return "fr_FR"; + case SUBLANG_FRENCH_BELGIAN: /* WALLOON */ return "fr_BE"; + case SUBLANG_FRENCH_CANADIAN: return "fr_CA"; + case SUBLANG_FRENCH_SWISS: return "fr_CH"; + case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU"; + case SUBLANG_FRENCH_MONACO: return "fr_MC"; + case SUBLANG_FRENCH_WESTINDIES: return "fr"; /* Caribbean? */ + case SUBLANG_FRENCH_REUNION: return "fr_RE"; + case SUBLANG_FRENCH_CONGO: return "fr_CG"; + case SUBLANG_FRENCH_SENEGAL: return "fr_SN"; + case SUBLANG_FRENCH_CAMEROON: return "fr_CM"; + case SUBLANG_FRENCH_COTEDIVOIRE: return "fr_CI"; + case SUBLANG_FRENCH_MALI: return "fr_ML"; + case SUBLANG_FRENCH_MOROCCO: return "fr_MA"; + case SUBLANG_FRENCH_HAITI: return "fr_HT"; + } + return "fr"; + case LANG_FRISIAN: return "fy_NL"; + case LANG_FULFULDE: + /* Spoken in Nigeria, Guinea, Senegal, Mali, Niger, Cameroon, Benin. */ + return "ff_NG"; + case LANG_GAELIC: + switch (sub) + { + case 0x01: /* SCOTTISH */ return "gd_GB"; + case 0x02: /* IRISH */ return "ga_IE"; + } + return "C"; + case LANG_GALICIAN: return "gl_ES"; + case LANG_GEORGIAN: return "ka_GE"; + case LANG_GERMAN: + switch (sub) + { + case SUBLANG_GERMAN: return "de_DE"; + case SUBLANG_GERMAN_SWISS: return "de_CH"; + case SUBLANG_GERMAN_AUSTRIAN: return "de_AT"; + case SUBLANG_GERMAN_LUXEMBOURG: return "de_LU"; + case SUBLANG_GERMAN_LIECHTENSTEIN: return "de_LI"; + } + return "de"; + case LANG_GREEK: return "el_GR"; + case LANG_GUARANI: return "gn_PY"; + case LANG_GUJARATI: return "gu_IN"; + case LANG_HAUSA: return "ha_NG"; + case LANG_HAWAIIAN: + /* FIXME: Do they mean Hawaiian ("haw_US", 1000 speakers) + or Hawaii Creole English ("cpe_US", 600000 speakers)? */ + return "cpe_US"; + case LANG_HEBREW: return "he_IL"; + case LANG_HINDI: return "hi_IN"; + case LANG_HUNGARIAN: return "hu_HU"; + case LANG_IBIBIO: return "nic_NG"; + case LANG_ICELANDIC: return "is_IS"; + case LANG_IGBO: return "ig_NG"; + case LANG_INDONESIAN: return "id_ID"; + case LANG_INUKTITUT: return "iu_CA"; + case LANG_ITALIAN: + switch (sub) + { + case SUBLANG_ITALIAN: return "it_IT"; + case SUBLANG_ITALIAN_SWISS: return "it_CH"; + } + return "it"; + case LANG_JAPANESE: return "ja_JP"; + case LANG_KANNADA: return "kn_IN"; + case LANG_KANURI: return "kr_NG"; + case LANG_KASHMIRI: + switch (sub) + { + case SUBLANG_DEFAULT: return "ks_PK"; + case SUBLANG_KASHMIRI_INDIA: return "ks_IN"; + } + return "ks"; + case LANG_KAZAK: return "kk_KZ"; + case LANG_KONKANI: + /* FIXME: Adjust this when such locales appear on Unix. */ + return "kok_IN"; + case LANG_KOREAN: return "ko_KR"; + case LANG_KYRGYZ: return "ky_KG"; + case LANG_LAO: return "lo_LA"; + case LANG_LATIN: return "la_VA"; + case LANG_LATVIAN: return "lv_LV"; + case LANG_LITHUANIAN: return "lt_LT"; + case LANG_MACEDONIAN: return "mk_MK"; + case LANG_MALAY: + switch (sub) + { + case SUBLANG_MALAY_MALAYSIA: return "ms_MY"; + case SUBLANG_MALAY_BRUNEI_DARUSSALAM: return "ms_BN"; + } + return "ms"; + case LANG_MALAYALAM: return "ml_IN"; + case LANG_MALTESE: return "mt_MT"; + case LANG_MANIPURI: + /* FIXME: Adjust this when such locales appear on Unix. */ + return "mni_IN"; + case LANG_MARATHI: return "mr_IN"; + case LANG_MONGOLIAN: + switch (sub) + { + case SUBLANG_DEFAULT: return "mn_MN"; + } + return "mn"; /* Ambiguous: could be "mn_CN" or "mn_MN". */ + case LANG_NEPALI: + switch (sub) + { + case SUBLANG_DEFAULT: return "ne_NP"; + case SUBLANG_NEPALI_INDIA: return "ne_IN"; + } + return "ne"; + case LANG_NORWEGIAN: + switch (sub) + { + case SUBLANG_NORWEGIAN_BOKMAL: return "nb_NO"; + case SUBLANG_NORWEGIAN_NYNORSK: return "nn_NO"; + } + return "no"; + case LANG_ORIYA: return "or_IN"; + case LANG_OROMO: return "om_ET"; + case LANG_PAPIAMENTU: return "pap_AN"; + case LANG_PASHTO: + return "ps"; /* Ambiguous: could be "ps_PK" or "ps_AF". */ + case LANG_POLISH: return "pl_PL"; + case LANG_PORTUGUESE: + switch (sub) + { + case SUBLANG_PORTUGUESE: return "pt_PT"; + /* Hmm. SUBLANG_PORTUGUESE_BRAZILIAN == SUBLANG_DEFAULT. + Same phenomenon as SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. */ + case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR"; + } + return "pt"; + case LANG_PUNJABI: + switch (sub) + { + case SUBLANG_PUNJABI_INDIA: return "pa_IN"; /* Gurmukhi script */ + case SUBLANG_PUNJABI_PAKISTAN: return "pa_PK"; /* Arabic script */ + } + return "pa"; + case LANG_RHAETO_ROMANCE: return "rm_CH"; + case LANG_ROMANIAN: + switch (sub) + { + case SUBLANG_ROMANIAN_ROMANIA: return "ro_RO"; + case SUBLANG_ROMANIAN_MOLDOVA: return "ro_MD"; + } + return "ro"; + case LANG_RUSSIAN: + switch (sub) + { + case SUBLANG_DEFAULT: return "ru_RU"; + } + return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA" or "ru_MD". */ + case LANG_SAAMI: /* actually Northern Sami */ return "se_NO"; + case LANG_SANSKRIT: return "sa_IN"; + case LANG_SINDHI: + switch (sub) + { + case SUBLANG_SINDHI_INDIA: return "sd_IN"; + case SUBLANG_SINDHI_PAKISTAN: return "sd_PK"; + } + return "sd"; + case LANG_SINHALESE: return "si_LK"; + case LANG_SLOVAK: return "sk_SK"; + case LANG_SLOVENIAN: return "sl_SI"; + case LANG_SOMALI: return "so_SO"; + case LANG_SORBIAN: + /* FIXME: Adjust this when such locales appear on Unix. */ + return "wen_DE"; + case LANG_SPANISH: + switch (sub) + { + case SUBLANG_SPANISH: return "es_ES"; + case SUBLANG_SPANISH_MEXICAN: return "es_MX"; + case SUBLANG_SPANISH_MODERN: + return "es_ES@modern"; /* not seen on Unix */ + case SUBLANG_SPANISH_GUATEMALA: return "es_GT"; + case SUBLANG_SPANISH_COSTA_RICA: return "es_CR"; + case SUBLANG_SPANISH_PANAMA: return "es_PA"; + case SUBLANG_SPANISH_DOMINICAN_REPUBLIC: return "es_DO"; + case SUBLANG_SPANISH_VENEZUELA: return "es_VE"; + case SUBLANG_SPANISH_COLOMBIA: return "es_CO"; + case SUBLANG_SPANISH_PERU: return "es_PE"; + case SUBLANG_SPANISH_ARGENTINA: return "es_AR"; + case SUBLANG_SPANISH_ECUADOR: return "es_EC"; + case SUBLANG_SPANISH_CHILE: return "es_CL"; + case SUBLANG_SPANISH_URUGUAY: return "es_UY"; + case SUBLANG_SPANISH_PARAGUAY: return "es_PY"; + case SUBLANG_SPANISH_BOLIVIA: return "es_BO"; + case SUBLANG_SPANISH_EL_SALVADOR: return "es_SV"; + case SUBLANG_SPANISH_HONDURAS: return "es_HN"; + case SUBLANG_SPANISH_NICARAGUA: return "es_NI"; + case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR"; + } + return "es"; + case LANG_SUTU: return "bnt_TZ"; /* or "st_LS" or "nso_ZA"? */ + case LANG_SWAHILI: return "sw_KE"; + case LANG_SWEDISH: + switch (sub) + { + case SUBLANG_DEFAULT: return "sv_SE"; + case SUBLANG_SWEDISH_FINLAND: return "sv_FI"; + } + return "sv"; + case LANG_SYRIAC: return "syr_TR"; /* An extinct language. */ + case LANG_TAGALOG: return "tl_PH"; + case LANG_TAJIK: return "tg_TJ"; + case LANG_TAMAZIGHT: + switch (sub) + { + /* FIXME: Adjust this when Tamazight locales appear on Unix. */ + case SUBLANG_TAMAZIGHT_ARABIC: return "ber_MA@arabic"; + case SUBLANG_TAMAZIGHT_LATIN: return "ber_MA@latin"; + } + return "ber_MA"; + case LANG_TAMIL: + switch (sub) + { + case SUBLANG_DEFAULT: return "ta_IN"; + } + return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG". */ + case LANG_TATAR: return "tt_RU"; + case LANG_TELUGU: return "te_IN"; + case LANG_THAI: return "th_TH"; + case LANG_TIBETAN: return "bo_CN"; + case LANG_TIGRINYA: + switch (sub) + { + case SUBLANG_TIGRINYA_ETHIOPIA: return "ti_ET"; + case SUBLANG_TIGRINYA_ERITREA: return "ti_ER"; + } + return "ti"; + case LANG_TSONGA: return "ts_ZA"; + case LANG_TSWANA: return "tn_BW"; + case LANG_TURKISH: return "tr_TR"; + case LANG_TURKMEN: return "tk_TM"; + case LANG_UKRAINIAN: return "uk_UA"; + case LANG_URDU: + switch (sub) + { + case SUBLANG_URDU_PAKISTAN: return "ur_PK"; + case SUBLANG_URDU_INDIA: return "ur_IN"; + } + return "ur"; + case LANG_UZBEK: + switch (sub) + { + case SUBLANG_UZBEK_LATIN: return "uz_UZ"; + case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic"; + } + return "uz"; + case LANG_VENDA: return "ve_ZA"; + case LANG_VIETNAMESE: return "vi_VN"; + case LANG_WELSH: return "cy_GB"; + case LANG_XHOSA: return "xh_ZA"; + case LANG_YI: return "sit_CN"; + case LANG_YIDDISH: return "yi_IL"; + case LANG_YORUBA: return "yo_NG"; + case LANG_ZULU: return "zu_ZA"; + default: return "C"; + } + } +# endif +#endif +} + +const char * +_nl_locale_name (int category, const char *categoryname) +{ + const char *retval; + + retval = _nl_locale_name_posix (category, categoryname); + if (retval != NULL) + return retval; + + return _nl_locale_name_default (); +} diff --git a/intl/log.c b/intl/log.c new file mode 100644 index 0000000..89f82df --- /dev/null +++ b/intl/log.c @@ -0,0 +1,98 @@ +/* Log file output. + Copyright (C) 2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Written by Bruno Haible . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +/* Print an ASCII string with quotes and escape sequences where needed. */ +static void +print_escaped (FILE *stream, const char *str) +{ + putc ('"', stream); + for (; *str != '\0'; str++) + if (*str == '\n') + { + fputs ("\\n\"", stream); + if (str[1] == '\0') + return; + fputs ("\n\"", stream); + } + else + { + if (*str == '"' || *str == '\\') + putc ('\\', stream); + putc (*str, stream); + } + putc ('"', stream); +} + +/* Add to the log file an entry denoting a failed translation. */ +void +_nl_log_untranslated (const char *logfilename, const char *domainname, + const char *msgid1, const char *msgid2, int plural) +{ + static char *last_logfilename = NULL; + static FILE *last_logfile = NULL; + FILE *logfile; + + /* Can we reuse the last opened logfile? */ + if (last_logfilename == NULL || strcmp (logfilename, last_logfilename) != 0) + { + /* Close the last used logfile. */ + if (last_logfilename != NULL) + { + if (last_logfile != NULL) + { + fclose (last_logfile); + last_logfile = NULL; + } + free (last_logfilename); + last_logfilename = NULL; + } + /* Open the logfile. */ + last_logfilename = (char *) malloc (strlen (logfilename) + 1); + if (last_logfilename == NULL) + return; + strcpy (last_logfilename, logfilename); + last_logfile = fopen (logfilename, "a"); + if (last_logfile == NULL) + return; + } + logfile = last_logfile; + + fprintf (logfile, "domain "); + print_escaped (logfile, domainname); + fprintf (logfile, "\nmsgid "); + print_escaped (logfile, msgid1); + if (plural) + { + fprintf (logfile, "\nmsgid_plural "); + print_escaped (logfile, msgid2); + fprintf (logfile, "\nmsgstr[0] \"\"\n"); + } + else + fprintf (logfile, "\nmsgstr \"\"\n"); + putc ('\n', logfile); +} diff --git a/intl/ngettext.c b/intl/ngettext.c new file mode 100644 index 0000000..a33529c --- /dev/null +++ b/intl/ngettext.c @@ -0,0 +1,65 @@ +/* Implementation of ngettext(3) function. + Copyright (C) 1995, 1997, 2000-2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + 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 libintl_ngettext +# define DCNGETTEXT libintl_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 (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/os2compat.c b/intl/os2compat.c new file mode 100644 index 0000000..d041de2 --- /dev/null +++ b/intl/os2compat.c @@ -0,0 +1,98 @@ +/* OS/2 compatibility functions. + 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#define OS2_AWARE +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +/* A version of getenv() that works from DLLs */ +extern unsigned long DosScanEnv (const unsigned char *pszName, unsigned char **ppszValue); + +char * +_nl_getenv (const char *name) +{ + unsigned char *value; + if (DosScanEnv (name, &value)) + return NULL; + else + return value; +} + +/* A fixed size buffer. */ +char libintl_nl_default_dirname[MAXPATHLEN+1]; + +char *_nlos2_libdir = NULL; +char *_nlos2_localealiaspath = NULL; +char *_nlos2_localedir = NULL; + +static __attribute__((constructor)) void +nlos2_initialize () +{ + char *root = getenv ("UNIXROOT"); + char *gnulocaledir = getenv ("GNULOCALEDIR"); + + _nlos2_libdir = gnulocaledir; + if (!_nlos2_libdir) + { + if (root) + { + size_t sl = strlen (root); + _nlos2_libdir = (char *) malloc (sl + strlen (LIBDIR) + 1); + memcpy (_nlos2_libdir, root, sl); + memcpy (_nlos2_libdir + sl, LIBDIR, strlen (LIBDIR) + 1); + } + else + _nlos2_libdir = LIBDIR; + } + + _nlos2_localealiaspath = gnulocaledir; + if (!_nlos2_localealiaspath) + { + if (root) + { + size_t sl = strlen (root); + _nlos2_localealiaspath = (char *) malloc (sl + strlen (LOCALE_ALIAS_PATH) + 1); + memcpy (_nlos2_localealiaspath, root, sl); + memcpy (_nlos2_localealiaspath + sl, LOCALE_ALIAS_PATH, strlen (LOCALE_ALIAS_PATH) + 1); + } + else + _nlos2_localealiaspath = LOCALE_ALIAS_PATH; + } + + _nlos2_localedir = gnulocaledir; + if (!_nlos2_localedir) + { + if (root) + { + size_t sl = strlen (root); + _nlos2_localedir = (char *) malloc (sl + strlen (LOCALEDIR) + 1); + memcpy (_nlos2_localedir, root, sl); + memcpy (_nlos2_localedir + sl, LOCALEDIR, strlen (LOCALEDIR) + 1); + } + else + _nlos2_localedir = LOCALEDIR; + } + + if (strlen (_nlos2_localedir) <= MAXPATHLEN) + strcpy (libintl_nl_default_dirname, _nlos2_localedir); +} diff --git a/intl/os2compat.h b/intl/os2compat.h new file mode 100644 index 0000000..a18d582 --- /dev/null +++ b/intl/os2compat.h @@ -0,0 +1,46 @@ +/* OS/2 compatibility defines. + This file is intended to be included from config.h + 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* When included from os2compat.h we need all the original definitions */ +#ifndef OS2_AWARE + +#undef LIBDIR +#define LIBDIR _nlos2_libdir +extern char *_nlos2_libdir; + +#undef LOCALEDIR +#define LOCALEDIR _nlos2_localedir +extern char *_nlos2_localedir; + +#undef LOCALE_ALIAS_PATH +#define LOCALE_ALIAS_PATH _nlos2_localealiaspath +extern char *_nlos2_localealiaspath; + +#endif + +#undef HAVE_STRCASECMP +#define HAVE_STRCASECMP 1 +#define strcasecmp stricmp +#define strncasecmp strnicmp + +/* We have our own getenv() which works even if library is compiled as DLL */ +#define getenv _nl_getenv + +/* Older versions of gettext used -1 as the value of LC_MESSAGES */ +#define LC_MESSAGES_COMPAT (-1) diff --git a/intl/osdep.c b/intl/osdep.c new file mode 100644 index 0000000..d2d8575 --- /dev/null +++ b/intl/osdep.c @@ -0,0 +1,24 @@ +/* OS dependent parts of libintl. + 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#if defined __EMX__ +# include "os2compat.c" +#else +/* Avoid AIX compiler warning. */ +typedef int dummy; +#endif diff --git a/intl/plural-exp.c b/intl/plural-exp.c new file mode 100644 index 0000000..1873be9 --- /dev/null +++ b/intl/plural-exp.c @@ -0,0 +1,154 @@ +/* Expression parsing for plural form selection. + Copyright (C) 2000-2001, 2003 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include "plural-exp.h" + +#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 + } +}; +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; +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 + +void +internal_function +EXTRACT_PLURAL_EXPRESSION (const char *nullentry, struct expression **pluralp, + unsigned long int *npluralsp) +{ + 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 + { + char *endp; + unsigned long int n; + struct parse_args args; + + /* First get the number. */ + nplurals += 9; + while (*nplurals != '\0' && isspace ((unsigned char) *nplurals)) + ++nplurals; + if (!(*nplurals >= '0' && *nplurals <= '9')) + goto no_plural; +#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 + if (nplurals == endp) + goto no_plural; + *npluralsp = n; + + /* 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; + *pluralp = 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 (); + *pluralp = &GERMANIC_PLURAL; + *npluralsp = 2; + } +} diff --git a/intl/plural-exp.h b/intl/plural-exp.h new file mode 100644 index 0000000..f540184 --- /dev/null +++ b/intl/plural-exp.h @@ -0,0 +1,118 @@ +/* Expression parsing and evaluation for plural form selection. + Copyright (C) 2000-2003 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _PLURAL_EXP_H +#define _PLURAL_EXP_H + +#ifndef internal_function +# define internal_function +#endif + +#ifndef attribute_hidden +# define attribute_hidden +#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, /* Modulo operation. */ + plus, /* Addition. */ + minus, /* Subtraction. */ + less_than, /* Comparison. */ + greater_than, /* Comparison. */ + less_or_equal, /* Comparison. */ + greater_or_equal, /* Comparison. */ + equal, /* Comparison for equality. */ + not_equal, /* Comparison 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; +}; + + +/* Names for the libintl functions are a problem. This source code is used + 1. in the GNU C Library library, + 2. in the GNU libintl library, + 3. in the GNU gettext tools. + The function names in each situation must be different, to allow for + binary incompatible changes in 'struct expression'. Furthermore, + 1. in the GNU C Library library, the names have a __ prefix, + 2.+3. in the GNU libintl library and in the GNU gettext tools, the names + must follow ANSI C and not start with __. + So we have to distinguish the three cases. */ +#ifdef _LIBC +# define FREE_EXPRESSION __gettext_free_exp +# define PLURAL_PARSE __gettextparse +# define GERMANIC_PLURAL __gettext_germanic_plural +# define EXTRACT_PLURAL_EXPRESSION __gettext_extract_plural +#elif defined (IN_LIBINTL) +# define FREE_EXPRESSION libintl_gettext_free_exp +# define PLURAL_PARSE libintl_gettextparse +# define GERMANIC_PLURAL libintl_gettext_germanic_plural +# define EXTRACT_PLURAL_EXPRESSION libintl_gettext_extract_plural +#else +# define FREE_EXPRESSION free_plural_expression +# define PLURAL_PARSE parse_plural_expression +# define GERMANIC_PLURAL germanic_plural +# define EXTRACT_PLURAL_EXPRESSION extract_plural_expression +#endif + +extern void FREE_EXPRESSION (struct expression *exp) + internal_function; +extern int PLURAL_PARSE (void *arg); +extern struct expression GERMANIC_PLURAL attribute_hidden; +extern void EXTRACT_PLURAL_EXPRESSION (const char *nullentry, + struct expression **pluralp, + unsigned long int *npluralsp) + internal_function; + +#if !defined (_LIBC) && !defined (IN_LIBINTL) +extern unsigned long int plural_eval (struct expression *pexp, + unsigned long int n); +#endif + +#endif /* _PLURAL_EXP_H */ diff --git a/intl/plural.c b/intl/plural.c new file mode 100644 index 0000000..78a223d --- /dev/null +++ b/intl/plural.c @@ -0,0 +1,1490 @@ +/* A Bison parser, made from plural.y + by GNU bison 1.35. */ + +#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, 2003 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + 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 +#include "plural-exp.h" + +/* The main function generated by the parser is called __gettextparse, + but we want it to be called PLURAL_PARSE. */ +#ifndef _LIBC +# define __gettextparse PLURAL_PARSE +#endif + +#define YYLEX_PARAM &((struct parse_args *) arg)->cp +#define YYPARSE_PARAM arg + +#line 49 "plural.y" +#ifndef YYSTYPE +typedef union { + unsigned long int num; + enum operator op; + struct expression *exp; +} yystype; +# define YYSTYPE yystype +# define YYSTYPE_IS_TRIVIAL 1 +#endif +#line 55 "plural.y" + +/* Prototypes for local functions. */ +static int yylex (YYSTYPE *lval, const char **pexp); +static void yyerror (const char *str); + +/* Allocation of expressions. */ + +static struct expression * +new_exp (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 (enum operator op) +{ + return new_exp (0, op, NULL); +} + +static inline struct expression * +new_exp_1 (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 (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 (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); +} + +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + + + +#define YYFINAL 27 +#define YYFLAG -32768 +#define YYNTBASE 16 + +/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */ +#define YYTRANSLATE(x) ((unsigned)(x) <= 261 ? yytranslate[x] : 18) + +/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */ +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 +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 +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const short yyrline[] = +{ + 0, 150, 158, 162, 166, 170, 174, 178, 182, 186, + 190, 194, 199 +}; +#endif + + +#if (YYDEBUG) || defined YYERROR_VERBOSE + +/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */ +static const char *const yytname[] = +{ + "$", "error", "$undefined.", "'?'", "'|'", "'&'", "EQUOP2", "CMPOP2", + "ADDOP2", "MULOP2", "'!'", "NUMBER", "':'", "'n'", "'('", "')'", + "start", "exp", 0 +}; +#endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const short yyr1[] = +{ + 0, 16, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const short yyr2[] = +{ + 0, 1, 5, 3, 3, 3, 3, 3, 3, 2, + 1, 1, 3 +}; + +/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE + doesn't specify something else to do. Zero means the default is an + error. */ +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/bison.simple" + +/* Skeleton output parser for bison, + + Copyright (C) 1984, 1989, 1990, 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. */ + +/* 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. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE) + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# if YYSTACK_USE_ALLOCA +# define YYSTACK_ALLOC alloca +# else +# ifndef YYSTACK_USE_ALLOCA +# if defined (alloca) || defined (_ALLOCA_H) +# define YYSTACK_ALLOC alloca +# else +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# else +# if defined (__STDC__) || defined (__cplusplus) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# endif +# define YYSTACK_ALLOC malloc +# define YYSTACK_FREE free +# endif +#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */ + + +#if (! defined (yyoverflow) \ + && (! defined (__cplusplus) \ + || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + short yyss; + YYSTYPE yyvs; +# if YYLSP_NEEDED + YYLTYPE yyls; +# endif +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# if YYLSP_NEEDED +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ + + 2 * YYSTACK_GAP_MAX) +# else +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAX) +# endif + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + register YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (0) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + + +#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) +# define YYSIZE_T __SIZE_TYPE__ +#endif +#if ! defined (YYSIZE_T) && defined (size_t) +# define YYSIZE_T size_t +#endif +#if ! defined (YYSIZE_T) +# if defined (__STDC__) || defined (__cplusplus) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# endif +#endif +#if ! defined (YYSIZE_T) +# define YYSIZE_T unsigned int +#endif + +#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 + + +/* YYLLOC_DEFAULT -- Compute the default location (before the actions + are run). + + When YYLLOC_DEFAULT is run, CURRENT is set the location of the + first token. By default, to implement support for ranges, extend + its range to the last symbol. */ + +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + Current.last_line = Rhs[N].last_line; \ + Current.last_column = Rhs[N].last_column; +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#if YYPURE +# if YYLSP_NEEDED +# ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) +# else +# define YYLEX yylex (&yylval, &yylloc) +# endif +# else /* !YYLSP_NEEDED */ +# ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +# else +# define YYLEX yylex (&yylval) +# endif +# endif /* !YYLSP_NEEDED */ +#else /* !YYPURE */ +# define YYLEX yylex () +#endif /* !YYPURE */ + + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +#endif /* !YYDEBUG */ + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#if YYMAXDEPTH == 0 +# undef YYMAXDEPTH +#endif + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + +#ifdef YYERROR_VERBOSE + +# ifndef yystrlen +# if defined (__GLIBC__) && defined (_STRING_H) +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +static YYSIZE_T +# if defined (__STDC__) || defined (__cplusplus) +yystrlen (const char *yystr) +# else +yystrlen (yystr) + const char *yystr; +# endif +{ + register const char *yys = yystr; + + while (*yys++ != '\0') + continue; + + return yys - yystr - 1; +} +# endif +# endif + +# ifndef yystpcpy +# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +static char * +# if defined (__STDC__) || defined (__cplusplus) +yystpcpy (char *yydest, const char *yysrc) +# else +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +# endif +{ + register char *yyd = yydest; + register const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif +#endif + +#line 315 "/home/haible/gnu/arch/linuxlibc6/share/bison/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 +# if defined (__STDC__) || defined (__cplusplus) +# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM +# define YYPARSE_PARAM_DECL +# else +# define YYPARSE_PARAM_ARG YYPARSE_PARAM +# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; +# endif +#else /* !YYPARSE_PARAM */ +# define YYPARSE_PARAM_ARG +# define YYPARSE_PARAM_DECL +#endif /* !YYPARSE_PARAM */ + +/* Prevent warning if -Wstrict-prototypes. */ +#ifdef __GNUC__ +# ifdef YYPARSE_PARAM +int yyparse (void *); +# else +int yyparse (void); +# endif +#endif + +/* YY_DECL_VARIABLES -- depending whether we use a pure parser, + variables are global, or local to YYPARSE. */ + +#define YY_DECL_NON_LSP_VARIABLES \ +/* The lookahead symbol. */ \ +int yychar; \ + \ +/* The semantic value of the lookahead symbol. */ \ +YYSTYPE yylval; \ + \ +/* Number of parse errors so far. */ \ +int yynerrs; + +#if YYLSP_NEEDED +# define YY_DECL_VARIABLES \ +YY_DECL_NON_LSP_VARIABLES \ + \ +/* Location data for the lookahead symbol. */ \ +YYLTYPE yylloc; +#else +# define YY_DECL_VARIABLES \ +YY_DECL_NON_LSP_VARIABLES +#endif + + +/* If nonreentrant, generate the variables here. */ + +#if !YYPURE +YY_DECL_VARIABLES +#endif /* !YYPURE */ + +int +yyparse (YYPARSE_PARAM_ARG) + YYPARSE_PARAM_DECL +{ + /* If reentrant, generate the variables here. */ +#if YYPURE + YY_DECL_VARIABLES +#endif /* !YYPURE */ + + register int yystate; + register int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Lookahead token as an internal (translated) token number. */ + int yychar1 = 0; + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + short yyssa[YYINITDEPTH]; + short *yyss = yyssa; + register short *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + register YYSTYPE *yyvsp; + +#if YYLSP_NEEDED + /* The location stack. */ + YYLTYPE yylsa[YYINITDEPTH]; + YYLTYPE *yyls = yylsa; + YYLTYPE *yylsp; +#endif + +#if YYLSP_NEEDED +# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) +#else +# define YYPOPSTACK (yyvsp--, yyssp--) +#endif + + YYSIZE_T yystacksize = YYINITDEPTH; + + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; +#if YYLSP_NEEDED + YYLTYPE yyloc; +#endif + + /* When reducing, the number of symbols on the RHS of the reduced + rule. */ + int yylen; + + YYDPRINTF ((stderr, "Starting parse\n")); + + 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; + yyvsp = yyvs; +#if YYLSP_NEEDED + yylsp = yyls; +#endif + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. so pushing a state here evens the stacks. + */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyssp >= yyss + yystacksize - 1) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* 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; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. */ +# if YYLSP_NEEDED + YYLTYPE *yyls1 = yyls; + /* 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, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yyls1, yysize * sizeof (*yylsp), + &yystacksize); + yyls = yyls1; +# else + yyoverflow ("parser stack overflow", + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); +# endif + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyoverflowlab; +# else + /* Extend the stack our own way. */ + if (yystacksize >= YYMAXDEPTH) + goto yyoverflowlab; + yystacksize *= 2; + if (yystacksize > YYMAXDEPTH) + yystacksize = YYMAXDEPTH; + + { + short *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyoverflowlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); +# if YYLSP_NEEDED + YYSTACK_RELOCATE (yyls); +# endif +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; +#if YYLSP_NEEDED + yylsp = yyls + yysize - 1; +#endif + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyssp >= yyss + yystacksize - 1) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + + +/*-----------. +| 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) + { + YYDPRINTF ((stderr, "Reading a token: ")); + 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 */ + + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yychar1 = YYTRANSLATE (yychar); + +#if YYDEBUG + /* We have to keep this `#if YYDEBUG', since we use variables + which are defined only if `YYDEBUG' is set. */ + if (yydebug) + { + YYFPRINTF (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 + YYFPRINTF (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. */ + YYDPRINTF ((stderr, "Shifting token %d (%s), ", + yychar, yytname[yychar1])); + + /* Discard the token being shifted unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + *++yyvsp = yylval; +#if YYLSP_NEEDED + *++yylsp = yylloc; +#endif + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + yystate = yyn; + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to the semantic value of + the lookahead token. This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + +#if YYLSP_NEEDED + /* Similarly for the default location. Let the user run additional + commands if for instance locations are ranges. */ + yyloc = yylsp[1-yylen]; + YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); +#endif + +#if YYDEBUG + /* We have to keep this `#if YYDEBUG', since we use variables which + are defined only if `YYDEBUG' is set. */ + if (yydebug) + { + int yyi; + + YYFPRINTF (stderr, "Reducing via rule %d (line %d), ", + yyn, yyrline[yyn]); + + /* Print the symbols being reduced, and their result. */ + for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++) + YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]); + YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]); + } +#endif + + switch (yyn) { + +case 1: +#line 151 "plural.y" +{ + if (yyvsp[0].exp == NULL) + YYABORT; + ((struct parse_args *) arg)->res = yyvsp[0].exp; + } + break; +case 2: +#line 159 "plural.y" +{ + yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp); + } + break; +case 3: +#line 163 "plural.y" +{ + yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp); + } + break; +case 4: +#line 167 "plural.y" +{ + yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp); + } + break; +case 5: +#line 171 "plural.y" +{ + yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); + } + break; +case 6: +#line 175 "plural.y" +{ + yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); + } + break; +case 7: +#line 179 "plural.y" +{ + yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); + } + break; +case 8: +#line 183 "plural.y" +{ + yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); + } + break; +case 9: +#line 187 "plural.y" +{ + yyval.exp = new_exp_1 (lnot, yyvsp[0].exp); + } + break; +case 10: +#line 191 "plural.y" +{ + yyval.exp = new_exp_0 (var); + } + break; +case 11: +#line 195 "plural.y" +{ + if ((yyval.exp = new_exp_0 (num)) != NULL) + yyval.exp->val.num = yyvsp[0].num; + } + break; +case 12: +#line 200 "plural.y" +{ + yyval.exp = yyvsp[-1].exp; + } + break; +} + +#line 705 "/home/haible/gnu/arch/linuxlibc6/share/bison/bison.simple" + + + yyvsp -= yylen; + yyssp -= yylen; +#if YYLSP_NEEDED + yylsp -= yylen; +#endif + +#if YYDEBUG + if (yydebug) + { + short *yyssp1 = yyss - 1; + YYFPRINTF (stderr, "state stack now"); + while (yyssp1 != yyssp) + YYFPRINTF (stderr, " %d", *++yyssp1); + YYFPRINTF (stderr, "\n"); + } +#endif + + *++yyvsp = yyval; +#if YYLSP_NEEDED + *++yylsp = yyloc; +#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 | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; + +#ifdef YYERROR_VERBOSE + yyn = yypact[yystate]; + + if (yyn > YYFLAG && yyn < YYLAST) + { + YYSIZE_T yysize = 0; + char *yymsg; + int yyx, yycount; + + yycount = 0; + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + for (yyx = yyn < 0 ? -yyn : 0; + yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++) + if (yycheck[yyx + yyn] == yyx) + yysize += yystrlen (yytname[yyx]) + 15, yycount++; + yysize += yystrlen ("parse error, unexpected ") + 1; + yysize += yystrlen (yytname[YYTRANSLATE (yychar)]); + yymsg = (char *) YYSTACK_ALLOC (yysize); + if (yymsg != 0) + { + char *yyp = yystpcpy (yymsg, "parse error, unexpected "); + yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]); + + if (yycount < 5) + { + yycount = 0; + for (yyx = yyn < 0 ? -yyn : 0; + yyx < (int) (sizeof (yytname) / sizeof (char *)); + yyx++) + if (yycheck[yyx + yyn] == yyx) + { + const char *yyq = ! yycount ? ", expecting " : " or "; + yyp = yystpcpy (yyp, yyq); + yyp = yystpcpy (yyp, yytname[yyx]); + yycount++; + } + } + yyerror (yymsg); + YYSTACK_FREE (yymsg); + } + else + yyerror ("parse error; also virtual memory exhausted"); + } + else +#endif /* defined (YYERROR_VERBOSE) */ + yyerror ("parse error"); + } + goto yyerrlab1; + + +/*--------------------------------------------------. +| yyerrlab1 -- error raised explicitly by an action | +`--------------------------------------------------*/ +yyerrlab1: + 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; + YYDPRINTF ((stderr, "Discarding token %d (%s).\n", + yychar, yytname[yychar1])); + 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. | +`-------------------------------------------------------------------*/ +yyerrdefault: +#if 0 + /* This is wrong; only states that explicitly want error tokens + should shift them. */ + + /* If its default is to accept any token, ok. Otherwise pop it. */ + yyn = yydefact[yystate]; + if (yyn) + goto yydefault; +#endif + + +/*---------------------------------------------------------------. +| yyerrpop -- pop the current state because it cannot handle the | +| error token | +`---------------------------------------------------------------*/ +yyerrpop: + if (yyssp == yyss) + YYABORT; + yyvsp--; + yystate = *--yyssp; +#if YYLSP_NEEDED + yylsp--; +#endif + +#if YYDEBUG + if (yydebug) + { + short *yyssp1 = yyss - 1; + YYFPRINTF (stderr, "Error: state stack now"); + while (yyssp1 != yyssp) + YYFPRINTF (stderr, " %d", *++yyssp1); + YYFPRINTF (stderr, "\n"); + } +#endif + +/*--------------. +| yyerrhandle. | +`--------------*/ +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; + + YYDPRINTF ((stderr, "Shifting error token, ")); + + *++yyvsp = yylval; +#if YYLSP_NEEDED + *++yylsp = yylloc; +#endif + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +/*---------------------------------------------. +| yyoverflowab -- parser overflow comes here. | +`---------------------------------------------*/ +yyoverflowlab: + yyerror ("parser stack overflow"); + yyresult = 2; + /* Fall through. */ + +yyreturn: +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif + return yyresult; +} +#line 205 "plural.y" + + +void +internal_function +FREE_EXPRESSION (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 (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 (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..fe79112 --- /dev/null +++ b/intl/plural.y @@ -0,0 +1,381 @@ +%{ +/* Expression parsing for plural form selection. + Copyright (C) 2000-2001, 2003 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + 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 +#include "plural-exp.h" + +/* The main function generated by the parser is called __gettextparse, + but we want it to be called PLURAL_PARSE. */ +#ifndef _LIBC +# define __gettextparse PLURAL_PARSE +#endif + +#define YYLEX_PARAM &((struct parse_args *) arg)->cp +#define YYPARSE_PARAM arg +%} +%pure_parser +%expect 7 + +%union { + unsigned long int num; + enum operator op; + struct expression *exp; +} + +%{ +/* Prototypes for local functions. */ +static int yylex (YYSTYPE *lval, const char **pexp); +static void yyerror (const char *str); + +/* Allocation of expressions. */ + +static struct expression * +new_exp (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 (enum operator op) +{ + return new_exp (0, op, NULL); +} + +static inline struct expression * +new_exp_1 (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 (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 (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 (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 (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 (const char *str) +{ + /* Do nothing. We don't print error messages here. */ +} diff --git a/intl/printf-args.c b/intl/printf-args.c new file mode 100644 index 0000000..f975901 --- /dev/null +++ b/intl/printf-args.c @@ -0,0 +1,119 @@ +/* Decomposed printf argument list. + Copyright (C) 1999, 2002-2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +/* Specification. */ +#include "printf-args.h" + +#ifdef STATIC +STATIC +#endif +int +printf_fetchargs (va_list args, arguments *a) +{ + size_t i; + argument *ap; + + for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++) + switch (ap->type) + { + case TYPE_SCHAR: + ap->a.a_schar = va_arg (args, /*signed char*/ int); + break; + case TYPE_UCHAR: + ap->a.a_uchar = va_arg (args, /*unsigned char*/ int); + break; + case TYPE_SHORT: + ap->a.a_short = va_arg (args, /*short*/ int); + break; + case TYPE_USHORT: + ap->a.a_ushort = va_arg (args, /*unsigned short*/ int); + break; + case TYPE_INT: + ap->a.a_int = va_arg (args, int); + break; + case TYPE_UINT: + ap->a.a_uint = va_arg (args, unsigned int); + break; + case TYPE_LONGINT: + ap->a.a_longint = va_arg (args, long int); + break; + case TYPE_ULONGINT: + ap->a.a_ulongint = va_arg (args, unsigned long int); + break; +#ifdef HAVE_LONG_LONG + case TYPE_LONGLONGINT: + ap->a.a_longlongint = va_arg (args, long long int); + break; + case TYPE_ULONGLONGINT: + ap->a.a_ulonglongint = va_arg (args, unsigned long long int); + break; +#endif + case TYPE_DOUBLE: + ap->a.a_double = va_arg (args, double); + break; +#ifdef HAVE_LONG_DOUBLE + case TYPE_LONGDOUBLE: + ap->a.a_longdouble = va_arg (args, long double); + break; +#endif + case TYPE_CHAR: + ap->a.a_char = va_arg (args, int); + break; +#ifdef HAVE_WINT_T + case TYPE_WIDE_CHAR: + ap->a.a_wide_char = va_arg (args, wint_t); + break; +#endif + case TYPE_STRING: + ap->a.a_string = va_arg (args, const char *); + break; +#ifdef HAVE_WCHAR_T + case TYPE_WIDE_STRING: + ap->a.a_wide_string = va_arg (args, const wchar_t *); + break; +#endif + case TYPE_POINTER: + ap->a.a_pointer = va_arg (args, void *); + break; + case TYPE_COUNT_SCHAR_POINTER: + ap->a.a_count_schar_pointer = va_arg (args, signed char *); + break; + case TYPE_COUNT_SHORT_POINTER: + ap->a.a_count_short_pointer = va_arg (args, short *); + break; + case TYPE_COUNT_INT_POINTER: + ap->a.a_count_int_pointer = va_arg (args, int *); + break; + case TYPE_COUNT_LONGINT_POINTER: + ap->a.a_count_longint_pointer = va_arg (args, long int *); + break; +#ifdef HAVE_LONG_LONG + case TYPE_COUNT_LONGLONGINT_POINTER: + ap->a.a_count_longlongint_pointer = va_arg (args, long long int *); + break; +#endif + default: + /* Unknown type. */ + return -1; + } + return 0; +} diff --git a/intl/printf-args.h b/intl/printf-args.h new file mode 100644 index 0000000..625b803 --- /dev/null +++ b/intl/printf-args.h @@ -0,0 +1,137 @@ +/* Decomposed printf argument list. + Copyright (C) 1999, 2002-2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _PRINTF_ARGS_H +#define _PRINTF_ARGS_H + +/* Get size_t. */ +#include + +/* Get wchar_t. */ +#ifdef HAVE_WCHAR_T +# include +#endif + +/* Get wint_t. */ +#ifdef HAVE_WINT_T +# include +#endif + +/* Get va_list. */ +#include + + +/* Argument types */ +typedef enum +{ + TYPE_NONE, + TYPE_SCHAR, + TYPE_UCHAR, + TYPE_SHORT, + TYPE_USHORT, + TYPE_INT, + TYPE_UINT, + TYPE_LONGINT, + TYPE_ULONGINT, +#ifdef HAVE_LONG_LONG + TYPE_LONGLONGINT, + TYPE_ULONGLONGINT, +#endif + TYPE_DOUBLE, +#ifdef HAVE_LONG_DOUBLE + TYPE_LONGDOUBLE, +#endif + TYPE_CHAR, +#ifdef HAVE_WINT_T + TYPE_WIDE_CHAR, +#endif + TYPE_STRING, +#ifdef HAVE_WCHAR_T + TYPE_WIDE_STRING, +#endif + TYPE_POINTER, + TYPE_COUNT_SCHAR_POINTER, + TYPE_COUNT_SHORT_POINTER, + TYPE_COUNT_INT_POINTER, + TYPE_COUNT_LONGINT_POINTER +#ifdef HAVE_LONG_LONG +, TYPE_COUNT_LONGLONGINT_POINTER +#endif +} arg_type; + +/* Polymorphic argument */ +typedef struct +{ + arg_type type; + union + { + signed char a_schar; + unsigned char a_uchar; + short a_short; + unsigned short a_ushort; + int a_int; + unsigned int a_uint; + long int a_longint; + unsigned long int a_ulongint; +#ifdef HAVE_LONG_LONG + long long int a_longlongint; + unsigned long long int a_ulonglongint; +#endif + float a_float; + double a_double; +#ifdef HAVE_LONG_DOUBLE + long double a_longdouble; +#endif + int a_char; +#ifdef HAVE_WINT_T + wint_t a_wide_char; +#endif + const char* a_string; +#ifdef HAVE_WCHAR_T + const wchar_t* a_wide_string; +#endif + void* a_pointer; + signed char * a_count_schar_pointer; + short * a_count_short_pointer; + int * a_count_int_pointer; + long int * a_count_longint_pointer; +#ifdef HAVE_LONG_LONG + long long int * a_count_longlongint_pointer; +#endif + } + a; +} +argument; + +typedef struct +{ + size_t count; + argument *arg; +} +arguments; + + +/* Fetch the arguments, putting them into a. */ +#ifdef STATIC +STATIC +#else +extern +#endif +int printf_fetchargs (va_list args, arguments *a); + +#endif /* _PRINTF_ARGS_H */ diff --git a/intl/printf-parse.c b/intl/printf-parse.c new file mode 100644 index 0000000..20240e3 --- /dev/null +++ b/intl/printf-parse.c @@ -0,0 +1,537 @@ +/* Formatted output to strings. + Copyright (C) 1999-2000, 2002-2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +/* Specification. */ +#if WIDE_CHAR_VERSION +# include "wprintf-parse.h" +#else +# include "printf-parse.h" +#endif + +/* Get size_t, NULL. */ +#include + +/* Get intmax_t. */ +#if HAVE_STDINT_H_WITH_UINTMAX +# include +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +# include +#endif + +/* malloc(), realloc(), free(). */ +#include + +/* Checked size_t computations. */ +#include "xsize.h" + +#if WIDE_CHAR_VERSION +# define PRINTF_PARSE wprintf_parse +# define CHAR_T wchar_t +# define DIRECTIVE wchar_t_directive +# define DIRECTIVES wchar_t_directives +#else +# define PRINTF_PARSE printf_parse +# define CHAR_T char +# define DIRECTIVE char_directive +# define DIRECTIVES char_directives +#endif + +#ifdef STATIC +STATIC +#endif +int +PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a) +{ + const CHAR_T *cp = format; /* pointer into format */ + size_t arg_posn = 0; /* number of regular arguments consumed */ + size_t d_allocated; /* allocated elements of d->dir */ + size_t a_allocated; /* allocated elements of a->arg */ + size_t max_width_length = 0; + size_t max_precision_length = 0; + + d->count = 0; + d_allocated = 1; + d->dir = malloc (d_allocated * sizeof (DIRECTIVE)); + if (d->dir == NULL) + /* Out of memory. */ + return -1; + + a->count = 0; + a_allocated = 0; + a->arg = NULL; + +#define REGISTER_ARG(_index_,_type_) \ + { \ + size_t n = (_index_); \ + if (n >= a_allocated) \ + { \ + size_t memory_size; \ + argument *memory; \ + \ + a_allocated = xtimes (a_allocated, 2); \ + if (a_allocated <= n) \ + a_allocated = xsum (n, 1); \ + memory_size = xtimes (a_allocated, sizeof (argument)); \ + if (size_overflow_p (memory_size)) \ + /* Overflow, would lead to out of memory. */ \ + goto error; \ + memory = (a->arg \ + ? realloc (a->arg, memory_size) \ + : malloc (memory_size)); \ + if (memory == NULL) \ + /* Out of memory. */ \ + goto error; \ + a->arg = memory; \ + } \ + while (a->count <= n) \ + a->arg[a->count++].type = TYPE_NONE; \ + if (a->arg[n].type == TYPE_NONE) \ + a->arg[n].type = (_type_); \ + else if (a->arg[n].type != (_type_)) \ + /* Ambiguous type for positional argument. */ \ + goto error; \ + } + + while (*cp != '\0') + { + CHAR_T c = *cp++; + if (c == '%') + { + size_t arg_index = ARG_NONE; + DIRECTIVE *dp = &d->dir[d->count];/* pointer to next directive */ + + /* Initialize the next directive. */ + dp->dir_start = cp - 1; + dp->flags = 0; + dp->width_start = NULL; + dp->width_end = NULL; + dp->width_arg_index = ARG_NONE; + dp->precision_start = NULL; + dp->precision_end = NULL; + dp->precision_arg_index = ARG_NONE; + dp->arg_index = ARG_NONE; + + /* Test for positional argument. */ + if (*cp >= '0' && *cp <= '9') + { + const CHAR_T *np; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + ; + if (*np == '$') + { + size_t n = 0; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + n = xsum (xtimes (n, 10), *np - '0'); + if (n == 0) + /* Positional argument 0. */ + goto error; + if (size_overflow_p (n)) + /* n too large, would lead to out of memory later. */ + goto error; + arg_index = n - 1; + cp = np + 1; + } + } + + /* Read the flags. */ + for (;;) + { + if (*cp == '\'') + { + dp->flags |= FLAG_GROUP; + cp++; + } + else if (*cp == '-') + { + dp->flags |= FLAG_LEFT; + cp++; + } + else if (*cp == '+') + { + dp->flags |= FLAG_SHOWSIGN; + cp++; + } + else if (*cp == ' ') + { + dp->flags |= FLAG_SPACE; + cp++; + } + else if (*cp == '#') + { + dp->flags |= FLAG_ALT; + cp++; + } + else if (*cp == '0') + { + dp->flags |= FLAG_ZERO; + cp++; + } + else + break; + } + + /* Parse the field width. */ + if (*cp == '*') + { + dp->width_start = cp; + cp++; + dp->width_end = cp; + if (max_width_length < 1) + max_width_length = 1; + + /* Test for positional argument. */ + if (*cp >= '0' && *cp <= '9') + { + const CHAR_T *np; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + ; + if (*np == '$') + { + size_t n = 0; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + n = xsum (xtimes (n, 10), *np - '0'); + if (n == 0) + /* Positional argument 0. */ + goto error; + if (size_overflow_p (n)) + /* n too large, would lead to out of memory later. */ + goto error; + dp->width_arg_index = n - 1; + cp = np + 1; + } + } + if (dp->width_arg_index == ARG_NONE) + { + dp->width_arg_index = arg_posn++; + if (dp->width_arg_index == ARG_NONE) + /* arg_posn wrapped around. */ + goto error; + } + REGISTER_ARG (dp->width_arg_index, TYPE_INT); + } + else if (*cp >= '0' && *cp <= '9') + { + size_t width_length; + + dp->width_start = cp; + for (; *cp >= '0' && *cp <= '9'; cp++) + ; + dp->width_end = cp; + width_length = dp->width_end - dp->width_start; + if (max_width_length < width_length) + max_width_length = width_length; + } + + /* Parse the precision. */ + if (*cp == '.') + { + cp++; + if (*cp == '*') + { + dp->precision_start = cp - 1; + cp++; + dp->precision_end = cp; + if (max_precision_length < 2) + max_precision_length = 2; + + /* Test for positional argument. */ + if (*cp >= '0' && *cp <= '9') + { + const CHAR_T *np; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + ; + if (*np == '$') + { + size_t n = 0; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + n = xsum (xtimes (n, 10), *np - '0'); + if (n == 0) + /* Positional argument 0. */ + goto error; + if (size_overflow_p (n)) + /* n too large, would lead to out of memory + later. */ + goto error; + dp->precision_arg_index = n - 1; + cp = np + 1; + } + } + if (dp->precision_arg_index == ARG_NONE) + { + dp->precision_arg_index = arg_posn++; + if (dp->precision_arg_index == ARG_NONE) + /* arg_posn wrapped around. */ + goto error; + } + REGISTER_ARG (dp->precision_arg_index, TYPE_INT); + } + else + { + size_t precision_length; + + dp->precision_start = cp - 1; + for (; *cp >= '0' && *cp <= '9'; cp++) + ; + dp->precision_end = cp; + precision_length = dp->precision_end - dp->precision_start; + if (max_precision_length < precision_length) + max_precision_length = precision_length; + } + } + + { + arg_type type; + + /* Parse argument type/size specifiers. */ + { + int flags = 0; + + for (;;) + { + if (*cp == 'h') + { + flags |= (1 << (flags & 1)); + cp++; + } + else if (*cp == 'L') + { + flags |= 4; + cp++; + } + else if (*cp == 'l') + { + flags += 8; + cp++; + } +#ifdef HAVE_INTMAX_T + else if (*cp == 'j') + { + if (sizeof (intmax_t) > sizeof (long)) + { + /* intmax_t = long long */ + flags += 16; + } + else if (sizeof (intmax_t) > sizeof (int)) + { + /* intmax_t = long */ + flags += 8; + } + cp++; + } +#endif + else if (*cp == 'z' || *cp == 'Z') + { + /* 'z' is standardized in ISO C 99, but glibc uses 'Z' + because the warning facility in gcc-2.95.2 understands + only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784). */ + if (sizeof (size_t) > sizeof (long)) + { + /* size_t = long long */ + flags += 16; + } + else if (sizeof (size_t) > sizeof (int)) + { + /* size_t = long */ + flags += 8; + } + cp++; + } + else if (*cp == 't') + { + if (sizeof (ptrdiff_t) > sizeof (long)) + { + /* ptrdiff_t = long long */ + flags += 16; + } + else if (sizeof (ptrdiff_t) > sizeof (int)) + { + /* ptrdiff_t = long */ + flags += 8; + } + cp++; + } + else + break; + } + + /* Read the conversion character. */ + c = *cp++; + switch (c) + { + case 'd': case 'i': +#ifdef HAVE_LONG_LONG + if (flags >= 16 || (flags & 4)) + type = TYPE_LONGLONGINT; + else +#endif + if (flags >= 8) + type = TYPE_LONGINT; + else if (flags & 2) + type = TYPE_SCHAR; + else if (flags & 1) + type = TYPE_SHORT; + else + type = TYPE_INT; + break; + case 'o': case 'u': case 'x': case 'X': +#ifdef HAVE_LONG_LONG + if (flags >= 16 || (flags & 4)) + type = TYPE_ULONGLONGINT; + else +#endif + if (flags >= 8) + type = TYPE_ULONGINT; + else if (flags & 2) + type = TYPE_UCHAR; + else if (flags & 1) + type = TYPE_USHORT; + else + type = TYPE_UINT; + break; + case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': + case 'a': case 'A': +#ifdef HAVE_LONG_DOUBLE + if (flags >= 16 || (flags & 4)) + type = TYPE_LONGDOUBLE; + else +#endif + type = TYPE_DOUBLE; + break; + case 'c': + if (flags >= 8) +#ifdef HAVE_WINT_T + type = TYPE_WIDE_CHAR; +#else + goto error; +#endif + else + type = TYPE_CHAR; + break; +#ifdef HAVE_WINT_T + case 'C': + type = TYPE_WIDE_CHAR; + c = 'c'; + break; +#endif + case 's': + if (flags >= 8) +#ifdef HAVE_WCHAR_T + type = TYPE_WIDE_STRING; +#else + goto error; +#endif + else + type = TYPE_STRING; + break; +#ifdef HAVE_WCHAR_T + case 'S': + type = TYPE_WIDE_STRING; + c = 's'; + break; +#endif + case 'p': + type = TYPE_POINTER; + break; + case 'n': +#ifdef HAVE_LONG_LONG + if (flags >= 16 || (flags & 4)) + type = TYPE_COUNT_LONGLONGINT_POINTER; + else +#endif + if (flags >= 8) + type = TYPE_COUNT_LONGINT_POINTER; + else if (flags & 2) + type = TYPE_COUNT_SCHAR_POINTER; + else if (flags & 1) + type = TYPE_COUNT_SHORT_POINTER; + else + type = TYPE_COUNT_INT_POINTER; + break; + case '%': + type = TYPE_NONE; + break; + default: + /* Unknown conversion character. */ + goto error; + } + } + + if (type != TYPE_NONE) + { + dp->arg_index = arg_index; + if (dp->arg_index == ARG_NONE) + { + dp->arg_index = arg_posn++; + if (dp->arg_index == ARG_NONE) + /* arg_posn wrapped around. */ + goto error; + } + REGISTER_ARG (dp->arg_index, type); + } + dp->conversion = c; + dp->dir_end = cp; + } + + d->count++; + if (d->count >= d_allocated) + { + size_t memory_size; + DIRECTIVE *memory; + + d_allocated = xtimes (d_allocated, 2); + memory_size = xtimes (d_allocated, sizeof (DIRECTIVE)); + if (size_overflow_p (memory_size)) + /* Overflow, would lead to out of memory. */ + goto error; + memory = realloc (d->dir, memory_size); + if (memory == NULL) + /* Out of memory. */ + goto error; + d->dir = memory; + } + } + } + d->dir[d->count].dir_start = cp; + + d->max_width_length = max_width_length; + d->max_precision_length = max_precision_length; + return 0; + +error: + if (a->arg) + free (a->arg); + if (d->dir) + free (d->dir); + return -1; +} + +#undef DIRECTIVES +#undef DIRECTIVE +#undef CHAR_T +#undef PRINTF_PARSE diff --git a/intl/printf-parse.h b/intl/printf-parse.h new file mode 100644 index 0000000..e785338 --- /dev/null +++ b/intl/printf-parse.h @@ -0,0 +1,75 @@ +/* Parse printf format string. + Copyright (C) 1999, 2002-2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _PRINTF_PARSE_H +#define _PRINTF_PARSE_H + +#include "printf-args.h" + + +/* Flags */ +#define FLAG_GROUP 1 /* ' flag */ +#define FLAG_LEFT 2 /* - flag */ +#define FLAG_SHOWSIGN 4 /* + flag */ +#define FLAG_SPACE 8 /* space flag */ +#define FLAG_ALT 16 /* # flag */ +#define FLAG_ZERO 32 + +/* arg_index value indicating that no argument is consumed. */ +#define ARG_NONE (~(size_t)0) + +/* A parsed directive. */ +typedef struct +{ + const char* dir_start; + const char* dir_end; + int flags; + const char* width_start; + const char* width_end; + size_t width_arg_index; + const char* precision_start; + const char* precision_end; + size_t precision_arg_index; + char conversion; /* d i o u x X f e E g G c s p n U % but not C S */ + size_t arg_index; +} +char_directive; + +/* A parsed format string. */ +typedef struct +{ + size_t count; + char_directive *dir; + size_t max_width_length; + size_t max_precision_length; +} +char_directives; + + +/* Parses the format string. Fills in the number N of directives, and fills + in directives[0], ..., directives[N-1], and sets directives[N].dir_start + to the end of the format string. Also fills in the arg_type fields of the + arguments and the needed count of arguments. */ +#ifdef STATIC +STATIC +#else +extern +#endif +int printf_parse (const char *format, char_directives *d, arguments *a); + +#endif /* _PRINTF_PARSE_H */ diff --git a/intl/printf.c b/intl/printf.c new file mode 100644 index 0000000..5e112b6 --- /dev/null +++ b/intl/printf.c @@ -0,0 +1,371 @@ +/* Formatted output to strings, using POSIX/XSI format strings with positions. + Copyright (C) 2003 Free Software Foundation, Inc. + Written by Bruno Haible , 2003. + + 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +#include + +#if !HAVE_POSIX_PRINTF + +#include +#include + +/* When building a DLL, we must export some functions. Note that because + the functions are only defined for binary backward compatibility, we + don't need to use __declspec(dllimport) in any case. */ +#if defined _MSC_VER && BUILDING_DLL +# define DLL_EXPORTED __declspec(dllexport) +#else +# define DLL_EXPORTED +#endif + +#define STATIC static + +/* Define auxiliary functions declared in "printf-args.h". */ +#include "printf-args.c" + +/* Define auxiliary functions declared in "printf-parse.h". */ +#include "printf-parse.c" + +/* Define functions declared in "vasnprintf.h". */ +#define vasnprintf libintl_vasnprintf +#include "vasnprintf.c" +#if 0 /* not needed */ +#define asnprintf libintl_asnprintf +#include "asnprintf.c" +#endif + +DLL_EXPORTED +int +libintl_vfprintf (FILE *stream, const char *format, va_list args) +{ + if (strchr (format, '$') == NULL) + return vfprintf (stream, format, args); + else + { + size_t length; + char *result = libintl_vasnprintf (NULL, &length, format, args); + int retval = -1; + if (result != NULL) + { + if (fwrite (result, 1, length, stream) == length) + retval = length; + free (result); + } + return retval; + } +} + +DLL_EXPORTED +int +libintl_fprintf (FILE *stream, const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vfprintf (stream, format, args); + va_end (args); + return retval; +} + +DLL_EXPORTED +int +libintl_vprintf (const char *format, va_list args) +{ + return libintl_vfprintf (stdout, format, args); +} + +DLL_EXPORTED +int +libintl_printf (const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vprintf (format, args); + va_end (args); + return retval; +} + +DLL_EXPORTED +int +libintl_vsprintf (char *resultbuf, const char *format, va_list args) +{ + if (strchr (format, '$') == NULL) + return vsprintf (resultbuf, format, args); + else + { + size_t length = (size_t) ~0 / (4 * sizeof (char)); + char *result = libintl_vasnprintf (resultbuf, &length, format, args); + if (result != resultbuf) + { + free (result); + return -1; + } + else + return length; + } +} + +DLL_EXPORTED +int +libintl_sprintf (char *resultbuf, const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vsprintf (resultbuf, format, args); + va_end (args); + return retval; +} + +#if HAVE_SNPRINTF + +# if HAVE_DECL__SNPRINTF + /* Windows. */ +# define system_vsnprintf _vsnprintf +# else + /* Unix. */ +# define system_vsnprintf vsnprintf +# endif + +DLL_EXPORTED +int +libintl_vsnprintf (char *resultbuf, size_t length, const char *format, va_list args) +{ + if (strchr (format, '$') == NULL) + return system_vsnprintf (resultbuf, length, format, args); + else + { + size_t maxlength = length; + char *result = libintl_vasnprintf (resultbuf, &length, format, args); + if (result != resultbuf) + { + if (maxlength > 0) + { + if (length < maxlength) + abort (); + memcpy (resultbuf, result, maxlength - 1); + resultbuf[maxlength - 1] = '\0'; + } + free (result); + return -1; + } + else + return length; + } +} + +DLL_EXPORTED +int +libintl_snprintf (char *resultbuf, size_t length, const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vsnprintf (resultbuf, length, format, args); + va_end (args); + return retval; +} + +#endif + +#if HAVE_ASPRINTF + +DLL_EXPORTED +int +libintl_vasprintf (char **resultp, const char *format, va_list args) +{ + size_t length; + char *result = libintl_vasnprintf (NULL, &length, format, args); + if (result == NULL) + return -1; + *resultp = result; + return length; +} + +DLL_EXPORTED +int +libintl_asprintf (char **resultp, const char *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vasprintf (resultp, format, args); + va_end (args); + return retval; +} + +#endif + +#if HAVE_FWPRINTF + +#include + +#define WIDE_CHAR_VERSION 1 + +/* Define auxiliary functions declared in "wprintf-parse.h". */ +#include "printf-parse.c" + +/* Define functions declared in "vasnprintf.h". */ +#define vasnwprintf libintl_vasnwprintf +#include "vasnprintf.c" +#if 0 /* not needed */ +#define asnwprintf libintl_asnwprintf +#include "asnprintf.c" +#endif + +# if HAVE_DECL__SNWPRINTF + /* Windows. */ +# define system_vswprintf _vsnwprintf +# else + /* Unix. */ +# define system_vswprintf vswprintf +# endif + +DLL_EXPORTED +int +libintl_vfwprintf (FILE *stream, const wchar_t *format, va_list args) +{ + if (wcschr (format, '$') == NULL) + return vfwprintf (stream, format, args); + else + { + size_t length; + wchar_t *result = libintl_vasnwprintf (NULL, &length, format, args); + int retval = -1; + if (result != NULL) + { + size_t i; + for (i = 0; i < length; i++) + if (fputwc (result[i], stream) == WEOF) + break; + if (i == length) + retval = length; + free (result); + } + return retval; + } +} + +DLL_EXPORTED +int +libintl_fwprintf (FILE *stream, const wchar_t *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vfwprintf (stream, format, args); + va_end (args); + return retval; +} + +DLL_EXPORTED +int +libintl_vwprintf (const wchar_t *format, va_list args) +{ + return libintl_vfwprintf (stdout, format, args); +} + +DLL_EXPORTED +int +libintl_wprintf (const wchar_t *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vwprintf (format, args); + va_end (args); + return retval; +} + +DLL_EXPORTED +int +libintl_vswprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, va_list args) +{ + if (wcschr (format, '$') == NULL) + return system_vswprintf (resultbuf, length, format, args); + else + { + size_t maxlength = length; + wchar_t *result = libintl_vasnwprintf (resultbuf, &length, format, args); + if (result != resultbuf) + { + if (maxlength > 0) + { + if (length < maxlength) + abort (); + memcpy (resultbuf, result, (maxlength - 1) * sizeof (wchar_t)); + resultbuf[maxlength - 1] = 0; + } + free (result); + return -1; + } + else + return length; + } +} + +DLL_EXPORTED +int +libintl_swprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, ...) +{ + va_list args; + int retval; + + va_start (args, format); + retval = libintl_vswprintf (resultbuf, length, format, args); + va_end (args); + return retval; +} + +#endif + +#endif diff --git a/intl/ref-add.sin b/intl/ref-add.sin new file mode 100644 index 0000000..3678c28 --- /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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# 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..0c12d8e --- /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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# 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/relocatable.c b/intl/relocatable.c new file mode 100644 index 0000000..5b43d12 --- /dev/null +++ b/intl/relocatable.c @@ -0,0 +1,449 @@ +/* Provide relocatable packages. + Copyright (C) 2003-2004 Free Software Foundation, Inc. + Written by Bruno Haible , 2003. + + 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + + +/* Tell glibc's to provide a prototype for getline(). + 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 "config.h" +#endif + +/* Specification. */ +#include "relocatable.h" + +#if ENABLE_RELOCATABLE + +#include +#include +#include +#include + +#ifdef NO_XMALLOC +# define xmalloc malloc +#else +# include "xalloc.h" +#endif + +#if defined _WIN32 || defined __WIN32__ +# define WIN32_LEAN_AND_MEAN +# include +#endif + +#if DEPENDS_ON_LIBCHARSET +# include +#endif +#if DEPENDS_ON_LIBICONV && HAVE_ICONV +# include +#endif +#if DEPENDS_ON_LIBINTL && ENABLE_NLS +# include +#endif + +/* Faked cheap 'bool'. */ +#undef bool +#undef false +#undef true +#define bool int +#define false 0 +#define true 1 + +/* Pathname support. + ISSLASH(C) tests whether C is a directory separator character. + IS_PATH_WITH_DIR(P) tests whether P contains a directory specification. + */ +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, 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_PATH_WITH_DIR(P) \ + (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) +# define FILE_SYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0) +#else + /* Unix */ +# define ISSLASH(C) ((C) == '/') +# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) +# define FILE_SYSTEM_PREFIX_LEN(P) 0 +#endif + +/* Original installation prefix. */ +static char *orig_prefix; +static size_t orig_prefix_len; +/* Current installation prefix. */ +static char *curr_prefix; +static size_t curr_prefix_len; +/* These prefixes do not end in a slash. Anything that will be concatenated + to them must start with a slash. */ + +/* Sets the original and the current installation prefix of this module. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +static void +set_this_relocation_prefix (const char *orig_prefix_arg, + const char *curr_prefix_arg) +{ + if (orig_prefix_arg != NULL && curr_prefix_arg != NULL + /* Optimization: if orig_prefix and curr_prefix are equal, the + relocation is a nop. */ + && strcmp (orig_prefix_arg, curr_prefix_arg) != 0) + { + /* Duplicate the argument strings. */ + char *memory; + + orig_prefix_len = strlen (orig_prefix_arg); + curr_prefix_len = strlen (curr_prefix_arg); + memory = (char *) xmalloc (orig_prefix_len + 1 + curr_prefix_len + 1); +#ifdef NO_XMALLOC + if (memory != NULL) +#endif + { + memcpy (memory, orig_prefix_arg, orig_prefix_len + 1); + orig_prefix = memory; + memory += orig_prefix_len + 1; + memcpy (memory, curr_prefix_arg, curr_prefix_len + 1); + curr_prefix = memory; + return; + } + } + orig_prefix = NULL; + curr_prefix = NULL; + /* Don't worry about wasted memory here - this function is usually only + called once. */ +} + +/* Sets the original and the current installation prefix of the package. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +void +set_relocation_prefix (const char *orig_prefix_arg, const char *curr_prefix_arg) +{ + set_this_relocation_prefix (orig_prefix_arg, curr_prefix_arg); + + /* Now notify all dependent libraries. */ +#if DEPENDS_ON_LIBCHARSET + libcharset_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); +#endif +#if DEPENDS_ON_LIBICONV && HAVE_ICONV && _LIBICONV_VERSION >= 0x0109 + libiconv_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); +#endif +#if DEPENDS_ON_LIBINTL && ENABLE_NLS && defined libintl_set_relocation_prefix + libintl_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); +#endif +} + +#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR) + +/* Convenience function: + Computes the current installation prefix, based on the original + installation prefix, the original installation directory of a particular + file, and the current pathname of this file. Returns NULL upon failure. */ +#ifdef IN_LIBRARY +#define compute_curr_prefix local_compute_curr_prefix +static +#endif +const char * +compute_curr_prefix (const char *orig_installprefix, + const char *orig_installdir, + const char *curr_pathname) +{ + const char *curr_installdir; + const char *rel_installdir; + + if (curr_pathname == NULL) + return NULL; + + /* Determine the relative installation directory, relative to the prefix. + This is simply the difference between orig_installprefix and + orig_installdir. */ + if (strncmp (orig_installprefix, orig_installdir, strlen (orig_installprefix)) + != 0) + /* Shouldn't happen - nothing should be installed outside $(prefix). */ + return NULL; + rel_installdir = orig_installdir + strlen (orig_installprefix); + + /* Determine the current installation directory. */ + { + const char *p_base = curr_pathname + FILE_SYSTEM_PREFIX_LEN (curr_pathname); + const char *p = curr_pathname + strlen (curr_pathname); + char *q; + + while (p > p_base) + { + p--; + if (ISSLASH (*p)) + break; + } + + q = (char *) xmalloc (p - curr_pathname + 1); +#ifdef NO_XMALLOC + if (q == NULL) + return NULL; +#endif + memcpy (q, curr_pathname, p - curr_pathname); + q[p - curr_pathname] = '\0'; + curr_installdir = q; + } + + /* Compute the current installation prefix by removing the trailing + rel_installdir from it. */ + { + const char *rp = rel_installdir + strlen (rel_installdir); + const char *cp = curr_installdir + strlen (curr_installdir); + const char *cp_base = + curr_installdir + FILE_SYSTEM_PREFIX_LEN (curr_installdir); + + while (rp > rel_installdir && cp > cp_base) + { + bool same = false; + const char *rpi = rp; + const char *cpi = cp; + + while (rpi > rel_installdir && cpi > cp_base) + { + rpi--; + cpi--; + if (ISSLASH (*rpi) || ISSLASH (*cpi)) + { + if (ISSLASH (*rpi) && ISSLASH (*cpi)) + same = true; + break; + } +#if defined _WIN32 || defined __WIN32__ || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__ + /* Win32, Cygwin, OS/2, DOS - case insignificant filesystem */ + if ((*rpi >= 'a' && *rpi <= 'z' ? *rpi - 'a' + 'A' : *rpi) + != (*cpi >= 'a' && *cpi <= 'z' ? *cpi - 'a' + 'A' : *cpi)) + break; +#else + if (*rpi != *cpi) + break; +#endif + } + if (!same) + break; + /* The last pathname component was the same. opi and cpi now point + to the slash before it. */ + rp = rpi; + cp = cpi; + } + + if (rp > rel_installdir) + /* Unexpected: The curr_installdir does not end with rel_installdir. */ + return NULL; + + { + size_t curr_prefix_len = cp - curr_installdir; + char *curr_prefix; + + curr_prefix = (char *) xmalloc (curr_prefix_len + 1); +#ifdef NO_XMALLOC + if (curr_prefix == NULL) + return NULL; +#endif + memcpy (curr_prefix, curr_installdir, curr_prefix_len); + curr_prefix[curr_prefix_len] = '\0'; + + return curr_prefix; + } + } +} + +#endif /* !IN_LIBRARY || PIC */ + +#if defined PIC && defined INSTALLDIR + +/* Full pathname of shared library, or NULL. */ +static char *shared_library_fullname; + +#if defined _WIN32 || defined __WIN32__ + +/* Determine the full pathname of the shared library when it is loaded. */ + +BOOL WINAPI +DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved) +{ + (void) reserved; + + if (event == DLL_PROCESS_ATTACH) + { + /* The DLL is being loaded into an application's address range. */ + static char location[MAX_PATH]; + + if (!GetModuleFileName (module_handle, location, sizeof (location))) + /* Shouldn't happen. */ + return FALSE; + + if (!IS_PATH_WITH_DIR (location)) + /* Shouldn't happen. */ + return FALSE; + + shared_library_fullname = strdup (location); + } + + return TRUE; +} + +#else /* Unix */ + +static void +find_shared_library_fullname () +{ +#if defined __linux__ && __GLIBC__ >= 2 + /* Linux has /proc/self/maps. glibc 2 has the getline() function. */ + FILE *fp; + + /* Open the current process' maps file. It describes one VMA per line. */ + fp = fopen ("/proc/self/maps", "r"); + if (fp) + { + unsigned long address = (unsigned long) &find_shared_library_fullname; + for (;;) + { + unsigned long start, end; + int c; + + if (fscanf (fp, "%lx-%lx", &start, &end) != 2) + break; + if (address >= start && address <= end - 1) + { + /* Found it. Now see if this line contains a filename. */ + while (c = getc (fp), c != EOF && c != '\n' && c != '/') + continue; + if (c == '/') + { + size_t size; + int len; + + ungetc (c, fp); + shared_library_fullname = NULL; size = 0; + len = getline (&shared_library_fullname, &size, fp); + if (len >= 0) + { + /* Success: filled shared_library_fullname. */ + if (len > 0 && shared_library_fullname[len - 1] == '\n') + shared_library_fullname[len - 1] = '\0'; + } + } + break; + } + while (c = getc (fp), c != EOF && c != '\n') + continue; + } + fclose (fp); + } +#endif +} + +#endif /* WIN32 / Unix */ + +/* Return the full pathname of the current shared library. + Return NULL if unknown. + Guaranteed to work only on Linux and Woe32. */ +static char * +get_shared_library_fullname () +{ +#if !(defined _WIN32 || defined __WIN32__) + static bool tried_find_shared_library_fullname; + if (!tried_find_shared_library_fullname) + { + find_shared_library_fullname (); + tried_find_shared_library_fullname = true; + } +#endif + return shared_library_fullname; +} + +#endif /* PIC */ + +/* Returns the pathname, relocated according to the current installation + directory. */ +const char * +relocate (const char *pathname) +{ +#if defined PIC && defined INSTALLDIR + static int initialized; + + /* Initialization code for a shared library. */ + if (!initialized) + { + /* At this point, orig_prefix and curr_prefix likely have already been + set through the main program's set_program_name_and_installdir + function. This is sufficient in the case that the library has + initially been installed in the same orig_prefix. But we can do + better, to also cover the cases that 1. it has been installed + in a different prefix before being moved to orig_prefix and (later) + to curr_prefix, 2. unlike the program, it has not moved away from + orig_prefix. */ + const char *orig_installprefix = INSTALLPREFIX; + const char *orig_installdir = INSTALLDIR; + const char *curr_prefix_better; + + curr_prefix_better = + compute_curr_prefix (orig_installprefix, orig_installdir, + get_shared_library_fullname ()); + if (curr_prefix_better == NULL) + curr_prefix_better = curr_prefix; + + set_relocation_prefix (orig_installprefix, curr_prefix_better); + + initialized = 1; + } +#endif + + /* Note: It is not necessary to perform case insensitive comparison here, + even for DOS-like filesystems, because the pathname argument was + typically created from the same Makefile variable as orig_prefix came + from. */ + if (orig_prefix != NULL && curr_prefix != NULL + && strncmp (pathname, orig_prefix, orig_prefix_len) == 0) + { + if (pathname[orig_prefix_len] == '\0') + /* pathname equals orig_prefix. */ + return curr_prefix; + if (ISSLASH (pathname[orig_prefix_len])) + { + /* pathname starts with orig_prefix. */ + const char *pathname_tail = &pathname[orig_prefix_len]; + char *result = + (char *) xmalloc (curr_prefix_len + strlen (pathname_tail) + 1); + +#ifdef NO_XMALLOC + if (result != NULL) +#endif + { + memcpy (result, curr_prefix, curr_prefix_len); + strcpy (result + curr_prefix_len, pathname_tail); + return result; + } + } + } + /* Nothing to relocate. */ + return pathname; +} + +#endif diff --git a/intl/relocatable.h b/intl/relocatable.h new file mode 100644 index 0000000..614e64e --- /dev/null +++ b/intl/relocatable.h @@ -0,0 +1,77 @@ +/* Provide relocatable packages. + Copyright (C) 2003 Free Software Foundation, Inc. + Written by Bruno Haible , 2003. + + 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _RELOCATABLE_H +#define _RELOCATABLE_H + +#ifdef __cplusplus +extern "C" { +#endif + + +/* This can be enabled through the configure --enable-relocatable option. */ +#if ENABLE_RELOCATABLE + +/* When building a DLL, we must export some functions. Note that because + this is a private .h file, we don't need to use __declspec(dllimport) + in any case. */ +#if defined _MSC_VER && BUILDING_DLL +# define RELOCATABLE_DLL_EXPORTED __declspec(dllexport) +#else +# define RELOCATABLE_DLL_EXPORTED +#endif + +/* Sets the original and the current installation prefix of the package. + Relocation simply replaces a pathname starting with the original prefix + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +extern RELOCATABLE_DLL_EXPORTED void + set_relocation_prefix (const char *orig_prefix, + const char *curr_prefix); + +/* Returns the pathname, relocated according to the current installation + directory. */ +extern const char * relocate (const char *pathname); + +/* Memory management: relocate() leaks memory, because it has to construct + a fresh pathname. If this is a problem because your program calls + relocate() frequently, think about caching the result. */ + +/* Convenience function: + Computes the current installation prefix, based on the original + installation prefix, the original installation directory of a particular + file, and the current pathname of this file. Returns NULL upon failure. */ +extern const char * compute_curr_prefix (const char *orig_installprefix, + const char *orig_installdir, + const char *curr_pathname); + +#else + +/* By default, we use the hardwired pathnames. */ +#define relocate(pathname) (pathname) + +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* _RELOCATABLE_H */ diff --git a/intl/textdomain.c b/intl/textdomain.c new file mode 100644 index 0000000..2bf6240 --- /dev/null +++ b/intl/textdomain.c @@ -0,0 +1,141 @@ +/* Implementation of the textdomain(3) function. + Copyright (C) 1995-1998, 2000-2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + 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 libintl_nl_default_default_domain +# define _nl_current_default_domain libintl_nl_current_default_domain +#endif + +/* @@ end of prolog @@ */ + +/* Name of the default text domain. */ +extern const char _nl_default_default_domain[] attribute_hidden; + +/* Default text domain in which entries for gettext(3) are to be found. */ +extern const char *_nl_current_default_domain attribute_hidden; + + +/* 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 libintl_textdomain +#endif + +/* Lock variable to protect the global data in the gettext implementation. */ +__libc_rwlock_define (extern, _nl_state_lock attribute_hidden) + +/* 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 (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/intl/vasnprintf.c b/intl/vasnprintf.c new file mode 100644 index 0000000..f59968f --- /dev/null +++ b/intl/vasnprintf.c @@ -0,0 +1,902 @@ +/* vsprintf with automatic memory allocation. + Copyright (C) 1999, 2002-2005 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +/* Tell glibc's to provide a prototype for snprintf(). + 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 +#ifndef IN_LIBINTL +# include +#endif + +/* Specification. */ +#if WIDE_CHAR_VERSION +# include "vasnwprintf.h" +#else +# include "vasnprintf.h" +#endif + +#include /* snprintf(), sprintf() */ +#include /* abort(), malloc(), realloc(), free() */ +#include /* memcpy(), strlen() */ +#include /* errno */ +#include /* CHAR_BIT, INT_MAX */ +#include /* DBL_MAX_EXP, LDBL_MAX_EXP */ +#if WIDE_CHAR_VERSION +# include "wprintf-parse.h" +#else +# include "printf-parse.h" +#endif + +/* Checked size_t computations. */ +#include "xsize.h" + +/* Some systems, like OSF/1 4.0 and Woe32, don't have EOVERFLOW. */ +#ifndef EOVERFLOW +# define EOVERFLOW E2BIG +#endif + +#ifdef HAVE_WCHAR_T +# ifdef HAVE_WCSLEN +# define local_wcslen wcslen +# else + /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid + a dependency towards this library, here is a local substitute. + Define this substitute only once, even if this file is included + twice in the same compilation unit. */ +# ifndef local_wcslen_defined +# define local_wcslen_defined 1 +static size_t +local_wcslen (const wchar_t *s) +{ + const wchar_t *ptr; + + for (ptr = s; *ptr != (wchar_t) 0; ptr++) + ; + return ptr - s; +} +# endif +# endif +#endif + +#if WIDE_CHAR_VERSION +# define VASNPRINTF vasnwprintf +# define CHAR_T wchar_t +# define DIRECTIVE wchar_t_directive +# define DIRECTIVES wchar_t_directives +# define PRINTF_PARSE wprintf_parse +# define USE_SNPRINTF 1 +# if HAVE_DECL__SNWPRINTF + /* On Windows, the function swprintf() has a different signature than + on Unix; we use the _snwprintf() function instead. */ +# define SNPRINTF _snwprintf +# else + /* Unix. */ +# define SNPRINTF swprintf +# endif +#else +# define VASNPRINTF vasnprintf +# define CHAR_T char +# define DIRECTIVE char_directive +# define DIRECTIVES char_directives +# define PRINTF_PARSE printf_parse +# define USE_SNPRINTF (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF) +# if HAVE_DECL__SNPRINTF + /* Windows. */ +# define SNPRINTF _snprintf +# else + /* Unix. */ +# define SNPRINTF snprintf +# endif +#endif + +CHAR_T * +VASNPRINTF (CHAR_T *resultbuf, size_t *lengthp, const CHAR_T *format, va_list args) +{ + DIRECTIVES d; + arguments a; + + if (PRINTF_PARSE (format, &d, &a) < 0) + { + errno = EINVAL; + return NULL; + } + +#define CLEANUP() \ + free (d.dir); \ + if (a.arg) \ + free (a.arg); + + if (printf_fetchargs (args, &a) < 0) + { + CLEANUP (); + errno = EINVAL; + return NULL; + } + + { + size_t buf_neededlength; + CHAR_T *buf; + CHAR_T *buf_malloced; + const CHAR_T *cp; + size_t i; + DIRECTIVE *dp; + /* Output string accumulator. */ + CHAR_T *result; + size_t allocated; + size_t length; + + /* Allocate a small buffer that will hold a directive passed to + sprintf or snprintf. */ + buf_neededlength = + xsum4 (7, d.max_width_length, d.max_precision_length, 6); +#if HAVE_ALLOCA + if (buf_neededlength < 4000 / sizeof (CHAR_T)) + { + buf = (CHAR_T *) alloca (buf_neededlength * sizeof (CHAR_T)); + buf_malloced = NULL; + } + else +#endif + { + size_t buf_memsize = xtimes (buf_neededlength, sizeof (CHAR_T)); + if (size_overflow_p (buf_memsize)) + goto out_of_memory_1; + buf = (CHAR_T *) malloc (buf_memsize); + if (buf == NULL) + goto out_of_memory_1; + buf_malloced = buf; + } + + if (resultbuf != NULL) + { + result = resultbuf; + allocated = *lengthp; + } + else + { + result = NULL; + allocated = 0; + } + length = 0; + /* Invariants: + result is either == resultbuf or == NULL or malloc-allocated. + If length > 0, then result != NULL. */ + + /* Ensures that allocated >= needed. Aborts through a jump to + out_of_memory if needed is SIZE_MAX or otherwise too big. */ +#define ENSURE_ALLOCATION(needed) \ + if ((needed) > allocated) \ + { \ + size_t memory_size; \ + CHAR_T *memory; \ + \ + allocated = (allocated > 0 ? xtimes (allocated, 2) : 12); \ + if ((needed) > allocated) \ + allocated = (needed); \ + memory_size = xtimes (allocated, sizeof (CHAR_T)); \ + if (size_overflow_p (memory_size)) \ + goto out_of_memory; \ + if (result == resultbuf || result == NULL) \ + memory = (CHAR_T *) malloc (memory_size); \ + else \ + memory = (CHAR_T *) realloc (result, memory_size); \ + if (memory == NULL) \ + goto out_of_memory; \ + if (result == resultbuf && length > 0) \ + memcpy (memory, result, length * sizeof (CHAR_T)); \ + result = memory; \ + } + + for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++) + { + if (cp != dp->dir_start) + { + size_t n = dp->dir_start - cp; + size_t augmented_length = xsum (length, n); + + ENSURE_ALLOCATION (augmented_length); + memcpy (result + length, cp, n * sizeof (CHAR_T)); + length = augmented_length; + } + if (i == d.count) + break; + + /* Execute a single directive. */ + if (dp->conversion == '%') + { + size_t augmented_length; + + if (!(dp->arg_index == ARG_NONE)) + abort (); + augmented_length = xsum (length, 1); + ENSURE_ALLOCATION (augmented_length); + result[length] = '%'; + length = augmented_length; + } + else + { + if (!(dp->arg_index != ARG_NONE)) + abort (); + + if (dp->conversion == 'n') + { + switch (a.arg[dp->arg_index].type) + { + case TYPE_COUNT_SCHAR_POINTER: + *a.arg[dp->arg_index].a.a_count_schar_pointer = length; + break; + case TYPE_COUNT_SHORT_POINTER: + *a.arg[dp->arg_index].a.a_count_short_pointer = length; + break; + case TYPE_COUNT_INT_POINTER: + *a.arg[dp->arg_index].a.a_count_int_pointer = length; + break; + case TYPE_COUNT_LONGINT_POINTER: + *a.arg[dp->arg_index].a.a_count_longint_pointer = length; + break; +#ifdef HAVE_LONG_LONG + case TYPE_COUNT_LONGLONGINT_POINTER: + *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length; + break; +#endif + default: + abort (); + } + } + else + { + arg_type type = a.arg[dp->arg_index].type; + CHAR_T *p; + unsigned int prefix_count; + int prefixes[2]; +#if !USE_SNPRINTF + size_t tmp_length; + CHAR_T tmpbuf[700]; + CHAR_T *tmp; + + /* Allocate a temporary buffer of sufficient size for calling + sprintf. */ + { + size_t width; + size_t precision; + + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + width = (arg < 0 ? (unsigned int) (-arg) : arg); + } + else + { + const CHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + } + + precision = 6; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + precision = (arg < 0 ? 0 : arg); + } + else + { + const CHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + } + } + + switch (dp->conversion) + { + + case 'd': case 'i': case 'u': +# ifdef HAVE_LONG_LONG + if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long long) * CHAR_BIT + * 0.30103 /* binary -> decimal */ + * 2 /* estimate for FLAG_GROUP */ + ) + + 1 /* turn floor into ceil */ + + 1; /* account for leading sign */ + else +# endif + if (type == TYPE_LONGINT || type == TYPE_ULONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long) * CHAR_BIT + * 0.30103 /* binary -> decimal */ + * 2 /* estimate for FLAG_GROUP */ + ) + + 1 /* turn floor into ceil */ + + 1; /* account for leading sign */ + else + tmp_length = + (unsigned int) (sizeof (unsigned int) * CHAR_BIT + * 0.30103 /* binary -> decimal */ + * 2 /* estimate for FLAG_GROUP */ + ) + + 1 /* turn floor into ceil */ + + 1; /* account for leading sign */ + break; + + case 'o': +# ifdef HAVE_LONG_LONG + if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long long) * CHAR_BIT + * 0.333334 /* binary -> octal */ + ) + + 1 /* turn floor into ceil */ + + 1; /* account for leading sign */ + else +# endif + if (type == TYPE_LONGINT || type == TYPE_ULONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long) * CHAR_BIT + * 0.333334 /* binary -> octal */ + ) + + 1 /* turn floor into ceil */ + + 1; /* account for leading sign */ + else + tmp_length = + (unsigned int) (sizeof (unsigned int) * CHAR_BIT + * 0.333334 /* binary -> octal */ + ) + + 1 /* turn floor into ceil */ + + 1; /* account for leading sign */ + break; + + case 'x': case 'X': +# ifdef HAVE_LONG_LONG + if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long long) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1 /* turn floor into ceil */ + + 2; /* account for leading sign or alternate form */ + else +# endif + if (type == TYPE_LONGINT || type == TYPE_ULONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1 /* turn floor into ceil */ + + 2; /* account for leading sign or alternate form */ + else + tmp_length = + (unsigned int) (sizeof (unsigned int) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1 /* turn floor into ceil */ + + 2; /* account for leading sign or alternate form */ + break; + + case 'f': case 'F': +# ifdef HAVE_LONG_DOUBLE + if (type == TYPE_LONGDOUBLE) + tmp_length = + (unsigned int) (LDBL_MAX_EXP + * 0.30103 /* binary -> decimal */ + * 2 /* estimate for FLAG_GROUP */ + ) + + 1 /* turn floor into ceil */ + + 10; /* sign, decimal point etc. */ + else +# endif + tmp_length = + (unsigned int) (DBL_MAX_EXP + * 0.30103 /* binary -> decimal */ + * 2 /* estimate for FLAG_GROUP */ + ) + + 1 /* turn floor into ceil */ + + 10; /* sign, decimal point etc. */ + tmp_length = xsum (tmp_length, precision); + break; + + case 'e': case 'E': case 'g': case 'G': + case 'a': case 'A': + tmp_length = + 12; /* sign, decimal point, exponent etc. */ + tmp_length = xsum (tmp_length, precision); + break; + + case 'c': +# if defined HAVE_WINT_T && !WIDE_CHAR_VERSION + if (type == TYPE_WIDE_CHAR) + tmp_length = MB_CUR_MAX; + else +# endif + tmp_length = 1; + break; + + case 's': +# ifdef HAVE_WCHAR_T + if (type == TYPE_WIDE_STRING) + { + tmp_length = + local_wcslen (a.arg[dp->arg_index].a.a_wide_string); + +# if !WIDE_CHAR_VERSION + tmp_length = xtimes (tmp_length, MB_CUR_MAX); +# endif + } + else +# endif + tmp_length = strlen (a.arg[dp->arg_index].a.a_string); + break; + + case 'p': + tmp_length = + (unsigned int) (sizeof (void *) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1 /* turn floor into ceil */ + + 2; /* account for leading 0x */ + break; + + default: + abort (); + } + + if (tmp_length < width) + tmp_length = width; + + tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ + } + + if (tmp_length <= sizeof (tmpbuf) / sizeof (CHAR_T)) + tmp = tmpbuf; + else + { + size_t tmp_memsize = xtimes (tmp_length, sizeof (CHAR_T)); + + if (size_overflow_p (tmp_memsize)) + /* Overflow, would lead to out of memory. */ + goto out_of_memory; + tmp = (CHAR_T *) malloc (tmp_memsize); + if (tmp == NULL) + /* Out of memory. */ + goto out_of_memory; + } +#endif + + /* Construct the format string for calling snprintf or + sprintf. */ + p = buf; + *p++ = '%'; + if (dp->flags & FLAG_GROUP) + *p++ = '\''; + if (dp->flags & FLAG_LEFT) + *p++ = '-'; + if (dp->flags & FLAG_SHOWSIGN) + *p++ = '+'; + if (dp->flags & FLAG_SPACE) + *p++ = ' '; + if (dp->flags & FLAG_ALT) + *p++ = '#'; + if (dp->flags & FLAG_ZERO) + *p++ = '0'; + if (dp->width_start != dp->width_end) + { + size_t n = dp->width_end - dp->width_start; + memcpy (p, dp->width_start, n * sizeof (CHAR_T)); + p += n; + } + if (dp->precision_start != dp->precision_end) + { + size_t n = dp->precision_end - dp->precision_start; + memcpy (p, dp->precision_start, n * sizeof (CHAR_T)); + p += n; + } + + switch (type) + { +#ifdef HAVE_LONG_LONG + case TYPE_LONGLONGINT: + case TYPE_ULONGLONGINT: + *p++ = 'l'; + /*FALLTHROUGH*/ +#endif + case TYPE_LONGINT: + case TYPE_ULONGINT: +#ifdef HAVE_WINT_T + case TYPE_WIDE_CHAR: +#endif +#ifdef HAVE_WCHAR_T + case TYPE_WIDE_STRING: +#endif + *p++ = 'l'; + break; +#ifdef HAVE_LONG_DOUBLE + case TYPE_LONGDOUBLE: + *p++ = 'L'; + break; +#endif + default: + break; + } + *p = dp->conversion; +#if USE_SNPRINTF + p[1] = '%'; + p[2] = 'n'; + p[3] = '\0'; +#else + p[1] = '\0'; +#endif + + /* Construct the arguments for calling snprintf or sprintf. */ + prefix_count = 0; + if (dp->width_arg_index != ARG_NONE) + { + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int; + } + if (dp->precision_arg_index != ARG_NONE) + { + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int; + } + +#if USE_SNPRINTF + /* Prepare checking whether snprintf returns the count + via %n. */ + ENSURE_ALLOCATION (xsum (length, 1)); + result[length] = '\0'; +#endif + + for (;;) + { + size_t maxlen; + int count; + int retcount; + + maxlen = allocated - length; + count = -1; + retcount = 0; + +#if USE_SNPRINTF +# define SNPRINTF_BUF(arg) \ + switch (prefix_count) \ + { \ + case 0: \ + retcount = SNPRINTF (result + length, maxlen, buf, \ + arg, &count); \ + break; \ + case 1: \ + retcount = SNPRINTF (result + length, maxlen, buf, \ + prefixes[0], arg, &count); \ + break; \ + case 2: \ + retcount = SNPRINTF (result + length, maxlen, buf, \ + prefixes[0], prefixes[1], arg, \ + &count); \ + break; \ + default: \ + abort (); \ + } +#else +# define SNPRINTF_BUF(arg) \ + switch (prefix_count) \ + { \ + case 0: \ + count = sprintf (tmp, buf, arg); \ + break; \ + case 1: \ + count = sprintf (tmp, buf, prefixes[0], arg); \ + break; \ + case 2: \ + count = sprintf (tmp, buf, prefixes[0], prefixes[1],\ + arg); \ + break; \ + default: \ + abort (); \ + } +#endif + + switch (type) + { + case TYPE_SCHAR: + { + int arg = a.arg[dp->arg_index].a.a_schar; + SNPRINTF_BUF (arg); + } + break; + case TYPE_UCHAR: + { + unsigned int arg = a.arg[dp->arg_index].a.a_uchar; + SNPRINTF_BUF (arg); + } + break; + case TYPE_SHORT: + { + int arg = a.arg[dp->arg_index].a.a_short; + SNPRINTF_BUF (arg); + } + break; + case TYPE_USHORT: + { + unsigned int arg = a.arg[dp->arg_index].a.a_ushort; + SNPRINTF_BUF (arg); + } + break; + case TYPE_INT: + { + int arg = a.arg[dp->arg_index].a.a_int; + SNPRINTF_BUF (arg); + } + break; + case TYPE_UINT: + { + unsigned int arg = a.arg[dp->arg_index].a.a_uint; + SNPRINTF_BUF (arg); + } + break; + case TYPE_LONGINT: + { + long int arg = a.arg[dp->arg_index].a.a_longint; + SNPRINTF_BUF (arg); + } + break; + case TYPE_ULONGINT: + { + unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint; + SNPRINTF_BUF (arg); + } + break; +#ifdef HAVE_LONG_LONG + case TYPE_LONGLONGINT: + { + long long int arg = a.arg[dp->arg_index].a.a_longlongint; + SNPRINTF_BUF (arg); + } + break; + case TYPE_ULONGLONGINT: + { + unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint; + SNPRINTF_BUF (arg); + } + break; +#endif + case TYPE_DOUBLE: + { + double arg = a.arg[dp->arg_index].a.a_double; + SNPRINTF_BUF (arg); + } + break; +#ifdef HAVE_LONG_DOUBLE + case TYPE_LONGDOUBLE: + { + long double arg = a.arg[dp->arg_index].a.a_longdouble; + SNPRINTF_BUF (arg); + } + break; +#endif + case TYPE_CHAR: + { + int arg = a.arg[dp->arg_index].a.a_char; + SNPRINTF_BUF (arg); + } + break; +#ifdef HAVE_WINT_T + case TYPE_WIDE_CHAR: + { + wint_t arg = a.arg[dp->arg_index].a.a_wide_char; + SNPRINTF_BUF (arg); + } + break; +#endif + case TYPE_STRING: + { + const char *arg = a.arg[dp->arg_index].a.a_string; + SNPRINTF_BUF (arg); + } + break; +#ifdef HAVE_WCHAR_T + case TYPE_WIDE_STRING: + { + const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string; + SNPRINTF_BUF (arg); + } + break; +#endif + case TYPE_POINTER: + { + void *arg = a.arg[dp->arg_index].a.a_pointer; + SNPRINTF_BUF (arg); + } + break; + default: + abort (); + } + +#if USE_SNPRINTF + /* Portability: Not all implementations of snprintf() + are ISO C 99 compliant. Determine the number of + bytes that snprintf() has produced or would have + produced. */ + if (count >= 0) + { + /* Verify that snprintf() has NUL-terminated its + result. */ + if (count < maxlen && result[length + count] != '\0') + abort (); + /* Portability hack. */ + if (retcount > count) + count = retcount; + } + else + { + /* snprintf() doesn't understand the '%n' + directive. */ + if (p[1] != '\0') + { + /* Don't use the '%n' directive; instead, look + at the snprintf() return value. */ + p[1] = '\0'; + continue; + } + else + { + /* Look at the snprintf() return value. */ + if (retcount < 0) + { + /* HP-UX 10.20 snprintf() is doubly deficient: + It doesn't understand the '%n' directive, + *and* it returns -1 (rather than the length + that would have been required) when the + buffer is too small. */ + size_t bigger_need = + xsum (xtimes (allocated, 2), 12); + ENSURE_ALLOCATION (bigger_need); + continue; + } + else + count = retcount; + } + } +#endif + + /* Attempt to handle failure. */ + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EINVAL; + return NULL; + } + +#if !USE_SNPRINTF + if (count >= tmp_length) + /* tmp_length was incorrectly calculated - fix the + code above! */ + abort (); +#endif + + /* Make room for the result. */ + if (count >= maxlen) + { + /* Need at least count bytes. But allocate + proportionally, to avoid looping eternally if + snprintf() reports a too small count. */ + size_t n = + xmax (xsum (length, count), xtimes (allocated, 2)); + + ENSURE_ALLOCATION (n); +#if USE_SNPRINTF + continue; +#endif + } + +#if USE_SNPRINTF + /* The snprintf() result did fit. */ +#else + /* Append the sprintf() result. */ + memcpy (result + length, tmp, count * sizeof (CHAR_T)); + if (tmp != tmpbuf) + free (tmp); +#endif + + length += count; + break; + } + } + } + } + + /* Add the final NUL. */ + ENSURE_ALLOCATION (xsum (length, 1)); + result[length] = '\0'; + + if (result != resultbuf && length + 1 < allocated) + { + /* Shrink the allocated memory if possible. */ + CHAR_T *memory; + + memory = (CHAR_T *) realloc (result, (length + 1) * sizeof (CHAR_T)); + if (memory != NULL) + result = memory; + } + + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + *lengthp = length; + if (length > INT_MAX) + goto length_overflow; + return result; + + length_overflow: + /* We could produce such a big string, but its length doesn't fit into + an 'int'. POSIX says that snprintf() fails with errno = EOVERFLOW in + this case. */ + if (result != resultbuf) + free (result); + errno = EOVERFLOW; + return NULL; + + out_of_memory: + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + out_of_memory_1: + CLEANUP (); + errno = ENOMEM; + return NULL; + } +} + +#undef SNPRINTF +#undef USE_SNPRINTF +#undef PRINTF_PARSE +#undef DIRECTIVES +#undef DIRECTIVE +#undef CHAR_T +#undef VASNPRINTF diff --git a/intl/vasnprintf.h b/intl/vasnprintf.h new file mode 100644 index 0000000..e67b88d --- /dev/null +++ b/intl/vasnprintf.h @@ -0,0 +1,78 @@ +/* vsprintf with automatic memory allocation. + Copyright (C) 2002-2004 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _VASNPRINTF_H +#define _VASNPRINTF_H + +/* Get va_list. */ +#include + +/* Get size_t. */ +#include + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ +# define __attribute__(Spec) /* empty */ +# endif +/* The __-protected variants of `format' and `printf' attributes + are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) +# define __format__ format +# define __printf__ printf +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Write formatted output to a string dynamically allocated with malloc(). + You can pass a preallocated buffer for the result in RESULTBUF and its + size in *LENGTHP; otherwise you pass RESULTBUF = NULL. + If successful, return the address of the string (this may be = RESULTBUF + if no dynamic memory allocation was necessary) and set *LENGTHP to the + number of resulting bytes, excluding the trailing NUL. Upon error, set + errno and return NULL. + + When dynamic memory allocation occurs, the preallocated buffer is left + alone (with possibly modified contents). This makes it possible to use + a statically allocated or stack-allocated buffer, like this: + + char buf[100]; + size_t len = sizeof (buf); + char *output = vasnprintf (buf, &len, format, args); + if (output == NULL) + ... error handling ...; + else + { + ... use the output string ...; + if (output != buf) + free (output); + } + */ +extern char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...) + __attribute__ ((__format__ (__printf__, 3, 4))); +extern char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args) + __attribute__ ((__format__ (__printf__, 3, 0))); + +#ifdef __cplusplus +} +#endif + +#endif /* _VASNPRINTF_H */ diff --git a/intl/vasnwprintf.h b/intl/vasnwprintf.h new file mode 100644 index 0000000..6ff03ce --- /dev/null +++ b/intl/vasnwprintf.h @@ -0,0 +1,46 @@ +/* vswprintf with automatic memory allocation. + Copyright (C) 2002-2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _VASNWPRINTF_H +#define _VASNWPRINTF_H + +/* Get va_list. */ +#include + +/* Get wchar_t, size_t. */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Write formatted output to a string dynamically allocated with malloc(). + You can pass a preallocated buffer for the result in RESULTBUF and its + size in *LENGTHP; otherwise you pass RESULTBUF = NULL. + If successful, return the address of the string (this may be = RESULTBUF + if no dynamic memory allocation was necessary) and set *LENGTHP to the + number of resulting bytes, excluding the trailing NUL. Upon error, set + errno and return NULL. */ +extern wchar_t * asnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, ...); +extern wchar_t * vasnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, va_list args); + +#ifdef __cplusplus +} +#endif + +#endif /* _VASNWPRINTF_H */ diff --git a/intl/wprintf-parse.h b/intl/wprintf-parse.h new file mode 100644 index 0000000..600b89a --- /dev/null +++ b/intl/wprintf-parse.h @@ -0,0 +1,75 @@ +/* Parse printf format string. + Copyright (C) 1999, 2002-2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _WPRINTF_PARSE_H +#define _WPRINTF_PARSE_H + +#include "printf-args.h" + + +/* Flags */ +#define FLAG_GROUP 1 /* ' flag */ +#define FLAG_LEFT 2 /* - flag */ +#define FLAG_SHOWSIGN 4 /* + flag */ +#define FLAG_SPACE 8 /* space flag */ +#define FLAG_ALT 16 /* # flag */ +#define FLAG_ZERO 32 + +/* arg_index value indicating that no argument is consumed. */ +#define ARG_NONE (~(size_t)0) + +/* A parsed directive. */ +typedef struct +{ + const wchar_t* dir_start; + const wchar_t* dir_end; + int flags; + const wchar_t* width_start; + const wchar_t* width_end; + size_t width_arg_index; + const wchar_t* precision_start; + const wchar_t* precision_end; + size_t precision_arg_index; + wchar_t conversion; /* d i o u x X f e E g G c s p n U % but not C S */ + size_t arg_index; +} +wchar_t_directive; + +/* A parsed format string. */ +typedef struct +{ + size_t count; + wchar_t_directive *dir; + size_t max_width_length; + size_t max_precision_length; +} +wchar_t_directives; + + +/* Parses the format string. Fills in the number N of directives, and fills + in directives[0], ..., directives[N-1], and sets directives[N].dir_start + to the end of the format string. Also fills in the arg_type fields of the + arguments and the needed count of arguments. */ +#ifdef STATIC +STATIC +#else +extern +#endif +int wprintf_parse (const wchar_t *format, wchar_t_directives *d, arguments *a); + +#endif /* _WPRINTF_PARSE_H */ diff --git a/intl/xsize.h b/intl/xsize.h new file mode 100644 index 0000000..b3023a7 --- /dev/null +++ b/intl/xsize.h @@ -0,0 +1,109 @@ +/* xsize.h -- Checked size_t computations. + + Copyright (C) 2003 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + USA. */ + +#ifndef _XSIZE_H +#define _XSIZE_H + +/* Get size_t. */ +#include + +/* Get SIZE_MAX. */ +#include +#if HAVE_STDINT_H +# include +#endif + +/* The size of memory objects is often computed through expressions of + type size_t. Example: + void* p = malloc (header_size + n * element_size). + These computations can lead to overflow. When this happens, malloc() + returns a piece of memory that is way too small, and the program then + crashes while attempting to fill the memory. + To avoid this, the functions and macros in this file check for overflow. + The convention is that SIZE_MAX represents overflow. + malloc (SIZE_MAX) is not guaranteed to fail -- think of a malloc + implementation that uses mmap --, it's recommended to use size_overflow_p() + or size_in_bounds_p() before invoking malloc(). + The example thus becomes: + size_t size = xsum (header_size, xtimes (n, element_size)); + void *p = (size_in_bounds_p (size) ? malloc (size) : NULL); +*/ + +/* Convert an arbitrary value >= 0 to type size_t. */ +#define xcast_size_t(N) \ + ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX) + +/* Sum of two sizes, with overflow check. */ +static inline size_t +#if __GNUC__ >= 3 +__attribute__ ((__pure__)) +#endif +xsum (size_t size1, size_t size2) +{ + size_t sum = size1 + size2; + return (sum >= size1 ? sum : SIZE_MAX); +} + +/* Sum of three sizes, with overflow check. */ +static inline size_t +#if __GNUC__ >= 3 +__attribute__ ((__pure__)) +#endif +xsum3 (size_t size1, size_t size2, size_t size3) +{ + return xsum (xsum (size1, size2), size3); +} + +/* Sum of four sizes, with overflow check. */ +static inline size_t +#if __GNUC__ >= 3 +__attribute__ ((__pure__)) +#endif +xsum4 (size_t size1, size_t size2, size_t size3, size_t size4) +{ + return xsum (xsum (xsum (size1, size2), size3), size4); +} + +/* Maximum of two sizes, with overflow check. */ +static inline size_t +#if __GNUC__ >= 3 +__attribute__ ((__pure__)) +#endif +xmax (size_t size1, size_t size2) +{ + /* No explicit check is needed here, because for any n: + max (SIZE_MAX, n) == SIZE_MAX and max (n, SIZE_MAX) == SIZE_MAX. */ + return (size1 >= size2 ? size1 : size2); +} + +/* Multiplication of a count with an element size, with overflow check. + The count must be >= 0 and the element size must be > 0. + This is a macro, not an inline function, so that it works correctly even + when N is of a wider tupe and N > SIZE_MAX. */ +#define xtimes(N, ELSIZE) \ + ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX) + +/* Check for overflow. */ +#define size_overflow_p(SIZE) \ + ((SIZE) == SIZE_MAX) +/* Check against overflow. */ +#define size_in_bounds_p(SIZE) \ + ((SIZE) != SIZE_MAX) + +#endif /* _XSIZE_H */ diff --git a/lib/Makefile.am b/lib/Makefile.am new file mode 100644 index 0000000..1a08258 --- /dev/null +++ b/lib/Makefile.am @@ -0,0 +1,43 @@ +## Makefile for the support lib subdirectory of the GNU Shar utilities. +## Copyright (C) 1995, 1996, 2002, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +## Process this file with automake to produce Makefile.in. + +noinst_LIBRARIES = libshar.a + +EXTRA_DIST = gen-uio alloca.c inttostr.c md5.c memset.c mktime.c \ +stpcpy.c strftime.c strtol.c + +BUILT_SOURCES = unlocked-io.h +CLEANFILES = unlocked-io.h + +libshar_a_SOURCES = basename.c error.c getopt.c getopt1.c md5.c offtostr.c \ +whoami.c xgetcwd.c xmalloc.c xstrdup.c + +libshar_a_LIBADD = $(ALLOCA) $(LIBOBJS) + +noinst_HEADERS = basename.h error.h exit.h getopt.h gettext.h inttostr.h \ +liballoca.h md5.h pathmax.h stpcpy.h system.h xalloc.h xgetcwd.h + +AM_CPPFLAGS = -I.. -I$(srcdir) -I../intl +DEFS = -DLIBDIR=\"$(libdir)\" @DEFS@ + +error$U.o: unlocked-io.h + +unlocked-io.h: $(srcdir)/gen-uio Makefile.am + srcdir=$(srcdir) $(SHELL) $(srcdir)/gen-uio $(io_functions) > $@t + mv $@t $@ diff --git a/lib/Makefile.in b/lib/Makefile.in new file mode 100644 index 0000000..bfaa733 --- /dev/null +++ b/lib/Makefile.in @@ -0,0 +1,503 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 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@ + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +subdir = lib +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in alloca.c ansi2knr.c malloc.c memset.c \ + mktime.c realloc.c stpcpy.c strftime.c strtoimax.c strtol.c \ + strtoll.c +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/glibc2.m4 $(top_srcdir)/m4/glibc21.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intdiv0.m4 \ + $(top_srcdir)/m4/intmax.m4 $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-posix.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/realloc.m4 \ + $(top_srcdir)/m4/sharutils.m4 $(top_srcdir)/m4/signed.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/xstrtoimax.m4 \ + $(top_srcdir)/version.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LIBRARIES = $(noinst_LIBRARIES) +AR = ar +ARFLAGS = cru +libshar_a_AR = $(AR) $(ARFLAGS) +libshar_a_DEPENDENCIES = $(ALLOCA) $(LIBOBJS) +am_libshar_a_OBJECTS = basename.$(OBJEXT) error.$(OBJEXT) \ + getopt.$(OBJEXT) getopt1.$(OBJEXT) md5.$(OBJEXT) \ + offtostr.$(OBJEXT) whoami.$(OBJEXT) xgetcwd.$(OBJEXT) \ + xmalloc.$(OBJEXT) xstrdup.$(OBJEXT) +libshar_a_OBJECTS = $(am_libshar_a_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libshar_a_SOURCES) +DIST_SOURCES = $(libshar_a_SOURCES) +HEADERS = $(noinst_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ADD_SCRIPT = @ADD_SCRIPT@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMPRESS = @COMPRESS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLIBDIR=\"$(libdir)\" @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +DIRENT_HEADER = @DIRENT_HEADER@ +DIST_ALPHA = @DIST_ALPHA@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_COMPRESS_LINK = @INSTALL_COMPRESS_LINK@ +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@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAILER = @MAILER@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +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@ +PERL = @PERL@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TAR = @TAR@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LIBRARIES = libshar.a +EXTRA_DIST = gen-uio alloca.c inttostr.c md5.c memset.c mktime.c \ +stpcpy.c strftime.c strtol.c + +BUILT_SOURCES = unlocked-io.h +CLEANFILES = unlocked-io.h +libshar_a_SOURCES = basename.c error.c getopt.c getopt1.c md5.c offtostr.c \ +whoami.c xgetcwd.c xmalloc.c xstrdup.c + +libshar_a_LIBADD = $(ALLOCA) $(LIBOBJS) +noinst_HEADERS = basename.h error.h exit.h getopt.h gettext.h inttostr.h \ +liballoca.h md5.h pathmax.h stpcpy.h system.h xalloc.h xgetcwd.h + +AM_CPPFLAGS = -I.. -I$(srcdir) -I../intl +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits lib/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +libshar.a: $(libshar_a_OBJECTS) $(libshar_a_DEPENDENCIES) + -rm -f libshar.a + $(libshar_a_AR) libshar.a $(libshar_a_OBJECTS) $(libshar_a_LIBADD) + $(RANLIB) libshar.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/malloc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memset.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/mktime.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/realloc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/stpcpy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strftime.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strtoimax.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strtol.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strtoll.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/offtostr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/whoami.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetcwd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrdup.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +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 + +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; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +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 + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + 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: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LIBRARIES) $(HEADERS) +installdirs: +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) 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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf $(DEPDIR) ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf $(DEPDIR) ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-noinstLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am + + +error$U.o: unlocked-io.h + +unlocked-io.h: $(srcdir)/gen-uio Makefile.am + srcdir=$(srcdir) $(SHELL) $(srcdir)/gen-uio $(io_functions) > $@t + mv $@t $@ +# 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/lib/alloca.c b/lib/alloca.c new file mode 100644 index 0000000..6ad425a --- /dev/null +++ b/lib/alloca.c @@ -0,0 +1,504 @@ +/* alloca.c -- allocate automatically reclaimed memory + (Mostly) portable public-domain implementation -- D A Gwyn + + This implementation of the PWB library alloca function, + which is used to allocate space off the run-time stack so + that it is automatically reclaimed upon procedure exit, + was inspired by discussions with J. Q. Johnson of Cornell. + J.Otto Tennant contributed the Cray support. + + There are some preprocessor constants that can + be defined when compiling for your specific system, for + improved efficiency; however, the defaults should be okay. + + The general concept of this implementation is to keep + track of all alloca-allocated blocks, and reclaim any + that are found to be deeper in the stack than the current + invocation. This heuristic does not reclaim storage as + soon as it becomes invalid, but it will do so eventually. + + As a special case, alloca(0) reclaims storage without + allocating any. It is a good idea to use alloca(0) in + your main control loop, etc. to force garbage collection. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if HAVE_STRING_H +# include +#endif +#if HAVE_STDLIB_H +# include +#endif + +#ifdef emacs +# include "blockinput.h" +#endif + +/* If compiling with GCC 2, this file's not needed. */ +#if !defined (__GNUC__) || __GNUC__ < 2 + +/* If someone has defined alloca as a macro, + there must be some other way alloca is supposed to work. */ +# ifndef alloca + +# ifdef emacs +# ifdef static +/* actually, only want this if static is defined as "" + -- this is for usg, in which emacs must undefine static + in order to make unexec workable + */ +# ifndef STACK_DIRECTION +you +lose +-- must know STACK_DIRECTION at compile-time +# endif /* STACK_DIRECTION undefined */ +# endif /* static */ +# endif /* emacs */ + +/* If your stack is a linked list of frames, you have to + provide an "address metric" ADDRESS_FUNCTION macro. */ + +# if defined (CRAY) && defined (CRAY_STACKSEG_END) +long i00afunc (); +# define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg)) +# else +# define ADDRESS_FUNCTION(arg) &(arg) +# endif + +# if __STDC__ +typedef void *pointer; +# else +typedef char *pointer; +# endif + +# ifndef NULL +# define NULL 0 +# endif + +/* Different portions of Emacs need to call different versions of + malloc. The Emacs executable needs alloca to call xmalloc, because + ordinary malloc isn't protected from input signals. On the other + hand, the utilities in lib-src need alloca to call malloc; some of + them are very simple, and don't have an xmalloc routine. + + Non-Emacs programs expect this to call xmalloc. + + Callers below should use malloc. */ + +# ifndef emacs +# undef malloc +# define malloc xmalloc +# endif +extern pointer malloc (); + +/* Define STACK_DIRECTION 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 */ + +# ifndef STACK_DIRECTION +# define STACK_DIRECTION 0 /* Direction unknown. */ +# endif + +# if STACK_DIRECTION != 0 + +# define STACK_DIR STACK_DIRECTION /* Known at compile-time. */ + +# else /* STACK_DIRECTION == 0; need run-time code. */ + +static int stack_dir; /* 1 or -1 once known. */ +# define STACK_DIR stack_dir + +static void +find_stack_direction () +{ + static char *addr = NULL; /* Address of first `dummy', once known. */ + auto char dummy; /* To get stack address. */ + + if (addr == NULL) + { /* Initial entry. */ + addr = ADDRESS_FUNCTION (dummy); + + find_stack_direction (); /* Recurse once. */ + } + else + { + /* Second entry. */ + if (ADDRESS_FUNCTION (dummy) > addr) + stack_dir = 1; /* Stack grew upward. */ + else + stack_dir = -1; /* Stack grew downward. */ + } +} + +# endif /* STACK_DIRECTION == 0 */ + +/* An "alloca header" is used to: + (a) chain together all alloca'ed blocks; + (b) keep track of stack depth. + + It is very important that sizeof(header) agree with malloc + alignment chunk size. The following default should work okay. */ + +# ifndef ALIGN_SIZE +# define ALIGN_SIZE sizeof(double) +# endif + +typedef union hdr +{ + char align[ALIGN_SIZE]; /* To force sizeof(header). */ + struct + { + union hdr *next; /* For chaining headers. */ + char *deep; /* For stack depth measure. */ + } h; +} header; + +static header *last_alloca_header = NULL; /* -> last alloca header. */ + +/* Return a pointer to at least SIZE bytes of storage, + which will be automatically reclaimed upon exit from + the procedure that called alloca. Originally, this space + was supposed to be taken from the current stack frame of the + caller, but that method cannot be made to work for some + implementations of C, for example under Gould's UTX/32. */ + +pointer +alloca (size_t size) +{ + auto char probe; /* Probes stack depth: */ + register char *depth = ADDRESS_FUNCTION (probe); + +# if STACK_DIRECTION == 0 + if (STACK_DIR == 0) /* Unknown growth direction. */ + find_stack_direction (); +# endif + + /* Reclaim garbage, defined as all alloca'd storage that + was allocated from deeper in the stack than currently. */ + + { + register header *hp; /* Traverses linked list. */ + +# ifdef emacs + BLOCK_INPUT; +# endif + + for (hp = last_alloca_header; hp != NULL;) + if ((STACK_DIR > 0 && hp->h.deep > depth) + || (STACK_DIR < 0 && hp->h.deep < depth)) + { + register header *np = hp->h.next; + + free ((pointer) hp); /* Collect garbage. */ + + hp = np; /* -> next header. */ + } + else + break; /* Rest are not deeper. */ + + last_alloca_header = hp; /* -> last valid storage. */ + +# ifdef emacs + UNBLOCK_INPUT; +# endif + } + + if (size == 0) + return NULL; /* No allocation required. */ + + /* Allocate combined header + user data storage. */ + + { + register pointer new = malloc (sizeof (header) + size); + /* Address of header. */ + + if (new == 0) + abort(); + + ((header *) new)->h.next = last_alloca_header; + ((header *) new)->h.deep = depth; + + last_alloca_header = (header *) new; + + /* User storage begins just after header. */ + + return (pointer) ((char *) new + sizeof (header)); + } +} + +# if defined (CRAY) && defined (CRAY_STACKSEG_END) + +# ifdef DEBUG_I00AFUNC +# include +# endif + +# ifndef CRAY_STACK +# define CRAY_STACK +# ifndef CRAY2 +/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */ +struct stack_control_header + { + long shgrow:32; /* Number of times stack has grown. */ + long shaseg:32; /* Size of increments to stack. */ + long shhwm:32; /* High water mark of stack. */ + long shsize:32; /* Current size of stack (all segments). */ + }; + +/* The stack segment linkage control information occurs at + the high-address end of a stack segment. (The stack + grows from low addresses to high addresses.) The initial + part of the stack segment linkage control information is + 0200 (octal) words. This provides for register storage + for the routine which overflows the stack. */ + +struct stack_segment_linkage + { + long ss[0200]; /* 0200 overflow words. */ + long sssize:32; /* Number of words in this segment. */ + long ssbase:32; /* Offset to stack base. */ + long:32; + long sspseg:32; /* Offset to linkage control of previous + segment of stack. */ + long:32; + long sstcpt:32; /* Pointer to task common address block. */ + long sscsnm; /* Private control structure number for + microtasking. */ + long ssusr1; /* Reserved for user. */ + long ssusr2; /* Reserved for user. */ + long sstpid; /* Process ID for pid based multi-tasking. */ + long ssgvup; /* Pointer to multitasking thread giveup. */ + long sscray[7]; /* Reserved for Cray Research. */ + long ssa0; + long ssa1; + long ssa2; + long ssa3; + long ssa4; + long ssa5; + long ssa6; + long ssa7; + long sss0; + long sss1; + long sss2; + long sss3; + long sss4; + long sss5; + long sss6; + long sss7; + }; + +# else /* CRAY2 */ +/* The following structure defines the vector of words + returned by the STKSTAT library routine. */ +struct stk_stat + { + long now; /* Current total stack size. */ + long maxc; /* Amount of contiguous space which would + be required to satisfy the maximum + stack demand to date. */ + long high_water; /* Stack high-water mark. */ + long overflows; /* Number of stack overflow ($STKOFEN) calls. */ + long hits; /* Number of internal buffer hits. */ + long extends; /* Number of block extensions. */ + long stko_mallocs; /* Block allocations by $STKOFEN. */ + long underflows; /* Number of stack underflow calls ($STKRETN). */ + long stko_free; /* Number of deallocations by $STKRETN. */ + long stkm_free; /* Number of deallocations by $STKMRET. */ + long segments; /* Current number of stack segments. */ + long maxs; /* Maximum number of stack segments so far. */ + long pad_size; /* Stack pad size. */ + long current_address; /* Current stack segment address. */ + long current_size; /* Current stack segment size. This + number is actually corrupted by STKSTAT to + include the fifteen word trailer area. */ + long initial_address; /* Address of initial segment. */ + long initial_size; /* Size of initial segment. */ + }; + +/* The following structure describes the data structure which trails + any stack segment. I think that the description in 'asdef' is + out of date. I only describe the parts that I am sure about. */ + +struct stk_trailer + { + long this_address; /* Address of this block. */ + long this_size; /* Size of this block (does not include + this trailer). */ + long unknown2; + long unknown3; + long link; /* Address of trailer block of previous + segment. */ + long unknown5; + long unknown6; + long unknown7; + long unknown8; + long unknown9; + long unknown10; + long unknown11; + long unknown12; + long unknown13; + long unknown14; + }; + +# endif /* CRAY2 */ +# endif /* not CRAY_STACK */ + +# ifdef CRAY2 +/* Determine a "stack measure" for an arbitrary ADDRESS. + I doubt that "lint" will like this much. */ + +static long +i00afunc (long *address) +{ + struct stk_stat status; + struct stk_trailer *trailer; + long *block, size; + long result = 0; + + /* We want to iterate through all of the segments. The first + step is to get the stack status structure. We could do this + more quickly and more directly, perhaps, by referencing the + $LM00 common block, but I know that this works. */ + + STKSTAT (&status); + + /* Set up the iteration. */ + + trailer = (struct stk_trailer *) (status.current_address + + status.current_size + - 15); + + /* There must be at least one stack segment. Therefore it is + a fatal error if "trailer" is null. */ + + if (trailer == 0) + abort (); + + /* Discard segments that do not contain our argument address. */ + + while (trailer != 0) + { + block = (long *) trailer->this_address; + size = trailer->this_size; + if (block == 0 || size == 0) + abort (); + trailer = (struct stk_trailer *) trailer->link; + if ((block <= address) && (address < (block + size))) + break; + } + + /* Set the result to the offset in this segment and add the sizes + of all predecessor segments. */ + + result = address - block; + + if (trailer == 0) + { + return result; + } + + do + { + if (trailer->this_size <= 0) + abort (); + result += trailer->this_size; + trailer = (struct stk_trailer *) trailer->link; + } + while (trailer != 0); + + /* We are done. Note that if you present a bogus address (one + not in any segment), you will get a different number back, formed + from subtracting the address of the first block. This is probably + not what you want. */ + + return (result); +} + +# else /* not CRAY2 */ +/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP. + Determine the number of the cell within the stack, + given the address of the cell. The purpose of this + routine is to linearize, in some sense, stack addresses + for alloca. */ + +static long +i00afunc (long address) +{ + long stkl = 0; + + long size, pseg, this_segment, stack; + long result = 0; + + struct stack_segment_linkage *ssptr; + + /* Register B67 contains the address of the end of the + current stack segment. If you (as a subprogram) store + your registers on the stack and find that you are past + the contents of B67, you have overflowed the segment. + + B67 also points to the stack segment linkage control + area, which is what we are really interested in. */ + + stkl = CRAY_STACKSEG_END (); + ssptr = (struct stack_segment_linkage *) stkl; + + /* If one subtracts 'size' from the end of the segment, + one has the address of the first word of the segment. + + If this is not the first segment, 'pseg' will be + nonzero. */ + + pseg = ssptr->sspseg; + size = ssptr->sssize; + + this_segment = stkl - size; + + /* It is possible that calling this routine itself caused + a stack overflow. Discard stack segments which do not + contain the target address. */ + + while (!(this_segment <= address && address <= stkl)) + { +# ifdef DEBUG_I00AFUNC + fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl); +# endif + if (pseg == 0) + break; + stkl = stkl - pseg; + ssptr = (struct stack_segment_linkage *) stkl; + size = ssptr->sssize; + pseg = ssptr->sspseg; + this_segment = stkl - size; + } + + result = address - this_segment; + + /* If you subtract pseg from the current end of the stack, + you get the address of the previous stack segment's end. + This seems a little convoluted to me, but I'll bet you save + a cycle somewhere. */ + + while (pseg != 0) + { +# ifdef DEBUG_I00AFUNC + fprintf (stderr, "%011o %011o\n", pseg, size); +# endif + stkl = stkl - pseg; + ssptr = (struct stack_segment_linkage *) stkl; + size = ssptr->sssize; + pseg = ssptr->sspseg; + result += size; + } + return (result); +} + +# endif /* not CRAY2 */ +# endif /* CRAY */ + +# endif /* no alloca */ +#endif /* not GCC version 2 */ diff --git a/lib/ansi2knr.c b/lib/ansi2knr.c new file mode 100644 index 0000000..8be5296 --- /dev/null +++ b/lib/ansi2knr.c @@ -0,0 +1,481 @@ +/* Copyright (C) 1989, 1991, 1993, 1994, 1995 Aladdin Enterprises. All rights reserved. */ + +/* ansi2knr.c */ +/* Convert ANSI C function definitions to K&R ("traditional C") syntax */ + +/* +ansi2knr is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY. No author or distributor accepts responsibility to anyone for the +consequences of using it or for whether it serves any particular purpose or +works at all, unless he says so in writing. Refer to the GNU General Public +License (the "GPL") for full details. + +Everyone is granted permission to copy, modify and redistribute ansi2knr, +but only under the conditions described in the GPL. A copy of this license +is supposed to have been given to you along with ansi2knr so you can know +your rights and responsibilities. It should be in a file named COPYLEFT. +Among other things, the copyright notice and this notice must be preserved +on all copies. + +We explicitly state here what we believe is already implied by the GPL: if +the ansi2knr program is distributed as a separate set of sources and a +separate executable file which are aggregated on a storage medium together +with another program, this in itself does not bring the other program under +the GPL, nor does the mere fact that such a program or the procedures for +constructing it invoke the ansi2knr executable bring any other part of the +program under the GPL. +*/ + +/* + * Usage: + ansi2knr input_file [output_file] + * If no output_file is supplied, output goes to stdout. + * There are no error messages. + * + * ansi2knr recognizes function definitions by seeing a non-keyword + * identifier at the left margin, followed by a left parenthesis, + * with a right parenthesis as the last character on the line. + * It will recognize a multi-line header provided that the last character + * of the last line of the header is a right parenthesis, + * and no intervening line ends with a left or right brace or a semicolon. + * These algorithms ignore whitespace and comments, except that + * the function name must be the first thing on the line. + * The following constructs will confuse it: + * - Any other construct that starts at the left margin and + * follows the above syntax (such as a macro or function call). + * - Macros that tinker with the syntax of the function header. + */ + +/* + * The original and principal author of ansi2knr is L. Peter Deutsch + * . Other authors are noted in the change history + * that follows (in reverse chronological order): + lpd 95-06-22 removed #ifndefs whose sole purpose was to define + undefined preprocessor symbols as 0; changed all #ifdefs + for configuration symbols to #ifs + lpd 95-04-05 changed copyright notice to make it clear that + including ansi2knr in a program does not bring the entire + program under the GPL + lpd 94-12-18 added conditionals for systems where ctype macros + don't handle 8-bit characters properly, suggested by + Francois Pinard ; + removed --varargs switch (this is now the default) + lpd 94-10-10 removed CONFIG_BROKETS conditional + lpd 94-07-16 added some conditionals to help GNU `configure', + suggested by Francois Pinard ; + properly erase prototype args in function parameters, + contributed by Jim Avera ; + correct error in writeblanks (it shouldn't erase EOLs) + lpd 89-xx-xx original version + */ + +/* Most of the conditionals here are to make ansi2knr work with */ +/* the GNU configure machinery. */ + +#if HAVE_CONFIG_H +# include +#endif + +#include +#include + +#if HAVE_CONFIG_H + +/* + For properly autoconfiguring ansi2knr, use AC_CONFIG_HEADER(config.h). + This will define HAVE_CONFIG_H and so, activate the following lines. + */ + +# if STDC_HEADERS || HAVE_STRING_H +# include +# else +# include +# endif + +#else /* not HAVE_CONFIG_H */ + +/* + Without AC_CONFIG_HEADER, merely use as in the original + Ghostscript distribution. This loses on older BSD systems. + */ + +# include + +#endif /* not HAVE_CONFIG_H */ + +#if STDC_HEADERS +# include +#else +/* + malloc and free should be declared in stdlib.h, + but if you've got a K&R compiler, they probably aren't. + */ +char *malloc(); +void free(); +#endif + +/* + * The ctype macros don't always handle 8-bit characters correctly. + * Compensate for this here. + */ +#ifdef isascii +# undef HAVE_ISASCII /* just in case */ +# define HAVE_ISASCII 1 +#else +#endif +#if STDC_HEADERS || !HAVE_ISASCII +# define is_ascii(c) 1 +#else +# define is_ascii(c) isascii(c) +#endif + +#define is_space(c) (is_ascii(c) && isspace(c)) +#define is_alpha(c) (is_ascii(c) && isalpha(c)) +#define is_alnum(c) (is_ascii(c) && isalnum(c)) + +/* Scanning macros */ +#define isidchar(ch) (is_alnum(ch) || (ch) == '_') +#define isidfirstchar(ch) (is_alpha(ch) || (ch) == '_') + +/* Forward references */ +char *skipspace(); +void writeblanks(); +int test1(); +int convert1(); + +/* The main program */ +int +main(argc, argv) + int argc; + char *argv[]; +{ FILE *in, *out; +#define bufsize 5000 /* arbitrary size */ + char *buf; + char *line; + /* + * In previous versions, ansi2knr recognized a --varargs switch. + * If this switch was supplied, ansi2knr would attempt to convert + * a ... argument to va_alist and va_dcl; if this switch was not + * supplied, ansi2knr would simply drop any such arguments. + * Now, ansi2knr always does this conversion, and we only + * check for this switch for backward compatibility. + */ + int convert_varargs = 1; + + if ( argc > 1 && argv[1][0] == '-' ) + { if ( !strcmp(argv[1], "--varargs") ) + { convert_varargs = 1; + argc--; + argv++; + } + else + { fprintf(stderr, "Unrecognized switch: %s\n", argv[1]); + exit(1); + } + } + switch ( argc ) + { + default: + printf("Usage: ansi2knr input_file [output_file]\n"); + exit(0); + case 2: + out = stdout; + break; + case 3: + out = fopen(argv[2], "w"); + if ( out == NULL ) + { fprintf(stderr, "Cannot open output file %s\n", argv[2]); + exit(1); + } + } + in = fopen(argv[1], "r"); + if ( in == NULL ) + { fprintf(stderr, "Cannot open input file %s\n", argv[1]); + exit(1); + } + fprintf(out, "#line 1 \"%s\"\n", argv[1]); + buf = malloc(bufsize); + line = buf; + while ( fgets(line, (unsigned)(buf + bufsize - line), in) != NULL ) + { switch ( test1(buf) ) + { + case 2: /* a function header */ + convert1(buf, out, 1, convert_varargs); + break; + case 1: /* a function */ + convert1(buf, out, 0, convert_varargs); + break; + case -1: /* maybe the start of a function */ + line = buf + strlen(buf); + if ( line != buf + (bufsize - 1) ) /* overflow check */ + continue; + /* falls through */ + default: /* not a function */ + fputs(buf, out); + break; + } + line = buf; + } + if ( line != buf ) fputs(buf, out); + free(buf); + fclose(out); + fclose(in); + return 0; +} + +/* Skip over space and comments, in either direction. */ +char * +skipspace(p, dir) + register char *p; + register int dir; /* 1 for forward, -1 for backward */ +{ for ( ; ; ) + { while ( is_space(*p) ) p += dir; + if ( !(*p == '/' && p[dir] == '*') ) break; + p += dir; p += dir; + while ( !(*p == '*' && p[dir] == '/') ) + { if ( *p == 0 ) return p; /* multi-line comment?? */ + p += dir; + } + p += dir; p += dir; + } + return p; +} + +/* + * Write blanks over part of a string. + * Don't overwrite end-of-line characters. + */ +void +writeblanks(start, end) + char *start; + char *end; +{ char *p; + for ( p = start; p < end; p++ ) + if ( *p != '\r' && *p != '\n' ) *p = ' '; +} + +/* + * Test whether the string in buf is a function definition. + * The string may contain and/or end with a newline. + * Return as follows: + * 0 - definitely not a function definition; + * 1 - definitely a function definition; + * 2 - definitely a function prototype (NOT USED); + * -1 - may be the beginning of a function definition, + * append another line and look again. + * The reason we don't attempt to convert function prototypes is that + * Ghostscript's declaration-generating macros look too much like + * prototypes, and confuse the algorithms. + */ +int +test1(buf) + char *buf; +{ register char *p = buf; + char *bend; + char *endfn; + int contin; + if ( !isidfirstchar(*p) ) + return 0; /* no name at left margin */ + bend = skipspace(buf + strlen(buf) - 1, -1); + switch ( *bend ) + { + case ';': contin = 0 /*2*/; break; + case ')': contin = 1; break; + case '{': return 0; /* not a function */ + case '}': return 0; /* not a function */ + default: contin = -1; + } + while ( isidchar(*p) ) p++; + endfn = p; + p = skipspace(p, 1); + if ( *p++ != '(' ) + return 0; /* not a function */ + p = skipspace(p, 1); + if ( *p == ')' ) + return 0; /* no parameters */ + /* Check that the apparent function name isn't a keyword. */ + /* We only need to check for keywords that could be followed */ + /* by a left parenthesis (which, unfortunately, is most of them). */ + { static char *words[] = + { "asm", "auto", "case", "char", "const", "double", + "extern", "float", "for", "if", "int", "long", + "register", "return", "short", "signed", "sizeof", + "static", "switch", "typedef", "unsigned", + "void", "volatile", "while", 0 + }; + char **key = words; + char *kp; + int len = endfn - buf; + while ( (kp = *key) != 0 ) + { if ( strlen(kp) == len && !strncmp(kp, buf, len) ) + return 0; /* name is a keyword */ + key++; + } + } + return contin; +} + +/* Convert a recognized function definition or header to K&R syntax. */ +int +convert1(buf, out, header, convert_varargs) + char *buf; + FILE *out; + int header; /* Boolean */ + int convert_varargs; /* Boolean */ +{ char *endfn; + register char *p; + char **breaks; + unsigned num_breaks = 2; /* for testing */ + char **btop; + char **bp; + char **ap; + char *vararg = 0; + /* Pre-ANSI implementations don't agree on whether strchr */ + /* is called strchr or index, so we open-code it here. */ + for ( endfn = buf; *(endfn++) != '('; ) ; +top: p = endfn; + breaks = (char **)malloc(sizeof(char *) * num_breaks * 2); + if ( breaks == 0 ) + { /* Couldn't allocate break table, give up */ + fprintf(stderr, "Unable to allocate break table!\n"); + fputs(buf, out); + return -1; + } + btop = breaks + num_breaks * 2 - 2; + bp = breaks; + /* Parse the argument list */ + do + { int level = 0; + char *lp = NULL; + char *rp; + char *end = NULL; + if ( bp >= btop ) + { /* Filled up break table. */ + /* Allocate a bigger one and start over. */ + free((char *)breaks); + num_breaks <<= 1; + goto top; + } + *bp++ = p; + /* Find the end of the argument */ + for ( ; end == NULL; p++ ) + { switch(*p) + { + case ',': + if ( !level ) end = p; + break; + case '(': + if ( !level ) lp = p; + level++; + break; + case ')': + if ( --level < 0 ) end = p; + else rp = p; + break; + case '/': + p = skipspace(p, 1) - 1; + break; + default: + ; + } + } + /* Erase any embedded prototype parameters. */ + if ( lp ) + writeblanks(lp + 1, rp); + p--; /* back up over terminator */ + /* Find the name being declared. */ + /* This is complicated because of procedure and */ + /* array modifiers. */ + for ( ; ; ) + { p = skipspace(p - 1, -1); + switch ( *p ) + { + case ']': /* skip array dimension(s) */ + case ')': /* skip procedure args OR name */ + { int level = 1; + while ( level ) + switch ( *--p ) + { + case ']': case ')': level++; break; + case '[': case '(': level--; break; + case '/': p = skipspace(p, -1) + 1; break; + default: ; + } + } + if ( *p == '(' && *skipspace(p + 1, 1) == '*' ) + { /* We found the name being declared */ + while ( !isidfirstchar(*p) ) + p = skipspace(p, 1) + 1; + goto found; + } + break; + default: goto found; + } + } +found: if ( *p == '.' && p[-1] == '.' && p[-2] == '.' ) + { if ( convert_varargs ) + { *bp++ = "va_alist"; + vararg = p-2; + } + else + { p++; + if ( bp == breaks + 1 ) /* sole argument */ + writeblanks(breaks[0], p); + else + writeblanks(bp[-1] - 1, p); + bp--; + } + } + else + { while ( isidchar(*p) ) p--; + *bp++ = p+1; + } + p = end; + } + while ( *p++ == ',' ); + *bp = p; + /* Make a special check for 'void' arglist */ + if ( bp == breaks+2 ) + { p = skipspace(breaks[0], 1); + if ( !strncmp(p, "void", 4) ) + { p = skipspace(p+4, 1); + if ( p == breaks[2] - 1 ) + { bp = breaks; /* yup, pretend arglist is empty */ + writeblanks(breaks[0], p + 1); + } + } + } + /* Put out the function name and left parenthesis. */ + p = buf; + while ( p != endfn ) putc(*p, out), p++; + /* Put out the declaration. */ + if ( header ) + { fputs(");", out); + for ( p = breaks[0]; *p; p++ ) + if ( *p == '\r' || *p == '\n' ) + putc(*p, out); + } + else + { for ( ap = breaks+1; ap < bp; ap += 2 ) + { p = *ap; + while ( isidchar(*p) ) + putc(*p, out), p++; + if ( ap < bp - 1 ) + fputs(", ", out); + } + fputs(") ", out); + /* Put out the argument declarations */ + for ( ap = breaks+2; ap <= bp; ap += 2 ) + (*ap)[-1] = ';'; + if ( vararg != 0 ) + { *vararg = 0; + fputs(breaks[0], out); /* any prior args */ + fputs("va_dcl", out); /* the final arg */ + fputs(bp[0], out); + } + else + fputs(breaks[0], out); + } + free((char *)breaks); + return 0; +} diff --git a/lib/basename.c b/lib/basename.c new file mode 100644 index 0000000..443b368 --- /dev/null +++ b/lib/basename.c @@ -0,0 +1,90 @@ +/* Return the name-within-directory of a file name. + + Copyright (C) 1996-1999, 2000-2002, 2007 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@gnu.org. + + 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 3, 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., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +/* Specification. */ +#include "basename.h" + +#if !(__GLIBC__ >= 2) + +#include +#include + +#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ + /* Win32, OS/2, DOS */ +# define HAS_DEVICE(P) \ + ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \ + && (P)[1] == ':') +# define FILESYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0) +# define ISSLASH(C) ((C) == '/' || (C) == '\\') +#endif + +#ifndef FILESYSTEM_PREFIX_LEN +# define FILESYSTEM_PREFIX_LEN(Filename) 0 +#endif + +#ifndef ISSLASH +# define ISSLASH(C) ((C) == '/') +#endif + +#ifndef _LIBC +/* We cannot generally use the name `basename' since XPG defines an unusable + variant of the function but we cannot use it. */ +# undef basename +# define basename gnu_basename +#endif + +/* In general, we can't use the builtin `basename' function if available, + since it has different meanings in different environments. + In some environments the builtin `basename' modifies its argument. + If NAME is all slashes, be sure to return `/'. */ + +char * +basename (name) + char const *name; +{ + char const *base = name += FILESYSTEM_PREFIX_LEN (name); + int all_slashes = 1; + char const *p; + + for (p = name; *p; p++) + { + if (ISSLASH (*p)) + base = p + 1; + else + all_slashes = 0; + } + + /* If NAME is all slashes, arrange to return `/'. */ + if (*base == '\0' && ISSLASH (*name) && all_slashes) + --base; + + /* Make sure the last byte is not a slash. */ + assert (all_slashes || !ISSLASH (*(p - 1))); + + return (char *) base; +} + +#endif diff --git a/lib/basename.h b/lib/basename.h new file mode 100644 index 0000000..423e78c --- /dev/null +++ b/lib/basename.h @@ -0,0 +1,40 @@ +/* Pathname hacking. + Copyright (C) 2001-2002, 2007 Free Software Foundation, Inc. + Written by Bruno Haible , 2001. + + 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _BASENAME_H +#define _BASENAME_H + +/* This is where basename() is declared. */ +#include + +#ifndef PARAMS +# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#if !(__GLIBC__ >= 2) +/* When not using the GNU libc we use the basename implementation we + provide here. */ +extern char *gnu_basename PARAMS ((const char *)); +#define basename(Arg) gnu_basename (Arg) +#endif + +#endif /* _BASENAME_H */ diff --git a/lib/error.c b/lib/error.c new file mode 100644 index 0000000..2a1de26 --- /dev/null +++ b/lib/error.c @@ -0,0 +1,403 @@ +/* Error handler for noninteractive utilities + Copyright (C) 1990-1998, 2000-2002 Free Software Foundation, Inc. + This file is part of the GNU C Library. Its master source is NOT part of + the C library, however. The master source lives in /gd/gnu/lib. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* Written by David MacKenzie . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#ifdef _LIBC +# include +# define mbsrtowcs __mbsrtowcs +#endif + +#if HAVE_VPRINTF || HAVE_DOPRNT || _LIBC +# if __STDC__ +# include +# define VA_START(args, lastarg) va_start(args, lastarg) +# else +# include +# define VA_START(args, lastarg) va_start(args) +# endif +#else +# define va_alist a1, a2, a3, a4, a5, a6, a7, a8 +# define va_dcl char *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8; +#endif + +#if STDC_HEADERS || _LIBC +# include +# include +#else +void exit (); +#endif + +#include "error.h" +#include "unlocked-io.h" + +#if ENABLE_NLS || defined _LIBC +# include +# ifndef _ +# define _(Str) gettext (Str) +# endif +#else +# define _(Str) (Str) +#endif + +/* If NULL, error will flush stdout, then print on stderr the program + name, a colon and a space. Otherwise, error will call this + function without parameters instead. */ +void (*error_print_progname) ( +#if __STDC__ - 0 + void +#endif + ); + +/* This variable is incremented each time `error' is called. */ +unsigned int error_message_count; + +#ifdef _LIBC +/* In the GNU C library, there is a predefined variable for this. */ + +# define program_name program_invocation_name +# include + +/* In GNU libc we want do not want to use the common name `error' directly. + Instead make it a weak alias. */ +extern void __error (int status, int errnum, const char *message, ...) + __attribute__ ((__format__ (__printf__, 3, 4))); +extern void __error_at_line (int status, int errnum, const char *file_name, + unsigned int line_number, const char *message, + ...) + __attribute__ ((__format__ (__printf__, 5, 6)));; +# define error __error +# define error_at_line __error_at_line + +# ifdef USE_IN_LIBIO +# include +# define fflush(s) _IO_fflush (s) +# endif + +#else /* not _LIBC */ + +# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P +# ifndef HAVE_DECL_STRERROR_R +"this configure-time declaration test was not run" +# endif +char *strerror_r (); +# endif + +/* The calling program should define program_name and set it to the + name of the executing program. */ +extern char *program_name; + +# if HAVE_STRERROR_R || defined strerror_r +# define __strerror_r strerror_r +# else +# if HAVE_STRERROR +# ifndef HAVE_DECL_STRERROR +"this configure-time declaration test was not run" +# endif +# if !HAVE_DECL_STRERROR +char *strerror (); +# endif +# else +static char * +private_strerror (int errnum) +{ + extern char *sys_errlist[]; + extern int sys_nerr; + + if (errnum > 0 && errnum <= sys_nerr) + return _(sys_errlist[errnum]); + return _("Unknown system error"); +} +# define strerror private_strerror +# endif /* HAVE_STRERROR */ +# endif /* HAVE_STRERROR_R || defined strerror_r */ +#endif /* not _LIBC */ + +static void +print_errno_message (int errnum) +{ + char const *s; + +#if defined HAVE_STRERROR_R || _LIBC + char errbuf[1024]; +# if STRERROR_R_CHAR_P || _LIBC + s = __strerror_r (errnum, errbuf, sizeof errbuf); +# else + if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0) + s = errbuf; + else + s = 0; +# endif +#else + s = strerror (errnum); +#endif + +#if !_LIBC + if (! s) + s = _("Unknown system error"); +#endif + +#if _LIBC && USE_IN_LIBIO + if (_IO_fwide (stderr, 0) > 0) + { + __fwprintf (stderr, L": %s", s); + return; + } +#endif + + fprintf (stderr, ": %s", s); +} + +#ifdef VA_START +static void +error_tail (int status, int errnum, const char *message, va_list args) +{ +# if HAVE_VPRINTF || _LIBC +# if _LIBC && USE_IN_LIBIO + if (_IO_fwide (stderr, 0) > 0) + { +# define ALLOCA_LIMIT 2000 + size_t len = strlen (message) + 1; + wchar_t *wmessage = NULL; + mbstate_t st; + size_t res; + const char *tmp; + + do + { + if (len < ALLOCA_LIMIT) + wmessage = (wchar_t *) alloca (len * sizeof (wchar_t)); + else + { + if (wmessage != NULL && len / 2 < ALLOCA_LIMIT) + wmessage = NULL; + + wmessage = (wchar_t *) realloc (wmessage, + len * sizeof (wchar_t)); + + if (wmessage == NULL) + { + fputws_unlocked (L"out of memory\n", stderr); + return; + } + } + + memset (&st, '\0', sizeof (st)); + tmp =message; + } + while ((res = mbsrtowcs (wmessage, &tmp, len, &st)) == len); + + if (res == (size_t) -1) + /* The string cannot be converted. */ + wmessage = (wchar_t *) L"???"; + + __vfwprintf (stderr, wmessage, args); + } + else +# endif + vfprintf (stderr, message, args); +# else + _doprnt (message, args, stderr); +# endif + va_end (args); + + ++error_message_count; + if (errnum) + print_errno_message (errnum); +# if _LIBC && USE_IN_LIBIO + if (_IO_fwide (stderr, 0) > 0) + putwc (L'\n', stderr); + else +# endif + putc ('\n', stderr); + fflush (stderr); + if (status) + exit (status); +} +#endif + + +/* Print the program name and error message MESSAGE, which is a printf-style + format string with optional args. + If ERRNUM is nonzero, print its corresponding system error message. + Exit with status STATUS if it is nonzero. */ +/* VARARGS */ +void +#if defined VA_START && __STDC__ +error (int status, int errnum, const char *message, ...) +#else +error (status, errnum, message, va_alist) + int status; + int errnum; + char *message; + va_dcl +#endif +{ +#ifdef VA_START + va_list args; +#endif + + fflush (stdout); +#ifdef _LIBC +# ifdef USE_IN_LIBIO + _IO_flockfile (stderr); +# else + __flockfile (stderr); +# endif +#endif + if (error_print_progname) + (*error_print_progname) (); + else + { +#if _LIBC && USE_IN_LIBIO + if (_IO_fwide (stderr, 0) > 0) + __fwprintf (stderr, L"%s: ", program_name); + else +#endif + fprintf (stderr, "%s: ", program_name); + } + +#ifdef VA_START + VA_START (args, message); + error_tail (status, errnum, message, args); +#else + fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8); + + ++error_message_count; + if (errnum) + print_errno_message (errnum); + putc ('\n', stderr); + fflush (stderr); + if (status) + exit (status); +#endif + +#ifdef _LIBC +# ifdef USE_IN_LIBIO + _IO_funlockfile (stderr); +# else + __funlockfile (stderr); +# endif +#endif +} + +/* Sometimes we want to have at most one error per line. This + variable controls whether this mode is selected or not. */ +int error_one_per_line; + +void +#if defined VA_START && __STDC__ +error_at_line (int status, int errnum, const char *file_name, + unsigned int line_number, const char *message, ...) +#else +error_at_line (status, errnum, file_name, line_number, message, va_alist) + int status; + int errnum; + const char *file_name; + unsigned int line_number; + char *message; + va_dcl +#endif +{ +#ifdef VA_START + va_list args; +#endif + + if (error_one_per_line) + { + static const char *old_file_name; + static unsigned int old_line_number; + + if (old_line_number == line_number + && (file_name == old_file_name + || strcmp (old_file_name, file_name) == 0)) + /* Simply return and print nothing. */ + return; + + old_file_name = file_name; + old_line_number = line_number; + } + + fflush (stdout); +#ifdef _LIBC +# ifdef USE_IN_LIBIO + _IO_flockfile (stderr); +# else + __flockfile (stderr); +# endif +#endif + if (error_print_progname) + (*error_print_progname) (); + else + { +#if _LIBC && USE_IN_LIBIO + if (_IO_fwide (stderr, 0) > 0) + __fwprintf (stderr, L"%s: ", program_name); + else +#endif + fprintf (stderr, "%s:", program_name); + } + + if (file_name != NULL) + { +#if _LIBC && USE_IN_LIBIO + if (_IO_fwide (stderr, 0) > 0) + __fwprintf (stderr, L"%s:%d: ", file_name, line_number); + else +#endif + fprintf (stderr, "%s:%d: ", file_name, line_number); + } + +#ifdef VA_START + VA_START (args, message); + error_tail (status, errnum, message, args); +#else + fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8); + + ++error_message_count; + if (errnum) + print_errno_message (errnum); + putc ('\n', stderr); + fflush (stderr); + if (status) + exit (status); +#endif + +#ifdef _LIBC +# ifdef USE_IN_LIBIO + _IO_funlockfile (stderr); +# else + __funlockfile (stderr); +# endif +#endif +} + +#ifdef _LIBC +/* Make the weak alias. */ +# undef error +# undef error_at_line +weak_alias (__error, error) +weak_alias (__error_at_line, error_at_line) +#endif diff --git a/lib/error.h b/lib/error.h new file mode 100644 index 0000000..d3c56f1 --- /dev/null +++ b/lib/error.h @@ -0,0 +1,78 @@ +/* Declaration for error-reporting function + + Copyright (C) 1995, 1996, 1997, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#ifndef _ERROR_H +#define _ERROR_H 1 + +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) +# define __attribute__(Spec) /* empty */ +# endif +/* The __-protected variants of `format' and `printf' attributes + are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) +# define __format__ format +# define __printf__ printf +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined (__STDC__) && __STDC__ + +/* Print a message with `fprintf (stderr, FORMAT, ...)'; + if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM). + If STATUS is nonzero, terminate the program with `exit (STATUS)'. */ + +extern void error (int status, int errnum, const char *format, ...) + __attribute__ ((__format__ (__printf__, 3, 4))); + +extern void error_at_line (int status, int errnum, const char *fname, + unsigned int lineno, const char *format, ...) + __attribute__ ((__format__ (__printf__, 5, 6))); + +/* If NULL, error will flush stdout, then print on stderr the program + name, a colon and a space. Otherwise, error will call this + function without parameters instead. */ +extern void (*error_print_progname) (void); + +#else +void error (); +void error_at_line (); +extern void (*error_print_progname) (); +#endif + +/* This variable is incremented each time `error' is called. */ +extern unsigned int error_message_count; + +/* Sometimes we want to have at most one error per line. This + variable controls whether this mode is selected or not. */ +extern int error_one_per_line; + +#ifdef __cplusplus +} +#endif + +#endif /* error.h */ diff --git a/lib/exit.h b/lib/exit.h new file mode 100644 index 0000000..46566fb --- /dev/null +++ b/lib/exit.h @@ -0,0 +1,32 @@ +/* exit() function. + Copyright (C) 1995, 2001, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _EXIT_H +#define _EXIT_H + +/* Get exit() declaration. */ +#include + +/* Some systems do not define EXIT_*, even with STDC_HEADERS. */ +#ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +#endif +#ifndef EXIT_FAILURE +# define EXIT_FAILURE 1 +#endif + +#endif /* _EXIT_H */ diff --git a/lib/gen-uio b/lib/gen-uio new file mode 100644 index 0000000..e7ef6a3 --- /dev/null +++ b/lib/gen-uio @@ -0,0 +1,53 @@ +#!/bin/sh + +fail=0 +cat <<\EOF || fail=1 +#ifndef UNLOCKED_IO_H +# define UNLOCKED_IO_H 1 + +# ifndef USE_UNLOCKED_IO +# define USE_UNLOCKED_IO 1 +# endif + +# if USE_UNLOCKED_IO + +/* These are wrappers for functions/macros from GNU libc. + The standard I/O functions are thread-safe. These *_unlocked ones are + more efficient but not thread-safe. That they're not thread-safe is + fine since all of the applications in this package are single threaded. */ + +EOF + +for f in $@; do + u=`echo $f|tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` + cat <&1; fail=1;; + esac + cat <. + 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. */ +# if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC +# include +# ifndef _ +# define _(msgid) gettext (msgid) +# endif +# 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; + +/* 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; + +/* 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 + +# if HAVE_STRING_H +# include +# else +# include +# endif + +/* Avoid depending on library functions or files + whose names are inconsistent. */ + +#ifndef getenv +extern char *getenv (); +#endif + +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__) && !defined strlen +/* 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. */ + +#ifdef USE_NONOPTION_FLAGS +/* Defined in getopt_init.c */ +extern char *__getopt_nonoption_flags; + +static int nonoption_flags_max_len; +static int nonoption_flags_len; +#endif + +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 */ + +# ifdef USE_NONOPTION_FLAGS +# 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 +# define SWAP_FLAGS(ch1, ch2) +# endif +#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. */ + +#if defined _LIBC && defined USE_NONOPTION_FLAGS + /* 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; + +#if defined _LIBC && defined USE_NONOPTION_FLAGS + 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; +{ + int print_errors = opterr; + if (optstring[0] == ':') + print_errors = 0; + + if (argc < 1) + return -1; + + 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. */ +#if defined _LIBC && defined USE_NONOPTION_FLAGS +# 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 if (long_only + || pfound->has_arg != p->has_arg + || pfound->flag != p->flag + || pfound->val != p->val) + /* Second or later nonexact match found. */ + ambig = 1; + } + + if (ambig && !exact) + { + if (print_errors) + 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 (print_errors) + { + 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 (print_errors) + 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 (print_errors) + { + 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 (print_errors) + { + 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 (print_errors) + { + /* 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 (print_errors) + 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 (print_errors) + 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 (print_errors) + 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 (print_errors) + { + /* 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/lib/getopt.h b/lib/getopt.h new file mode 100644 index 0000000..d26b80c --- /dev/null +++ b/lib/getopt.h @@ -0,0 +1,180 @@ +/* Declarations for getopt. + Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#ifndef _GETOPT_H + +#ifndef __need_getopt +# define _GETOPT_H 1 +#endif + +/* If __GNU_LIBRARY__ is not already defined, either we are being used + standalone, or this is the first header included in the source file. + If we are being used with glibc, we need to include , but + that does not exist if we are standalone. So: if __GNU_LIBRARY__ is + not defined, include , which will pull in for us + if it's from glibc. (Why ctype.h? It's guaranteed to exist and it + doesn't flood the namespace with stuff the way some other headers do.) */ +#if !defined __GNU_LIBRARY__ +# include +#endif + +#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; + +#ifndef __need_getopt +/* 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__) || defined __cplusplus + 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 +#endif /* need getopt */ + + +/* Get definitions and prototypes for functions to process the + arguments in ARGV (ARGC of them, minus the program name) for + options given in OPTS. + + Return the option character from OPTS just read. Return -1 when + there are no more options. For unrecognized options, or options + missing arguments, `optopt' is set to the option letter, and '?' is + returned. + + The OPTS string is a list of characters which are recognized option + letters, optionally followed by colons, specifying that that letter + takes an argument, to be placed in `optarg'. + + If a letter in OPTS is followed by two colons, its argument is + optional. This behavior is specific to the GNU `getopt'. + + The argument `--' causes premature termination of argument + scanning, explicitly telling `getopt' that there are no more + options. + + If OPTS begins with `--', then non-option arguments are treated as + arguments to the option '\0'. This behavior is specific to the GNU + `getopt'. */ + +#if (defined __STDC__ && __STDC__) || defined __cplusplus +# 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__ */ + +# ifndef __need_getopt +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); +# endif +#else /* not __STDC__ */ +extern int getopt (); +# ifndef __need_getopt +extern int getopt_long (); +extern int getopt_long_only (); + +extern int _getopt_internal (); +# endif +#endif /* __STDC__ */ + +#ifdef __cplusplus +} +#endif + +/* Make sure we later can get all the definitions and declarations. */ +#undef __need_getopt + +#endif /* getopt.h */ diff --git a/lib/getopt1.c b/lib/getopt1.c new file mode 100644 index 0000000..bbdfa2f --- /dev/null +++ b/lib/getopt1.c @@ -0,0 +1,188 @@ +/* getopt_long and getopt_long_only entry points for GNU getopt. + Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "getopt.h" + +#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__ +#include +#endif + +#ifndef NULL +#define NULL 0 +#endif + +int +getopt_long (argc, argv, options, long_options, opt_index) + int argc; + char *const *argv; + const char *options; + const struct option *long_options; + int *opt_index; +{ + return _getopt_internal (argc, argv, options, long_options, opt_index, 0); +} + +/* Like getopt_long, but '-' as well as '--' can indicate a long option. + If an option that starts with '-' (not '--') doesn't match a long option, + but does match a short option, it is parsed as a short option + instead. */ + +int +getopt_long_only (argc, argv, options, long_options, opt_index) + int argc; + char *const *argv; + const char *options; + const struct option *long_options; + int *opt_index; +{ + return _getopt_internal (argc, argv, options, long_options, opt_index, 1); +} + + +#endif /* Not ELIDE_CODE. */ + +#ifdef TEST + +#include + +int +main (argc, argv) + int argc; + char **argv; +{ + int c; + int digit_optind = 0; + + while (1) + { + int this_option_optind = optind ? optind : 1; + int option_index = 0; + static struct option long_options[] = + { + {"add", 1, 0, 0}, + {"append", 0, 0, 0}, + {"delete", 1, 0, 0}, + {"verbose", 0, 0, 0}, + {"create", 0, 0, 0}, + {"file", 1, 0, 0}, + {0, 0, 0, 0} + }; + + c = getopt_long (argc, argv, "abc:d:0123456789", + long_options, &option_index); + if (c == -1) + break; + + switch (c) + { + case 0: + printf ("option %s", long_options[option_index].name); + if (optarg) + printf (" with arg %s", optarg); + printf ("\n"); + break; + + 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 'd': + printf ("option d 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/lib/gettext.h b/lib/gettext.h new file mode 100644 index 0000000..d1911b9 --- /dev/null +++ b/lib/gettext.h @@ -0,0 +1,69 @@ +/* Convenience header for conditional use of GNU . + Copyright (C) 1995-1998, 2000-2002, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, 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 + +/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which + chokes if dcgettext is defined as a macro. So include it now, to make + later inclusions of a NOP. We don't include + as well because people using "gettext.h" will not include , + and also including would fail on SunOS 4, whereas + is OK. */ +#if defined(__sun) +# include +#endif + +/* Disabled NLS. + The casts to 'const char *' serve the purpose of producing warnings + for invalid uses of the value returned from these functions. + On pre-ANSI systems without 'const', the config.h file is supposed to + contain "#define const". */ +# define gettext(Msgid) ((const char *) (Msgid)) +# define dgettext(Domainname, Msgid) ((const char *) (Msgid)) +# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid)) +# define ngettext(Msgid1, Msgid2, N) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# define dngettext(Domainname, Msgid1, Msgid2, N) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ + ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) +# define textdomain(Domainname) ((const char *) (Domainname)) +# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname)) +# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset)) + +#endif + +/* A pseudo function call that serves as a marker for the automated + extraction of messages, but does not call gettext(). The run-time + translation is done at a different place in the code. + The argument, String, should be a literal string. Concatenated strings + and other string expressions won't work. + The macro's expansion is not parenthesized, so that it is suitable as + initializer for static 'char[]' or 'const char[]' variables. */ +#define gettext_noop(String) String + +#endif /* _LIBGETTEXT_H */ diff --git a/lib/inttostr.c b/lib/inttostr.c new file mode 100644 index 0000000..320c237 --- /dev/null +++ b/lib/inttostr.c @@ -0,0 +1,49 @@ +/* inttostr.c -- convert integers to printable strings + + Copyright (C) 2001, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* Written by Paul Eggert */ + +#include "inttostr.h" + +/* Convert I to a printable string in BUF, which must be at least + INT_BUFSIZE_BOUND (INTTYPE) bytes long. Return the address of the + printable string, which need not start at BUF. */ + +char * +inttostr (inttype i, char *buf) +{ + char *p = buf + INT_STRLEN_BOUND (inttype); + *p = 0; + + if (i < 0) + { + do + *--p = '0' - i % 10; + while ((i /= 10) != 0); + + *--p = '-'; + } + else + { + do + *--p = '0' + i % 10; + while ((i /= 10) != 0); + } + + return p; +} diff --git a/lib/inttostr.h b/lib/inttostr.h new file mode 100644 index 0000000..ca1afd4 --- /dev/null +++ b/lib/inttostr.h @@ -0,0 +1,65 @@ +/* inttostr.h -- convert integers to printable strings + + Copyright (C) 2001, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* Written by Paul Eggert */ + +#if HAVE_CONFIG_H +# include +#endif + +#if HAVE_INTTYPES_H +# include +#endif + +#if HAVE_LIMITS_H +# include +#endif +#ifndef CHAR_BIT +# define CHAR_BIT 8 +#endif + +#if HAVE_SYS_TYPES_H +# include +#endif + +#ifndef HAVE_INTMAX_T +#define HAVE_INTMAX_T +typedef long intmax_t; +#endif + +#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) + +/* Upper bound on the string length of an integer converted to string. + 302 / 1000 is ceil (log10 (2.0)). Subtract 1 for the sign bit; + add 1 for integer division truncation; add 1 more for a minus sign. */ +#define INT_STRLEN_BOUND(t) \ + ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 + 1 + TYPE_SIGNED (t)) + +#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1) + +#ifndef PARAMS +# if defined PROTOTYPES || defined __STDC__ +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +#endif + +char *offtostr PARAMS ((off_t, char *)); +char *imaxtostr PARAMS ((intmax_t, char *)); +char *umaxtostr PARAMS ((uintmax_t, char *)); diff --git a/lib/liballoca.h b/lib/liballoca.h new file mode 100644 index 0000000..6ba02fd --- /dev/null +++ b/lib/liballoca.h @@ -0,0 +1,56 @@ +/* Memory allocation on the stack. + Copyright (C) 1995, 1999, 2001-2002, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* When this file is included, it may be preceded only by preprocessor + declarations. Thanks to AIX. Therefore we include it right after + "config.h", not later. */ + +#ifndef _LIBALLOCA_H +#define _LIBALLOCA_H + +#ifdef __GNUC__ +# ifndef alloca +# define alloca __builtin_alloca +# endif +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifdef __hpux /* This section must match that of bison generated files. */ +# ifdef __cplusplus +extern "C" void *alloca (unsigned int); +# else /* not __cplusplus */ +void *alloca (); +# endif /* not __cplusplus */ +# else /* not __hpux */ +# ifndef alloca +char *alloca (); +# endif +# endif /* __hpux */ +# endif +# endif +# endif +#endif + +#endif /* _LIBALLOCA_H */ diff --git a/lib/malloc.c b/lib/malloc.c new file mode 100644 index 0000000..6c19eed --- /dev/null +++ b/lib/malloc.c @@ -0,0 +1,38 @@ +/* Work around bug on some systems where malloc (0) fails. + Copyright (C) 1997, 1998, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* written by Jim Meyering */ + +#if HAVE_CONFIG_H +# include +#endif +#undef malloc + +#include + +char *malloc (); + +/* Allocate an N-byte block of memory from the heap. + If N is zero, allocate a 1-byte block. */ + +char * +rpl_malloc (size_t n) +{ + if (n == 0) + n = 1; + return malloc (n); +} diff --git a/lib/md5.c b/lib/md5.c new file mode 100644 index 0000000..d79ab0a --- /dev/null +++ b/lib/md5.c @@ -0,0 +1,417 @@ +/* md5.c - Functions to compute MD5 message digest of files or memory blocks + according to the definition of MD5 in RFC 1321 from April 1992. + Copyright (C) 1995, 1996, 2001, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* Written by Ulrich Drepper , 1995. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#if STDC_HEADERS || defined _LIBC +# include +# include +#else +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#include "md5.h" +#include "unlocked-io.h" + +#ifdef _LIBC +# include +# if __BYTE_ORDER == __BIG_ENDIAN +# define WORDS_BIGENDIAN 1 +# endif +#endif + +#ifdef WORDS_BIGENDIAN +# define SWAP(n) \ + (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24)) +#else +# define SWAP(n) (n) +#endif + + +/* This array contains the bytes used to pad the buffer to the next + 64-byte boundary. (RFC 1321, 3.1: Step 1) */ +static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ }; + + +/* Initialize structure containing state of computation. + (RFC 1321, 3.3: Step 3) */ +void +md5_init_ctx (ctx) + struct md5_ctx *ctx; +{ + ctx->A = 0x67452301; + ctx->B = 0xefcdab89; + ctx->C = 0x98badcfe; + ctx->D = 0x10325476; + + ctx->total[0] = ctx->total[1] = 0; + ctx->buflen = 0; +} + +/* Put result from CTX in first 16 bytes following RESBUF. The result + must be in little endian byte order. + + IMPORTANT: On some systems it is required that RESBUF is correctly + aligned for a 32 bits value. */ +void * +md5_read_ctx (ctx, resbuf) + const struct md5_ctx *ctx; + void *resbuf; +{ + ((md5_uint32 *) resbuf)[0] = SWAP (ctx->A); + ((md5_uint32 *) resbuf)[1] = SWAP (ctx->B); + ((md5_uint32 *) resbuf)[2] = SWAP (ctx->C); + ((md5_uint32 *) resbuf)[3] = SWAP (ctx->D); + + return resbuf; +} + +/* Process the remaining bytes in the internal buffer and the usual + prolog according to the standard and write the result to RESBUF. + + IMPORTANT: On some systems it is required that RESBUF is correctly + aligned for a 32 bits value. */ +void * +md5_finish_ctx (ctx, resbuf) + struct md5_ctx *ctx; + void *resbuf; +{ + /* Take yet unprocessed bytes into account. */ + md5_uint32 bytes = ctx->buflen; + size_t pad; + + /* Now count remaining bytes. */ + ctx->total[0] += bytes; + if (ctx->total[0] < bytes) + ++ctx->total[1]; + + pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes; + memcpy (&ctx->buffer[bytes], fillbuf, pad); + + /* Put the 64-bit file length in *bits* at the end of the buffer. */ + *(md5_uint32 *) &ctx->buffer[bytes + pad] = SWAP (ctx->total[0] << 3); + *(md5_uint32 *) &ctx->buffer[bytes + pad + 4] = SWAP ((ctx->total[1] << 3) | + (ctx->total[0] >> 29)); + + /* Process last bytes. */ + md5_process_block (ctx->buffer, bytes + pad + 8, ctx); + + return md5_read_ctx (ctx, resbuf); +} + +/* Compute MD5 message digest for bytes read from STREAM. The + resulting message digest number will be written into the 16 bytes + beginning at RESBLOCK. */ +int +md5_stream (stream, resblock) + FILE *stream; + void *resblock; +{ + /* Important: BLOCKSIZE must be a multiple of 64. */ +#define BLOCKSIZE 4096 + struct md5_ctx ctx; + char buffer[BLOCKSIZE + 72]; + size_t sum; + + /* Initialize the computation context. */ + md5_init_ctx (&ctx); + + /* Iterate over full file contents. */ + while (1) + { + /* We read the file in blocks of BLOCKSIZE bytes. One call of the + computation function processes the whole buffer so that with the + next round of the loop another block can be read. */ + size_t n; + sum = 0; + + /* Read block. Take care for partial reads. */ + do + { + n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream); + + sum += n; + } + while (sum < BLOCKSIZE && n != 0); + if (n == 0 && ferror (stream)) + return 1; + + /* If end of file is reached, end the loop. */ + if (n == 0) + break; + + /* Process buffer with BLOCKSIZE bytes. Note that + BLOCKSIZE % 64 == 0 + */ + md5_process_block (buffer, BLOCKSIZE, &ctx); + } + + /* Add the last bytes if necessary. */ + if (sum > 0) + md5_process_bytes (buffer, sum, &ctx); + + /* Construct result in desired memory. */ + md5_finish_ctx (&ctx, resblock); + return 0; +} + +/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The + result is always in little endian byte order, so that a byte-wise + output yields to the wanted ASCII representation of the message + digest. */ +void * +md5_buffer (buffer, len, resblock) + const char *buffer; + size_t len; + void *resblock; +{ + struct md5_ctx ctx; + + /* Initialize the computation context. */ + md5_init_ctx (&ctx); + + /* Process whole buffer but last len % 64 bytes. */ + md5_process_bytes (buffer, len, &ctx); + + /* Put result in desired memory area. */ + return md5_finish_ctx (&ctx, resblock); +} + + +void +md5_process_bytes (buffer, len, ctx) + const void *buffer; + size_t len; + struct md5_ctx *ctx; +{ + /* When we already have some bits in our internal buffer concatenate + both inputs first. */ + if (ctx->buflen != 0) + { + size_t left_over = ctx->buflen; + size_t add = 128 - left_over > len ? len : 128 - left_over; + + memcpy (&ctx->buffer[left_over], buffer, add); + ctx->buflen += add; + + if (left_over + add > 64) + { + md5_process_block (ctx->buffer, (left_over + add) & ~63, ctx); + /* The regions in the following copy operation cannot overlap. */ + memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63], + (left_over + add) & 63); + ctx->buflen = (left_over + add) & 63; + } + + buffer = (const char *) buffer + add; + len -= add; + } + + /* Process available complete blocks. */ + if (len > 64) + { + md5_process_block (buffer, len & ~63, ctx); + buffer = (const char *) buffer + (len & ~63); + len &= 63; + } + + /* Move remaining bytes in internal buffer. */ + if (len > 0) + { + memcpy (ctx->buffer, buffer, len); + ctx->buflen = len; + } +} + + +/* These are the four functions used in the four steps of the MD5 algorithm + and defined in the RFC 1321. The first function is a little bit optimized + (as found in Colin Plumbs public domain implementation). */ +/* #define FF(b, c, d) ((b & c) | (~b & d)) */ +#define FF(b, c, d) (d ^ (b & (c ^ d))) +#define FG(b, c, d) FF (d, b, c) +#define FH(b, c, d) (b ^ c ^ d) +#define FI(b, c, d) (c ^ (b | ~d)) + +/* Process LEN bytes of BUFFER, accumulating context into CTX. + It is assumed that LEN % 64 == 0. */ + +void +md5_process_block (buffer, len, ctx) + const void *buffer; + size_t len; + struct md5_ctx *ctx; +{ + md5_uint32 correct_words[16]; + const md5_uint32 *words = buffer; + size_t nwords = len / sizeof (md5_uint32); + const md5_uint32 *endp = words + nwords; + md5_uint32 A = ctx->A; + md5_uint32 B = ctx->B; + md5_uint32 C = ctx->C; + md5_uint32 D = ctx->D; + + /* First increment the byte count. RFC 1321 specifies the possible + length of the file up to 2^64 bits. Here we only compute the + number of bytes. Do a double word increment. */ + ctx->total[0] += len; + if (ctx->total[0] < len) + ++ctx->total[1]; + + /* Process all bytes in the buffer with 64 bytes in each round of + the loop. */ + while (words < endp) + { + md5_uint32 *cwp = correct_words; + md5_uint32 A_save = A; + md5_uint32 B_save = B; + md5_uint32 C_save = C; + md5_uint32 D_save = D; + + /* First round: using the given function, the context and a constant + the next context is computed. Because the algorithms processing + unit is a 32-bit word and it is determined to work on words in + little endian byte order we perhaps have to change the byte order + before the computation. To reduce the work for the next steps + we store the swapped words in the array CORRECT_WORDS. */ + +#define OP(a, b, c, d, s, T) \ + do \ + { \ + a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T; \ + ++words; \ + a = rol (a, s); \ + a += b; \ + } \ + while (0) + + /* Before we start, one word to the strange constants. + They are defined in RFC 1321 as + + T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64, or + perl -e 'foreach(1..64){printf "0x%08x\n", int (4294967296 * abs (sin $_))}' + */ + + /* Round 1. */ + OP (A, B, C, D, 7, 0xd76aa478); + OP (D, A, B, C, 12, 0xe8c7b756); + OP (C, D, A, B, 17, 0x242070db); + OP (B, C, D, A, 22, 0xc1bdceee); + OP (A, B, C, D, 7, 0xf57c0faf); + OP (D, A, B, C, 12, 0x4787c62a); + OP (C, D, A, B, 17, 0xa8304613); + OP (B, C, D, A, 22, 0xfd469501); + OP (A, B, C, D, 7, 0x698098d8); + OP (D, A, B, C, 12, 0x8b44f7af); + OP (C, D, A, B, 17, 0xffff5bb1); + OP (B, C, D, A, 22, 0x895cd7be); + OP (A, B, C, D, 7, 0x6b901122); + OP (D, A, B, C, 12, 0xfd987193); + OP (C, D, A, B, 17, 0xa679438e); + OP (B, C, D, A, 22, 0x49b40821); + + /* For the second to fourth round we have the possibly swapped words + in CORRECT_WORDS. Redefine the macro to take an additional first + argument specifying the function to use. */ +#undef OP +#define OP(f, a, b, c, d, k, s, T) \ + do \ + { \ + a += f (b, c, d) + correct_words[k] + T; \ + a = rol (a, s); \ + a += b; \ + } \ + while (0) + + /* Round 2. */ + OP (FG, A, B, C, D, 1, 5, 0xf61e2562); + OP (FG, D, A, B, C, 6, 9, 0xc040b340); + OP (FG, C, D, A, B, 11, 14, 0x265e5a51); + OP (FG, B, C, D, A, 0, 20, 0xe9b6c7aa); + OP (FG, A, B, C, D, 5, 5, 0xd62f105d); + OP (FG, D, A, B, C, 10, 9, 0x02441453); + OP (FG, C, D, A, B, 15, 14, 0xd8a1e681); + OP (FG, B, C, D, A, 4, 20, 0xe7d3fbc8); + OP (FG, A, B, C, D, 9, 5, 0x21e1cde6); + OP (FG, D, A, B, C, 14, 9, 0xc33707d6); + OP (FG, C, D, A, B, 3, 14, 0xf4d50d87); + OP (FG, B, C, D, A, 8, 20, 0x455a14ed); + OP (FG, A, B, C, D, 13, 5, 0xa9e3e905); + OP (FG, D, A, B, C, 2, 9, 0xfcefa3f8); + OP (FG, C, D, A, B, 7, 14, 0x676f02d9); + OP (FG, B, C, D, A, 12, 20, 0x8d2a4c8a); + + /* Round 3. */ + OP (FH, A, B, C, D, 5, 4, 0xfffa3942); + OP (FH, D, A, B, C, 8, 11, 0x8771f681); + OP (FH, C, D, A, B, 11, 16, 0x6d9d6122); + OP (FH, B, C, D, A, 14, 23, 0xfde5380c); + OP (FH, A, B, C, D, 1, 4, 0xa4beea44); + OP (FH, D, A, B, C, 4, 11, 0x4bdecfa9); + OP (FH, C, D, A, B, 7, 16, 0xf6bb4b60); + OP (FH, B, C, D, A, 10, 23, 0xbebfbc70); + OP (FH, A, B, C, D, 13, 4, 0x289b7ec6); + OP (FH, D, A, B, C, 0, 11, 0xeaa127fa); + OP (FH, C, D, A, B, 3, 16, 0xd4ef3085); + OP (FH, B, C, D, A, 6, 23, 0x04881d05); + OP (FH, A, B, C, D, 9, 4, 0xd9d4d039); + OP (FH, D, A, B, C, 12, 11, 0xe6db99e5); + OP (FH, C, D, A, B, 15, 16, 0x1fa27cf8); + OP (FH, B, C, D, A, 2, 23, 0xc4ac5665); + + /* Round 4. */ + OP (FI, A, B, C, D, 0, 6, 0xf4292244); + OP (FI, D, A, B, C, 7, 10, 0x432aff97); + OP (FI, C, D, A, B, 14, 15, 0xab9423a7); + OP (FI, B, C, D, A, 5, 21, 0xfc93a039); + OP (FI, A, B, C, D, 12, 6, 0x655b59c3); + OP (FI, D, A, B, C, 3, 10, 0x8f0ccc92); + OP (FI, C, D, A, B, 10, 15, 0xffeff47d); + OP (FI, B, C, D, A, 1, 21, 0x85845dd1); + OP (FI, A, B, C, D, 8, 6, 0x6fa87e4f); + OP (FI, D, A, B, C, 15, 10, 0xfe2ce6e0); + OP (FI, C, D, A, B, 6, 15, 0xa3014314); + OP (FI, B, C, D, A, 13, 21, 0x4e0811a1); + OP (FI, A, B, C, D, 4, 6, 0xf7537e82); + OP (FI, D, A, B, C, 11, 10, 0xbd3af235); + OP (FI, C, D, A, B, 2, 15, 0x2ad7d2bb); + OP (FI, B, C, D, A, 9, 21, 0xeb86d391); + + /* Add the starting values of the context. */ + A += A_save; + B += B_save; + C += C_save; + D += D_save; + } + + /* Put checksum in context given as argument. */ + ctx->A = A; + ctx->B = B; + ctx->C = C; + ctx->D = D; +} diff --git a/lib/md5.h b/lib/md5.h new file mode 100644 index 0000000..9303e6c --- /dev/null +++ b/lib/md5.h @@ -0,0 +1,161 @@ +/* md5.h - Declaration of functions and data types used for MD5 sum + computing library functions. + Copyright (C) 1995, 1996, 1999, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _MD5_H +#define _MD5_H 1 + +#include + +#if defined HAVE_LIMITS_H || _LIBC +# include +#endif + +/* 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 + doing that would require that the configure script compile and *run* + the resulting executable. Locally running cross-compiled executables + is usually not possible. */ + +#ifdef _LIBC +# include +typedef u_int32_t md5_uint32; +#else +# if defined __STDC__ && __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 int md5_uint32; +# else +# if USHRT_MAX == UINT_MAX_32_BITS + typedef unsigned short md5_uint32; +# else +# if ULONG_MAX == UINT_MAX_32_BITS + typedef unsigned long md5_uint32; +# else + /* The following line is intended to evoke an error. + Using #error is not portable enough. */ + "Cannot determine unsigned 32-bit data type." +# endif +# endif +# endif +#endif + +#undef __P +#if defined (__STDC__) && __STDC__ +#define __P(x) x +#else +#define __P(x) () +#endif + +/* Structure to save state of computation between the single steps. */ +struct md5_ctx +{ + md5_uint32 A; + md5_uint32 B; + md5_uint32 C; + md5_uint32 D; + + md5_uint32 total[2]; + md5_uint32 buflen; + char buffer[128]; +}; + +/* + * The following three functions are build up the low level used in + * the functions `md5_stream' and `md5_buffer'. + */ + +/* Initialize structure containing state of computation. + (RFC 1321, 3.3: Step 3) */ +extern void md5_init_ctx __P ((struct md5_ctx *ctx)); + +/* Starting with the result of former calls of this function (or the + initialization function update the context for the next LEN bytes + starting at BUFFER. + It is necessary that LEN is a multiple of 64!!! */ +extern void md5_process_block __P ((const void *buffer, size_t len, + struct md5_ctx *ctx)); + +/* Starting with the result of former calls of this function (or the + initialization function update the context for the next LEN bytes + starting at BUFFER. + It is NOT required that LEN is a multiple of 64. */ +extern void md5_process_bytes __P ((const void *buffer, size_t len, + struct md5_ctx *ctx)); + +/* Process the remaining bytes in the buffer and put result from CTX + in first 16 bytes following RESBUF. The result is always in little + endian byte order, so that a byte-wise output yields to the wanted + ASCII representation of the message digest. + + IMPORTANT: On some systems it is required that RESBUF be correctly + aligned for a 32 bits value. */ +extern void *md5_finish_ctx __P ((struct md5_ctx *ctx, void *resbuf)); + + +/* Put result from CTX in first 16 bytes following RESBUF. The result is + always in little endian byte order, so that a byte-wise output yields + to the wanted ASCII representation of the message digest. + + IMPORTANT: On some systems it is required that RESBUF is correctly + aligned for a 32 bits value. */ +extern void *md5_read_ctx __P ((const struct md5_ctx *ctx, void *resbuf)); + + +/* Compute MD5 message digest for bytes read from STREAM. The + resulting message digest number will be written into the 16 bytes + beginning at RESBLOCK. */ +extern int md5_stream __P ((FILE *stream, void *resblock)); + +/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The + result is always in little endian byte order, so that a byte-wise + output yields to the wanted ASCII representation of the message + digest. */ +extern void *md5_buffer __P ((const char *buffer, size_t len, void *resblock)); + +/* The following is from gnupg-1.0.2's cipher/bithelp.h. */ +/* Rotate a 32 bit integer by n bytes */ +#if defined __GNUC__ && defined __i386__ +static inline md5_uint32 +rol(md5_uint32 x, int n) +{ + __asm__("roll %%cl,%0" + :"=r" (x) + :"0" (x),"c" (n)); + return x; +} +#else +# define rol(x,n) ( ((x) << (n)) | ((x) >> (32-(n))) ) +#endif + +#endif diff --git a/lib/memset.c b/lib/memset.c new file mode 100644 index 0000000..ffa1ef5 --- /dev/null +++ b/lib/memset.c @@ -0,0 +1,26 @@ +/* memset.c -- set an area of memory to a given value + Copyright (C) 1991, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +char * +memset (char *str, int c, unsigned int len) +{ + register char *st = str; + + while (len-- > 0) + *st++ = c; + return str; +} diff --git a/lib/mktime.c b/lib/mktime.c new file mode 100644 index 0000000..0fe854d --- /dev/null +++ b/lib/mktime.c @@ -0,0 +1,528 @@ +/* Convert a `struct tm' to a time_t value. + Copyright (C) 1993, 94, 95, 96, 97, 98, 99 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Paul Eggert (eggert@twinsun.com). + + 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., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* Define this to have a standalone program to test this implementation of + mktime. */ +/* #define DEBUG 1 */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define HAVE_LIMITS_H 1 +# define STDC_HEADERS 1 +#endif + +/* Assume that leap seconds are possible, unless told otherwise. + If the host has a `zic' command with a `-L leapsecondfilename' option, + then it supports leap seconds; otherwise it probably doesn't. */ +#ifndef LEAP_SECONDS_POSSIBLE +# define LEAP_SECONDS_POSSIBLE 1 +#endif + +#include /* Some systems define `time_t' here. */ +#include + +#if HAVE_LIMITS_H +# include +#endif + +#if DEBUG +# include +# if STDC_HEADERS +# include +# endif +/* Make it work even if the system's libc has its own mktime routine. */ +# define mktime my_mktime +#endif /* DEBUG */ + +#ifndef __P +# if defined __GNUC__ || (defined __STDC__ && __STDC__) +# define __P(args) args +# else +# define __P(args) () +# endif /* GCC. */ +#endif /* Not __P. */ + +#ifndef CHAR_BIT +# define CHAR_BIT 8 +#endif + +/* The extra casts work around common compiler bugs. */ +#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) +/* The outer cast is needed to work around a bug in Cray C 5.0.3.0. + It is necessary at least when t == time_t. */ +#define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \ + ? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) : (t) 0)) +#define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t))) + +#ifndef INT_MIN +# define INT_MIN TYPE_MINIMUM (int) +#endif +#ifndef INT_MAX +# define INT_MAX TYPE_MAXIMUM (int) +#endif + +#ifndef TIME_T_MIN +# define TIME_T_MIN TYPE_MINIMUM (time_t) +#endif +#ifndef TIME_T_MAX +# define TIME_T_MAX TYPE_MAXIMUM (time_t) +#endif + +#define TM_YEAR_BASE 1900 +#define EPOCH_YEAR 1970 + +#ifndef __isleap +/* Nonzero if YEAR is a leap year (every 4 years, + except every 100th isn't, and every 400th is). */ +# define __isleap(year) \ + ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) +#endif + +/* How many days come before each month (0-12). */ +const unsigned short int __mon_yday[2][13] = + { + /* Normal years. */ + { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 }, + /* Leap years. */ + { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 } + }; + + +#ifdef _LIBC +# define my_mktime_localtime_r __localtime_r +#else +/* If we're a mktime substitute in a GNU program, then prefer + localtime to localtime_r, since many localtime_r implementations + are buggy. */ +static struct tm * +my_mktime_localtime_r (const time_t *t, struct tm *tp) +{ + struct tm *l = localtime (t); + if (! l) + return 0; + *tp = *l; + return tp; +} +#endif /* ! _LIBC */ + + +/* Yield the difference between (YEAR-YDAY HOUR:MIN:SEC) and (*TP), + measured in seconds, ignoring leap seconds. + YEAR uses the same numbering as TM->tm_year. + All values are in range, except possibly YEAR. + If TP is null, return a nonzero value. + If overflow occurs, yield the low order bits of the correct answer. */ +static time_t +ydhms_tm_diff (int year, int yday, int hour, int min, int sec, + const struct tm *tp) +{ + if (!tp) + return 1; + else + { + /* Compute intervening leap days correctly even if year is negative. + Take care to avoid int overflow. time_t overflow is OK, since + only the low order bits of the correct time_t answer are needed. + Don't convert to time_t until after all divisions are done, since + time_t might be unsigned. */ + int a4 = (year >> 2) + (TM_YEAR_BASE >> 2) - ! (year & 3); + int b4 = (tp->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (tp->tm_year & 3); + int a100 = a4 / 25 - (a4 % 25 < 0); + int b100 = b4 / 25 - (b4 % 25 < 0); + int a400 = a100 >> 2; + int b400 = b100 >> 2; + int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400); + time_t years = year - (time_t) tp->tm_year; + time_t days = (365 * years + intervening_leap_days + + (yday - tp->tm_yday)); + return (60 * (60 * (24 * days + (hour - tp->tm_hour)) + + (min - tp->tm_min)) + + (sec - tp->tm_sec)); + } +} + +/* Use CONVERT to convert *T to a broken down time in *TP. + If *T is out of range for conversion, adjust it so that + it is the nearest in-range value and then convert that. */ +static struct tm * +ranged_convert (struct tm *(*convert) (const time_t *, struct tm *), + time_t *t, struct tm *tp) +{ + struct tm *r; + + if (! (r = (*convert) (t, tp)) && *t) + { + time_t bad = *t; + time_t ok = 0; + struct tm tm; + + /* BAD is a known unconvertible time_t, and OK is a known good one. + Use binary search to narrow the range between BAD and OK until + they differ by 1. */ + while (bad != ok + (bad < 0 ? -1 : 1)) + { + time_t mid = *t = (bad < 0 + ? bad + ((ok - bad) >> 1) + : ok + ((bad - ok) >> 1)); + if ((r = (*convert) (t, tp))) + { + tm = *r; + ok = mid; + } + else + bad = mid; + } + + if (!r && ok) + { + /* The last conversion attempt failed; + revert to the most recent successful attempt. */ + *t = ok; + *tp = tm; + r = tp; + } + } + + return r; +} + + +/* Convert *TP to a time_t value, inverting + the monotonic and mostly-unit-linear conversion function CONVERT. + Use *OFFSET to keep track of a guess at the offset of the result, + compared to what the result would be for UTC without leap seconds. + If *OFFSET's guess is correct, only one CONVERT call is needed. */ +time_t +__mktime_internal (struct tm *tp, + struct tm *(*convert) (const time_t *, struct tm *), + time_t *offset) +{ + time_t t, dt, t0, t1, t2; + struct tm tm; + + /* The maximum number of probes (calls to CONVERT) should be enough + to handle any combinations of time zone rule changes, solar time, + leap seconds, and oscillations around a spring-forward gap. + POSIX.1 prohibits leap seconds, but some hosts have them anyway. */ + int remaining_probes = 6; + + /* Time requested. Copy it in case CONVERT modifies *TP; this can + occur if TP is localtime's returned value and CONVERT is localtime. */ + int sec = tp->tm_sec; + int min = tp->tm_min; + int hour = tp->tm_hour; + int mday = tp->tm_mday; + int mon = tp->tm_mon; + int year_requested = tp->tm_year; + int isdst = tp->tm_isdst; + + /* Ensure that mon is in range, and set year accordingly. */ + int mon_remainder = mon % 12; + int negative_mon_remainder = mon_remainder < 0; + int mon_years = mon / 12 - negative_mon_remainder; + int year = year_requested + mon_years; + + /* The other values need not be in range: + the remaining code handles minor overflows correctly, + assuming int and time_t arithmetic wraps around. + Major overflows are caught at the end. */ + + /* Calculate day of year from year, month, and day of month. + The result need not be in range. */ + int yday = ((__mon_yday[__isleap (year + TM_YEAR_BASE)] + [mon_remainder + 12 * negative_mon_remainder]) + + mday - 1); + + int sec_requested = sec; +#if LEAP_SECONDS_POSSIBLE + /* Handle out-of-range seconds specially, + since ydhms_tm_diff assumes every minute has 60 seconds. */ + if (sec < 0) + sec = 0; + if (59 < sec) + sec = 59; +#endif + + /* Invert CONVERT by probing. First assume the same offset as last time. + Then repeatedly use the error to improve the guess. */ + + tm.tm_year = EPOCH_YEAR - TM_YEAR_BASE; + tm.tm_yday = tm.tm_hour = tm.tm_min = tm.tm_sec = 0; + t0 = ydhms_tm_diff (year, yday, hour, min, sec, &tm); + + for (t = t1 = t2 = t0 + *offset; + (dt = ydhms_tm_diff (year, yday, hour, min, sec, + ranged_convert (convert, &t, &tm))); + t1 = t2, t2 = t, t += dt) + if (t == t1 && t != t2 + && (isdst < 0 || tm.tm_isdst < 0 + || (isdst != 0) != (tm.tm_isdst != 0))) + /* We can't possibly find a match, as we are oscillating + between two values. The requested time probably falls + within a spring-forward gap of size DT. Follow the common + practice in this case, which is to return a time that is DT + away from the requested time, preferring a time whose + tm_isdst differs from the requested value. In practice, + this is more useful than returning -1. */ + break; + else if (--remaining_probes == 0) + return -1; + + /* If we have a match, check whether tm.tm_isdst has the requested + value, if any. */ + if (dt == 0 && isdst != tm.tm_isdst && 0 <= isdst && 0 <= tm.tm_isdst) + { + /* tm.tm_isdst has the wrong value. Look for a neighboring + time with the right value, and use its UTC offset. + Heuristic: probe the previous three calendar quarters (approximately), + looking for the desired isdst. This isn't perfect, + but it's good enough in practice. */ + int quarter = 7889238; /* seconds per average 1/4 Gregorian year */ + int i; + + /* If we're too close to the time_t limit, look in future quarters. */ + if (t < TIME_T_MIN + 3 * quarter) + quarter = -quarter; + + for (i = 1; i <= 3; i++) + { + time_t ot = t - i * quarter; + struct tm otm; + ranged_convert (convert, &ot, &otm); + if (otm.tm_isdst == isdst) + { + /* We found the desired tm_isdst. + Extrapolate back to the desired time. */ + t = ot + ydhms_tm_diff (year, yday, hour, min, sec, &otm); + ranged_convert (convert, &t, &tm); + break; + } + } + } + + *offset = t - t0; + +#if LEAP_SECONDS_POSSIBLE + if (sec_requested != tm.tm_sec) + { + /* Adjust time to reflect the tm_sec requested, not the normalized value. + Also, repair any damage from a false match due to a leap second. */ + t += sec_requested - sec + (sec == 0 && tm.tm_sec == 60); + if (! (*convert) (&t, &tm)) + return -1; + } +#endif + + if (TIME_T_MAX / INT_MAX / 366 / 24 / 60 / 60 < 3) + { + /* time_t isn't large enough to rule out overflows in ydhms_tm_diff, + so check for major overflows. A gross check suffices, + since if t has overflowed, it is off by a multiple of + TIME_T_MAX - TIME_T_MIN + 1. So ignore any component of + the difference that is bounded by a small value. */ + + double dyear = (double) year_requested + mon_years - tm.tm_year; + double dday = 366 * dyear + mday; + double dsec = 60 * (60 * (24 * dday + hour) + min) + sec_requested; + + /* On Irix4.0.5 cc, dividing TIME_T_MIN by 3 does not produce + correct results, ie., it erroneously gives a positive value + of 715827882. Setting a variable first then doing math on it + seems to work. (ghazi@caip.rutgers.edu) */ + + const time_t time_t_max = TIME_T_MAX; + const time_t time_t_min = TIME_T_MIN; + + if (time_t_max / 3 - time_t_min / 3 < (dsec < 0 ? - dsec : dsec)) + return -1; + } + + *tp = tm; + return t; +} + + +static time_t localtime_offset; + +/* Convert *TP to a time_t value. */ +time_t +mktime (tp) + struct tm *tp; +{ +#ifdef _LIBC + /* POSIX.1 8.1.1 requires that whenever mktime() is called, the + time zone names contained in the external variable `tzname' shall + be set as if the tzset() function had been called. */ + __tzset (); +#endif + + return __mktime_internal (tp, my_mktime_localtime_r, &localtime_offset); +} + +#ifdef weak_alias +weak_alias (mktime, timelocal) +#endif + +#if DEBUG + +static int +not_equal_tm (a, b) + struct tm *a; + struct tm *b; +{ + return ((a->tm_sec ^ b->tm_sec) + | (a->tm_min ^ b->tm_min) + | (a->tm_hour ^ b->tm_hour) + | (a->tm_mday ^ b->tm_mday) + | (a->tm_mon ^ b->tm_mon) + | (a->tm_year ^ b->tm_year) + | (a->tm_mday ^ b->tm_mday) + | (a->tm_yday ^ b->tm_yday) + | (a->tm_isdst ^ b->tm_isdst)); +} + +static void +print_tm (tp) + struct tm *tp; +{ + if (tp) + printf ("%04d-%02d-%02d %02d:%02d:%02d yday %03d wday %d isdst %d", + tp->tm_year + TM_YEAR_BASE, tp->tm_mon + 1, tp->tm_mday, + tp->tm_hour, tp->tm_min, tp->tm_sec, + tp->tm_yday, tp->tm_wday, tp->tm_isdst); + else + printf ("0"); +} + +static int +check_result (tk, tmk, tl, lt) + time_t tk; + struct tm tmk; + time_t tl; + struct tm *lt; +{ + if (tk != tl || !lt || not_equal_tm (&tmk, lt)) + { + printf ("mktime ("); + print_tm (&tmk); + printf (")\nyields ("); + print_tm (lt); + printf (") == %ld, should be %ld\n", (long) tl, (long) tk); + return 1; + } + + return 0; +} + +int +main (argc, argv) + int argc; + char **argv; +{ + int status = 0; + struct tm tm, tmk, tml; + struct tm *lt; + time_t tk, tl; + char trailer; + + if ((argc == 3 || argc == 4) + && (sscanf (argv[1], "%d-%d-%d%c", + &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &trailer) + == 3) + && (sscanf (argv[2], "%d:%d:%d%c", + &tm.tm_hour, &tm.tm_min, &tm.tm_sec, &trailer) + == 3)) + { + tm.tm_year -= TM_YEAR_BASE; + tm.tm_mon--; + tm.tm_isdst = argc == 3 ? -1 : atoi (argv[3]); + tmk = tm; + tl = mktime (&tmk); + lt = localtime (&tl); + if (lt) + { + tml = *lt; + lt = &tml; + } + printf ("mktime returns %ld == ", (long) tl); + print_tm (&tmk); + printf ("\n"); + status = check_result (tl, tmk, tl, lt); + } + else if (argc == 4 || (argc == 5 && strcmp (argv[4], "-") == 0)) + { + time_t from = atol (argv[1]); + time_t by = atol (argv[2]); + time_t to = atol (argv[3]); + + if (argc == 4) + for (tl = from; tl <= to; tl += by) + { + lt = localtime (&tl); + if (lt) + { + tmk = tml = *lt; + tk = mktime (&tmk); + status |= check_result (tk, tmk, tl, tml); + } + else + { + printf ("localtime (%ld) yields 0\n", (long) tl); + status = 1; + } + } + else + for (tl = from; tl <= to; tl += by) + { + /* Null benchmark. */ + lt = localtime (&tl); + if (lt) + { + tmk = tml = *lt; + tk = tl; + status |= check_result (tk, tmk, tl, tml); + } + else + { + printf ("localtime (%ld) yields 0\n", (long) tl); + status = 1; + } + } + } + else + printf ("Usage:\ +\t%s YYYY-MM-DD HH:MM:SS [ISDST] # Test given time.\n\ +\t%s FROM BY TO # Test values FROM, FROM+BY, ..., TO.\n\ +\t%s FROM BY TO - # Do not test those values (for benchmark).\n", + argv[0], argv[0], argv[0]); + + return status; +} + +#endif /* DEBUG */ + +/* +Local Variables: +compile-command: "gcc -DDEBUG -DHAVE_LIMITS_H -DSTDC_HEADERS -Wall -W -O -g mktime.c -o mktime" +End: +*/ diff --git a/lib/offtostr.c b/lib/offtostr.c new file mode 100644 index 0000000..45196e2 --- /dev/null +++ b/lib/offtostr.c @@ -0,0 +1,3 @@ +#define inttostr offtostr +#define inttype off_t +#include "inttostr.c" diff --git a/lib/pathmax.h b/lib/pathmax.h new file mode 100644 index 0000000..b176b9b --- /dev/null +++ b/lib/pathmax.h @@ -0,0 +1,55 @@ +/* Define PATH_MAX somehow. Requires sys/types.h. + + Copyright (C) 1992, 1999, 2001, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _PATHMAX_H +# define _PATHMAX_H + +# if HAVE_UNISTD_H +# include +# endif + +/* 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 + +#endif /* _PATHMAX_H */ diff --git a/lib/realloc.c b/lib/realloc.c new file mode 100644 index 0000000..7805810 --- /dev/null +++ b/lib/realloc.c @@ -0,0 +1,44 @@ +/* Work around bug on some systems where realloc (NULL, 0) fails. + Copyright (C) 1997, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* written by Jim Meyering */ + +#if HAVE_CONFIG_H +# include +#endif +#undef realloc + +#include + +char *malloc (); +char *realloc (); + +/* Change the size of an allocated block of memory P to N bytes, + with error checking. If N is zero, change it to 1. If P is NULL, + use malloc. */ + +char * +rpl_realloc (p, n) + char *p; + size_t n; +{ + if (n == 0) + n = 1; + if (p == 0) + return malloc (n); + return realloc (p, n); +} diff --git a/lib/stpcpy.c b/lib/stpcpy.c new file mode 100644 index 0000000..9d2b4ff --- /dev/null +++ b/lib/stpcpy.c @@ -0,0 +1,50 @@ +/* stpcpy.c -- copy a string and return pointer to end of new string + + Copyright (C) 1992, 1995, 1997, 1998, 2007 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 3, 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#undef __stpcpy +#undef stpcpy + +#ifndef weak_alias +# define __stpcpy stpcpy +#endif + +/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */ +char * +__stpcpy (char *dest, const char *src) +{ + register char *d = dest; + register const char *s = src; + + do + *d++ = *s; + while (*s++ != '\0'); + + return d - 1; +} +#ifdef weak_alias +weak_alias (__stpcpy, stpcpy) +#endif diff --git a/lib/stpcpy.h b/lib/stpcpy.h new file mode 100644 index 0000000..9396ce1 --- /dev/null +++ b/lib/stpcpy.h @@ -0,0 +1,40 @@ +/* String copying. + Copyright (C) 1995, 2001, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _STPCPY_H +#define _STPCPY_H + +#ifndef PARAMS +# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#if HAVE_STPCPY + +/* Get stpcpy() declaration. */ +#include + +#else + +extern char *stpcpy PARAMS ((char *__dst, const char *__src)); + +#endif + +#endif /* _STPCPY_H */ diff --git a/lib/strftime.c b/lib/strftime.c new file mode 100644 index 0000000..7c8bf1c --- /dev/null +++ b/lib/strftime.c @@ -0,0 +1,1406 @@ +/* Copyright (C) 1991-1999, 2000, 2001, 2007 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 3, 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 General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define HAVE_LIMITS_H 1 +# define HAVE_MBLEN 1 +# define HAVE_MBRLEN 1 +# define HAVE_STRUCT_ERA_ENTRY 1 +# define HAVE_TM_GMTOFF 1 +# define HAVE_TM_ZONE 1 +# define HAVE_TZNAME 1 +# define HAVE_TZSET 1 +# define MULTIBYTE_IS_FORMAT_SAFE 1 +# define STDC_HEADERS 1 +# include "../locale/localeinfo.h" +#endif + +#if defined emacs && !defined HAVE_BCOPY +# define HAVE_MEMCPY 1 +#endif + +#include +#include /* Some systems define `time_t' here. */ + +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif +#if HAVE_TZNAME +extern char *tzname[]; +#endif + +/* Do multibyte processing if multibytes are supported, unless + multibyte sequences are safe in formats. Multibyte sequences are + safe if they cannot contain byte sequences that look like format + conversion specifications. The GNU C Library uses UTF8 multibyte + encoding, which is safe for formats, but strftime.c can be used + with other C libraries that use unsafe encodings. */ +#define DO_MULTIBYTE (HAVE_MBLEN && ! MULTIBYTE_IS_FORMAT_SAFE) + +#if DO_MULTIBYTE +# if HAVE_MBRLEN +# include +# else + /* Simulate mbrlen with mblen as best we can. */ +# define mbstate_t int +# define mbrlen(s, n, ps) mblen (s, n) +# define mbsinit(ps) (*(ps) == 0) +# endif + static const mbstate_t mbstate_zero; +#endif + +#if HAVE_LIMITS_H +# include +#endif + +#if STDC_HEADERS +# include +# include +# include +#else +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#ifdef COMPILE_WIDE +# include +# define CHAR_T wchar_t +# define UCHAR_T unsigned int +# define L_(Str) L##Str +# define NLW(Sym) _NL_W##Sym + +# define MEMCPY(d, s, n) __wmemcpy (d, s, n) +# define STRLEN(s) __wcslen (s) + +#else +# define CHAR_T char +# define UCHAR_T unsigned char +# define L_(Str) Str +# define NLW(Sym) Sym + +# if !defined STDC_HEADERS && !defined HAVE_MEMCPY +# define MEMCPY(d, s, n) bcopy ((s), (d), (n)) +# else +# define MEMCPY(d, s, n) memcpy ((d), (s), (n)) +# endif +# define STRLEN(s) strlen (s) + +# ifdef _LIBC +# define MEMPCPY(d, s, n) __mempcpy (d, s, n) +# else +# ifndef HAVE_MEMPCPY +# define MEMPCPY(d, s, n) ((void *) ((char *) memcpy (d, s, n) + (n))) +# endif +# endif +#endif + +#ifndef __P +# if defined __GNUC__ || (defined __STDC__ && __STDC__) +# define __P(args) args +# else +# define __P(args) () +# endif /* GCC. */ +#endif /* Not __P. */ + +#ifndef PTR +# ifdef __STDC__ +# define PTR void * +# else +# define PTR char * +# endif +#endif + +#ifndef CHAR_BIT +# define CHAR_BIT 8 +#endif + +#ifndef NULL +# define NULL 0 +#endif + +#define TYPE_SIGNED(t) ((t) -1 < 0) + +/* Bound on length of the string representing an integer value of type t. + Subtract one for the sign bit if t is signed; + 302 / 1000 is log10 (2) rounded up; + add one for integer division truncation; + add one more for a minus sign if t is signed. */ +#define INT_STRLEN_BOUND(t) \ + ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 + 1 + TYPE_SIGNED (t)) + +#define TM_YEAR_BASE 1900 + +#ifndef __isleap +/* Nonzero if YEAR is a leap year (every 4 years, + except every 100th isn't, and every 400th is). */ +# define __isleap(year) \ + ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) +#endif + + +#ifdef _LIBC +# define my_strftime_gmtime_r __gmtime_r +# define my_strftime_localtime_r __localtime_r +# define tzname __tzname +# define tzset __tzset +#else + +/* If we're a strftime substitute in a GNU program, then prefer gmtime + to gmtime_r, since many gmtime_r implementations are buggy. + Similarly for localtime_r. */ + +# if ! HAVE_TM_GMTOFF +static struct tm *my_strftime_gmtime_r __P ((const time_t *, struct tm *)); +static struct tm * +my_strftime_gmtime_r (t, tp) + const time_t *t; + struct tm *tp; +{ + struct tm *l = gmtime (t); + if (! l) + return 0; + *tp = *l; + return tp; +} + +static struct tm *my_strftime_localtime_r __P ((const time_t *, struct tm *)); +static struct tm * +my_strftime_localtime_r (t, tp) + const time_t *t; + struct tm *tp; +{ + struct tm *l = localtime (t); + if (! l) + return 0; + *tp = *l; + return tp; +} +# endif /* ! HAVE_TM_GMTOFF */ +#endif /* ! defined _LIBC */ + + +#if !defined memset && !defined HAVE_MEMSET && !defined _LIBC +/* Some systems lack the `memset' function and we don't want to + introduce additional dependencies. */ +/* The SGI compiler reportedly barfs on the trailing null + if we use a string constant as the initializer. 28 June 1997, rms. */ +static const CHAR_T spaces[16] = /* " " */ +{ + L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '), + L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' '),L_(' ') +}; +static const CHAR_T zeroes[16] = /* "0000000000000000" */ +{ + L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'), + L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0'),L_('0') +}; + +# define memset_space(P, Len) \ + do { \ + int _len = (Len); \ + \ + do \ + { \ + int _this = _len > 16 ? 16 : _len; \ + (P) = MEMPCPY ((P), spaces, _this * sizeof (CHAR_T)); \ + _len -= _this; \ + } \ + while (_len > 0); \ + } while (0) + +# define memset_zero(P, Len) \ + do { \ + int _len = (Len); \ + \ + do \ + { \ + int _this = _len > 16 ? 16 : _len; \ + (P) = MEMPCPY ((P), zeroes, _this * sizeof (CHAR_T)); \ + _len -= _this; \ + } \ + while (_len > 0); \ + } while (0) +#else +# ifdef COMPILE_WIDE +# define memset_space(P, Len) (wmemset ((P), L' ', (Len)), (P) += (Len)) +# define memset_zero(P, Len) (wmemset ((P), L'0', (Len)), (P) += (Len)) +# else +# define memset_space(P, Len) (memset ((P), ' ', (Len)), (P) += (Len)) +# define memset_zero(P, Len) (memset ((P), '0', (Len)), (P) += (Len)) +# endif +#endif + +#define add(n, f) \ + do \ + { \ + int _n = (n); \ + int _delta = width - _n; \ + int _incr = _n + (_delta > 0 ? _delta : 0); \ + if (i + _incr >= maxsize) \ + return 0; \ + if (p) \ + { \ + if (_delta > 0) \ + { \ + if (pad == L_('0')) \ + memset_zero (p, _delta); \ + else \ + memset_space (p, _delta); \ + } \ + f; \ + p += _n; \ + } \ + i += _incr; \ + } while (0) + +#define cpy(n, s) \ + add ((n), \ + if (to_lowcase) \ + memcpy_lowcase (p, (s), _n); \ + else if (to_uppcase) \ + memcpy_uppcase (p, (s), _n); \ + else \ + MEMCPY ((PTR) p, (const PTR) (s), _n)) + +#ifdef COMPILE_WIDE +# define widen(os, ws, l) \ + { \ + mbstate_t __st; \ + const char *__s = os; \ + memset (&__st, '\0', sizeof (__st)); \ + l = __mbsrtowcs (NULL, &__s, 0, &__st); \ + ws = alloca ((l + 1) * sizeof (wchar_t)); \ + (void) __mbsrtowcs (ws, &__s, l, &__st); \ + } +#endif + + +#ifdef COMPILE_WIDE +# define TOUPPER(Ch) towupper (Ch) +# define TOLOWER(Ch) towlower (Ch) +#else +# ifdef _LIBC +# define TOUPPER(Ch) toupper (Ch) +# define TOLOWER(Ch) tolower (Ch) +# else +# define TOUPPER(Ch) (islower (Ch) ? toupper (Ch) : (Ch)) +# define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch)) +# endif +#endif +/* We don't use `isdigit' here since the locale dependent + interpretation is not what we want here. We only need to accept + the arabic digits in the ASCII range. One day there is perhaps a + more reliable way to accept other sets of digits. */ +#define ISDIGIT(Ch) ((unsigned int) (Ch) - L_('0') <= 9) + +static CHAR_T *memcpy_lowcase __P ((CHAR_T *dest, const CHAR_T *src, + size_t len)); + +static CHAR_T * +memcpy_lowcase (dest, src, len) + CHAR_T *dest; + const CHAR_T *src; + size_t len; +{ + while (len-- > 0) + dest[len] = TOLOWER ((UCHAR_T) src[len]); + return dest; +} + +static CHAR_T *memcpy_uppcase __P ((CHAR_T *dest, const CHAR_T *src, + size_t len)); + +static CHAR_T * +memcpy_uppcase (dest, src, len) + CHAR_T *dest; + const CHAR_T *src; + size_t len; +{ + while (len-- > 0) + dest[len] = TOUPPER ((UCHAR_T) src[len]); + return dest; +} + + +#if ! HAVE_TM_GMTOFF +/* Yield the difference between *A and *B, + measured in seconds, ignoring leap seconds. */ +# define tm_diff ftime_tm_diff +static int tm_diff __P ((const struct tm *, const struct tm *)); +static int +tm_diff (a, b) + const struct tm *a; + const struct tm *b; +{ + /* Compute intervening leap days correctly even if year is negative. + Take care to avoid int overflow in leap day calculations, + but it's OK to assume that A and B are close to each other. */ + int a4 = (a->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (a->tm_year & 3); + int b4 = (b->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (b->tm_year & 3); + int a100 = a4 / 25 - (a4 % 25 < 0); + int b100 = b4 / 25 - (b4 % 25 < 0); + int a400 = a100 >> 2; + int b400 = b100 >> 2; + int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400); + int years = a->tm_year - b->tm_year; + int days = (365 * years + intervening_leap_days + + (a->tm_yday - b->tm_yday)); + return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour)) + + (a->tm_min - b->tm_min)) + + (a->tm_sec - b->tm_sec)); +} +#endif /* ! HAVE_TM_GMTOFF */ + + + +/* The number of days from the first day of the first ISO week of this + year to the year day YDAY with week day WDAY. ISO weeks start on + Monday; the first ISO week has the year's first Thursday. YDAY may + be as small as YDAY_MINIMUM. */ +#define ISO_WEEK_START_WDAY 1 /* Monday */ +#define ISO_WEEK1_WDAY 4 /* Thursday */ +#define YDAY_MINIMUM (-366) +static int iso_week_days __P ((int, int)); +#ifdef __GNUC__ +__inline__ +#endif +static int +iso_week_days (yday, wday) + int yday; + int wday; +{ + /* Add enough to the first operand of % to make it nonnegative. */ + int big_enough_multiple_of_7 = (-YDAY_MINIMUM / 7 + 2) * 7; + return (yday + - (yday - wday + ISO_WEEK1_WDAY + big_enough_multiple_of_7) % 7 + + ISO_WEEK1_WDAY - ISO_WEEK_START_WDAY); +} + + +#if !(defined _NL_CURRENT || HAVE_STRFTIME) +static CHAR_T const weekday_name[][10] = + { + L_("Sunday"), L_("Monday"), L_("Tuesday"), L_("Wednesday"), + L_("Thursday"), L_("Friday"), L_("Saturday") + }; +static CHAR_T const month_name[][10] = + { + L_("January"), L_("February"), L_("March"), L_("April"), L_("May"), + L_("June"), L_("July"), L_("August"), L_("September"), L_("October"), + L_("November"), L_("December") + }; +#endif + + +/* When compiling this file, GNU applications can #define my_strftime + to a symbol (typically nstrftime) to get an extended strftime with + extra arguments UT and NS. Emacs is a special case for now, but + this Emacs-specific code can be removed once Emacs's config.h + defines my_strftime. */ +#if defined emacs && !defined my_strftime +# define my_strftime nstrftime +#endif + +#ifdef my_strftime +# define extra_args , ut, ns +# define extra_args_spec int ut; int ns; +# define extra_args_spec_iso , int ut, int ns +#else +# ifdef COMPILE_WIDE +# define my_strftime wcsftime +# else +# define my_strftime strftime +# endif +# define extra_args +# define extra_args_spec +# define extra_args_spec_iso +/* We don't have this information in general. */ +# define ut 0 +# define ns 0 +#endif + +#if !defined _LIBC && HAVE_TZNAME && HAVE_TZSET + /* Solaris 2.5 tzset sometimes modifies the storage returned by localtime. + Work around this bug by copying *tp before it might be munged. */ + size_t _strftime_copytm __P ((char *, size_t, const char *, + const struct tm * extra_args_spec_iso)); + size_t + my_strftime (s, maxsize, format, tp extra_args) + CHAR_T *s; + size_t maxsize; + const CHAR_T *format; + const struct tm *tp; + extra_args_spec + { + struct tm tmcopy; + tmcopy = *tp; + return _strftime_copytm (s, maxsize, format, &tmcopy extra_args); + } +# undef my_strftime +# define my_strftime _strftime_copytm +#endif + + +/* Write information from TP into S according to the format + string FORMAT, writing no more that MAXSIZE characters + (including the terminating '\0') and returning number of + characters written. If S is NULL, nothing will be written + anywhere, so to determine how many characters would be + written, use NULL for S and (size_t) UINT_MAX for MAXSIZE. */ +size_t +my_strftime (s, maxsize, format, tp extra_args) + CHAR_T *s; + size_t maxsize; + const CHAR_T *format; + const struct tm *tp; + extra_args_spec +{ + int hour12 = tp->tm_hour; +#ifdef _NL_CURRENT + /* We cannot make the following values variables since we must delay + the evaluation of these values until really needed since some + expressions might not be valid in every situation. The `struct tm' + might be generated by a strptime() call that initialized + only a few elements. Dereference the pointers only if the format + requires this. Then it is ok to fail if the pointers are invalid. */ +# define a_wkday \ + ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ABDAY_1) + tp->tm_wday)) +# define f_wkday \ + ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(DAY_1) + tp->tm_wday)) +# define a_month \ + ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ABMON_1) + tp->tm_mon)) +# define f_month \ + ((const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(MON_1) + tp->tm_mon)) +# define ampm \ + ((const CHAR_T *) _NL_CURRENT (LC_TIME, tp->tm_hour > 11 \ + ? NLW(PM_STR) : NLW(AM_STR))) + +# define aw_len STRLEN (a_wkday) +# define am_len STRLEN (a_month) +# define ap_len STRLEN (ampm) +#else +# if !HAVE_STRFTIME +# define f_wkday (weekday_name[tp->tm_wday]) +# define f_month (month_name[tp->tm_mon]) +# define a_wkday f_wkday +# define a_month f_month +# define ampm (L_("AMPM") + 2 * (tp->tm_hour > 11)) + + size_t aw_len = 3; + size_t am_len = 3; + size_t ap_len = 2; +# endif +#endif + const char *zone; + size_t i = 0; + CHAR_T *p = s; + const CHAR_T *f; +#if DO_MULTIBYTE && !defined COMPILE_WIDE + const char *format_end = NULL; +#endif + + zone = NULL; +#if HAVE_TM_ZONE + /* The POSIX test suite assumes that setting + the environment variable TZ to a new value before calling strftime() + will influence the result (the %Z format) even if the information in + TP is computed with a totally different time zone. + This is bogus: though POSIX allows bad behavior like this, + POSIX does not require it. Do the right thing instead. */ + zone = (const char *) tp->tm_zone; +#endif +#if HAVE_TZNAME + if (ut) + { + if (! (zone && *zone)) + zone = "GMT"; + } + else + { + /* POSIX.1 8.1.1 requires that whenever strftime() is called, the + time zone names contained in the external variable `tzname' shall + be set as if the tzset() function had been called. */ +# if HAVE_TZSET + tzset (); +# endif + } +#endif + + if (hour12 > 12) + hour12 -= 12; + else + if (hour12 == 0) + hour12 = 12; + + for (f = format; *f != '\0'; ++f) + { + int pad = 0; /* Padding for number ('-', '_', or 0). */ + int modifier; /* Field modifier ('E', 'O', or 0). */ + int digits; /* Max digits for numeric format. */ + int number_value; /* Numeric value to be printed. */ + int negative_number; /* 1 if the number is negative. */ + const CHAR_T *subfmt; + CHAR_T *bufp; + CHAR_T buf[1 + (sizeof (int) < sizeof (time_t) + ? INT_STRLEN_BOUND (time_t) + : INT_STRLEN_BOUND (int))]; + int width = -1; + int to_lowcase = 0; + int to_uppcase = 0; + int change_case = 0; + int format_char; + +#if DO_MULTIBYTE && !defined COMPILE_WIDE + switch (*f) + { + case L_('%'): + break; + + case L_('\b'): case L_('\t'): case L_('\n'): + case L_('\v'): case L_('\f'): case L_('\r'): + case L_(' '): case L_('!'): case L_('"'): case L_('#'): case L_('&'): + case L_('\''): case L_('('): case L_(')'): case L_('*'): case L_('+'): + case L_(','): case L_('-'): case L_('.'): case L_('/'): case L_('0'): + case L_('1'): case L_('2'): case L_('3'): case L_('4'): case L_('5'): + case L_('6'): case L_('7'): case L_('8'): case L_('9'): case L_(':'): + case L_(';'): case L_('<'): case L_('='): case L_('>'): case L_('?'): + case L_('A'): case L_('B'): case L_('C'): case L_('D'): case L_('E'): + case L_('F'): case L_('G'): case L_('H'): case L_('I'): case L_('J'): + case L_('K'): case L_('L'): case L_('M'): case L_('N'): case L_('O'): + case L_('P'): case L_('Q'): case L_('R'): case L_('S'): case L_('T'): + case L_('U'): case L_('V'): case L_('W'): case L_('X'): case L_('Y'): + case L_('Z'): case L_('['): case L_('\\'): case L_(']'): case L_('^'): + case L_('_'): case L_('a'): case L_('b'): case L_('c'): case L_('d'): + case L_('e'): case L_('f'): case L_('g'): case L_('h'): case L_('i'): + case L_('j'): case L_('k'): case L_('l'): case L_('m'): case L_('n'): + case L_('o'): case L_('p'): case L_('q'): case L_('r'): case L_('s'): + case L_('t'): case L_('u'): case L_('v'): case L_('w'): case L_('x'): + case L_('y'): case L_('z'): case L_('{'): case L_('|'): case L_('}'): + case L_('~'): + /* The C Standard requires these 98 characters (plus '%') to + be in the basic execution character set. None of these + characters can start a multibyte sequence, so they need + not be analyzed further. */ + add (1, *p = *f); + continue; + + default: + /* Copy this multibyte sequence until we reach its end, find + an error, or come back to the initial shift state. */ + { + mbstate_t mbstate = mbstate_zero; + size_t len = 0; + size_t fsize; + + if (! format_end) + format_end = f + strlen (f) + 1; + fsize = format_end - f; + + do + { + size_t bytes = mbrlen (f + len, fsize - len, &mbstate); + + if (bytes == 0) + break; + + if (bytes == (size_t) -2) + { + len += strlen (f + len); + break; + } + + if (bytes == (size_t) -1) + { + len++; + break; + } + + len += bytes; + } + while (! mbsinit (&mbstate)); + + cpy (len, f); + f += len - 1; + continue; + } + } + +#else /* ! DO_MULTIBYTE */ + + /* Either multibyte encodings are not supported, they are + safe for formats, so any non-'%' byte can be copied through, + or this is the wide character version. */ + if (*f != L_('%')) + { + add (1, *p = *f); + continue; + } + +#endif /* ! DO_MULTIBYTE */ + + /* Check for flags that can modify a format. */ + while (1) + { + switch (*++f) + { + /* This influences the number formats. */ + case L_('_'): + case L_('-'): + case L_('0'): + pad = *f; + continue; + + /* This changes textual output. */ + case L_('^'): + to_uppcase = 1; + continue; + case L_('#'): + change_case = 1; + continue; + + default: + break; + } + break; + } + + /* As a GNU extension we allow to specify the field width. */ + if (ISDIGIT (*f)) + { + width = 0; + do + { + width *= 10; + width += *f - L_('0'); + ++f; + } + while (ISDIGIT (*f)); + } + + /* Check for modifiers. */ + switch (*f) + { + case L_('E'): + case L_('O'): + modifier = *f++; + break; + + default: + modifier = 0; + break; + } + + /* Now do the specified format. */ + format_char = *f; + switch (format_char) + { +#define DO_NUMBER(d, v) \ + digits = width == -1 ? d : width; \ + number_value = v; goto do_number +#define DO_NUMBER_SPACEPAD(d, v) \ + digits = width == -1 ? d : width; \ + number_value = v; goto do_number_spacepad + + case L_('%'): + if (modifier != 0) + goto bad_format; + add (1, *p = *f); + break; + + case L_('a'): + if (modifier != 0) + goto bad_format; + if (change_case) + { + to_uppcase = 1; + to_lowcase = 0; + } +#if defined _NL_CURRENT || !HAVE_STRFTIME + cpy (aw_len, a_wkday); + break; +#else + goto underlying_strftime; +#endif + + case 'A': + if (modifier != 0) + goto bad_format; + if (change_case) + { + to_uppcase = 1; + to_lowcase = 0; + } +#if defined _NL_CURRENT || !HAVE_STRFTIME + cpy (STRLEN (f_wkday), f_wkday); + break; +#else + goto underlying_strftime; +#endif + + case L_('b'): + case L_('h'): /* POSIX.2 extension. */ + if (change_case) + { + to_uppcase = 1; + to_lowcase = 0; + } + if (modifier != 0) + goto bad_format; +#if defined _NL_CURRENT || !HAVE_STRFTIME + cpy (am_len, a_month); + break; +#else + goto underlying_strftime; +#endif + + case L_('B'): + if (modifier != 0) + goto bad_format; + if (change_case) + { + to_uppcase = 1; + to_lowcase = 0; + } +#if defined _NL_CURRENT || !HAVE_STRFTIME + cpy (STRLEN (f_month), f_month); + break; +#else + goto underlying_strftime; +#endif + + case L_('c'): + if (modifier == L_('O')) + goto bad_format; +#ifdef _NL_CURRENT + if (! (modifier == 'E' + && (*(subfmt = + (const CHAR_T *) _NL_CURRENT (LC_TIME, + NLW(ERA_D_T_FMT))) + != '\0'))) + subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_T_FMT)); +#else +# if HAVE_STRFTIME + goto underlying_strftime; +# else + subfmt = L_("%a %b %e %H:%M:%S %Y"); +# endif +#endif + + subformat: + { + CHAR_T *old_start = p; + size_t len = my_strftime (NULL, (size_t) -1, subfmt, + tp extra_args); + add (len, my_strftime (p, maxsize - i, subfmt, + tp extra_args)); + + if (to_uppcase) + while (old_start < p) + { + *old_start = TOUPPER ((UCHAR_T) *old_start); + ++old_start; + } + } + break; + +#if HAVE_STRFTIME && ! (defined _NL_CURRENT && HAVE_STRUCT_ERA_ENTRY) + underlying_strftime: + { + /* The relevant information is available only via the + underlying strftime implementation, so use that. */ + char ufmt[4]; + char *u = ufmt; + char ubuf[1024]; /* enough for any single format in practice */ + size_t len; + /* Make sure we're calling the actual underlying strftime. + In some cases, config.h contains something like + "#define strftime rpl_strftime". */ +# ifdef strftime +# undef strftime + size_t strftime (); +# endif + + *u++ = '%'; + if (modifier != 0) + *u++ = modifier; + *u++ = format_char; + *u = '\0'; + len = strftime (ubuf, sizeof ubuf, ufmt, tp); + if (len == 0 && ubuf[0] != '\0') + return 0; + cpy (len, ubuf); + } + break; +#endif + + case L_('C'): /* POSIX.2 extension. */ + if (modifier == L_('O')) + goto bad_format; + if (modifier == L_('E')) + { +#if HAVE_STRUCT_ERA_ENTRY + struct era_entry *era = _nl_get_era_entry (tp); + if (era) + { +# ifdef COMPILE_WIDE + size_t len = __wcslen (era->era_wname); + cpy (len, era->era_wname); +# else + size_t len = strlen (era->era_name); + cpy (len, era->era_name); +# endif + break; + } +#else +# if HAVE_STRFTIME + goto underlying_strftime; +# endif +#endif + } + + { + int year = tp->tm_year + TM_YEAR_BASE; + DO_NUMBER (1, year / 100 - (year % 100 < 0)); + } + + case L_('x'): + if (modifier == L_('O')) + goto bad_format; +#ifdef _NL_CURRENT + if (! (modifier == L_('E') + && (*(subfmt = + (const CHAR_T *)_NL_CURRENT (LC_TIME, NLW(ERA_D_FMT))) + != L_('\0')))) + subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_FMT)); + goto subformat; +#else +# if HAVE_STRFTIME + goto underlying_strftime; +# else + /* Fall through. */ +# endif +#endif + case L_('D'): /* POSIX.2 extension. */ + if (modifier != 0) + goto bad_format; + subfmt = L_("%m/%d/%y"); + goto subformat; + + case L_('d'): + if (modifier == L_('E')) + goto bad_format; + + DO_NUMBER (2, tp->tm_mday); + + case L_('e'): /* POSIX.2 extension. */ + if (modifier == L_('E')) + goto bad_format; + + DO_NUMBER_SPACEPAD (2, tp->tm_mday); + + /* All numeric formats set DIGITS and NUMBER_VALUE and then + jump to one of these two labels. */ + + do_number_spacepad: + /* Force `_' flag unless overwritten by `0' flag. */ + if (pad != L_('0')) + pad = L_('_'); + + do_number: + /* Format the number according to the MODIFIER flag. */ + + if (modifier == L_('O') && 0 <= number_value) + { +#ifdef _NL_CURRENT + /* Get the locale specific alternate representation of + the number NUMBER_VALUE. If none exist NULL is returned. */ +# ifdef COMPILE_WIDE + const wchar_t *cp = _nl_get_walt_digit (number_value); +# else + const char *cp = _nl_get_alt_digit (number_value); +# endif + + if (cp != NULL) + { + size_t digitlen = STRLEN (cp); + if (digitlen != 0) + { + cpy (digitlen, cp); + break; + } + } +#else +# if HAVE_STRFTIME + goto underlying_strftime; +# endif +#endif + } + { + unsigned int u = number_value; + + bufp = buf + sizeof (buf) / sizeof (buf[0]); + negative_number = number_value < 0; + + if (negative_number) + u = -u; + + do + *--bufp = u % 10 + L_('0'); + while ((u /= 10) != 0); + } + + do_number_sign_and_padding: + if (negative_number) + *--bufp = L_('-'); + + if (pad != L_('-')) + { + int padding = digits - (buf + (sizeof (buf) / sizeof (buf[0])) + - bufp); + + if (pad == L_('_')) + { + while (0 < padding--) + *--bufp = L_(' '); + } + else + { + bufp += negative_number; + while (0 < padding--) + *--bufp = L_('0'); + if (negative_number) + *--bufp = L_('-'); + } + } + + cpy (buf + sizeof (buf) / sizeof (buf[0]) - bufp, bufp); + break; + + case L_('F'): + if (modifier != 0) + goto bad_format; + subfmt = L_("%Y-%m-%d"); + goto subformat; + + case L_('H'): + if (modifier == L_('E')) + goto bad_format; + + DO_NUMBER (2, tp->tm_hour); + + case L_('I'): + if (modifier == L_('E')) + goto bad_format; + + DO_NUMBER (2, hour12); + + case L_('k'): /* GNU extension. */ + if (modifier == L_('E')) + goto bad_format; + + DO_NUMBER_SPACEPAD (2, tp->tm_hour); + + case L_('l'): /* GNU extension. */ + if (modifier == L_('E')) + goto bad_format; + + DO_NUMBER_SPACEPAD (2, hour12); + + case L_('j'): + if (modifier == L_('E')) + goto bad_format; + + DO_NUMBER (3, 1 + tp->tm_yday); + + case L_('M'): + if (modifier == L_('E')) + goto bad_format; + + DO_NUMBER (2, tp->tm_min); + + case L_('m'): + if (modifier == L_('E')) + goto bad_format; + + DO_NUMBER (2, tp->tm_mon + 1); + + case L_('N'): /* GNU extension. */ + if (modifier == L_('E')) + goto bad_format; + + number_value = ns; + if (width != -1) + { + /* Take an explicit width less than 9 as a precision. */ + int j; + for (j = width; j < 9; j++) + number_value /= 10; + } + + DO_NUMBER (9, number_value); + + case L_('n'): /* POSIX.2 extension. */ + add (1, *p = L_('\n')); + break; + + case L_('P'): + to_lowcase = 1; +#if !defined _NL_CURRENT && HAVE_STRFTIME + format_char = L_('p'); +#endif + /* FALLTHROUGH */ + + case L_('p'): + if (change_case) + { + to_uppcase = 0; + to_lowcase = 1; + } +#if defined _NL_CURRENT || !HAVE_STRFTIME + cpy (ap_len, ampm); + break; +#else + goto underlying_strftime; +#endif + + case L_('R'): /* ISO C99 extension. */ + subfmt = L_("%H:%M"); + goto subformat; + + case L_('r'): /* POSIX.2 extension. */ +#ifdef _NL_CURRENT + if (*(subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, + NLW(T_FMT_AMPM))) + == L_('\0')) +#endif + subfmt = L_("%I:%M:%S %p"); + goto subformat; + + case L_('S'): + if (modifier == L_('E')) + goto bad_format; + + DO_NUMBER (2, tp->tm_sec); + + case L_('s'): /* GNU extension. */ + { + struct tm ltm; + time_t t; + + ltm = *tp; + t = mktime (<m); + + /* Generate string value for T using time_t arithmetic; + this works even if sizeof (long) < sizeof (time_t). */ + + bufp = buf + sizeof (buf) / sizeof (buf[0]); + negative_number = t < 0; + + do + { + int d = t % 10; + t /= 10; + + if (negative_number) + { + d = -d; + + /* Adjust if division truncates to minus infinity. */ + if (0 < -1 % 10 && d < 0) + { + t++; + d += 10; + } + } + + *--bufp = d + L_('0'); + } + while (t != 0); + + digits = 1; + goto do_number_sign_and_padding; + } + + case L_('X'): + if (modifier == L_('O')) + goto bad_format; +#ifdef _NL_CURRENT + if (! (modifier == L_('E') + && (*(subfmt = + (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ERA_T_FMT))) + != L_('\0')))) + subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(T_FMT)); + goto subformat; +#else +# if HAVE_STRFTIME + goto underlying_strftime; +# else + /* Fall through. */ +# endif +#endif + case L_('T'): /* POSIX.2 extension. */ + subfmt = L_("%H:%M:%S"); + goto subformat; + + case L_('t'): /* POSIX.2 extension. */ + add (1, *p = L_('\t')); + break; + + case L_('u'): /* POSIX.2 extension. */ + DO_NUMBER (1, (tp->tm_wday - 1 + 7) % 7 + 1); + + case L_('U'): + if (modifier == L_('E')) + goto bad_format; + + DO_NUMBER (2, (tp->tm_yday - tp->tm_wday + 7) / 7); + + case L_('V'): + case L_('g'): /* ISO C99 extension. */ + case L_('G'): /* ISO C99 extension. */ + if (modifier == L_('E')) + goto bad_format; + { + int year = tp->tm_year + TM_YEAR_BASE; + int days = iso_week_days (tp->tm_yday, tp->tm_wday); + + if (days < 0) + { + /* This ISO week belongs to the previous year. */ + year--; + days = iso_week_days (tp->tm_yday + (365 + __isleap (year)), + tp->tm_wday); + } + else + { + int d = iso_week_days (tp->tm_yday - (365 + __isleap (year)), + tp->tm_wday); + if (0 <= d) + { + /* This ISO week belongs to the next year. */ + year++; + days = d; + } + } + + switch (*f) + { + case L_('g'): + DO_NUMBER (2, (year % 100 + 100) % 100); + + case L_('G'): + DO_NUMBER (1, year); + + default: + DO_NUMBER (2, days / 7 + 1); + } + } + + case L_('W'): + if (modifier == L_('E')) + goto bad_format; + + DO_NUMBER (2, (tp->tm_yday - (tp->tm_wday - 1 + 7) % 7 + 7) / 7); + + case L_('w'): + if (modifier == L_('E')) + goto bad_format; + + DO_NUMBER (1, tp->tm_wday); + + case L_('Y'): + if (modifier == 'E') + { +#if HAVE_STRUCT_ERA_ENTRY + struct era_entry *era = _nl_get_era_entry (tp); + if (era) + { +# ifdef COMPILE_WIDE + subfmt = era->era_wformat; +# else + subfmt = era->era_format; +# endif + goto subformat; + } +#else +# if HAVE_STRFTIME + goto underlying_strftime; +# endif +#endif + } + if (modifier == L_('O')) + goto bad_format; + else + DO_NUMBER (1, tp->tm_year + TM_YEAR_BASE); + + case L_('y'): + if (modifier == L_('E')) + { +#if HAVE_STRUCT_ERA_ENTRY + struct era_entry *era = _nl_get_era_entry (tp); + if (era) + { + int delta = tp->tm_year - era->start_date[0]; + DO_NUMBER (1, (era->offset + + delta * era->absolute_direction)); + } +#else +# if HAVE_STRFTIME + goto underlying_strftime; +# endif +#endif + } + DO_NUMBER (2, (tp->tm_year % 100 + 100) % 100); + + case L_('Z'): + if (change_case) + { + to_uppcase = 0; + to_lowcase = 1; + } + +#if HAVE_TZNAME + /* The tzset() call might have changed the value. */ + if (!(zone && *zone) && tp->tm_isdst >= 0) + zone = tzname[tp->tm_isdst]; +#endif + if (! zone) + zone = ""; /* POSIX.2 requires the empty string here. */ + +#ifdef COMPILE_WIDE + { + /* The zone string is always given in multibyte form. We have + to transform it first. */ + wchar_t *wczone; + size_t len; + widen (zone, wczone, len); + cpy (len, wczone); + } +#else + cpy (strlen (zone), zone); +#endif + break; + + case L_('z'): /* ISO C99 extension. */ + if (tp->tm_isdst < 0) + break; + + { + int diff; +#if HAVE_TM_GMTOFF + diff = tp->tm_gmtoff; +#else + if (ut) + diff = 0; + else + { + struct tm gtm; + struct tm ltm; + time_t lt; + + ltm = *tp; + lt = mktime (<m); + + if (lt == (time_t) -1) + { + /* mktime returns -1 for errors, but -1 is also a + valid time_t value. Check whether an error really + occurred. */ + struct tm tm; + + if (! my_strftime_localtime_r (<, &tm) + || ((ltm.tm_sec ^ tm.tm_sec) + | (ltm.tm_min ^ tm.tm_min) + | (ltm.tm_hour ^ tm.tm_hour) + | (ltm.tm_mday ^ tm.tm_mday) + | (ltm.tm_mon ^ tm.tm_mon) + | (ltm.tm_year ^ tm.tm_year))) + break; + } + + if (! my_strftime_gmtime_r (<, >m)) + break; + + diff = tm_diff (<m, >m); + } +#endif + + if (diff < 0) + { + add (1, *p = L_('-')); + diff = -diff; + } + else + add (1, *p = L_('+')); + + diff /= 60; + DO_NUMBER (4, (diff / 60) * 100 + diff % 60); + } + + case L_('\0'): /* GNU extension: % at end of format. */ + --f; + /* Fall through. */ + default: + /* Unknown format; output the format, including the '%', + since this is most likely the right thing to do if a + multibyte string has been misparsed. */ + bad_format: + { + int flen; + for (flen = 1; f[1 - flen] != L_('%'); flen++) + continue; + cpy (flen, &f[1 - flen]); + } + break; + } + } + + if (p && maxsize != 0) + *p = L_('\0'); + return i; +} + + +#ifdef emacs +/* For Emacs we have a separate interface which corresponds to the normal + strftime function plus the ut argument, but without the ns argument. */ +size_t +emacs_strftimeu (s, maxsize, format, tp, ut) + char *s; + size_t maxsize; + const char *format; + const struct tm *tp; + int ut; +{ + return my_strftime (s, maxsize, format, tp, ut, 0); +} +#endif diff --git a/lib/strtoimax.c b/lib/strtoimax.c new file mode 100644 index 0000000..1cc3b7b --- /dev/null +++ b/lib/strtoimax.c @@ -0,0 +1,104 @@ +/* Convert string representation of a number into an intmax_t value. + + Copyright (C) 1999, 2001, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* Written by Paul Eggert. */ + +#if HAVE_CONFIG_H +# include +#endif + +#if HAVE_INTTYPES_H +# include +#endif + +#if HAVE_STDLIB_H +# include +#endif + +/* ensure we have a "maxint_t" type: */ +#include "inttostr.h" + +#ifndef PARAMS +# if defined PROTOTYPES || defined __STDC__ +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +#endif + +/* Verify a requirement at compile-time (unlike assert, which is runtime). */ +#define verify(name, assertion) struct name { char a[(assertion) ? 1 : -1]; } + +#ifdef UNSIGNED +# ifndef HAVE_DECL_STRTOUL +"this configure-time declaration test was not run" +# endif +# if !HAVE_DECL_STRTOUL +unsigned long strtoul PARAMS ((char const *, char **, int)); +# endif +# ifndef HAVE_DECL_STRTOULL +"this configure-time declaration test was not run" +# endif +# if !HAVE_DECL_STRTOULL && HAVE_UNSIGNED_LONG_LONG +unsigned long long strtoull PARAMS ((char const *, char **, int)); +# endif + +#else + +# ifndef HAVE_DECL_STRTOL +"this configure-time declaration test was not run" +# endif +# if !HAVE_DECL_STRTOL +long strtol PARAMS ((char const *, char **, int)); +# endif +# ifndef HAVE_DECL_STRTOLL +"this configure-time declaration test was not run" +# endif +# if !HAVE_DECL_STRTOLL && HAVE_LONG_LONG +long long strtoll PARAMS ((char const *, char **, int)); +# endif +#endif + +#ifdef UNSIGNED +# undef HAVE_LONG_LONG +# define HAVE_LONG_LONG HAVE_UNSIGNED_LONG_LONG +# define INT uintmax_t +# define strtoimax strtoumax +# define strtol strtoul +# define strtoll strtoull +#else +# define INT intmax_t +#endif + +INT +strtoimax (char const *ptr, char **endptr, int base) +{ +#if HAVE_LONG_LONG + verify (size_is_that_of_long_or_long_long, + (sizeof (INT) == sizeof (long) + || sizeof (INT) == sizeof (long long))); + + if (sizeof (INT) != sizeof (long)) + return strtoll (ptr, endptr, base); +#else + verify (size_is_that_of_long, + sizeof (INT) == sizeof (long)); +#endif + + return strtol (ptr, endptr, base); +} diff --git a/lib/strtol.c b/lib/strtol.c new file mode 100644 index 0000000..bad9fe5 --- /dev/null +++ b/lib/strtol.c @@ -0,0 +1,473 @@ +/* Convert string representation of a number into an integer value. + Copyright (C) 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, + 2007 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@gnu.org. + + 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#if HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define USE_NUMBER_GROUPING +# define STDC_HEADERS +# define HAVE_LIMITS_H +#endif + +#include +#include +#ifndef errno +extern int errno; +#endif +#ifndef __set_errno +# define __set_errno(Val) errno = (Val) +#endif + +#ifdef HAVE_LIMITS_H +# include +#endif + +#ifdef STDC_HEADERS +# include +# include +# include +#else +# ifndef NULL +# define NULL 0 +# endif +#endif + +#ifdef USE_NUMBER_GROUPING +# include "../locale/localeinfo.h" +#endif + +/* Nonzero if we are defining `strtoul' or `strtoull', operating on + unsigned integers. */ +#ifndef UNSIGNED +# define UNSIGNED 0 +# define INT LONG int +#else +# define INT unsigned LONG int +#endif + +/* Determine the name. */ +#ifdef USE_IN_EXTENDED_LOCALE_MODEL +# if UNSIGNED +# ifdef USE_WIDE_CHAR +# ifdef QUAD +# define strtol __wcstoull_l +# else +# define strtol __wcstoul_l +# endif +# else +# ifdef QUAD +# define strtol __strtoull_l +# else +# define strtol __strtoul_l +# endif +# endif +# else +# ifdef USE_WIDE_CHAR +# ifdef QUAD +# define strtol __wcstoll_l +# else +# define strtol __wcstol_l +# endif +# else +# ifdef QUAD +# define strtol __strtoll_l +# else +# define strtol __strtol_l +# endif +# endif +# endif +#else +# if UNSIGNED +# ifdef USE_WIDE_CHAR +# ifdef QUAD +# define strtol wcstoull +# else +# define strtol wcstoul +# endif +# else +# ifdef QUAD +# define strtol strtoull +# else +# define strtol strtoul +# endif +# endif +# else +# ifdef USE_WIDE_CHAR +# ifdef QUAD +# define strtol wcstoll +# else +# define strtol wcstol +# endif +# else +# ifdef QUAD +# define strtol strtoll +# endif +# endif +# endif +#endif + +/* If QUAD is defined, we are defining `strtoll' or `strtoull', + operating on `long long int's. */ +#ifdef QUAD +# define LONG long long +# define STRTOL_LONG_MIN LONG_LONG_MIN +# define STRTOL_LONG_MAX LONG_LONG_MAX +# define STRTOL_ULONG_MAX ULONG_LONG_MAX + +/* The extra casts work around common compiler bugs, + e.g. Cray C 5.0.3.0 when t == time_t. */ +# ifndef TYPE_SIGNED +# define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) +# endif +# ifndef TYPE_MINIMUM +# define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \ + ? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) \ + : (t) 0)) +# endif +# ifndef TYPE_MAXIMUM +# define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t))) +# endif + +# ifndef ULONG_LONG_MAX +# define ULONG_LONG_MAX TYPE_MAXIMUM (unsigned long long) +# endif +# ifndef LONG_LONG_MAX +# define LONG_LONG_MAX TYPE_MAXIMUM (long long int) +# endif +# ifndef LONG_LONG_MIN +# define LONG_LONG_MIN TYPE_MINIMUM (long long int) +# endif + +# if __GNUC__ == 2 && __GNUC_MINOR__ < 7 + /* Work around gcc bug with using this constant. */ + static const unsigned long long int maxquad = ULONG_LONG_MAX; +# undef STRTOL_ULONG_MAX +# define STRTOL_ULONG_MAX maxquad +# endif +#else +# define LONG long + +# ifndef ULONG_MAX +# define ULONG_MAX ((unsigned long) ~(unsigned long) 0) +# endif +# ifndef LONG_MAX +# define LONG_MAX ((long int) (ULONG_MAX >> 1)) +# endif +# define STRTOL_LONG_MIN LONG_MIN +# define STRTOL_LONG_MAX LONG_MAX +# define STRTOL_ULONG_MAX ULONG_MAX +#endif + + +/* We use this code also for the extended locale handling where the + function gets as an additional argument the locale which has to be + used. To access the values we have to redefine the _NL_CURRENT + macro. */ +#ifdef USE_IN_EXTENDED_LOCALE_MODEL +# undef _NL_CURRENT +# define _NL_CURRENT(category, item) \ + (current->values[_NL_ITEM_INDEX (item)].string) +# define LOCALE_PARAM , loc +# define LOCALE_PARAM_DECL __locale_t loc; +#else +# define LOCALE_PARAM +# define LOCALE_PARAM_DECL +#endif + +#if defined _LIBC || defined HAVE_WCHAR_H +# include +#endif + +#ifdef USE_WIDE_CHAR +# include +# define L_(Ch) L##Ch +# define UCHAR_TYPE wint_t +# define STRING_TYPE wchar_t +# ifdef USE_IN_EXTENDED_LOCALE_MODEL +# define ISSPACE(Ch) __iswspace_l ((Ch), loc) +# define ISALPHA(Ch) __iswalpha_l ((Ch), loc) +# define TOUPPER(Ch) __towupper_l ((Ch), loc) +# else +# define ISSPACE(Ch) iswspace (Ch) +# define ISALPHA(Ch) iswalpha (Ch) +# define TOUPPER(Ch) towupper (Ch) +# endif +#else +# if defined STDC_HEADERS || (!defined isascii && !defined HAVE_ISASCII) +# define IN_CTYPE_DOMAIN(c) 1 +# else +# define IN_CTYPE_DOMAIN(c) isascii(c) +# endif +# define L_(Ch) Ch +# define UCHAR_TYPE unsigned char +# define STRING_TYPE char +# ifdef USE_IN_EXTENDED_LOCALE_MODEL +# define ISSPACE(Ch) __isspace_l ((Ch), loc) +# define ISALPHA(Ch) __isalpha_l ((Ch), loc) +# define TOUPPER(Ch) __toupper_l ((Ch), loc) +# else +# define ISSPACE(Ch) (IN_CTYPE_DOMAIN (Ch) && isspace (Ch)) +# define ISALPHA(Ch) (IN_CTYPE_DOMAIN (Ch) && isalpha (Ch)) +# define TOUPPER(Ch) (IN_CTYPE_DOMAIN (Ch) ? toupper (Ch) : (Ch)) +# endif +#endif + +/* For compilers which are ansi but don't define __STDC__, like SGI + Irix-4.0.5 cc, also check whether PROTOTYPES is defined. */ +#if defined (__STDC__) || defined (PROTOTYPES) +# define INTERNAL(X) INTERNAL1(X) +# define INTERNAL1(X) __##X##_internal +# define WEAKNAME(X) WEAKNAME1(X) +#else +# define INTERNAL(X) __/**/X/**/_internal +#endif + +#ifdef USE_NUMBER_GROUPING +/* This file defines a function to check for correct grouping. */ +# include "grouping.h" +#endif + + + +/* Convert NPTR to an `unsigned long int' or `long int' in base BASE. + If BASE is 0 the base is determined by the presence of a leading + zero, indicating octal or a leading "0x" or "0X", indicating hexadecimal. + If BASE is < 2 or > 36, it is reset to 10. + If ENDPTR is not NULL, a pointer to the character after the last + one converted is stored in *ENDPTR. */ + +INT +INTERNAL (strtol) (nptr, endptr, base, group LOCALE_PARAM) + const STRING_TYPE *nptr; + STRING_TYPE **endptr; + int base; + int group; + LOCALE_PARAM_DECL +{ + int negative; + register unsigned LONG int cutoff; + register unsigned int cutlim; + register unsigned LONG int i; + register const STRING_TYPE *s; + register UCHAR_TYPE c; + const STRING_TYPE *save, *end; + int overflow; + +#ifdef USE_NUMBER_GROUPING +# ifdef USE_IN_EXTENDED_LOCALE_MODEL + struct locale_data *current = loc->__locales[LC_NUMERIC]; +# endif + /* The thousands character of the current locale. */ + wchar_t thousands = L'\0'; + /* The numeric grouping specification of the current locale, + in the format described in . */ + const char *grouping; + + if (group) + { + grouping = _NL_CURRENT (LC_NUMERIC, GROUPING); + if (*grouping <= 0 || *grouping == CHAR_MAX) + grouping = NULL; + else + { + /* Figure out the thousands separator character. */ +# if defined _LIBC || defined _HAVE_BTOWC + thousands = __btowc (*_NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP)); + if (thousands == WEOF) + thousands = L'\0'; +# endif + if (thousands == L'\0') + grouping = NULL; + } + } + else + grouping = NULL; +#endif + + if (base < 0 || base == 1 || base > 36) + { + __set_errno (EINVAL); + return 0; + } + + save = s = nptr; + + /* Skip white space. */ + while (ISSPACE (*s)) + ++s; + if (*s == L_('\0')) + goto noconv; + + /* Check for a sign. */ + if (*s == L_('-')) + { + negative = 1; + ++s; + } + else if (*s == L_('+')) + { + negative = 0; + ++s; + } + else + negative = 0; + + /* Recognize number prefix and if BASE is zero, figure it out ourselves. */ + if (*s == L_('0')) + { + if ((base == 0 || base == 16) && TOUPPER (s[1]) == L_('X')) + { + s += 2; + base = 16; + } + else if (base == 0) + base = 8; + } + else if (base == 0) + base = 10; + + /* Save the pointer so we can check later if anything happened. */ + save = s; + +#ifdef USE_NUMBER_GROUPING + if (group) + { + /* Find the end of the digit string and check its grouping. */ + end = s; + for (c = *end; c != L_('\0'); c = *++end) + if ((wchar_t) c != thousands + && ((wchar_t) c < L_('0') || (wchar_t) c > L_('9')) + && (!ISALPHA (c) || (int) (TOUPPER (c) - L_('A') + 10) >= base)) + break; + if (*s == thousands) + end = s; + else + end = correctly_grouped_prefix (s, end, thousands, grouping); + } + else +#endif + end = NULL; + + cutoff = STRTOL_ULONG_MAX / (unsigned LONG int) base; + cutlim = STRTOL_ULONG_MAX % (unsigned LONG int) base; + + overflow = 0; + i = 0; + for (c = *s; c != L_('\0'); c = *++s) + { + if (s == end) + break; + if (c >= L_('0') && c <= L_('9')) + c -= L_('0'); + else if (ISALPHA (c)) + c = TOUPPER (c) - L_('A') + 10; + else + break; + if ((int) c >= base) + break; + /* Check for overflow. */ + if (i > cutoff || (i == cutoff && c > cutlim)) + overflow = 1; + else + { + i *= (unsigned LONG int) base; + i += c; + } + } + + /* Check if anything actually happened. */ + if (s == save) + goto noconv; + + /* Store in ENDPTR the address of one character + past the last character we converted. */ + if (endptr != NULL) + *endptr = (STRING_TYPE *) s; + +#if !UNSIGNED + /* Check for a value that is within the range of + `unsigned LONG int', but outside the range of `LONG int'. */ + if (overflow == 0 + && i > (negative + ? -((unsigned LONG int) (STRTOL_LONG_MIN + 1)) + 1 + : (unsigned LONG int) STRTOL_LONG_MAX)) + overflow = 1; +#endif + + if (overflow) + { + __set_errno (ERANGE); +#if UNSIGNED + return STRTOL_ULONG_MAX; +#else + return negative ? STRTOL_LONG_MIN : STRTOL_LONG_MAX; +#endif + } + + /* Return the result of the appropriate sign. */ + return negative ? -i : i; + +noconv: + /* We must handle a special case here: the base is 0 or 16 and the + first two characters are '0' and 'x', but the rest are no + hexadecimal digits. This is no error case. We return 0 and + ENDPTR points to the `x`. */ + if (endptr != NULL) + { + if (save - nptr >= 2 && TOUPPER (save[-1]) == L_('X') + && save[-2] == L_('0')) + *endptr = (STRING_TYPE *) &save[-1]; + else + /* There was no number to convert. */ + *endptr = (STRING_TYPE *) nptr; + } + + return 0L; +} + +/* External user entry point. */ + +#if _LIBC - 0 == 0 +# undef PARAMS +# if defined (__STDC__) && __STDC__ +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif + +/* Prototype. */ +INT strtol PARAMS ((const STRING_TYPE *nptr, STRING_TYPE **endptr, int base)); +#endif + + +INT +#ifdef weak_function +weak_function +#endif +strtol (nptr, endptr, base LOCALE_PARAM) + const STRING_TYPE *nptr; + STRING_TYPE **endptr; + int base; + LOCALE_PARAM_DECL +{ + return INTERNAL (strtol) (nptr, endptr, base, 0 LOCALE_PARAM); +} diff --git a/lib/strtoll.c b/lib/strtoll.c new file mode 100644 index 0000000..db4f95b --- /dev/null +++ b/lib/strtoll.c @@ -0,0 +1,35 @@ +/* Function to parse a `long long int' from text. + + Copyright (C) 1995, 1996, 1997, 1999, 2001, 2007 Free Software Foundation, Inc. + + This file is part of the GNU C Library. + + 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#define QUAD 1 + +#include "strtol.c" + +#ifdef _LIBC +# ifdef SHARED +# include + +# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2) +compat_symbol (libc, __strtoll_internal, __strtoq_internal, GLIBC_2_0); +# endif + +# endif +weak_alias (strtoll, strtoq) +#endif diff --git a/lib/system.h b/lib/system.h new file mode 100644 index 0000000..466876e --- /dev/null +++ b/lib/system.h @@ -0,0 +1,208 @@ +/* Shared definitions for GNU shar utilities. + + Copyright (C) 1994, 1995, 1996, 2002, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if HAVE_INTTYPES_H +# include +#endif + +#ifndef HAVE_INTMAX_T +#define HAVE_INTMAX_T +typedef long intmax_t; +#endif + +#if !HAVE_DECL_STRTOIMAX && !defined strtoimax +intmax_t strtoimax (); +#endif + +#ifdef STDC_HEADERS +# include +#else +char *getenv (); +#endif + +#if HAVE_STRING_H +# include +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +#else +# include +#endif +#if !HAVE_MEMCPY +# ifndef memcpy +# define memcpy(D, S, N) bcopy (S, D, N) +# endif +#endif +#if !HAVE_STRCHR +# ifndef strchr +# define strchr index +# endif +#endif + +/* Other header files. */ + +#include + +#include +#ifndef errno +extern int errno; +#endif + +#include + +#ifdef HAVE_SYS_WAIT_H +# include +#endif + +/* Get definitions for the file permission bits. */ + +#include + +#ifdef STAT_MACROS_BROKEN +# undef S_ISDIR +# undef S_ISREG +#endif + +#ifndef S_IFMT +# define S_IFMT 0170000 +#endif +#if !defined(S_ISDIR) && defined(S_IFDIR) +# define S_ISDIR(Mode) (((Mode) & S_IFMT) == S_IFDIR) +#endif +#if !defined(S_ISREG) && defined(S_IFREG) +# define S_ISREG(Mode) (((Mode) & S_IFMT) == S_IFREG) +#endif + +#ifndef S_IRWXU +# define S_IRWXU 0700 +#endif +#ifndef S_IRUSR +# define S_IRUSR 0400 +#endif +#ifndef S_IWUSR +# define S_IWUSR 0200 +#endif +#ifndef S_IXUSR +# define S_IXUSR 0100 +#endif + +#ifndef S_IRWXG +# define S_IRWXG 0070 +#endif +#ifndef S_IRGRP +# define S_IRGRP 0040 +#endif +#ifndef S_IWGRP +# define S_IWGRP 0020 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0010 +#endif + +#ifndef S_IRWXO +# define S_IRWXO 0007 +#endif +#ifndef S_IROTH +# define S_IROTH 0004 +#endif +#ifndef S_IWOTH +# define S_IWOTH 0002 +#endif +#ifndef S_IXOTH +# define S_IXOTH 0001 +#endif + +/* System functions. Even if we usually avoid declaring them, we cannot + avoid them all. */ + +#ifdef HAVE_UNISTD_H +# include +#endif + +FILE *fdopen (); +long ftell (); +FILE *popen (); + +#if ! HAVE_FSEEKO +# ifndef fseeko +# define fseeko fseek +# endif +# ifndef ftello +# define ftello ftell +# endif +#endif + +#ifndef SEEK_SET +# define SEEK_SET 0 +#endif + +/* GNU small library functions. */ + +#ifndef __P +# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES +# define __P(Args) Args +# else +# define __P(Args) () +# endif +#endif + +#ifndef PARAMS +# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +#endif + +/* Global functions of the shar package. */ + +void copy_file_encoded __P ((FILE *, FILE *)); +char *get_submitter __P ((char *)); + +/* Debugging the memory allocator. */ + +#if WITH_DMALLOC +# define MALLOC_FUNC_CHECK +# include +#endif + + +/* Some gcc specials. */ +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6) +# define ATTRIBUTE(list) __attribute__ (list) +#else +# define ATTRIBUTE(list) +#endif + +#if __CYGWIN__ +# include +# include /* for setmode */ +#endif + +#if ! defined(O_BINARY) || (O_BINARY == 0) +# define FOPEN_READ_BINARY "r" +# define FOPEN_WRITE_BINARY "w" +#else +# define FOPEN_READ_BINARY "rb" +# define FOPEN_WRITE_BINARY "wb" +#endif diff --git a/lib/whoami.c b/lib/whoami.c new file mode 100644 index 0000000..edaae33 --- /dev/null +++ b/lib/whoami.c @@ -0,0 +1,118 @@ +/* Find out who I am & where I am. + Copyright (C) 1994, 1995, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +#include "system.h" + +/* Size of buffers holding strings. */ +#define STRING_BUFFER_SIZE 64 + +#include + +/* On Ultrix 2.x, uses SYS_NMLEN, which is only defined in + . Sigh! */ + +#ifdef HAVE_UNAME +# ifdef HAVE_LIMITS_H +# include +# endif +# include +# include +#else +# include +#endif + +#ifdef HAVE_UNISTD_H +# include +#endif + +#ifndef _POSIX_VERSION +struct passwd *getpwuid (); +#endif + +/*----------------. +| Get user name. | +`----------------*/ + +static const char * +get_username () +{ + struct passwd *passwd; + + passwd = getpwuid (getuid ()); + endpwent (); + if (passwd == NULL) + return "???"; + return passwd->pw_name; +} + +/*------------------------------------------------------. +| Do uname, gethostname, or read file (/etc/systemid). | +`------------------------------------------------------*/ + +static const char * +get_hostname () +{ +#if HAVE_UNAME + + static struct utsname hostname_buffer; + + uname (&hostname_buffer); + return hostname_buffer.nodename; + +#else +# if HAVE_ETC_SYSTEMID + + FILE *fpsid = fopen ("/etc/systemid", "r"); + static char buffer[STRING_BUFFER_SIZE]; + + if (!fpsid) + return "???"; + fgets (buffer, sizeof (buffer), fpsid); + fclose (fpsid); + buffer[strlen (buffer) - 1] = 0; + return buffer; + +# else + + static char hostname_buffer[STRING_BUFFER_SIZE]; + + gethostname (hostname_buffer, sizeof (hostname_buffer)); + return hostname_buffer; + +# endif +#endif +} + +/*------------------------------------------------------------------. +| Fill BUFFER with a string representing the username and hostname | +| separated by an `@' sign, and return a pointer to the constructed | +| string. If BUFFER is NULL, use an internal buffer instead. | +`------------------------------------------------------------------*/ + +char * +get_submitter (buffer) + char *buffer; +{ + static char static_buffer[STRING_BUFFER_SIZE]; + + if (!buffer) + buffer = static_buffer; + strcpy (buffer, get_username ()); + strcat (buffer, "@"); + return strcat (buffer, get_hostname ()); +} diff --git a/lib/xalloc.h b/lib/xalloc.h new file mode 100644 index 0000000..97bf382 --- /dev/null +++ b/lib/xalloc.h @@ -0,0 +1,88 @@ +/* xalloc.h -- malloc with out-of-memory checking + + Copyright (C) 1990-1998, 1999, 2000, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef XALLOC_H_ +# define XALLOC_H_ + +# ifndef PARAMS +# if defined PROTOTYPES || (defined __STDC__ && __STDC__) +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +# endif + +# ifndef __attribute__ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__ +# define __attribute__(x) +# endif +# endif + +# ifndef ATTRIBUTE_NORETURN +# define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__)) +# endif + +/* Exit value when the requested amount of memory is not available. + It is initialized to EXIT_FAILURE, but the caller may set it to + some other value. */ +extern int xalloc_exit_failure; + +/* If this pointer is non-zero, run the specified function upon each + allocation failure. It is initialized to zero. */ +extern void (*xalloc_fail_func) PARAMS ((void)); + +/* If XALLOC_FAIL_FUNC is undefined or a function that returns, this + message is output. It is translated via gettext. + Its value is "memory exhausted". */ +extern char const xalloc_msg_memory_exhausted[]; + +/* This function is always triggered when memory is exhausted. It is + in charge of honoring the three previous items. This is the + function to call when one wants the program to die because of a + memory allocation failure. */ +extern void xalloc_die PARAMS ((void)) ATTRIBUTE_NORETURN; + +void *xmalloc PARAMS ((size_t n)); +void *xcalloc PARAMS ((size_t n, size_t s)); +void *xrealloc PARAMS ((void *p, size_t n)); +char *xstrdup PARAMS ((const char *str)); + +# define XMALLOC(Type, N_items) ((Type *) xmalloc (sizeof (Type) * (N_items))) +# define XCALLOC(Type, N_items) ((Type *) xcalloc (sizeof (Type), (N_items))) +# define XREALLOC(Ptr, Type, N_items) \ + ((Type *) xrealloc ((void *) (Ptr), sizeof (Type) * (N_items))) + +/* Declare and alloc memory for VAR of type TYPE. */ +# define NEW(Type, Var) Type *(Var) = XMALLOC (Type, 1) + +/* Free VAR only if non NULL. */ +# define XFREE(Var) \ + do { \ + if (Var) \ + free (Var); \ + } while (0) + +/* Return a pointer to a malloc'ed copy of the array SRC of NUM elements. */ +# define CCLONE(Src, Num) \ + (memcpy (xmalloc (sizeof (*Src) * (Num)), (Src), sizeof (*Src) * (Num))) + +/* Return a malloc'ed copy of SRC. */ +# define CLONE(Src) CCLONE (Src, 1) + + +#endif /* !XALLOC_H_ */ diff --git a/lib/xgetcwd.c b/lib/xgetcwd.c new file mode 100644 index 0000000..77da9ed --- /dev/null +++ b/lib/xgetcwd.c @@ -0,0 +1,87 @@ +/* xgetcwd.c -- return current directory with unlimited length + Copyright (C) 1992, 1996, 2000, 2001, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* Written by David MacKenzie . */ + +#if HAVE_CONFIG_H +# include +#endif + +#include +#include +#ifndef errno +extern int errno; +#endif + +#include + +#if HAVE_STDLIB_H +# include +#endif +#if HAVE_UNISTD_H +# include +#endif + +#if HAVE_GETCWD +char *getcwd (); +#else +# include "pathmax.h" +# define INITIAL_BUFFER_SIZE (PATH_MAX + 1) +char *getwd (); +# define getcwd(Buf, Max) getwd (Buf) +#endif + +#include "xalloc.h" + +/* Return the current directory, newly allocated, arbitrarily long. + Return NULL and set errno on error. */ + +char * +xgetcwd () +{ +#if HAVE_GETCWD_NULL + char *cwd = getcwd (NULL, 0); + if (! cwd && errno == ENOMEM) + xalloc_die (); + return cwd; +#else + + /* The initial buffer size for the working directory. A power of 2 + detects arithmetic overflow earlier, but is not required. */ +# ifndef INITIAL_BUFFER_SIZE +# define INITIAL_BUFFER_SIZE 128 +# endif + + size_t buf_size = INITIAL_BUFFER_SIZE; + + while (1) + { + char *buf = xmalloc (buf_size); + char *cwd = getcwd (buf, buf_size); + int saved_errno; + if (cwd) + return cwd; + saved_errno = errno; + free (buf); + if (saved_errno != ERANGE) + return NULL; + buf_size *= 2; + if (buf_size == 0) + xalloc_die (); + } +#endif +} diff --git a/lib/xgetcwd.h b/lib/xgetcwd.h new file mode 100644 index 0000000..fcad613 --- /dev/null +++ b/lib/xgetcwd.h @@ -0,0 +1,27 @@ +/* xgetcwd -- return current directory with unlimited length + Copyright (C) 1995, 2001, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef PARAMS +# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +/* Wrapper function with error checking for standard function. */ +extern char *xgetcwd PARAMS ((void)); diff --git a/lib/xmalloc.c b/lib/xmalloc.c new file mode 100644 index 0000000..eb0357a --- /dev/null +++ b/lib/xmalloc.c @@ -0,0 +1,117 @@ +/* xmalloc.c -- malloc with out of memory checking + + Copyright (C) 1990-1999, 2000, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#if HAVE_CONFIG_H +# include +#endif + +#include + +#if STDC_HEADERS +# include +#else +void *calloc (); +void *malloc (); +void *realloc (); +void free (); +#endif + +#if ENABLE_NLS +# include +# define _(Text) gettext (Text) +#else +# define textdomain(Domain) +# define _(Text) Text +#endif +#define N_(Text) Text + +#include "error.h" +#include "xalloc.h" + +#ifndef EXIT_FAILURE +# define EXIT_FAILURE 1 +#endif + +#ifndef HAVE_DONE_WORKING_MALLOC_CHECK +"you must run the autoconf test for a properly working malloc -- see malloc.m4" +#endif + +#ifndef HAVE_DONE_WORKING_REALLOC_CHECK +"you must run the autoconf test for a properly working realloc --see realloc.m4" +#endif + +/* Exit value when the requested amount of memory is not available. + The caller may set it to some other value. */ +int xalloc_exit_failure = EXIT_FAILURE; + +/* If non NULL, call this function when memory is exhausted. */ +void (*xalloc_fail_func) PARAMS ((void)) = 0; + +/* If XALLOC_FAIL_FUNC is NULL, or does return, display this message + before exiting when memory is exhausted. Goes through gettext. */ +char const xalloc_msg_memory_exhausted[] = N_("memory exhausted"); + +void +xalloc_die (void) +{ + if (xalloc_fail_func) + (*xalloc_fail_func) (); + error (xalloc_exit_failure, 0, "%s", _(xalloc_msg_memory_exhausted)); + /* The `noreturn' cannot be given to error, since it may return if + its first argument is 0. To help compilers understand the + xalloc_die does terminate, call exit. */ + exit (EXIT_FAILURE); +} + +/* Allocate N bytes of memory dynamically, with error checking. */ + +void * +xmalloc (size_t n) +{ + void *p; + + p = malloc (n); + if (p == 0) + xalloc_die (); + return p; +} + +/* Change the size of an allocated block of memory P to N bytes, + with error checking. */ + +void * +xrealloc (void *p, size_t n) +{ + p = realloc (p, n); + if (p == 0) + xalloc_die (); + return p; +} + +/* Allocate memory for N elements of S bytes, with error checking. */ + +void * +xcalloc (size_t n, size_t s) +{ + void *p; + + p = calloc (n, s); + if (p == 0) + xalloc_die (); + return p; +} diff --git a/lib/xstrdup.c b/lib/xstrdup.c new file mode 100644 index 0000000..2a20aa3 --- /dev/null +++ b/lib/xstrdup.c @@ -0,0 +1,38 @@ +/* xstrdup.c -- copy a string with out of memory checking + Copyright (C) 1990, 1996, 1998, 2001, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + +#if HAVE_CONFIG_H +# include +#endif + +#if STDC_HEADERS || HAVE_STRING_H +# include +#else +# include +#endif + +#include + +#include "xalloc.h" + +/* Return a newly allocated copy of STRING. */ + +char * +xstrdup (const char *string) +{ + return strcpy (xmalloc (strlen (string) + 1), string); +} diff --git a/m4/codeset.m4 b/m4/codeset.m4 new file mode 100644 index 0000000..a6e67ec --- /dev/null +++ b/m4/codeset.m4 @@ -0,0 +1,21 @@ +# codeset.m4 serial AM1 (gettext-0.10.40) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +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 +]) diff --git a/m4/error.m4 b/m4/error.m4 new file mode 100644 index 0000000..3fddb5c --- /dev/null +++ b/m4/error.m4 @@ -0,0 +1,13 @@ +#serial 4 + +dnl FIXME: put these prerequisite-only *.m4 files in a separate +dnl directory -- otherwise, they'll conflict with existing files. + +dnl These are the prerequisite macros for GNU's error.c file. +AC_DEFUN([jm_PREREQ_ERROR], +[ + AC_CHECK_FUNCS(strerror vprintf doprnt) + AC_CHECK_DECLS([strerror]) + AC_FUNC_STRERROR_R + AC_HEADER_STDC +]) diff --git a/m4/gettext.m4 b/m4/gettext.m4 new file mode 100644 index 0000000..624a807 --- /dev/null +++ b/m4/gettext.m4 @@ -0,0 +1,549 @@ +# gettext.m4 serial 37 (gettext-0.14.4) +dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +dnl Macro to add for using GNU gettext. + +dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The +dnl default (if it is not specified or empty) is 'no-libtool'. +dnl INTLSYMBOL should be 'external' for packages with no intl directory, +dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. +dnl If INTLSYMBOL 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). If INTLSYMBOL is 'no-libtool', 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. If NEEDSYMBOL is specified and is +dnl 'need-formatstring-macros', then GNU gettext implementations that don't +dnl support the ISO C 99 formatstring macros will be ignored. +dnl INTLDIR 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 If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +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_GNU_GETTEXT], +[ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])])]) + ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])])]) + define([gt_included_intl], ifelse([$1], [external], [no], [yes])) + define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) + + AC_REQUIRE([AM_PO_SUBDIRS])dnl + ifelse(gt_included_intl, yes, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then + dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT + dnl the configure script would need to contain the same shell code + dnl again, outside any 'if'. There are two solutions: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not + dnl documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. + gt_INTL_MACOSX + + dnl Set USE_NLS. + AM_NLS + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + ifelse(gt_included_intl, yes, [ + 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. + + dnl Add a version number to the cache macros. + define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) + define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) + define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) + + AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, + [AC_TRY_LINK([#include +]ifelse([$2], [need-formatstring-macros], +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +], [])[extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings;], + [bindtextdomain ("", ""); +return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], + gt_cv_func_gnugettext_libc=yes, + gt_cv_func_gnugettext_libc=no)]) + + if test "$gt_cv_func_gnugettext_libc" != "yes"; then + dnl Sometimes libintl requires libiconv, so first search for libiconv. + ifelse(gt_included_intl, yes, , [ + AM_ICONV_LINK + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + gt_cv_func_gnugettext_libintl, + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + dnl Now see whether libintl exists and does not depend on libiconv. + AC_TRY_LINK([#include +]ifelse([$2], [need-formatstring-macros], +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +], [])[extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + gt_cv_func_gnugettext_libintl=yes, + gt_cv_func_gnugettext_libintl=no) + dnl Now see whether libintl exists and depends on libiconv. + if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +]ifelse([$2], [need-formatstring-macros], +[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +changequote(,)dnl +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +changequote([,])dnl +], [])[extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")]ifelse([$2], [need-ngettext], [ + * ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + gt_cv_func_gnugettext_libintl=yes + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + 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-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included 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. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions to use GNU gettext tools. + CATOBJEXT=.gmo + fi + ]) + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Some extra flags are needed during linking. + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + AC_DEFINE(ENABLE_NLS, 1, + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext_libintl" = "yes"; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if test "$gt_cv_func_gnugettext_libintl" = "yes"; then + AC_MSG_CHECKING([how to link with libintl]) + AC_MSG_RESULT([$LIBINTL]) + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) + fi + + dnl For backward compatibility. Some packages may be using this. + AC_DEFINE(HAVE_GETTEXT, 1, + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE(HAVE_DCGETTEXT, 1, + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + 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-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl Make all variables we use known to autoconf. + AC_SUBST(BUILD_INCLUDED_LIBINTL) + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATOBJEXT) + + 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 For backward compatibility. Some Makefiles may be using this. + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + AC_SUBST(INTLOBJS) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix + AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST(INTLLIBS) + + dnl Make all documented variables known to autoconf. + AC_SUBST(LIBINTL) + AC_SUBST(LTLIBINTL) + AC_SUBST(POSUB) +]) + + +dnl Checks for all prerequisites of the intl subdirectory, +dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, +dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. +AC_DEFUN([AM_INTL_SUBDIR], +[ + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_MKINSTALLDIRS])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([gt_GLIBC2])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([bh_C_SIGNED])dnl + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([gl_AC_TYPE_LONG_LONG])dnl + AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl + AC_REQUIRE([gt_TYPE_WCHAR_T])dnl + AC_REQUIRE([gt_TYPE_WINT_T])dnl + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_REQUIRE([gt_TYPE_INTMAX_T]) + AC_REQUIRE([gt_PRINTF_POSIX]) + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([gl_GLIBC21])dnl + AC_REQUIRE([gt_INTDIV0])dnl + AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl + AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl + AC_REQUIRE([gt_INTTYPES_PRI])dnl + AC_REQUIRE([gl_XSIZE])dnl + AC_REQUIRE([gt_INTL_MACOSX])dnl + + AC_CHECK_TYPE([ptrdiff_t], , + [AC_DEFINE([ptrdiff_t], [long], + [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) + ]) + 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([asprintf fwprintf getcwd getegid geteuid getgid getuid \ +mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ +strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ +__fsetlocking]) + + dnl Use the _snprintf function only if it is declared (because on NetBSD it + dnl is defined as a weak alias of snprintf; we prefer to use the latter). + gt_CHECK_DECL(_snprintf, [#include ]) + gt_CHECK_DECL(_snwprintf, [#include ]) + + dnl Use the *_unlocked functions only if they are declared. + dnl (because some of them were defined without being declared in Solaris + dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built + dnl on Solaris 2.5.1 to run on Solaris 2.6). + dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. + gt_CHECK_DECL(feof_unlocked, [#include ]) + gt_CHECK_DECL(fgets_unlocked, [#include ]) + gt_CHECK_DECL(getc_unlocked, [#include ]) + + case $gt_cv_func_printf_posix in + *yes) HAVE_POSIX_PRINTF=1 ;; + *) HAVE_POSIX_PRINTF=0 ;; + esac + AC_SUBST([HAVE_POSIX_PRINTF]) + if test "$ac_cv_func_asprintf" = yes; then + HAVE_ASPRINTF=1 + else + HAVE_ASPRINTF=0 + fi + AC_SUBST([HAVE_ASPRINTF]) + if test "$ac_cv_func_snprintf" = yes; then + HAVE_SNPRINTF=1 + else + HAVE_SNPRINTF=0 + fi + AC_SUBST([HAVE_SNPRINTF]) + if test "$ac_cv_func_wprintf" = yes; then + HAVE_WPRINTF=1 + else + HAVE_WPRINTF=0 + fi + AC_SUBST([HAVE_WPRINTF]) + + AM_ICONV + AM_LANGINFO_CODESET + if test $ac_cv_header_locale_h = yes; then + gt_LC_MESSAGES + fi + + if test -n "$INTL_MACOSX_LIBS"; then + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + 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 Checks for special options needed on MacOS X. +dnl Defines INTL_MACOSX_LIBS. +AC_DEFUN([gt_INTL_MACOSX], +[ + dnl Check for API introduced in MacOS X 10.2. + AC_CACHE_CHECK([for CFPreferencesCopyAppValue], + gt_cv_func_CFPreferencesCopyAppValue, + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + gt_save_LIBS="$LIBS" + LIBS="$LIBS -framework CoreFoundation" + AC_TRY_LINK([#include ], + [CFPreferencesCopyAppValue(NULL, NULL)], + [gt_cv_func_CFPreferencesCopyAppValue=yes], + [gt_cv_func_CFPreferencesCopyAppValue=no]) + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1, + [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) + fi + dnl Check for API introduced in MacOS X 10.3. + AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent, + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I/System/Library/Frameworks/CoreFoundation.framework/Headers" + gt_save_LIBS="$LIBS" + LIBS="$LIBS -framework CoreFoundation" + AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], + [gt_cv_func_CFLocaleCopyCurrent=yes], + [gt_cv_func_CFLocaleCopyCurrent=no]) + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1, + [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + AC_SUBST([INTL_MACOSX_LIBS]) +]) + + +dnl gt_CHECK_DECL(FUNC, INCLUDES) +dnl Check whether a function is declared. +AC_DEFUN([gt_CHECK_DECL], +[ + AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, + [AC_TRY_COMPILE([$2], [ +#ifndef $1 + char *p = (char *) $1; +#endif +], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) + if test $ac_cv_have_decl_$1 = yes; then + gt_value=1 + else + gt_value=0 + fi + AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], + [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) +]) + + +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) diff --git a/m4/glibc2.m4 b/m4/glibc2.m4 new file mode 100644 index 0000000..e8f5bfe --- /dev/null +++ b/m4/glibc2.m4 @@ -0,0 +1,30 @@ +# glibc2.m4 serial 1 +dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Test for the GNU C Library, version 2.0 or newer. +# From Bruno Haible. + +AC_DEFUN([gt_GLIBC2], + [ + AC_CACHE_CHECK(whether we are using the GNU C Library 2 or newer, + ac_cv_gnu_library_2, + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ >= 2) + Lucky GNU user + #endif +#endif + ], + ac_cv_gnu_library_2=yes, + ac_cv_gnu_library_2=no) + ] + ) + AC_SUBST(GLIBC2) + GLIBC2="$ac_cv_gnu_library_2" + ] +) diff --git a/m4/glibc21.m4 b/m4/glibc21.m4 new file mode 100644 index 0000000..d95fd98 --- /dev/null +++ b/m4/glibc21.m4 @@ -0,0 +1,30 @@ +# glibc21.m4 serial 3 +dnl Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Test for the GNU C Library, version 2.1 or newer. +# From Bruno Haible. + +AC_DEFUN([gl_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" + ] +) diff --git a/m4/iconv.m4 b/m4/iconv.m4 new file mode 100644 index 0000000..654c415 --- /dev/null +++ b/m4/iconv.m4 @@ -0,0 +1,101 @@ +# iconv.m4 serial AM4 (gettext-0.11.3) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], +[ + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([iconv]) +]) + +AC_DEFUN([AM_ICONV_LINK], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + + dnl Add $INCICONV to CPPFLAGS before performing the following checks, + dnl because if the user has installed libiconv and not disabled its use + dnl via --without-libiconv-prefix, he wants to use it. The first + dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. + am_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) + + 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 $LIBICONV" + 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.]) + fi + if test "$am_cv_lib_iconv" = yes; then + AC_MSG_CHECKING([how to link with libiconv]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST(LIBICONV) + AC_SUBST(LTLIBICONV) +]) + +AC_DEFUN([AM_ICONV], +[ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + 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 +]) diff --git a/m4/intdiv0.m4 b/m4/intdiv0.m4 new file mode 100644 index 0000000..b8d7817 --- /dev/null +++ b/m4/intdiv0.m4 @@ -0,0 +1,70 @@ +# intdiv0.m4 serial 1 (gettext-0.11.3) +dnl Copyright (C) 2002 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([gt_INTDIV0], +[ + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + + AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], + gt_cv_int_divbyzero_sigfpe, + [ + AC_TRY_RUN([ +#include +#include + +static void +#ifdef __cplusplus +sigfpe_handler (int sig) +#else +sigfpe_handler (sig) int sig; +#endif +{ + /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ + exit (sig != SIGFPE); +} + +int x = 1; +int y = 0; +int z; +int nan; + +int main () +{ + signal (SIGFPE, sigfpe_handler); +/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ +#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) + signal (SIGTRAP, sigfpe_handler); +#endif +/* Linux/SPARC yields signal SIGILL. */ +#if defined (__sparc__) && defined (__linux__) + signal (SIGILL, sigfpe_handler); +#endif + + z = x / y; + nan = y / y; + exit (1); +} +], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, + [ + # Guess based on the CPU. + case "$host_cpu" in + alpha* | i[34567]86 | m68k | s390*) + gt_cv_int_divbyzero_sigfpe="guessing yes";; + *) + gt_cv_int_divbyzero_sigfpe="guessing no";; + esac + ]) + ]) + case "$gt_cv_int_divbyzero_sigfpe" in + *yes) value=1;; + *) value=0;; + esac + AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, + [Define if integer division by zero raises signal SIGFPE.]) +]) diff --git a/m4/intmax.m4 b/m4/intmax.m4 new file mode 100644 index 0000000..d99c999 --- /dev/null +++ b/m4/intmax.m4 @@ -0,0 +1,30 @@ +# intmax.m4 serial 2 (gettext-0.14.2) +dnl Copyright (C) 2002-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether the system has the 'intmax_t' type, but don't attempt to +dnl find a replacement if it is lacking. + +AC_DEFUN([gt_TYPE_INTMAX_T], +[ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t, + [AC_TRY_COMPILE([ +#include +#include +#if HAVE_STDINT_H_WITH_UINTMAX +#include +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +#include +#endif +], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)]) + if test $gt_cv_c_intmax_t = yes; then + AC_DEFINE(HAVE_INTMAX_T, 1, + [Define if you have the 'intmax_t' type in or .]) + fi +]) diff --git a/m4/inttypes-pri.m4 b/m4/inttypes-pri.m4 new file mode 100644 index 0000000..4d56a9a --- /dev/null +++ b/m4/inttypes-pri.m4 @@ -0,0 +1,30 @@ +# inttypes-pri.m4 serial 1 (gettext-0.11.4) +dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +# Define PRI_MACROS_BROKEN if exists and defines the PRI* +# macros to non-string values. This is the case on AIX 4.3.3. + +AC_DEFUN([gt_INTTYPES_PRI], +[ + AC_REQUIRE([gt_HEADER_INTTYPES_H]) + if test $gt_cv_header_inttypes_h = yes; then + AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], + gt_cv_inttypes_pri_broken, + [ + AC_TRY_COMPILE([#include +#ifdef PRId32 +char *p = PRId32; +#endif +], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) + ]) + fi + if test "$gt_cv_inttypes_pri_broken" = yes; then + AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, + [Define if exists and defines unusable PRI* macros.]) + fi +]) diff --git a/m4/inttypes.m4 b/m4/inttypes.m4 new file mode 100644 index 0000000..779bcea --- /dev/null +++ b/m4/inttypes.m4 @@ -0,0 +1,25 @@ +# inttypes.m4 serial 1 (gettext-0.11.4) +dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_INTTYPES_H if exists and doesn't clash with +# . + +AC_DEFUN([gt_HEADER_INTTYPES_H], +[ + AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, + [ + AC_TRY_COMPILE( + [#include +#include ], + [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) + ]) + if test $gt_cv_header_inttypes_h = yes; then + AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, + [Define if exists and doesn't clash with .]) + fi +]) diff --git a/m4/inttypes_h.m4 b/m4/inttypes_h.m4 new file mode 100644 index 0000000..a5d075d --- /dev/null +++ b/m4/inttypes_h.m4 @@ -0,0 +1,26 @@ +# inttypes_h.m4 serial 6 +dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + +AC_DEFUN([gl_AC_HEADER_INTTYPES_H], +[ + AC_CACHE_CHECK([for inttypes.h], gl_cv_header_inttypes_h, + [AC_TRY_COMPILE( + [#include +#include ], + [uintmax_t i = (uintmax_t) -1;], + gl_cv_header_inttypes_h=yes, + gl_cv_header_inttypes_h=no)]) + if test $gl_cv_header_inttypes_h = yes; then + AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) diff --git a/m4/lcmessage.m4 b/m4/lcmessage.m4 new file mode 100644 index 0000000..19aa77e --- /dev/null +++ b/m4/lcmessage.m4 @@ -0,0 +1,30 @@ +# lcmessage.m4 serial 4 (gettext-0.14.2) +dnl Copyright (C) 1995-2002, 2004-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995. + +# Check whether LC_MESSAGES is available in . + +AC_DEFUN([gt_LC_MESSAGES], +[ + AC_CACHE_CHECK([for LC_MESSAGES], gt_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + gt_cv_val_LC_MESSAGES=yes, gt_cv_val_LC_MESSAGES=no)]) + if test $gt_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, + [Define if your file defines LC_MESSAGES.]) + fi +]) diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4 new file mode 100644 index 0000000..96c4e2c --- /dev/null +++ b/m4/lib-ld.m4 @@ -0,0 +1,110 @@ +# lib-ld.m4 serial 3 (gettext-0.13) +dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Subroutines of libtool.m4, +dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision +dnl with libtool.m4. + +dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 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 +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(acl_cv_path_LD, +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$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 + acl_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. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$acl_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_LIB_PROG_LD_GNU +]) diff --git a/m4/lib-link.m4 b/m4/lib-link.m4 new file mode 100644 index 0000000..ea0b0c4 --- /dev/null +++ b/m4/lib-link.m4 @@ -0,0 +1,553 @@ +# lib-link.m4 serial 6 (gettext-0.14.3) +dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_PREREQ(2.50) + +dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and +dnl augments the CPPFLAGS variable. +AC_DEFUN([AC_LIB_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + ac_cv_lib[]Name[]_libs="$LIB[]NAME" + ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" + ac_cv_lib[]Name[]_cppflags="$INC[]NAME" + ]) + LIB[]NAME="$ac_cv_lib[]Name[]_libs" + LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" + INC[]NAME="$ac_cv_lib[]Name[]_cppflags" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the + dnl results of this search when this library appears as a dependency. + HAVE_LIB[]NAME=yes + undefine([Name]) + undefine([NAME]) +]) + +dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) +dnl searches for libname and the libraries corresponding to explicit and +dnl implicit dependencies, together with the specified include files and +dnl the ability to compile and link the specified testcode. If found, it +dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and +dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and +dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs +dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. +AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + + dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + + dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, + dnl because if the user has installed lib[]Name and not disabled its use + dnl via --without-lib[]Name-prefix, he wants to use it. + ac_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + + AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ + ac_save_LIBS="$LIBS" + LIBS="$LIBS $LIB[]NAME" + AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) + LIBS="$ac_save_LIBS" + ]) + if test "$ac_cv_lib[]Name" = yes; then + HAVE_LIB[]NAME=yes + AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) + AC_MSG_CHECKING([how to link with lib[]$1]) + AC_MSG_RESULT([$LIB[]NAME]) + else + HAVE_LIB[]NAME=no + dnl If $LIB[]NAME didn't lead to a usable library, we don't need + dnl $INC[]NAME either. + CPPFLAGS="$ac_save_CPPFLAGS" + LIB[]NAME= + LTLIB[]NAME= + fi + AC_SUBST([HAVE_LIB]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + undefine([Name]) + undefine([NAME]) +]) + +dnl Determine the platform dependent parameters needed to use rpath: +dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, +dnl hardcode_direct, hardcode_minus_L. +AC_DEFUN([AC_LIB_RPATH], +[ + dnl Tell automake >= 1.10 to complain if config.rpath is missing. + m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) + AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE(rpath, + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib$1-prefix], +[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib + --without-lib$1-prefix don't search for lib$1 in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then + found_dir="$additional_libdir" + found_so="$additional_libdir/lib$name.$shlibext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then + found_dir="$dir" + found_so="$dir/lib$name.$shlibext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */lib | */lib/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4 new file mode 100644 index 0000000..0d895ca --- /dev/null +++ b/m4/lib-prefix.m4 @@ -0,0 +1,153 @@ +# lib-prefix.m4 serial 4 (gettext-0.14.2) +dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +dnl require excessive bracketing. +ifdef([AC_HELP_STRING], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/lib" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/lib"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/lib"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) diff --git a/m4/longdouble.m4 b/m4/longdouble.m4 new file mode 100644 index 0000000..40cd7ce --- /dev/null +++ b/m4/longdouble.m4 @@ -0,0 +1,28 @@ +# longdouble.m4 serial 1 (gettext-0.12) +dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether the compiler supports the 'long double' type. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_LONGDOUBLE], +[ + AC_CACHE_CHECK([for long double], gt_cv_c_long_double, + [if test "$GCC" = yes; then + gt_cv_c_long_double=yes + else + AC_TRY_COMPILE([ + /* The Stardent Vistra knows sizeof(long double), but does not support it. */ + long double foo = 0.0; + /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ + int array [2*(sizeof(long double) >= sizeof(double)) - 1]; + ], , + gt_cv_c_long_double=yes, gt_cv_c_long_double=no) + fi]) + if test $gt_cv_c_long_double = yes; then + AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.]) + fi +]) diff --git a/m4/longlong.m4 b/m4/longlong.m4 new file mode 100644 index 0000000..7b399e0 --- /dev/null +++ b/m4/longlong.m4 @@ -0,0 +1,23 @@ +# longlong.m4 serial 5 +dnl Copyright (C) 1999-2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_LONG_LONG if 'long long' works. + +AC_DEFUN([gl_AC_TYPE_LONG_LONG], +[ + AC_CACHE_CHECK([for long long], ac_cv_type_long_long, + [AC_TRY_LINK([long long ll = 1LL; int i = 63;], + [long long llmax = (long long) -1; + return ll << i | ll >> i | llmax / ll | llmax % ll;], + ac_cv_type_long_long=yes, + ac_cv_type_long_long=no)]) + if test $ac_cv_type_long_long = yes; then + AC_DEFINE(HAVE_LONG_LONG, 1, + [Define if you have the 'long long' type.]) + fi +]) diff --git a/m4/malloc.m4 b/m4/malloc.m4 new file mode 100644 index 0000000..cb5cff3 --- /dev/null +++ b/m4/malloc.m4 @@ -0,0 +1,35 @@ +#serial 6 + +dnl From Jim Meyering. +dnl Determine whether malloc accepts 0 as its argument. +dnl If it doesn't, arrange to use the replacement function. +dnl + +AC_DEFUN([jm_FUNC_MALLOC], +[ + dnl xmalloc.c requires that this symbol be defined so it doesn't + dnl mistakenly use a broken malloc -- as it might if this test were omitted. + AC_DEFINE(HAVE_DONE_WORKING_MALLOC_CHECK, 1, + [Define if the malloc check has been performed. ]) + + AC_CACHE_CHECK([whether malloc(0) returns a non-NULL pointer], + jm_cv_func_working_malloc, + [AC_TRY_RUN([ + char *malloc (); + int + main () + { + exit (malloc (0) ? 0 : 1); + } + ], + jm_cv_func_working_malloc=yes, + jm_cv_func_working_malloc=no, + dnl When crosscompiling, assume malloc(0) returns NULL. + jm_cv_func_working_malloc=no) + ]) + if test $jm_cv_func_working_malloc = no; then + AC_LIBOBJ(malloc) + AC_DEFINE(malloc, rpl_malloc, + [Define to rpl_malloc if the replacement function should be used.]) + fi +]) diff --git a/m4/nls.m4 b/m4/nls.m4 new file mode 100644 index 0000000..2082c3b --- /dev/null +++ b/m4/nls.m4 @@ -0,0 +1,51 @@ +# nls.m4 serial 2 (gettext-0.14.3) +dnl Copyright (C) 1995-2003, 2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ(2.50) + +AC_DEFUN([AM_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) +]) + +AC_DEFUN([AM_MKINSTALLDIRS], +[ + dnl Tell automake >= 1.10 to complain if mkinstalldirs is missing. + m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([mkinstalldirs])]) + 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 it. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + case "$ac_aux_dir" in + /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; + *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; + esac + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) +]) diff --git a/m4/po.m4 b/m4/po.m4 new file mode 100644 index 0000000..f2795ee --- /dev/null +++ b/m4/po.m4 @@ -0,0 +1,429 @@ +# po.m4 serial 7 (gettext-0.14.3) +dnl Copyright (C) 1995-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ(2.50) + +dnl Checks for all prerequisites of the po subdirectory. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_MKINSTALLDIRS])dnl + AC_REQUIRE([AM_NLS])dnl + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + dnl Search for GNU xgettext 0.12 or newer in the PATH. + dnl The first test excludes Solaris xgettext and early GNU xgettext versions. + dnl The second test excludes FreeBSD xgettext. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + + dnl Search for GNU msgmerge 0.11 or newer in the PATH. + AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, + [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + + 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 && + (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` + AC_MSG_RESULT( + [found $GMSGFMT 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 --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && + (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then + : ; + else + AC_MSG_RESULT( + [found xgettext program is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.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 + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + 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" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; 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 + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) + +dnl Postprocesses a Makefile in a directory containing PO files. +AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], +[ + # When this code is run, in config.status, two variables have already been + # set: + # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, + # - LINGUAS is the value of the environment variable LINGUAS at configure + # time. + +changequote(,)dnl + # 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 + + # Find a way to echo strings without interpreting backslash. + if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='echo' + else + if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='printf %s\n' + else + echo_func () { + cat < "$ac_file.tmp" + if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + cat >> "$ac_file.tmp" < /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + cat >> "$ac_file.tmp" <> "$ac_file.tmp" < +#include +/* The string "%2$d %1$d", with dollar characters protected from the shell's + dollar expansion (possibly an autoconf bug). */ +static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; +static char buf[100]; +int main () +{ + sprintf (buf, format, 33, 55); + return (strcmp (buf, "55 33") != 0); +}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no, + [ + AC_EGREP_CPP(notposix, [ +#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ + notposix +#endif + ], gt_cv_func_printf_posix="guessing no", + gt_cv_func_printf_posix="guessing yes") + ]) + ]) + case $gt_cv_func_printf_posix in + *yes) + AC_DEFINE(HAVE_POSIX_PRINTF, 1, + [Define if your printf() function supports format strings with positions.]) + ;; + esac +]) diff --git a/m4/progtest.m4 b/m4/progtest.m4 new file mode 100644 index 0000000..a56365c --- /dev/null +++ b/m4/progtest.m4 @@ -0,0 +1,92 @@ +# progtest.m4 serial 4 (gettext-0.14.2) +dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1996. + +AC_PREREQ(2.50) + +# Search path for a program which passes the given test. + +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], +[ +# Prepare PATH_SEPARATOR. +# 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 + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# 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. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + 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/m4/realloc.m4 b/m4/realloc.m4 new file mode 100644 index 0000000..7695e89 --- /dev/null +++ b/m4/realloc.m4 @@ -0,0 +1,35 @@ +#serial 6 + +dnl From Jim Meyering. +dnl Determine whether realloc works when both arguments are 0. +dnl If it doesn't, arrange to use the replacement function. +dnl + +AC_DEFUN([jm_FUNC_REALLOC], +[ + dnl xmalloc.c requires that this symbol be defined so it doesn't + dnl mistakenly use a broken realloc -- as it might if this test were omitted. + AC_DEFINE(HAVE_DONE_WORKING_REALLOC_CHECK, 1, + [Define if the realloc check has been performed. ]) + + AC_CACHE_CHECK([whether realloc(0,0) returns a non-NULL pointer], + jm_cv_func_working_realloc, + [AC_TRY_RUN([ + char *realloc (); + int + main () + { + exit (realloc (0, 0) ? 0 : 1); + } + ], + jm_cv_func_working_realloc=yes, + jm_cv_func_working_realloc=no, + dnl When crosscompiling, assume realloc(0,0) returns NULL. + jm_cv_func_working_realloc=no) + ]) + if test $jm_cv_func_working_realloc = no; then + AC_LIBOBJ(realloc) + AC_DEFINE(realloc, rpl_realloc, + [Define to rpl_realloc if the replacement function should be used.]) + fi +]) diff --git a/m4/sharutils.m4 b/m4/sharutils.m4 new file mode 100644 index 0000000..381b042 --- /dev/null +++ b/m4/sharutils.m4 @@ -0,0 +1,45 @@ +# sharutils.m4 serial 2 (sharutils-4.3.75) +dnl Copyright (C) 2002 Free Software Foundation, Inc. +dnl This file is free software, distributed under the terms of the GNU +dnl General Public License. + +dnl Authors: +dnl Karl Eichwalder , 2002. + +AC_DEFUN([ke_CHECK_COMPRESS], +[ + AC_PATH_PROGS(COMPRESS, compress, no) + if test $COMPRESS != no; then + cp $srcdir/COPYING tCOPYING + AC_MSG_CHECKING(whether compress works) + if compress tCOPYING >/dev/null 2>&1; then + AC_DEFINE([HAVE_COMPRESS], 1, + [Define if compress is available.]) + AC_MSG_RESULT(yes) + else + COMPRESS=no + AC_MSG_RESULT([no, installing compress-dummy]) + fi + rm -f tCOPYING tCOPYING.Z + fi + if test $COMPRESS = no; then + ADD_SCRIPT="$ADD_SCRIPT compress-dummy" + AC_CONFIG_FILES([src/compress-dummy]) + fi +]) + +AC_DEFUN([ke_CHECK_COMPRESS_AND_LINK], +[ + ke_CHECK_COMPRESS + if test $COMPRESS = no; then + AC_ARG_ENABLE(compress-link, + [AS_HELP_STRING([--enable-compress-link], + [install compress link if the program is missing])]) + if test "x$enable_compress_link" = xyes; then + INSTALL_COMPRESS_LINK="compress-link" + else + INSTALL_COMPRESS_LINK= + fi + fi + AC_SUBST(INSTALL_COMPRESS_LINK) +]) diff --git a/m4/signed.m4 b/m4/signed.m4 new file mode 100644 index 0000000..048f593 --- /dev/null +++ b/m4/signed.m4 @@ -0,0 +1,17 @@ +# signed.m4 serial 1 (gettext-0.10.40) +dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([bh_C_SIGNED], +[ + AC_CACHE_CHECK([for signed], bh_cv_c_signed, + [AC_TRY_COMPILE(, [signed char x;], bh_cv_c_signed=yes, bh_cv_c_signed=no)]) + if test $bh_cv_c_signed = no; then + AC_DEFINE(signed, , + [Define to empty if the C compiler doesn't support this keyword.]) + fi +]) diff --git a/m4/size_max.m4 b/m4/size_max.m4 new file mode 100644 index 0000000..4fe81c7 --- /dev/null +++ b/m4/size_max.m4 @@ -0,0 +1,59 @@ +# size_max.m4 serial 2 +dnl Copyright (C) 2003 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([gl_SIZE_MAX], +[ + AC_CHECK_HEADERS(stdint.h) + dnl First test whether the system already has SIZE_MAX. + AC_MSG_CHECKING([for SIZE_MAX]) + result= + AC_EGREP_CPP([Found it], [ +#include +#if HAVE_STDINT_H +#include +#endif +#ifdef SIZE_MAX +Found it +#endif +], result=yes) + if test -z "$result"; then + dnl Define it ourselves. Here we assume that the type 'size_t' is not wider + dnl than the type 'unsigned long'. + dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr', + dnl which is guaranteed to work from LONG_MIN to LONG_MAX. + _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi, + [#include ], result=?) + _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo, + [#include ], result=?) + _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint, + [#include ], result=?) + if test "$fits_in_uint" = 1; then + dnl Even though SIZE_MAX fits in an unsigned int, it must be of type + dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. + AC_TRY_COMPILE([#include + extern size_t foo; + extern unsigned long foo; + ], [], fits_in_uint=0) + fi + if test -z "$result"; then + if test "$fits_in_uint" = 1; then + result="$res_hi$res_lo"U + else + result="$res_hi$res_lo"UL + fi + else + dnl Shouldn't happen, but who knows... + result='~(size_t)0' + fi + fi + AC_MSG_RESULT([$result]) + if test "$result" != yes; then + AC_DEFINE_UNQUOTED([SIZE_MAX], [$result], + [Define as the maximum value of type 'size_t', if the system doesn't define it.]) + fi +]) diff --git a/m4/stdint_h.m4 b/m4/stdint_h.m4 new file mode 100644 index 0000000..3355f35 --- /dev/null +++ b/m4/stdint_h.m4 @@ -0,0 +1,26 @@ +# stdint_h.m4 serial 5 +dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_STDINT_H_WITH_UINTMAX if exists, +# doesn't clash with , and declares uintmax_t. + +AC_DEFUN([gl_AC_HEADER_STDINT_H], +[ + AC_CACHE_CHECK([for stdint.h], gl_cv_header_stdint_h, + [AC_TRY_COMPILE( + [#include +#include ], + [uintmax_t i = (uintmax_t) -1;], + gl_cv_header_stdint_h=yes, + gl_cv_header_stdint_h=no)]) + if test $gl_cv_header_stdint_h = yes; then + AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, + [Define if exists, doesn't clash with , + and declares uintmax_t. ]) + fi +]) diff --git a/m4/uintmax_t.m4 b/m4/uintmax_t.m4 new file mode 100644 index 0000000..bf83ed7 --- /dev/null +++ b/m4/uintmax_t.m4 @@ -0,0 +1,30 @@ +# uintmax_t.m4 serial 9 +dnl Copyright (C) 1997-2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +AC_PREREQ(2.13) + +# Define uintmax_t to 'unsigned long' or 'unsigned long long' +# if it is not already defined in or . + +AC_DEFUN([gl_AC_TYPE_UINTMAX_T], +[ + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then + AC_REQUIRE([gl_AC_TYPE_UNSIGNED_LONG_LONG]) + test $ac_cv_type_unsigned_long_long = yes \ + && ac_type='unsigned long long' \ + || ac_type='unsigned long' + AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, + [Define to unsigned long or unsigned long long + if and don't define.]) + else + AC_DEFINE(HAVE_UINTMAX_T, 1, + [Define if you have the 'uintmax_t' type in or .]) + fi +]) diff --git a/m4/ulonglong.m4 b/m4/ulonglong.m4 new file mode 100644 index 0000000..dee10cc --- /dev/null +++ b/m4/ulonglong.m4 @@ -0,0 +1,23 @@ +# ulonglong.m4 serial 4 +dnl Copyright (C) 1999-2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Paul Eggert. + +# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works. + +AC_DEFUN([gl_AC_TYPE_UNSIGNED_LONG_LONG], +[ + AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, + [AC_TRY_LINK([unsigned long long ull = 1ULL; int i = 63;], + [unsigned long long ullmax = (unsigned long long) -1; + return ull << i | ull >> i | ullmax / ull | ullmax % ull;], + ac_cv_type_unsigned_long_long=yes, + ac_cv_type_unsigned_long_long=no)]) + if test $ac_cv_type_unsigned_long_long = yes; then + AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, + [Define if you have the 'unsigned long long' type.]) + fi +]) diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4 new file mode 100644 index 0000000..cde2129 --- /dev/null +++ b/m4/wchar_t.m4 @@ -0,0 +1,20 @@ +# wchar_t.m4 serial 1 (gettext-0.12) +dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether has the 'wchar_t' type. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_WCHAR_T], +[ + AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t, + [AC_TRY_COMPILE([#include + wchar_t foo = (wchar_t)'\0';], , + gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)]) + if test $gt_cv_c_wchar_t = yes; then + AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.]) + fi +]) diff --git a/m4/wint_t.m4 b/m4/wint_t.m4 new file mode 100644 index 0000000..b8fff9c --- /dev/null +++ b/m4/wint_t.m4 @@ -0,0 +1,20 @@ +# wint_t.m4 serial 1 (gettext-0.12) +dnl Copyright (C) 2003 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Test whether has the 'wint_t' type. +dnl Prerequisite: AC_PROG_CC + +AC_DEFUN([gt_TYPE_WINT_T], +[ + AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t, + [AC_TRY_COMPILE([#include + wint_t foo = (wchar_t)'\0';], , + gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)]) + if test $gt_cv_c_wint_t = yes; then + AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.]) + fi +]) diff --git a/m4/xsize.m4 b/m4/xsize.m4 new file mode 100644 index 0000000..85bb721 --- /dev/null +++ b/m4/xsize.m4 @@ -0,0 +1,13 @@ +# xsize.m4 serial 3 +dnl Copyright (C) 2003-2004 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_XSIZE], +[ + dnl Prerequisites of lib/xsize.h. + AC_REQUIRE([gl_SIZE_MAX]) + AC_REQUIRE([AC_C_INLINE]) + AC_CHECK_HEADERS(stdint.h) +]) diff --git a/m4/xstrtoimax.m4 b/m4/xstrtoimax.m4 new file mode 100644 index 0000000..f85a284 --- /dev/null +++ b/m4/xstrtoimax.m4 @@ -0,0 +1,41 @@ +#serial 2 +dnl Cloned from xstrtoumax.m4. Keep these files in sync. + +# autoconf tests required for use of xstrtoimax.c + +AC_DEFUN([jm_AC_PREREQ_XSTRTOIMAX], +[ + AC_REQUIRE([gt_TYPE_INTMAX_T]) + AC_REQUIRE([gl_AC_TYPE_UINTMAX_T]) + AC_REQUIRE([gl_AC_TYPE_LONG_LONG]) + AC_REQUIRE([gl_AC_TYPE_UNSIGNED_LONG_LONG]) + AC_CHECK_DECLS([strtol, strtoul, strtoll, strtoimax, strtoumax]) + AC_CHECK_HEADERS(limits.h stdlib.h inttypes.h) + + AC_CACHE_CHECK([whether defines strtoimax as a macro], + jm_cv_func_strtoimax_macro, + AC_EGREP_CPP([inttypes_h_defines_strtoimax], [#include +#ifdef strtoimax + inttypes_h_defines_strtoimax +#endif], + jm_cv_func_strtoimax_macro=yes, + jm_cv_func_strtoimax_macro=no)) + + if test "$jm_cv_func_strtoimax_macro" != yes; then + AC_REPLACE_FUNCS(strtoimax) + fi + + dnl Only the replacement strtoimax invokes strtol and strtoll, + dnl so we need the replacements only if strtoimax does not exist. + case "$jm_cv_func_strtoimax_macro,$ac_cv_func_strtoimax" in + no,no) + AC_REPLACE_FUNCS(strtol) + + dnl We don't need (and can't compile) the replacement strtoll + dnl unless the type `long long' exists. + if test "$ac_cv_type_long_long" = yes; then + AC_REPLACE_FUNCS(strtoll) + fi + ;; + esac +]) diff --git a/missing b/missing new file mode 100755 index 0000000..1c8ff70 --- /dev/null +++ b/missing @@ -0,0 +1,367 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2006-05-10.23 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 +# 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., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, 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=: +sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' +sed_minuso='s/.* -o \([^ ]*\).*/\1/p' + +# 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 + +msg="missing on your system" + +case $1 in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -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' + autom4te touch the output file, or create a stub one + 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] + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). +case $1 in + lex|yacc) + # Not GNU programs, they don't have --version. + ;; + + tar) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case $1 in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. 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) + echo 1>&2 "\ +WARNING: \`$1' is $msg. 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) + echo 1>&2 "\ +WARNING: \`$1' is $msg. 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*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. 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) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + 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' $msg. 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 test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if test ! -f y.tab.h; then + echo >y.tab.h + fi + if test ! -f y.tab.c; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is $msg. 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 test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if test ! -f lex.yy.c; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + echo 1>&2 "\ +WARNING: \`$1' is $msg. 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 "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is $msg. 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." + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -z "$file"; then + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n ' + /^@setfilename/{ + s/.* \([^ ]*\) *$/\1/ + p + q + }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info + fi + # If the file does not exist, the user really needs makeinfo; + # let's fail without touching anything. + test -f $file || exit 1 + touch $file + ;; + + tar) + shift + + # 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 is $msg. + 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 prerequisites 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 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/mkinstalldirs b/mkinstalldirs new file mode 100755 index 0000000..ef7e16f --- /dev/null +++ b/mkinstalldirs @@ -0,0 +1,161 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy + +scriptversion=2006-05-11.19 + +# Original author: Noah Friedman +# Created: 1993-05-16 +# Public domain. +# +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' +IFS=" "" $nl" +errstatus=0 +dirmode= + +usage="\ +Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... + +Create each directory DIR (with mode MODE, if specified), including all +leading file name components. + +Report bugs to ." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" + exit $? + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --version) + echo "$0 $scriptversion" + exit $? + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and +# mkdir -p a/c at the same time, both will detect that a is missing, +# one will create a, then the other will try to create a and die with +# a "File exists" error. This is a problem when calling mkinstalldirs +# from a parallel make. We use --version in the probe to restrict +# ourselves to GNU mkdir, which is thread-safe. +case $dirmode in + '') + if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + test -d ./-p && rmdir ./-p + test -d ./--version && rmdir ./--version + fi + ;; + *) + if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && + test ! -d ./--version; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + else + # Clean up after NextStep and OpenStep mkdir. + for d in ./-m ./-p ./--version "./$dirmode"; + do + test -d $d && rmdir $d + done + fi + ;; +esac + +for file +do + case $file in + /*) pathcomp=/ ;; + *) pathcomp= ;; + esac + oIFS=$IFS + IFS=/ + set fnord $file + shift + IFS=$oIFS + + for d + do + test "x$d" = x && continue + + 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 + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr= + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp=$pathcomp/ + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/packaging/sharutils.changes b/packaging/sharutils.changes new file mode 100644 index 0000000..f1077a9 --- /dev/null +++ b/packaging/sharutils.changes @@ -0,0 +1,152 @@ +* Tue Feb 16 2010 Anas Nashif - 4.7 +- Use spectacle + +* Wed Feb 03 2010 Yi Yang - 4.7 +- Update to 4.7 + +* Tue Dec 16 2008 Anas Nashif 4.6.3 +- Fixed rpmlint errors in Summary tag + +* Fri Sep 12 2008 Yi Yang 4.6.3 +- Mark man and info as %doc and remove installation warnings of info files + +* Tue Feb 19 2008 Fedora Release Engineering - 4.6.3-2 +- Autorebuild for GCC 4.3 + +* Tue Apr 10 2007 Than Ngo - 4.6.3-1 +- 4.6.3 + +* Fri Jul 14 2006 Jesse Keating - 4.6.1-2 +- rebuild + +* Fri Feb 10 2006 Jesse Keating - 4.6.1-1.2 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 4.6.1-1.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Mon Feb 06 2006 Florian La Roche +- 4.6.1 + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Thu Nov 03 2005 Than Ngo 4.6-2 +- fix wrong permission #171889 + +* Wed Oct 26 2005 Than Ngo 4.6-1 +- update to 4.6 + +* Mon Apr 11 2005 Than Ngo 4.2.1-27 +- apply debian patch to fix insecure temporary file creation + in unshar #154049, CAN-2005-0990 + +* Thu Mar 31 2005 Than Ngo 4.2.1-26 +- apply patch to fix multiple buffer overflows #152571 + +* Mon Mar 07 2005 Than Ngo 4.2.1-25 +- cleanup + +* Sat Mar 05 2005 Than Ngo 4.2.1-24 +- rebuilt + +* Wed Feb 09 2005 Than Ngo 4.2.1-23 +- rebuilt + +* Fri Oct 01 2004 Than Ngo 4.2.1-22 +- fix buffer overflow in shar, (from Ulf Harnhammer) + +* Thu Jun 24 2004 Than Ngo 4.2.1-21 +- add builrequires on gettext, bug #126599 + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Fri May 21 2004 Than Ngo 4.2.1-19 +- add suse patch, which fixes buffer overflow in handling of -o option, #123230 + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Mon Jun 16 2003 Than Ngo 4.2.1-17 +- rebuilt + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Wed Dec 11 2002 Tim Powers 4.2.1-13 +- rebuild on all arches + +* Mon Jun 24 2002 Than Ngo 4.2.1-12 +- fixed #66892 + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Thu May 23 2002 Tim Powers +- automated rebuild + +* Sun Apr 14 2002 Than Ngo 4.2.1-9 +- added fix for Unsecure outputfile handling in uudecode (#63303) +- Copyright -> License + +* Fri May 11 2001 Than Ngo +- use find_lang macro +- use mktemp + +* Wed Jul 12 2000 Prospector +- automatic rebuild + +* Sun Jun 18 2000 Than Ngo +- fix typo (Bug# 12447) + +* Sun Jun 18 2000 Than Ngo +- rebuilt in the new build environment + +* Thu Jun 08 2000 Than Ngo +- add %defattr(-,root,root) (Bug# 11990) +- use rpm macros + +* Sun May 21 2000 Ngo Than +- rebuild to put man pages and info files in right place + +* Mon Feb 07 2000 Preston Brown +- rebuild to gzip man pages + +* Tue Dec 21 1999 Preston Brown +- sharutils 4.2.1 for Y2K (2 digit date) fix. +- ja message catalog move (#7878) + +* Tue Sep 7 1999 Jeff Johnson +- handle spaces in uuencoded file names (David Fox ). + +* Wed Jul 28 1999 Cristian Gafton +- use the /usr/share/locale for the localedir instead of /usr/lib/locale + (#2998) + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 12) + +* Wed Dec 30 1998 Cristian Gafton +- build for glibc 2.1 + +* Fri Apr 24 1998 Prospector System +- translations modified for de, fr, tr + +* Sat Apr 11 1998 Cristian Gafton +- manhattan rebuild + +* Fri Oct 17 1997 Donnie Barnes +- ALRIGHT! Woo-hoo! Erik already did the install-info stuff! +- added BuildRoot +- spec file cleanups + +* Sun Sep 14 1997 Erik Troan +- uses install-info + +* Fri Jul 18 1997 Erik Troan +- built against glibc + diff --git a/packaging/sharutils.spec b/packaging/sharutils.spec new file mode 100644 index 0000000..1d6abce --- /dev/null +++ b/packaging/sharutils.spec @@ -0,0 +1,82 @@ +# +# Do not Edit! Generated by: +# spectacle version 0.13~pre +# +# >> macros +# << macros + +Name: sharutils +Summary: The GNU shar utilities for packaging and unpackaging shell archives +Version: 4.7 +Release: 2 +Group: Applications/Archiving +License: GPL +URL: http://www.gnu.org/software/sharutils/ +Source0: ftp://ftp.gnu.org/gnu/sharutils/REL-%{version}/sharutils-%{version}.tar.bz2 +BuildRequires: gettext + +BuildRoot: %{_tmppath}/%{name}-%{version}-build + +%description +The sharutils package contains the GNU shar utilities, a set of tools +for encoding and decoding packages of files (in binary or text format) +in a special plain text format called shell archives (shar). This +format can be sent through e-mail (which can be problematic for regular +binary files). The shar utility supports a wide range of capabilities +(compressing, uuencoding, splitting long files for multi-part +mailings, providing checksums), which make it very flexible at +creating shar files. After the files have been sent, the unshar tool +scans mail messages looking for shar files. Unshar automatically +strips off mail headers and introductory text and then unpacks the +shar files. + +Install sharutils if you send binary files through e-mail. + + + + +%prep +%setup -q -n %{name}-%{version} +# >> setup +# << setup + +%build +# >> build pre +# << build pre + +%configure --disable-static +# Call make instruction with smp support +make %{?jobs:-j%jobs} + +# >> build post +# << build post +%install +rm -rf %{buildroot} +# >> install pre +# << install pre +%make_install + +# >> install post +rm -f ${RPM_BUILD_ROOT}%{_infodir}/dir +chmod 644 AUTHORS ChangeLog COPYING NEWS README THANKS TODO +# << install post +%find_lang %{name} + +%clean +rm -rf %{buildroot} + + + + + + +%files -f %{name}.lang +%defattr(-,root,root,-) +# >> files +%doc AUTHORS COPYING NEWS README THANKS TODO +%{_bindir}/* +%doc %{_infodir}/*info* +%doc %{_mandir}/*/* +# << files + + diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 0000000..f1a5f5f --- /dev/null +++ b/po/LINGUAS @@ -0,0 +1,2 @@ +# Set of available languages: +bg ca cs da de el es et fi fr ga gl hu it ja nb nl nn pl pt ru rw sr sv tr vi zh_TW diff --git a/po/Makefile.in.in b/po/Makefile.in.in new file mode 100644 index 0000000..1f5cc28 --- /dev/null +++ b/po/Makefile.in.in @@ -0,0 +1,384 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2005 by Ulrich Drepper +# +# 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. +# +# Origin: gettext-0.14.4 + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datadir = @datadir@ +localedir = $(datadir)/locale +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) + +GMSGFMT = @GMSGFMT@ +MSGFMT = @MSGFMT@ +XGETTEXT = @XGETTEXT@ +MSGMERGE = msgmerge +MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +# Makevars gets inserted here. (Don't remove this line!) + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: all-@USE_NLS@ + +all-yes: stamp-po +all-no: + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, stamp-po is a nop (i.e. a phony target). + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch stamp-po" && \ + echo timestamp > stamp-poT && \ + mv stamp-poT stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo + +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 stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + $(MAKE) update-po + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: stamp-po $(DISTFILES) + dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ + $(SHELL) ./config.status + +force: + +# 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/Makevars b/po/Makevars new file mode 100644 index 0000000..e83ebd2 --- /dev/null +++ b/po/Makevars @@ -0,0 +1,25 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ --no-wrap + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Free Software Foundation, Inc. + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 0000000..769d200 --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,13 @@ +# List of files which containing translatable strings. +# Copyright (C) 1995 Free Software Foundation, Inc. + +# Files from the compatibility library +lib/error.c +lib/getopt.c +lib/xmalloc.c + +# Package source files +src/shar.c +src/unshar.c +src/uudecode.c +src/uuencode.c diff --git a/po/Rules-quot b/po/Rules-quot new file mode 100644 index 0000000..9c2a995 --- /dev/null +++ b/po/Rules-quot @@ -0,0 +1,47 @@ +# Special Makefile rules for English message catalogs with quotation marks. + +DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot + +.SUFFIXES: .insert-header .po-update-en + +en@quot.po-create: + $(MAKE) en@quot.po-update +en@boldquot.po-create: + $(MAKE) en@boldquot.po-update + +en@quot.po-update: en@quot.po-update-en +en@boldquot.po-update: en@boldquot.po-update-en + +.insert-header.po-update-en: + @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ + if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + ll=`echo $$lang | sed -e 's/@.*//'`; \ + LC_ALL=C; export LC_ALL; \ + cd $(srcdir); \ + if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "creation of $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +en@quot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header + +en@boldquot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header + +mostlyclean: mostlyclean-quot +mostlyclean-quot: + rm -f *.insert-header diff --git a/po/bg.gmo b/po/bg.gmo new file mode 100644 index 0000000000000000000000000000000000000000..554acbf2e1afa6cb954dc8bb4a451001a57df7b1 GIT binary patch literal 24836 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 Ino{?F0n*#YaR2}S literal 0 HcmV?d00001 diff --git a/po/bg.po b/po/bg.po new file mode 100644 index 0000000..cc81dbc --- /dev/null +++ b/po/bg.po @@ -0,0 +1,906 @@ +# Translation of sharutils to Bulgarian +# Copyright (C) 2005 Free Software Foundation, Inc. +# This file is distributed under the same license as the sharutils package. +# Anton Zinoviev , 2005, 2006. +# +# This file should be sent to translation@iro.umontreal.ca with the +# following subject line: TP-Robot sharutils-VERSION.bg.po +msgid "" +msgstr "" +"Project-Id-Version: sharutils 4.6.3-pre4\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2006-05-22 23:26+0300\n" +"Last-Translator: Anton Zinoviev \n" +"Language-Team: Bulgarian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Непозната системна грешка" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: опцията „%s“ е двусмислена\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: опцията „--%s“ не допуска аргумент\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: опцията „%c%s“ не допуска аргумент\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: опцията „%s“ изисква аргумент\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: непозната опция „--%s“\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: непозната опция „%c%s“\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: неправилна опция -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: неправилна опция -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: опцията изисква аргумент -- %c\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: опцията „-W %s“ е двусмислена\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: опцията „-W %s“ не допуска аргумент\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "паметта е изчерпана" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" +"Забележете: не се проверяват MD5-суми. Обмислете евентуално инсталиране на " +"GNU coreutils." + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "" +"ВНИМАНИЕ: не се възстановяват времената. Обмислете евентуалното инсталиране" + +#: src/shar.c:645 +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "на командата „touch“ от пакета GNU coreutils." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "заключващият каталог '${lock_dir}' съществува" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "не може да се създаде заключващ каталог" + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "x - създаден е заключващ каталог „'%s'“." + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "x - не може да се създаде заключващ каталог „'%s'“." + +#: src/shar.c:671 +msgid "yes" +msgstr "да" + +#: src/shar.c:671 +msgid "overwrite this file" +msgstr "този файл да се замести" + +#: src/shar.c:672 +msgid "no" +msgstr "не" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "този файл да се пропусне" + +#: src/shar.c:673 +msgid "all" +msgstr "всички" + +#: src/shar.c:673 +msgid "overwrite all files" +msgstr "да се заместят всички файлове" + +#: src/shar.c:674 +msgid "none" +msgstr "никой" + +#: src/shar.c:674 +msgid "overwrite no files" +msgstr "да не се заместват файлове" + +#: src/shar.c:675 +msgid "help" +msgstr "справка" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "да обяснява избора" + +#: src/shar.c:676 +msgid "quit" +msgstr "изход" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "незабавен изход" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Има твърде много каталози за създаване с mkdir" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "x - създаден е каталог „%s“." + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "x - не може да се създаде каталог „%s“." + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "Няма достъп до %s" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "опцията -C е остаряла, ползвайте -Z вместо нея" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "Не може да се получи името на текущия каталог" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" +"Архивите трябва да се разпакетират един по един!\n" +"Моля, следваща разпакетирайте частта '`cat ${lock_dir}/seq`'." + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "Нов файл, преименува се на %s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "Ограничението все още е %s\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "не можа да се възстанови %s" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "Край на част %d, продължава се с част %d" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Започва файл %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: Не е обикновен файл" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "В shar: оставащ размер %s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "празен" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(празен)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "Файлът %s не може да се отвори" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "компресиран" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "компресиран с gzip" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "компресиран с bzip2" + +#: src/shar.c:1151 +msgid "binary" +msgstr "двоичен" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(компресиран)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(компресиран с gzip)" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(компресиран с bzip2)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(двоичен)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "Не може да се породи дъщерен процес" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Файл %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "текст" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(текст)" + +#: src/shar.c:1251 +#, c-format +msgid "overwriting %s" +msgstr "заместване на %s" + +#: src/shar.c:1253 +#, c-format +msgid "overwrite %s" +msgstr "да се замести %s" + +#: src/shar.c:1257 +#, c-format +msgid "SKIPPING %s" +msgstr "ПРОПУСКА СЕ %s" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "извличането е прекъснато" + +#: src/shar.c:1262 +#, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "ПРОПУСКА СЕ %s (файлът вече съществува)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Запазване %s (%s)" + +#: src/shar.c:1276 +#, c-format +msgid "x - extracting %s %s" +msgstr "x - извлича се %s %s" + +#: src/shar.c:1392 +#, c-format +msgid "restore of %s failed\n" +msgstr "не успя възстановяването на %s\n" + +#: src/shar.c:1401 +#, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "Край на част %ld, продължава се с част %ld" + +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "Край на %s, част %d" + +#: src/shar.c:1408 +msgid "archive" +msgstr "архив" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "Файлът %s продължава в част %d" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "Моля, разпакетирайте най-напред част 1!" + +#: src/shar.c:1460 +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "Моля, след това разпакетирайте част '${shar_sequence}'!" + +#: src/shar.c:1471 +#, c-format +msgid "STILL SKIPPING %s" +msgstr "ВСЕ ОЩЕ СЕ ПРОПУСКА %s" + +#: src/shar.c:1479 +#, c-format +msgid "continuing file %s" +msgstr "продължава се с файла %s" + +#: src/shar.c:1497 +#, c-format +msgid "File %s is complete" +msgstr "Файлът %s е готов" + +#: src/shar.c:1504 +#, c-format +msgid "uudecoding file %s" +msgstr "uue-файлът %s се декодира" + +#: src/shar.c:1514 +#, c-format +msgid "uncompressing file %s" +msgstr "файлът %s се разкомпресира" + +#: src/shar.c:1522 +#, c-format +msgid "gunzipping file %s" +msgstr "gzip-файлът %s се разкомпресира" + +#: src/shar.c:1530 +#, c-format +msgid "bunzipping file %s" +msgstr "bzip2-файлът %s се разкомпресира" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "контролната сума MD5 не се потвърди" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "'предупреждение за възстановяването: размерът на %s не е %s'\n" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "запазва се име на изходен файл" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "Отваря се „%s“" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Затваря се „%s“" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Използвайте „%s --help“ за повече информация.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Използване: %s [ОПЦИЯ]... [ФАЙЛ]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Аргументите, задължителни за дългите опции, са задължителни и за късите.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"Информация:\n" +" --help извежда тази справка и завършва\n" +" --version извежда информация за версията и завършва\n" +" -q, --quiet, --silent не извежда локално подробни съобщения\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Избор на файлове:\n" +" -p, --intermix-type смяна режима на достъп с редуване на различни -" +"[BTzZ]\n" +" -S, --stdin-file-list файловият списък се чете от стандартния вход\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Избор на файлове:\n" +" -p, --intermix-type смяна режима на достъп с редуване на различни -" +"[BTz]\n" +" -S, --stdin-file-list файловият списък се чете от стандартния вход\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"Разделяне на изхода:\n" +" -o, --output-prefix=ПРЕФИКС извежда във файлове от ПРЕФИКС.01 до ПРЕФИКС." +"NN\n" +" -l, --whole-size-limit=РАЗМ разделя архива, не файловете, до РАЗМ " +"килобайта\n" +" -L, --split-size-limit=РАЗМ разделя архива или файловете до РАЗМ " +"килобайта\n" + +#: src/shar.c:1759 +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Определяне заглавията на shar:\n" +" -n, --archive-name=ИМЕ използва ИМЕ за описание на архива\n" +" -s, --submitter=АДРЕС посочва алтернативно име на автора\n" +" -a, --net-headers извежда полета „Submitted-by:“ и „Archive-" +"name“:\n" +" -c, --cut-mark започва shar с ред „Срежи тук“\n" +" -t, --translate превежда съобщенията в скрипта\n" +"\n" +"Определяне как се складират файловете:\n" +" -M, --mixed-uuencode определя динамично uue-кодирането (подразбира " +"се)\n" +" -T, --text-files работи с всички файлове като с текстови\n" +" -B, --uuencode работи с файловете като с двоични (с " +"uuencode)\n" +" -z, --gzip uuе-кодира и компресира с gzip всички " +"файлове\n" +" -g, --level-for-gzip=НИВО подава опция -НИВО (по подразбиране 9) на " +"gzip\n" +" -j, --bzip2 uue-кодира и компресира с bzip2 всички " +"файлове\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress uue-кодира и компресира с compress всички " +"файлове\n" +" -b, --bits-per-code=БИТОВЕ подава -bБИТОВЕ (по подразбиране 12) на " +"compress\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Защита на данните при пренасяне:\n" +" -w, --no-character-count да не се ползва „wc -c“ за проверка на " +"размера\n" +" -D, --no-md5-digest да не се сверява контролна сума с „md5sum“ \n" +" -F, --force-prefix да се слага контролен начален знак на всеки " +"ред\n" +" -d, --here-delimiter=НИЗ да се ползва НИЗ за отделяне на файловете в " +"shar\n" +"\n" +"Създаване на различни видове shar:\n" +" -V, --vanilla-operation съвсем обикновени и невзискателни архиви shar\n" +" -P, --no-piping само временни файлове при разархивиране, не " +"конвейри\n" +" -x, --no-check-existing неконтролируемо да се заличават съществуващи " +"файлове\n" +" -X, --query-user да пита преди заличаване на файлове (да не се\n" +" използва при архиви, разпространявани по " +"мрежата)\n" +" -m, --no-timestamp без възстановяване времето на промяна на " +"файловете\n" +" -Q, --quiet-unshar без подробни съобщения при разархивиране\n" +" -f, --basename разархивира в един каталог въпреки йерархията\n" +" --no-i18n да не се генерира интернационализиран скрипт\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"При -l или -L е задължителна и опция -o, при -a е задължителна и опция -n.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "Опцията -g влече -z, опцията -b влече -Z.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "Опцията -g влече -z.\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" +"За грешки съобщавайте на <%s>.\n" +"За грешки в българския превод на \n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "неправилно ограничение за размер на файл „%s“" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "неправилен формат (твърде широко поле за брояч): „%s“\n" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "по време на компилация не е била посочена опция „DEBUG“" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "Твърдо ограничение %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "Тази система не поддържа -Z („compress“), вместо това ползвайте -z" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "Меко ограничение %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "неправилен префикс на изхода\n" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Copyright © %s Free Software Foundation, Inc.\n" +"Това е свободен софтуер. Вижте изходния код за условията за копиране. НЯМА\n" +"ГАРАНЦИИ -- включително без предполагаемите гаранции за полезност и пригодност\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "ВНИМАНИЕ: без диалог с потребителя в режим „--vanilla-operation“" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "ВНИМАНИЕ: Не са взети предвид опции за файлове в нетекстов формат" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Няма входни файлове" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "Не може да се използва опция -a без -n" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "Не може да се използва опция -l или -L без -o" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "" +"Моля, избягвайте разпространяването на архиви с -X по общодостъпни мрежи" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Разархивирахте последната част" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "Създадени са %d файла\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "x - премахнат е заключващият каталог „'%s'“." + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "x - неуспешно изтриване на заключващ каталог „'%s'“." + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "Не са открити команди на обвивката в %s" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s изглежда като изходен програмен код на Си, а не на shar-архив" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Не са открити команди на обвивката след „cut“ в %s" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s вероятно не е shar-архив" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "Редът „cut“ бе следван от: %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Стартиране на процес „sh“" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Аргументите, задължителни за дългите опции, са задължителни и за късите.\n" +"\n" +" -d, --directory=КАТАЛОГ минава в КАТАЛОГ преди да се разпакетира\n" +" -c, --overwrite подава -c на скрипта shar за заместване на " +"файлове\n" +" -e, --exit-0 същото като „--split-at=\"exit 0\"“\n" +" -E, --split-at=НИЗ разделя съединени архиви след НИЗ\n" +" -f, --force същото като „-c“\n" +" --help извежда тази справка и завършва\n" +" --version извежда информация за версията и излиза\n" +"\n" +"Ако няма ФАЙЛ, се чете от стандартния вход.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "Текущият каталог не може да се смени на „%s“" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "заделя буфер за файлово име" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "стандартен вход" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "заделя файлов буфер" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: Грешка при запис" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: Къс файл" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: Без ред „end“" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: данни следват запълващия символ „=“" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: неправилен ред" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: Няма ред „begin“" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: Неправилен ~потребител" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: Няма потребител „%s“" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "не може да се получи достъп до %s" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "отказан запис в именуван канал (%s)" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "не се следва символна връзка (%s)" + +#: src/uudecode.c:408 +#, c-format +msgid "freopen of %s" +msgstr "Отваря се с freopen %s" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "смяна на правата на %s" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Използване: %s [ФАЙЛ]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Аргументите, задължителни за дългите опции, са задължителни и за късите.\n" +" -o, --output-file=ФАЙЛ насочва изхода във ФАЙЛ\n" +" --help извежда тази помощна справка и завършва\n" +" --version извежда информация за версията и завършва\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Грешка при запис" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Грешка при четене" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Използване: %s [ВХОД_ФАЙЛ] ОТДАЛЕЧЕН_ФАЙЛ\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 използва кодиране base64 според RFC1521\n" +" --help извежда тази помощна справка и завършва\n" +" --version извежда информация за версията и завършва\n" + +#: src/uuencode.c:276 +#, c-format +msgid "fopen-ing %s" +msgstr "Отваря се с fopen %s" + +#: src/uuencode.c:278 +#, c-format +msgid "fstat-ing %s" +msgstr "Прочита се с fstat статуса на %s" + +#~ msgid "[no, yes, all, quit] (no)?" +#~ msgstr "[не (n), да (y), всички (a), изход (q)] (не)?" + +#~ msgid "Please unpack part" +#~ msgstr "Моля, разпакетирайте част" + +#~ msgid "next!" +#~ msgstr "следваща!" + +#~ msgid "File" +#~ msgstr "Файл" + +#~ msgid "original size" +#~ msgstr "оригинален размер" + +#~ msgid "current size" +#~ msgstr "текущ размер" diff --git a/po/boldquot.sed b/po/boldquot.sed new file mode 100644 index 0000000..4b937aa --- /dev/null +++ b/po/boldquot.sed @@ -0,0 +1,10 @@ +s/"\([^"]*\)"/“\1”/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“”/""/g +s/“/“/g +s/”/”/g +s/‘/‘/g +s/’/’/g diff --git a/po/ca.gmo b/po/ca.gmo new file mode 100644 index 0000000000000000000000000000000000000000..9c68c4f614f431983b8a6d43d91f1805e67d758b GIT binary patch literal 13938 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 TYvbTaZED(YT-myD`#b*&&j#bA literal 0 HcmV?d00001 diff --git a/po/ca.po b/po/ca.po new file mode 100644 index 0000000..69076fa --- /dev/null +++ b/po/ca.po @@ -0,0 +1,935 @@ +# translation of sharutils.po to Catalan +# Copyright (C) 2002, 2003 Free Software Foundation, Inc. +# Antoni Bella Perez , 2002,2003 +# +msgid "" +msgstr "" +"Project-Id-Version: sharutils-4.3.75\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2003-01-06 13:09+0100\n" +"Last-Translator: Antoni Bella Perez \n" +"Language-Team: Catalan \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.1\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Error desconegut del sistema" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: l'opció `%s' és ambigua\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: l'opció `--%s' no admet un argument\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: l'opció `%c%s' no admet un argument\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: l'opció `%s' requereix un argument\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: opció `--%s' no reconeguda\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: opció `%c%s' no reconeguda\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opció `%c` ilegal\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opció `%c`invàlida\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: l'opció `%c` requereix un argument\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: l'opció `-W %s' és ambigua\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: l'opció `-W %s' no admet un argument\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "memòria esgotada" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "" +"ATENCIÓ: no es restabliran les marques de temps. Considereu l'obtenció i" + +#: src/shar.c:645 +#, fuzzy +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "" +"instal·lació del GNU \\`touch', distribuït amb les `GNU File Utilities'..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "" + +#: src/shar.c:657 +#, fuzzy +msgid "failed to create lock directory" +msgstr "falla al crear el directori de bloqueig" + +#: src/shar.c:661 +#, fuzzy, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "falla al crear el directori de bloqueig" + +#: src/shar.c:663 +#, fuzzy, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "falla al crear el directori de bloqueig" + +#: src/shar.c:671 +msgid "yes" +msgstr "" + +#: src/shar.c:671 +#, fuzzy +msgid "overwrite this file" +msgstr "sobreescriure" + +#: src/shar.c:672 +msgid "no" +msgstr "" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "" + +#: src/shar.c:673 +msgid "all" +msgstr "" + +#: src/shar.c:673 +#, fuzzy +msgid "overwrite all files" +msgstr "sobreescriure" + +#: src/shar.c:674 +msgid "none" +msgstr "" + +#: src/shar.c:674 +#, fuzzy +msgid "overwrite no files" +msgstr "sobreescriure" + +#: src/shar.c:675 +msgid "help" +msgstr "" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "" + +#: src/shar.c:676 +msgid "quit" +msgstr "" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Masses directoris a generar amb `mkdir'" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "" + +#: src/shar.c:739 +#, fuzzy, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "falla al crear el directori de bloqueig" + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "No es pot accedir a %s" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "L'opció -C està obsoleta, en el seu lloc s'usa -Z" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "No es pot obtindre el nom del directori actual" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "Fitxer nou, falten %s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "El límit encara és %s\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, fuzzy, c-format +msgid "restore of %s failed" +msgstr "restauració de" + +#: src/shar.c:987 +#, fuzzy, c-format +msgid "End of part %d, continue with part %d" +msgstr "continua amb el segment" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Fitxer de començament %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: No és un fitxer regular" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "En `shar': falten %s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "buit" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(buit)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "No es pot obrir el fitxer %s" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "comprimit amb `compress'" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "comprimit amb `gzip'" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "comprimit amb `bzip'" + +#: src/shar.c:1151 +msgid "binary" +msgstr "binari" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(comprimit)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(comprimit amb `gzip')" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(comprimit amb `bzip')" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(binari)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "No es pot clonar `fork'" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Fitxer %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "text" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(text)" + +#: src/shar.c:1251 +#, fuzzy, c-format +msgid "overwriting %s" +msgstr "sobreescrivint" + +#: src/shar.c:1253 +#, fuzzy, c-format +msgid "overwrite %s" +msgstr "sobreescriure" + +#: src/shar.c:1257 +#, fuzzy, c-format +msgid "SKIPPING %s" +msgstr "SALTANT" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "extracció abortada" + +#: src/shar.c:1262 +#, fuzzy, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "(el fitxer ja existeix)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Desant %s (%s)" + +#: src/shar.c:1276 +#, fuzzy, c-format +msgid "x - extracting %s %s" +msgstr "extreguent" + +#: src/shar.c:1392 +#, fuzzy, c-format +msgid "restore of %s failed\n" +msgstr "restauració de" + +#: src/shar.c:1401 +#, fuzzy, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "continua amb el segment" + +#: src/shar.c:1407 +#, fuzzy, c-format +msgid "End of %s part %d" +msgstr "Final del segment" + +#: src/shar.c:1408 +msgid "archive" +msgstr "arxiu" + +#: src/shar.c:1412 +#, fuzzy, c-format +msgid "File %s is continued in part %d" +msgstr "contínua en el segment" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "Si us plau, desempaqueteu primer el segment 1!" + +#: src/shar.c:1460 +#, fuzzy +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "Si us plau, desempaqueteu primer el segment 1!" + +#: src/shar.c:1471 +#, fuzzy, c-format +msgid "STILL SKIPPING %s" +msgstr "ENCARA SALTANT" + +#: src/shar.c:1479 +#, fuzzy, c-format +msgid "continuing file %s" +msgstr "continuant amb el fitxer" + +#: src/shar.c:1497 +#, fuzzy, c-format +msgid "File %s is complete" +msgstr "està complet" + +#: src/shar.c:1504 +#, fuzzy, c-format +msgid "uudecoding file %s" +msgstr "decodificant el fitxer amb `uudecode'" + +#: src/shar.c:1514 +#, fuzzy, c-format +msgid "uncompressing file %s" +msgstr "descomprimint el fitxer amb `uncompress'" + +#: src/shar.c:1522 +#, fuzzy, c-format +msgid "gunzipping file %s" +msgstr "descomprimint el fitxer amb `gunzip'" + +#: src/shar.c:1530 +#, fuzzy, c-format +msgid "bunzipping file %s" +msgstr "descomprimint el fitxer amb `bunzip'" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "Falla en la comprovació de la suma MD5" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "Obrint `%s'" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Tancant `%s'" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Per a més informació proveu amb `%s --help'.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Usant: %s [OPCIÓ]... [FITXER]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Els arguments obligatoris per a les opcions llargues també són obligatoris " +"per a les opcions curtes.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"Obtindre informació:\n" +" --help mostra aquesta ajuda i surt\n" +" --version informa de la versió i surt\n" +" -q, --quiet, --silent no mostra localment els missatges de depuració\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Seleccionar fitxers:\n" +" -p, --intermix-type permet -[BTzZ] en les llistes de fitxers per a " +"canviar\n" +" el mode\n" +" -S, --stdin-file-list llegir la llista de fitxers des de l'entrada " +"estàndard\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Seleccionar fitxers:\n" +" -p, --intermix-type permet -[BTz] en les llistes de fitxers per a " +"canviar\n" +" el mode\n" +" -S, --stdin-file-list llegir la llista de fitxers des de l'entrada " +"estàndard\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"Dividir l'eixida:\n" +" -o, --output-prefix=PREFIX eixida cap al fitxer PREFIX.01 a traves de " +"PREFIX.NN\n" +" -l, --whole-size-limit=MIDA dividir l'arxiu, no els fitxers, a MIDA " +"kilooctets\n" +" -L, --split-size-limit=MIDA dividir l'arxiu o fitxers a MIDA kilooctets\n" + +#: src/shar.c:1759 +#, fuzzy +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Controlant les capçaleres `shar':\n" +" -n, --archive-name=NOM usar NOM per a documentar l'arxiu\n" +" -s, --submitter=ADREÇA ignorar el nom del remitent\n" +" -a, --net-headers eixida de les capçaleres `Submitted-by:' i " +"`Archive-name:'\n" +" -c, --cut-mark començar el `shar' amb una línia de tall\n" +"\n" +"Seleccionant com s'emmagetzamaran els fitxers:\n" +" -M, --mixed-uuencode decidir dinàmicament el xifrat amb " +"`uuencode' (per defecte)\n" +" -T, --text-files tractar tots els fitxers com de text\n" +" -B, --uuencode tractar tots els fitxers com de dades " +"binàries, emprant `uuencode'\n" +" -z, --gzip tots els fitxers amb `gzip' i `uuencode'\n" +" -g, --level-for-gzip=NIVELL passar -el NIVELL (per defecte 9) al `gzip'\n" +" -j, --bzip2 bzip2 i uuencode a tots els fitxers\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress comprimir i codificar tots els fitxers\n" +" -b, --bits-per-code=BITS passar els -bBITS (per defecte 12) al " +"`compress'\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Protegint contra transmissió:\n" +" -w, --no-character-count no usar `wc -c' per a comprovar la mida\n" +" -D, --no-md5-digest no usar la suma `md5sum' per a verificar\n" +" -F, --force-prefix forçar el caràcter de prefix en cada línia\n" +" -d, --here-delimiter=CADENA usar CADENA per a delimitar els fitxers en el " +"`shar'\n" +"\n" +"Produint diferentes clases de `shar':\n" +" -V, --vanilla-operation produïr els `shar' molt sencills i poc exigents\n" +" -P, --no-piping usar exclusivament fitxers temporals al desfer " +"el `shar'\n" +" -x, --no-check-existing escriure sense confirmar sobre els fitxers " +"existents\n" +" -X, --query-user preguntar a l'usuari abans de sobreescriure " +"fitxers (no per a xarxa)\n" +" -m, --no-timestamp no restaurar les dates i hores de modificació " +"del fitxer\n" +" -Q, --quiet-unshar evitar els missatges de depuració al desfer el " +"`shar'\n" +" -f, --basename restaurar en un directori, sense tindre en " +"compte la jerarquia\n" +" --no-i18n no produïr un script shell internacionalitzat\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"Es requereix l'opció -o amb -l o -L, es requereix l'opció -n amb -a.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "L'opció -g implica a -z, l'opció -b implica a -Z.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "L'opció -g implica a l'opció -z.\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Informar dels errors a <%s>.\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "No es va seleccionar DEBUG durant la compilació" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "Límit per maquinari %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "Aquest sistema no suporta l'opció -Z ('compress'), al seu lloc useu -z" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "Límit per programari %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"Això és programari lliure; mireu les fonts per a les condicions de còpia.\n" +"Aquest NO té cap garantia. ni tansols la de ser COMERCIAL o ADAPTABLE PER\n" +"A UNA DETERMINADA FINALITAT.\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "ATENCIÓ: No es permeten interaccions de l'usuari en el mode `vanilla'" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "ATENCIÓ: Descartades les opcions d'emmagatzemament per a no-text" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Sense fitxers d'entrada" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "No es pot usar l'opció -a sense -n" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "No es poden usar les opcions -I o -L sense -o" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "SI US PLAU evitar shars creats amb -X en la Usenet o xarxes públiques" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Heu desempaquetat l'últim segment" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "Creats: %d fitxers\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "" + +#: src/shar.c:2312 +#, fuzzy, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "falla al crear el directori de bloqueig" + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "No es troben comandaments de l'interpret d'ordres en %s" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s sembla codi C, no un arxiu de shell" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "" +"No es troben comandaments de l'interpret d'ordres després de `cut' en %s" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "Probablement %s no sigui un arxiu de l'interpret d'ordres" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "La línia `cut' estava seguida per: %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Arrencant el proces `sh'" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Els arguments obligatoris per a les opcions llargues també són obligatoris " +"per a\n" +"les opcions curtes.\n" +"\n" +" -d, --directory=DIRECTORI canviar a DIRECTORI avans de desempaquetar\n" +" -c, --overwrite passar -c a l'script font per a sobreescriure " +"fitxers\n" +" -e, --exit-0 el mateix que `--split-at=\"exit 0\"'\n" +" -E, --split-at=CADENA dividir els `shar' concatenats després de la " +"CADENA\n" +" -f, --force el mateix que `-c'\n" +" --help mostra aquesta ajuda i surt\n" +" --version informa de la versió i surt\n" +"\n" +"Sense FITXER, es llegirà l'entrada estàndard.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "No es pot canviar al directori `%s'" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "entrada estàndard" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: Error d'escriptura" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: Fitxer truncat" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: Sense línia `end'" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: dada posterior al caràcter d'ompliment `='" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: línia ilegal" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: Sense línia `begin'" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: ~usuari ilegal" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: No hi ha cap usuari `%s'" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "no es pot accedir a %s" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "escrptura FIFO denegada (%s)" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "no segueix l'enllaç simbòlic (%s)" + +#: src/uudecode.c:408 +#, fuzzy, c-format +msgid "freopen of %s" +msgstr "Obrint `%s'" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Usant: %s [FITXER]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Els arguments obligatoris per a les opcions llargues també són obligatoris\n" +"per a les opcions curtes.\n" +" -o, --output-file=FITXER dirigir l'eixida cap al FITXER\n" +" --help mostra aquesta ajuda i surt\n" +" --version informa de la versió i surt\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Error d'escriptura" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Error de lectura" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Usant: %s [FITXER-D'ENTRADA] FITXER-REMOT\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 usar base64 tal i com s'indica en el RFC1521\n" +" --help mostra aquesta ajuda i surt\n" +" --version informa de la versió i surt\n" + +#: src/uuencode.c:276 +#, fuzzy, c-format +msgid "fopen-ing %s" +msgstr "Obrint `%s'" + +#: src/uuencode.c:278 +#, fuzzy, c-format +msgid "fstat-ing %s" +msgstr "Fitxer de començament %s\n" + +#~ msgid "lock directory" +#~ msgstr "directori de bloqueig" + +#~ msgid "created" +#~ msgstr "creat" + +#~ msgid "failed to create" +#~ msgstr "falla al crear" + +#~ msgid "Must unpack archives in sequence!" +#~ msgstr "S'han de desempaquetar els arxius en ordre!" + +#~ msgid "Please unpack part" +#~ msgstr "Si us plau, desempaqueteu la part" + +#~ msgid "next!" +#~ msgstr "següent!" + +#~ msgid "failed" +#~ msgstr "fallida" + +#~ msgid "[no, yes, all, quit] (no)?" +#~ msgstr "[no=no, yes=sí, all=tot, quit=sortir] (no)?" + +#~ msgid "End of" +#~ msgstr "Final de" + +#~ msgid "part" +#~ msgstr "segment" + +#~ msgid "File" +#~ msgstr "Fitxer" + +#~ msgid "original size" +#~ msgstr "mida original" + +#~ msgid "current size" +#~ msgstr "mida actual" + +#~ msgid "removed" +#~ msgstr "esborrat" + +#~ msgid "failed to remove" +#~ msgstr "falla a l'esborrar-lo" diff --git a/po/cs.gmo b/po/cs.gmo new file mode 100644 index 0000000000000000000000000000000000000000..e89225d4b3fb16eeffdb1204b616687e8cbf689e GIT binary patch literal 10120 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, 1997. +# +# Vladimir Michl , 1998. +# +# Notes: 1 unstanslated message, still untranslatable, require redefinition +# user asks keys +# +msgid "" +msgstr "" +"Project-Id-Version: sharutils 4.2c\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 1999-01-05 15:48+01:00\n" +"Last-Translator: Vladimir Michl \n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Neznámá chyba systému" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: pøepínaè `%s` není jednoznaèný\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: pøepínaè `--%s` musí být zadán bez argumentu\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: pøepínaè `%c%s` musí být zadán bez argumentu\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: pøepínaè `%s` vy¾aduje argument\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: neznámý pøepínaè `--%s`\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: neznámý pøepínaè `%c%s`\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: neznámý pøepínaè -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: neznámý pøepínaè -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: pøepínaè vy¾aduje argument -- %c\n" + +#: lib/getopt.c:881 +#, fuzzy, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: pøepínaè `%s` není jednoznaèný\n" + +#: lib/getopt.c:899 +#, fuzzy, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: pøepínaè `--%s` musí být zadán bez argumentu\n" + +#: lib/xmalloc.c:67 +#, fuzzy +msgid "memory exhausted" +msgstr "Pamì» vyèerpána" + +#: src/shar.c:608 +#, fuzzy +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "UPOZORNÌNÍ: èasové znaèky nejsou obnoveny. Uva¾te instalaci" + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "UPOZORNÌNÍ: èasové znaèky nejsou obnoveny. Uva¾te instalaci" + +#: src/shar.c:645 +#, fuzzy +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "GNU \\`touch`, z balíèku GNU File Utilities ..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "" + +#: src/shar.c:657 +#, fuzzy +msgid "failed to create lock directory" +msgstr "adresáø pro zámky nelze vytvoøit" + +#: src/shar.c:661 +#, fuzzy, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "adresáø pro zámky nelze vytvoøit" + +#: src/shar.c:663 +#, fuzzy, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "adresáø pro zámky nelze vytvoøit" + +#: src/shar.c:671 +msgid "yes" +msgstr "" + +#: src/shar.c:671 +#, fuzzy +msgid "overwrite this file" +msgstr "pøepsat" + +#: src/shar.c:672 +msgid "no" +msgstr "" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "" + +#: src/shar.c:673 +msgid "all" +msgstr "" + +#: src/shar.c:673 +#, fuzzy +msgid "overwrite all files" +msgstr "pøepsat" + +#: src/shar.c:674 +msgid "none" +msgstr "" + +#: src/shar.c:674 +#, fuzzy +msgid "overwrite no files" +msgstr "pøepsat" + +#: src/shar.c:675 +msgid "help" +msgstr "" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "" + +#: src/shar.c:676 +msgid "quit" +msgstr "" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Pøíli¹ mnoho adresáøù pro mkdir" + +#: src/shar.c:737 +#, fuzzy, c-format +msgid "x - created directory `%s'\\''." +msgstr "adresáø pro zámky nelze vytvoøit" + +#: src/shar.c:739 +#, fuzzy, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "adresáø pro zámky nelze vytvoøit" + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "Pro pøístup k %s chybí práva" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "-C není podporován, místo nìj pou¾ijte -Z" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "Jméno aktuálního adresáøe nelze zjistit" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" + +#: src/shar.c:976 src/shar.c:1383 +#, fuzzy, c-format +msgid "New file, remaining %s, " +msgstr "Nový soubor, zbývá %ld, " + +#: src/shar.c:977 src/shar.c:1384 +#, fuzzy, c-format +msgid "Limit still %s\n" +msgstr "Limit zùstává %d\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, fuzzy, c-format +msgid "restore of %s failed" +msgstr "obnovení" + +#: src/shar.c:987 +#, fuzzy, c-format +msgid "End of part %d, continue with part %d" +msgstr "pokraèování èástí" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Zaèíná soubor %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: Není obyèejný soubor" + +#: src/shar.c:1067 +#, fuzzy, c-format +msgid "In shar: remaining size %s\n" +msgstr "shar: zbývající velikost %ld\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "prázdný" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(prázdný)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "Soubor %s nelze otevøít" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "komprimovaný" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "gzipovaný" + +#: src/shar.c:1150 +#, fuzzy +msgid "bzipped" +msgstr "gzipovaný" + +#: src/shar.c:1151 +msgid "binary" +msgstr "binární" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(komprimovaný)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(gzipovaný)" + +#: src/shar.c:1154 +#, fuzzy +msgid "(bzipped)" +msgstr "(gzipovaný)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(binární)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "Fork nelze provést" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Soubor %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "textový" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(textový)" + +#: src/shar.c:1251 +#, fuzzy, c-format +msgid "overwriting %s" +msgstr "pøepisování" + +#: src/shar.c:1253 +#, fuzzy, c-format +msgid "overwrite %s" +msgstr "pøepsat" + +#: src/shar.c:1257 +#, fuzzy, c-format +msgid "SKIPPING %s" +msgstr "PØESKAKUJI" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "rozbalování ukonèeno pøedèasnì" + +#: src/shar.c:1262 +#, fuzzy, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "(soubor ji¾ existuje)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Ukládám %s (%s)" + +#: src/shar.c:1276 +#, fuzzy, c-format +msgid "x - extracting %s %s" +msgstr "rozbaluji" + +#: src/shar.c:1392 +#, fuzzy, c-format +msgid "restore of %s failed\n" +msgstr "obnovení" + +#: src/shar.c:1401 +#, fuzzy, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "pokraèování èástí" + +#: src/shar.c:1407 +#, fuzzy, c-format +msgid "End of %s part %d" +msgstr "Konec èásti" + +#: src/shar.c:1408 +msgid "archive" +msgstr "archívu" + +#: src/shar.c:1412 +#, fuzzy, c-format +msgid "File %s is continued in part %d" +msgstr "pokraèuje èástí" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "Prosím, rozbalte èást èíslo 1 jako první!" + +#: src/shar.c:1460 +#, fuzzy +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "Prosím, rozbalte èást èíslo 1 jako první!" + +#: src/shar.c:1471 +#, fuzzy, c-format +msgid "STILL SKIPPING %s" +msgstr "STÁLE PØESKAKUJI" + +#: src/shar.c:1479 +#, fuzzy, c-format +msgid "continuing file %s" +msgstr "pokraèování souboru" + +#: src/shar.c:1497 +#, fuzzy, c-format +msgid "File %s is complete" +msgstr "je zpracován" + +#: src/shar.c:1504 +#, fuzzy, c-format +msgid "uudecoding file %s" +msgstr "uudekódování souboru" + +#: src/shar.c:1514 +#, fuzzy, c-format +msgid "uncompressing file %s" +msgstr "dekomprimování souboru" + +#: src/shar.c:1522 +#, fuzzy, c-format +msgid "gunzipping file %s" +msgstr "gzip -d souboru" + +#: src/shar.c:1530 +#, fuzzy, c-format +msgid "bunzipping file %s" +msgstr "gzip -d souboru" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "kontrola MD5 selhala" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "Otevírám `%s`" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Uzavírám `%s`" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Více informací získáte pøíkazem `%s --help`.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Pou¾ití: %s [PØEPÍNAÈ]... [SOUBOR]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +" Povinné argumenty dlouhých pøepínaèù, jsou pro jejich krátké formy také\n" +"povinné.\n" + +#: src/shar.c:1730 +#, fuzzy +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +" -m, --base64 pou¾ije kódování base64 odpovídající RFC1521\n" +" --help vypí¹e tuto nápovìdu a skonèí\n" +" --version vypí¹e oznaèení verze a skonèí\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" + +#: src/shar.c:1759 +#, fuzzy +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Øízení obsahu hlavièek:\n" +" -n, --archive-name=JMÉNO pou¾ije jako jméno archívu\n" +" -s, --submitter=ADRESA pou¾ije jako adresu distributora\n" +" -a, --net-headers do výstupu hlavièka Submitted-by: a Archive-" +"name:\n" +" -c, --cut-mark na zaèátek ka¾dého výstupního souboru pøidá\n" +" øádek oznaèující zaèátek archívu (cut line)\n" +"\n" +"Výbìr toho, jak budou soubory ulo¾eny:\n" +" -M, --mixed-uuencode automaticky se rozhodne, zda pou¾ít uuencode\n" +" (implicitnì)\n" +" -T, --text-files pokládá v¹echny soubory za textové\n" +" -B, --uuencode pokládá v¹echny soubory za binární, pou¾ije\n" +" uuencode\n" +" -z, --gzip pou¾ije gzip a uuencode na v¹echny soubory\n" +" -g, --level-for-gzip=ÚROVEÒ parametr -ÚROVEÒ (implicitnì 9) pro gzip\n" +" -Z, --compress pou¾ije compress a uuencode na v¹echny " +"soubory\n" +" -b, --bits-per-code=BITS parametr -bBITS (implicitnì 12) pro compress\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Ochrana pøenosu:\n" +" -w, --no-character-count nepou¾ívá 'wc -c' na testování velikosti\n" +" -D, --no-md5-digest nepou¾ívá 'md5sum' pro ovìøení\n" +" -F, --force-prefix pou¾ije pøedponový (prefix) znak na ka¾dé " +"øádce\n" +" -d, --here-delimiter=ØE«EZEC pou¾ije ØE«EZEC k oddìlení souborù v shar\n" +" archívu\n" +"\n" +"Rùzné druhy shar archívù:\n" +" -V, --vanilla-operation produkuje velmi jednoduchý shar archív, " +"nenároèný\n" +" na rozbalení (je tøeba sed a echo)\n" +" -P, --no-piping pou¾ije doèasné soubory pøi rozbalování\n" +" -x, --no-check-existing slepé pøepsání existujících souborù\n" +" -X, --query-user ptá se u¾ivatele pøed pøepisováním souborù\n" +" (neplatí pro sí»)\n" +" -m, --no-timestamp neobnovuje èasy a datumy modifikace souboru\n" +" -Q, --quiet-unshar nevypisuje zprávy pøi rozbalování\n" +" -f, --basename rozbaluje do jednoho adresáøe, neuva¾uje\n" +" adresáøovou struktùru\n" +" --no-i18n neprodukuje internacializovaný shellový script\n" + +#: src/shar.c:1800 +#, fuzzy +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +" Pøepínaè -o je vy¾adován s -l nebo -L, pøepínaè -n je vy¾adován s -a.\n" +"Pøepínaè -g zahrnuje -z, pøepínaè -b zahrnuje -Z.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "DEBUG nebyl nastaven pøi pøekladu" + +#: src/shar.c:1986 +#, fuzzy, c-format +msgid "Hard limit %s\n" +msgstr "Nepøekroèitelný limit %dk\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "" + +#: src/shar.c:2061 +#, fuzzy, c-format +msgid "Soft limit %s\n" +msgstr "Pøekroèitelný limit %dk\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +" Copyright (C) %s Free Software Foundation, Inc.\n" +" Toto je volné programové vybavení; podmínky pro kopírování a roz¹iøování\n" +"naleznete ve zdrojových textech. Toto programové vybavení je zcela BEZ ZÁRUKY,\n" +"a to i bez záruky PRODEJNOSTI nebo VHODNOSTI PRO NÌJAKÝ KONKRÉTNÍ ÚÈEL.\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "UPOZORNÌNÍ: Bez interakce s u¾ivatelem v jednoduchém(vanilla) re¾imu" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "UPOZORNÌNÍ: pøepínaè pro netextové ukládání pøebit" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Vstupní soubory nejsou zadány" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "Pøepínaè -a nelze pou¾ít bez -n" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "-l nebo -L nelze bez -o pou¾ít" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "PROSÍM, nepou¾ívejte -X soubory v USENETu nebo veøejných sítích" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Máte rozbalenu poslední èást" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "Souborù vytvoøeno: %d\n" + +#: src/shar.c:2310 +#, fuzzy, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "adresáø pro zámky nelze vytvoøit" + +#: src/shar.c:2312 +#, fuzzy, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "adresáø pro zámky nelze vytvoøit" + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "V %s nebyly nalezeny ¾ádné pøíkazy pro shell" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s je pravdìpodobnì C kód, nikoli shellový archiv" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Nenalezeny pøíkazy pro shell po `cut` v %s" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s pravdìpodobnì není shellový archiv" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "Øádek `cut` byl následován: %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Startuji proces `sh'" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +" Argumenty povinné v dlouhých formátech pøepínaèù, jsou povinné i pro " +"jejich\n" +"krátké formy.\n" +"\n" +" -d, --directory=ADRESÁØ aktuální adresáø pro zpracovávání\n" +" -c, --overwrite vlo¾í -c pro shar na povolení pøepisu souborù\n" +" -e, --exit-0 jako --split-at=\"exit 0\"'\n" +" -E, --split-at=ØETÌZEC rozdìlí slo¾ený soubor shar po ØETÌZCI\n" +" -f, --force jako `-c'\n" +" --help vypí¹e tuto nápovìdu a skonèí\n" +" --version vypí¹e oznaèení verze a skonèí\n" +"\n" +"Pokud SOUBOR nebude zadán, bude èten standardní vstup.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "Adresáø nelze zmìnit na `%s`" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "standardní vstup" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, fuzzy, c-format +msgid "%s: Write error" +msgstr "Chyba pøi zápisu" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: Krátký soubor" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: Chybí øádek `end`" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: data následující `=' jsou vyplòovací znaky" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: nepøípustný øádek" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: Chybí øádek `begin`" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: Nepøípustný ~u¾ivatel" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: U¾ivatel `%s' neexistuje" + +#: src/uudecode.c:390 +#, fuzzy, c-format +msgid "cannot access %s" +msgstr "Pro pøístup k %s chybí práva" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "" + +#: src/uudecode.c:408 +#, fuzzy, c-format +msgid "freopen of %s" +msgstr "Otevírám `%s`" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Pou¾ití: %s [SOUBOR]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Povinné argumenty dlouhých formátù pøepínaèù, jsou závazné i pro krátké " +"formy.\n" +" -o, --output-file=SOUBOR výstup do souboru SOUBOR\n" +" --help vypí¹e tuto nápovìdu a skonèí\n" +" --version vypí¹e oznaèení verze a skonèí\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Chyba pøi zápisu" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Chyba pøi ètení" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Pou¾ití: %s [VSTUPNÍ_SOUBOR] VZDÁLENÝ_SOUBOR\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 pou¾ije kódování base64 odpovídající RFC1521\n" +" --help vypí¹e tuto nápovìdu a skonèí\n" +" --version vypí¹e oznaèení verze a skonèí\n" + +#: src/uuencode.c:276 +#, fuzzy, c-format +msgid "fopen-ing %s" +msgstr "Otevírám `%s`" + +#: src/uuencode.c:278 +#, fuzzy, c-format +msgid "fstat-ing %s" +msgstr "Zaèíná soubor %s\n" + +#~ msgid "Please unpack part" +#~ msgstr "Prosím, rozbalte èást" + +#~ msgid "next!" +#~ msgstr "dal¹í!" + +#~ msgid "File" +#~ msgstr "Soubor" + +#~ msgid "original size" +#~ msgstr "pùvodní velikost" + +#~ msgid "current size" +#~ msgstr "souèasná velikost" + +#~ msgid "Must unpack archives in sequence!" +#~ msgstr "Archívy musí být rozbaleny v poøadí!" + +#~ msgid "lock directory" +#~ msgstr "adresáø pro zámky" + +#, fuzzy +#~ msgid "created lock directory" +#~ msgstr "adresáø pro zámky" + +#, fuzzy +#~ msgid "created %s" +#~ msgstr "vytvoøen" + +#, fuzzy +#~ msgid "could not create %s" +#~ msgstr "nelze vytvoøit" + +#~ msgid "restore of" +#~ msgstr "obnovení" + +#~ msgid "failed" +#~ msgstr "selhalo" + +#~ msgid "removed" +#~ msgstr "smazán" + +#~ msgid "failed to remove" +#~ msgstr "se nepovedlo smazat" + +#~ msgid "continue with part" +#~ msgstr "pokraèování èástí" + +#~ msgid "End of" +#~ msgstr "Konec" + +#~ msgid "part" +#~ msgstr "èásti" + +#~ msgid "" +#~ "\n" +#~ "Giving feedback:\n" +#~ " --help display this help and exit\n" +#~ " --version output version information and exit\n" +#~ " -q, --quiet, --silent do not output verbose messages locally\n" +#~ "\n" +#~ "Selecting files:\n" +#~ " -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +#~ " -S, --stdin-file-list read file list from standard input\n" +#~ "\n" +#~ "Splitting output:\n" +#~ " -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX." +#~ "NN\n" +#~ " -l, --whole-size-limit=SIZE split archive, not files, to SIZE " +#~ "kilobytes\n" +#~ " -L, --split-size-limit=SIZE split archive, or files, to SIZE " +#~ "kilobytes\n" +#~ msgstr "" +#~ "\n" +#~ "Výstup:\n" +#~ " --help vypí¹e tuto nápovìdu a skonèí\n" +#~ " --version vypí¹e oznaèení verze a skonèí\n" +#~ " -q, --quiet, --silent doèasnì nevypisuje informace o tom, co dìlá\n" +#~ "\n" +#~ "Výbìr souborù:\n" +#~ " -p, --intermix-type povolení -[BTzZ] v seznamu souborù na zmìnu " +#~ "práv\n" +#~ " -S, --stdin-file-list ète seznam souborù z stdin\n" +#~ "\n" +#~ "Rozdìlení výstupu:\n" +#~ " -o, --output-prefix=PØEDPONA výstup do souboru PREFIX.01 a¾ PREFIX." +#~ "NN\n" +#~ " -l, --whole-size-limit=VELIKOST rozdìlí archív, nikoli soubory na " +#~ "èásti\n" +#~ " velikosti VELIKOST kilobajtù\n" +#~ " -L, --split-size-limit=VELIKOST rozdìlí archiv nebo soubory na èásti\n" +#~ " velikosti VELIKOST kilobajtù\n" + +#~ msgid "Report bugs to .\n" +#~ msgstr "" +#~ " Chyby v programu oznamujte na adrese " +#~ "(pouze\n" +#~ "anglicky), pøipomínky k pøekladu zasílejte na (èesky).\n" diff --git a/po/da.gmo b/po/da.gmo new file mode 100644 index 0000000000000000000000000000000000000000..14ba1507c2d083777107ffc4a71c92d0dd3bb247 GIT binary patch literal 13311 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 L(Ku?HLe2jIH;56! literal 0 HcmV?d00001 diff --git a/po/da.po b/po/da.po new file mode 100644 index 0000000..3137b64 --- /dev/null +++ b/po/da.po @@ -0,0 +1,962 @@ +# Danish messages for sharutils +# Copyright (C) 1996 Free Software Foundation, Inc. +# Keld Simonsen , 2000-2003. +# Jan Djærv , 1996. +# +msgid "" +msgstr "" +"Project-Id-Version: sharutils 4.3.75\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2003-03-01 17:33:05+0100\n" +"Last-Translator: Keld Simonsen \n" +"Language-Team: Danish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Ukendt systemfejl" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: flaget \"%s\" er flertydigt\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: flaget \"--%s\" tillader ikke et argument\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: flaget \"%c%s\" tillader ikke et argument\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: flaget \"%s\" behøver et argument\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: ukendt flag \"--%s\"\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: ukendt flag \"%c%s\"\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ulovligt flag -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ugyldigt flag -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: flaget behøver et argument -- %c\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: flaget '-W %s' er flertydigt\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: flaget '-W -%s' tillader ikke et argument\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "Løbet tør for hukommelse" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "" +"ADVARSEL: Tidsinformation for filer genskabes ikke. Overvej at skaffe og " + +#: src/shar.c:645 +#, fuzzy +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "installere GNUs \"touch\" som følger med GNU File Utilities..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "" + +#: src/shar.c:657 +#, fuzzy +msgid "failed to create lock directory" +msgstr "det mislykkedes at oprette låsekatalog" + +#: src/shar.c:661 +#, fuzzy, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "det mislykkedes at oprette låsekatalog" + +#: src/shar.c:663 +#, fuzzy, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "det mislykkedes at oprette låsekatalog" + +#: src/shar.c:671 +msgid "yes" +msgstr "" + +#: src/shar.c:671 +#, fuzzy +msgid "overwrite this file" +msgstr "overskriv" + +#: src/shar.c:672 +msgid "no" +msgstr "" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "" + +#: src/shar.c:673 +msgid "all" +msgstr "" + +#: src/shar.c:673 +#, fuzzy +msgid "overwrite all files" +msgstr "overskriv" + +#: src/shar.c:674 +msgid "none" +msgstr "" + +#: src/shar.c:674 +#, fuzzy +msgid "overwrite no files" +msgstr "overskriv" + +#: src/shar.c:675 +msgid "help" +msgstr "" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "" + +#: src/shar.c:676 +msgid "quit" +msgstr "" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Kan ikke generere mkdir-kommandoer for så mange kataloger" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "" + +#: src/shar.c:739 +#, fuzzy, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "det mislykkedes at oprette låsekatalog" + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "Kan ikke få adgang til %s" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "-C er forældet, brug -Z i stedet" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "Kan ikke få fat på navnet på aktuelt katalog" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "Ny fil, resterende %s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "Begrænsningen er stadig %s\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, fuzzy, c-format +msgid "restore of %s failed" +msgstr "gendannelse af" + +#: src/shar.c:987 +#, fuzzy, c-format +msgid "End of part %d, continue with part %d" +msgstr "fortsæt med arkivdel" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Begynder på fil %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: Ikke en normal fil" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "I shar: resterende størrelse %s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "tom" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(tom)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "Filen %s kunne ikke åbnes" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "komprimeret" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "gzip-komprimeret" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "bzip-komprimeret" + +#: src/shar.c:1151 +msgid "binary" +msgstr "binær" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(komprimeret)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(gzip-komprimeret)" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(bzip-komprimeret)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(binær)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "Kunne ikke fraspalte ny proces" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Fil %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "tekst" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(tekst)" + +#: src/shar.c:1251 +#, fuzzy, c-format +msgid "overwriting %s" +msgstr "overskriver" + +#: src/shar.c:1253 +#, fuzzy, c-format +msgid "overwrite %s" +msgstr "overskriv" + +#: src/shar.c:1257 +#, fuzzy, c-format +msgid "SKIPPING %s" +msgstr "OVERSPRINGER" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "udtræk afbrydes" + +#: src/shar.c:1262 +#, fuzzy, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "(filen findes allerede)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Gemmer %s (%s)" + +#: src/shar.c:1276 +#, fuzzy, c-format +msgid "x - extracting %s %s" +msgstr "udtrækker" + +#: src/shar.c:1392 +#, fuzzy, c-format +msgid "restore of %s failed\n" +msgstr "gendannelse af" + +#: src/shar.c:1401 +#, fuzzy, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "fortsæt med arkivdel" + +#: src/shar.c:1407 +#, fuzzy, c-format +msgid "End of %s part %d" +msgstr "Slut på arkivdel" + +#: src/shar.c:1408 +msgid "archive" +msgstr "arkiv" + +#: src/shar.c:1412 +#, fuzzy, c-format +msgid "File %s is continued in part %d" +msgstr "fortsætter i arkivdel" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "Vær venlig at udpakke arkivdel 1 først!" + +#: src/shar.c:1460 +#, fuzzy +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "Vær venlig at udpakke arkivdel 1 først!" + +#: src/shar.c:1471 +#, fuzzy, c-format +msgid "STILL SKIPPING %s" +msgstr "FORTSÆTTER MED AT OVERSPRINGE" + +#: src/shar.c:1479 +#, fuzzy, c-format +msgid "continuing file %s" +msgstr "fortsætter med fil" + +#: src/shar.c:1497 +#, fuzzy, c-format +msgid "File %s is complete" +msgstr "er færdig" + +#: src/shar.c:1504 +#, fuzzy, c-format +msgid "uudecoding file %s" +msgstr "uuafkoder fil" + +#: src/shar.c:1514 +#, fuzzy, c-format +msgid "uncompressing file %s" +msgstr "udpakker fil" + +#: src/shar.c:1522 +#, fuzzy, c-format +msgid "gunzipping file %s" +msgstr "gunzipper fil" + +#: src/shar.c:1530 +#, fuzzy, c-format +msgid "bunzipping file %s" +msgstr "bunzipper fil" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "MD5-kontrollen mislykkedes" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "Åbner \"%s\"" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Lukker \"%s\"" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Prøv med \"%s --help\" for yderligere information.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Brug: %s [FLAG]... [FIL]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Obligatoriske argumenter for lange flag er også obligatoriske for korte " +"flag.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"Giver tilbagemeldinger:\n" +" -h, --help vis denne hjælpetekst og afslut\n" +" -v, --version vis versionsinformation og afslut\n" +" -q, --quiet, --silent udskriv ikke udførlige beskeder lokalt\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Udvælgelse af filer:\n" +" -p, --intermix-type tillad -[BTzZ] i fillister at ændre tilstand\n" +" -S, --stdin-file-list læs filliste fra standard-ind\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Udvælgelse af filer:\n" +" -p, --intermix-type tillad -[BTz] i fillister at ændre tilstand\n" +" -S, --stdin-file-list læs filliste fra standard-ind\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PRÆFIKS udskriv på filerne PRÆFIKS.01 til PRÆFIKS." +"NN\n" +" -l, --whole-size-limit=STØRR opsplit arkiv, ikke filer, i STØRR kilobyte\n" +" -L, --split-size-limit=STØRR opsplit arkiv eller filer i STØRR kilobyte\n" + +#: src/shar.c:1759 +#, fuzzy +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Kontrol af felter i arkivhovedet:\n" +" -n, --archive-name=NAVN brug NAVN for at dokumentere arkivet\n" +" -s, --submitter=ADRESSE angiv eksplicit adresse for arkiv-skaberen\n" +" -a, --net-headers indsæt Submitted-by: og Archive-name:\n" +" -c, --cut-mark begynd arkivet med en linje til afskæring\n" +"\n" +"Kontrol af hvordan filer gemmes:\n" +" -M, --mixed-uuencode afgør dynamisk om uuencode behøves\n" +" (standardværdi: på)\n" +" -T, --text-files behandl alle filer som tekst\n" +" -B, --uuencode behandl alle filer som binære data,\n" +" brug uuencode\n" +" -z, --gzip kør gzip og uuencode på alle filer\n" +" -g, --level-for-gzip=NIVEAU giv flaget -NIVEAU til gzip\n" +" (standardværdi: 9)\n" +" -j, --bzip2 bzip2 og uuencode alle filer\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress kør compress og uuencode på alle filer\n" +" -b, --bits-per-code=BIT giv flaget -bBIT til compress\n" +" (standardværdi: 12)\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Beskyttelse mod overførselsfejl:\n" +" -w, --no-character-count brug ikke \"wc -c\" for at tjekke " +"størrelsen\n" +" -D, --no-md5-digest brug ikke \"md5sum\" til kontrol\n" +" -F, --force-prefix skriv præfikstegnet på alle linjer\n" +" -d, --here-delimiter=STRENG adskil filer i arkivet med STRENG\n" +"\n" +"Forskellige typer af skal-arkiver:\n" +" -V, --vanilla-operation lav simple arkiver som bruger få kommandoer\n" +" -P, --no-piping brug kun midlertidige filer ved udpakning\n" +" -x, --no-check-existing overskriv eksisterende filer ved udpakning\n" +" -X, --query-user spørg bruger om filer skal overskrives\n" +" (ikke for arkiver til nettet)\n" +" -m, --no-timestamp genskab ikke filers ændringstid\n" +" -Q, --quiet-unshar undgå snakkesalige beskeder ved udpakning\n" +" -f, --basename udpak filer i ét katalog, uden hierarki\n" +" --no-i18n opret ikke internationaliserede skalarkiver\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"Flaget -o kræves sammen med -l eller -L, flaget -n kræves sammen med -a.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "Flaget -g medfører -z, flaget -b medfører -Z.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "Flaget -g medfører -z.\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Rapportér fejl til <%s>.\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "DEBUG var ikke valgt da programmet oversattes" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "Hård begrænsning på %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "Dette system understøtter ikke -Z ('compress'), brug -z i stedet" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "Blød begrænsning på %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"Dette er frit programmel; se kildeteksten for kopieringsvilkår. Der gives\n" +"INGEN garanti; ikke engang for SALGBARHED eller ANVENDELIGHED FOR NOGET SPECIELT\n" +"FORMÅL.\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "ADVARSEL: Ingen brugerinteraktion i \"vanilla\"-tilstand" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "ADVARSEL: Gemningsflag for ikke-tekst tilsidesat" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Ingen indfiler" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "Flaget -a kan ikke bruges uden -n" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "Flaget -l eller -L kan ikke bruges uden -o" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "" +"Undgå venligst -X for skalarkiver som skal til Usenet eller offentlige " +"netværk" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Du har udpakket den sidste arkivdel" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "Oprettede %d filer\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "" + +#: src/shar.c:2312 +#, fuzzy, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "det mislykkedes at oprette låsekatalog" + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "Fandt ingen skalkommandoer i %s" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s ser ud som rå C-kode, ikke som et skalarkiv" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Fandt ingen skalkommandoer efter skæringslinje i %s" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s er formodentlig ikke et skalarkiv" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "Skæringslinjen efterfulgtes af: %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Starter en skalproces" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Obligatoriske argumenter for lange flag er også obligatoriske for korte " +"flag.\n" +"\n" +" -d, --directory=KATALOG gå til KATALOG før udpakning\n" +" -c, --overwrite giv -c flaget til arkivet for overskrivning\n" +" -e, --exit-0 det samme som `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRENG opdel sammenlagte arkiver efter STRENG\n" +" -f, --force det samme som \"-c\"\n" +" --help vis denne hjælpetekst og afslut\n" +" --version vis versionsinformation og afslut\n" +"\n" +"Hvis ingen FIL angives så læses standard ind.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "Kan ikke gå til katalog \"%s\"" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "standard ind" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: Skrivefejl" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: Afkortet fil" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: \"end\"-linje savnes" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: det findes data efter udfyldningstegnet \"=\" " + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: fejlagtig linje" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: \"begin\"-linje savnes" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: Ugyldig ~user" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: Der findes ingen bruger \"%s\"" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "kan ikke få adgang til %s" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "nægtede skrivning af FIFO (%s)" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "følger ikke symlænke (%s)" + +#: src/uudecode.c:408 +#, fuzzy, c-format +msgid "freopen of %s" +msgstr "Åbner \"%s\"" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Brug: %s [FIL]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Obligatoriske argumenter for lange flag er også obligatoriske for korte " +"flag.\n" +" -o, --output-file=FIL skriv resultatet til FIL\n" +" -h, --help vis denne hjælpetekst og afslut\n" +" -v, --version vis versionsinformation og afslut\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Skrivefejl" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Fejl ved læsning" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Brug: %s [LOKAL_FIL] IKKE_LOKAL_FIL\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 brug base64-kodning ifølge RFC1521\n" +" -h, --help vis denne hjælpetekst og afslut\n" +" -v, --version vis versionsinformation og afslut\n" + +#: src/uuencode.c:276 +#, fuzzy, c-format +msgid "fopen-ing %s" +msgstr "Åbner \"%s\"" + +#: src/uuencode.c:278 +#, fuzzy, c-format +msgid "fstat-ing %s" +msgstr "Begynder på fil %s\n" + +#~ msgid "lock directory" +#~ msgstr "låsekatalog" + +#~ msgid "created" +#~ msgstr "oprettet" + +#~ msgid "failed to create" +#~ msgstr "det mislykkedes at oprette" + +#~ msgid "Must unpack archives in sequence!" +#~ msgstr "Arkivdele skal udpakkes i rette orden!" + +#~ msgid "Please unpack part" +#~ msgstr "Vær venlig at udpakke arkivdel" + +#~ msgid "next!" +#~ msgstr "næste!" + +#~ msgid "failed" +#~ msgstr "mislykkedes" + +#~ msgid "[no, yes, all, quit] (no)?" +#~ msgstr "[nej (n), ja (y), alle (a), afslut (q)] (nej)?" + +#~ msgid "End of" +#~ msgstr "Slut på" + +#~ msgid "part" +#~ msgstr "del" + +#~ msgid "File" +#~ msgstr "Fil" + +#~ msgid "original size" +#~ msgstr "oprindelig størrelse" + +#~ msgid "current size" +#~ msgstr "aktuel størrelse" + +#~ msgid "removed" +#~ msgstr "fjernet" + +#~ msgid "failed to remove" +#~ msgstr "kunne ikke fjerne" + +#~ msgid "" +#~ "\n" +#~ "Giving feedback:\n" +#~ " --help display this help and exit\n" +#~ " --version output version information and exit\n" +#~ " -q, --quiet, --silent do not output verbose messages locally\n" +#~ "\n" +#~ "Selecting files:\n" +#~ " -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +#~ " -S, --stdin-file-list read file list from standard input\n" +#~ "\n" +#~ "Splitting output:\n" +#~ " -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX." +#~ "NN\n" +#~ " -l, --whole-size-limit=SIZE split archive, not files, to SIZE " +#~ "kilobytes\n" +#~ " -L, --split-size-limit=SIZE split archive, or files, to SIZE " +#~ "kilobytes\n" +#~ msgstr "" +#~ "\n" +#~ "Vælg information:\n" +#~ " --help vis denne hjælpetekst og afslut\n" +#~ " --version vis versionsinformation og afslut\n" +#~ " -q, --quiet, --silent brug ikke snakkesalige beskeder lokalt\n" +#~ "\n" +#~ "Vælg filer:\n" +#~ " -p, --intermix-type tillad -[BTzZ] i fil-lister for at ændre " +#~ "tilstand\n" +#~ " -S, --stdin-file-list læs fil-liste fra standard ind\n" +#~ "\n" +#~ "Opdel arkivet:\n" +#~ " -o, --output-prefix=PRÆFIKS lav filerne PRÆFIKS.01 til PRÆFIKS." +#~ "NN\n" +#~ " -l, --whole-size-limit=STØRRELSE opdel arkivet i STØRRELSE kbyte " +#~ "stykker,\n" +#~ " individuelle filer opdeles ikke\n" +#~ " -L, --split-size-limit=STØRRELSE som ovenfor, individuelle filer " +#~ "opdeles\n" + +#~ msgid "Report bugs to .\n" +#~ msgstr "Rapportér fejl til .\n" diff --git a/po/de.gmo b/po/de.gmo new file mode 100644 index 0000000000000000000000000000000000000000..ea391a1e8473e67a3e350388684e8aebd77d59f0 GIT binary patch literal 14744 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 Ab^rhX literal 0 HcmV?d00001 diff --git a/po/de.po b/po/de.po new file mode 100644 index 0000000..95f22eb --- /dev/null +++ b/po/de.po @@ -0,0 +1,934 @@ +# German translations for GNU sharutils package. +# Copyright © 1995, 1996, 2002, 2006 Free Software Foundation, Inc. +# This file is distributed under the same license as the sharutils package. +# Karl Eichwalder , 2002, 2006. +# Ulrich Drepper , 1995-1996. +# +# Todo: +# Fix quotes: `...' -> »...« +# use infinitive form (Hilfe anzeigen, instead of zeige Hilfe an) +# +# lock dir - Sperrverzeichnis +# +msgid "" +msgstr "" +"Project-Id-Version: sharutils 4.6.3-pre4\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2006-05-20 07:19+0200\n" +"Last-Translator: Karl Eichwalder \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "unbekannter Systemfehler" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: Option `%s' ist mehrdeutig\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: Option `--%s' erwartet kein Argument\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: Option `%c%s' erwartet kein Argument\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: Option `%s' erwartet ein Argument\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: unbekannte Option `--%s'\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: unbekannte Option `%c%s'\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: unzulässige Option -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ungültige Option -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: Option erwartet ein Argument -- %c\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: Option »-W %s« ist mehrdeutig\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: Option »-W %s« erwartet kein Argument\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "Speicher erschöpft" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" +"Hinweis: Prüfsummen (md5sum) werden nicht verifiziert.\n" +" Dafür ist die Installing von GNU coreutils erforderlich." + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "WARNUNG: Zeitstempel der Datei wird nicht richtig gesetzt. Vielleicht" + +#: src/shar.c:645 +#, fuzzy +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "wollen Sie sich GNU \\`touch' aus den GNU File Utilities besorgen..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "Sperrverzeichnis »${lock_dir}« ist vorhanden" + +#: src/shar.c:657 +#, fuzzy +msgid "failed to create lock directory" +msgstr "Sperrverzeichnis konnte nicht angelegt werden" + +#: src/shar.c:661 +#, fuzzy, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "Sperrverzeichnis konnte nicht angelegt werden" + +#: src/shar.c:663 +#, fuzzy, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "Sperrverzeichnis konnte nicht angelegt werden" + +#: src/shar.c:671 +msgid "yes" +msgstr "ja" + +#: src/shar.c:671 +#, fuzzy +msgid "overwrite this file" +msgstr "überschreibe" + +#: src/shar.c:672 +msgid "no" +msgstr "nein" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "diese Datei überspringen" + +#: src/shar.c:673 +msgid "all" +msgstr "alle" + +#: src/shar.c:673 +#, fuzzy +msgid "overwrite all files" +msgstr "überschreibe" + +#: src/shar.c:674 +msgid "none" +msgstr "keine" + +#: src/shar.c:674 +#, fuzzy +msgid "overwrite no files" +msgstr "überschreibe" + +#: src/shar.c:675 +msgid "help" +msgstr "Hilfe" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "Möglichkeiten erklären" + +#: src/shar.c:676 +msgid "quit" +msgstr "" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Zuviele Verzeichnisse für das Anlegen von Verzeichnissen mit \"mkdir\"" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "x - Verzeichnis `%s'\\'' wurde angelegt." + +#: src/shar.c:739 +#, fuzzy, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "Sperrverzeichnis konnte nicht angelegt werden" + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "Auf %s kann nicht zugegriffen werden" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "von -C wird abgeraten, verwenden Sie -Z stattdessen" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "" +"Es ist nicht möglich, den Namen des aktuellen Verzeichnisses zu ermitteln" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "Neue Datei, es verbleiben %s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "Größe immer noch %s\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, fuzzy, c-format +msgid "restore of %s failed" +msgstr "Wiederherstellung von" + +#: src/shar.c:987 +#, fuzzy, c-format +msgid "End of part %d, continue with part %d" +msgstr "Fortsetzung mit Teil" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Beginn mit Datei %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: Keine reguläre Datei" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "In shar: verbleibende Größe %s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "leer" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(Leer)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "Datei %s kann nicht geöffnet" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "komprimiert" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "mit »gzip« erstellt" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "mit »bzip2« erstellt" + +#: src/shar.c:1151 +msgid "binary" +msgstr "binär" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(mit »compress« komprimiert)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(mit `gzip' komprimiert)" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(mit »bzip2« komprimiert)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(Binär)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "fork'en nicht möglich" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Datei %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "Text" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(Text)" + +#: src/shar.c:1251 +#, fuzzy, c-format +msgid "overwriting %s" +msgstr "überschreibe" + +#: src/shar.c:1253 +#, fuzzy, c-format +msgid "overwrite %s" +msgstr "überschreibe" + +#: src/shar.c:1257 +#, fuzzy, c-format +msgid "SKIPPING %s" +msgstr "ÜBERSPRINGE" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "Herausholen abgebrochen" + +#: src/shar.c:1262 +#, fuzzy, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "(Datei existiert bereits)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Speichere %s (%s)" + +#: src/shar.c:1276 +#, fuzzy, c-format +msgid "x - extracting %s %s" +msgstr "packe aus" + +#: src/shar.c:1392 +#, fuzzy, c-format +msgid "restore of %s failed\n" +msgstr "Wiederherstellung von" + +#: src/shar.c:1401 +#, fuzzy, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "Fortsetzung mit Teil" + +#: src/shar.c:1407 +#, fuzzy, c-format +msgid "End of %s part %d" +msgstr "Ende von Teil" + +#: src/shar.c:1408 +msgid "archive" +msgstr "Archiv" + +#: src/shar.c:1412 +#, fuzzy, c-format +msgid "File %s is continued in part %d" +msgstr "wird fortgesetzt in Teil" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "Bitte packen Sie zuerst Teil 1 aus!" + +#: src/shar.c:1460 +#, fuzzy +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "Bitte packen Sie zuerst Teil 1 aus!" + +#: src/shar.c:1471 +#, fuzzy, c-format +msgid "STILL SKIPPING %s" +msgstr "ÜBERSPRINGE IMMER NOCH" + +#: src/shar.c:1479 +#, fuzzy, c-format +msgid "continuing file %s" +msgstr "setze fort Datei" + +#: src/shar.c:1497 +#, fuzzy, c-format +msgid "File %s is complete" +msgstr "ist vollständig" + +#: src/shar.c:1504 +#, fuzzy, c-format +msgid "uudecoding file %s" +msgstr "Dekodiere mit `uudecode' Datei" + +#: src/shar.c:1514 +#, fuzzy, c-format +msgid "uncompressing file %s" +msgstr "Datei wird mit »uncompress« dekomprimiert" + +#: src/shar.c:1522 +#, fuzzy, c-format +msgid "gunzipping file %s" +msgstr "Datei wird mit »gunzip« dekomprimiert" + +#: src/shar.c:1530 +#, fuzzy, c-format +msgid "bunzipping file %s" +msgstr "Datei wird mit »bunzip2« dekomprimiert" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "MD5-Test fehlgeschlagen" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "Öffne `%s'" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Schließe `%s'" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "`%s --help' gibt weitere Informationen.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Aufruf: %s [OPTION]... [DATEI]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Notwendige Argumente für Optionen in Langform sind auch für die in\n" +"Kurzform notwendig.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"Programminformationen:\n" +" --help diese Hilfe anzeigen und beenden\n" +" --version Versionsnummer anzeigen und beenden\n" +" -q, --quiet, --silent keine ausführliche Ausgabe\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Auswahl von Dateien:\n" +" -p, --intermix-type -[BTzZ] in Dateilisten erlauben, um Modus zu " +"ändern\n" +" -S, --stdin-file-list Dateiliste von der Standard-Eingabe lesen\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Auswahl von Dateien:\n" +" -p, --intermix-type -[BTz] in Dateilisten erlauben, um Modus zu " +"ändern\n" +" -S, --stdin-file-list Dateiliste von der Standard-Eingabe lesen\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"Unterteilung der Ausgabe:\n" +" -o, --output-prefix=PRÄFIX in Dateien PRÄFIX.01 bis PRÄFIX.NN " +"ausgeben\n" +" -l, --whole-size-limit=GRÖSSE Archiv, nicht Dateien, in GRÖSSE KB\n" +" unterteilen\n" +" -L, --split-size-limit=GRÖSSE Archiv oder Dateien in GRÖSSE KB " +"unterteilen\n" + +#: src/shar.c:1759 +#, fuzzy +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Kontrolle des Shar-Kopfes:\n" +" -n, --archive-name=NAME Archiv mit NAME benennen\n" +" -s, --submitter=ADRESSE Namen des Senders überschreiben\n" +" -a, --net-headers Submitted-by: und Archive-name: ausgeben\n" +" -c, --cut-mark shar mit einer Trennlinie starten\n" +"\n" +"Wie Dateien behandelt werden:\n" +" -M, --mixed-uuencode geeignete Kodierung selbst wählen (Vorgabe)\n" +" -T, --text-files alle Dateien als Text ansehen\n" +" -B, --uuencode alle Dateien als binäre Daten ansehen, " +"uuencode\n" +" verwenden\n" +" -z, --gzip gzip und uuencode für alle Dateien " +"verwenden\n" +" -g, --level-for-gzip=STUFE gzip mit -STUFE (Standard: 9) aufrufen\n" +" -j, --bzip2 bzip2 und uuencode für alle Dateien " +"verwenden\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress compress und uuencode für alle Dateien " +"nehmen\n" +" -b, --bits-per-code=BITS compress mit -BITS (Vorgabe: 12) aufrufen\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Sicherheit bei der Übertragung:\n" +" -w, --no-character-count Größe nicht mit `wc -c' prüfen\n" +" -D, --no-md5-digest nicht mit `md5sum' prüfen\n" +" -F, --force-prefix Präfix-Zeichen jeder Zeile " +"voranstellen\n" +" -d, --here-delimiter=ZEICHENKETTE ZEICHENKETTE zur Dateiabgrenzung " +"nehmen\n" +"\n" +"Produziere verschiedene Arten von Shars:\n" +" -V, --vanilla-operation ganz einfache und genügsame Shars produzieren\n" +" -P, --no-piping temporäre Dateien bei unshar anlegen\n" +" -x, --no-check-existing vorhandene Datei ohne Warnung überschreiben\n" +" -X, --query-user Benutzer vor Überschreiben fragen (nicht für " +"Netz)\n" +" -m, --no-timestamp Datei-Änderungszeit/-datum nicht wieder " +"herstellen\n" +" -Q, --quiet-unshar keine ausführlichen Meldungen bei unshar\n" +" -f, --basename Verzeichnis anlegen, aber keine " +"Unterverzeichnisse\n" +" --no-i18n kein internationalisiertes Shell-Archiv " +"erzeugen\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"Option -o ist notwendig für -l oder -L, Option -n ist notwendig für -a.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "Option -g inbegriffen -z, Option -b impliziert -Z.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "Option -g inbegriffen -z.\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" +"Fehler bitte an <%s> melden.\n" +"Für die deutsche Übersetzung ist die Mailingliste zuständig.\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "DEBUG wurde zur Übersetzungszeit nicht angegeben" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "Festes Limit %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "" +"Dieses System unterstützt -Z (»compress«) nicht, verwenden Sie\n" +"stattdessen -z" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "Weiches Limit %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "Ungültiges Ausgabeprefix\n" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Copyright © %s Free Software Foundation, Inc.\n" +"Dies ist freie Software; in den Quellen befindet sich die Lizensbedingung.\n" +"Es gibt KEINERLEI Garantie, nicht einmal für die TAUGLICHKEIT oder\n" +"die VERWENDBARKEIT ZU EINEM ANGEGEBENEN ZWECK.\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "ACHTUNG: keine Benutzer-Eingabe im `vanilla'-Modus" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "ACHTUNG: Non-Text Speicher-Option überschrieben" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Keine Eingabe-Dateien" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "Option -a kann nicht ohne -n verwendet werden" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "Die Optionen -l und -L können nicht ohne -o verwendet werden" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "BITTE -X shars im Usenet oder öffentlichen Netzwerken vermeiden" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Sie haben den letzten Teil ausgepackt" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "%d Datei(en) erzeugt\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "" + +#: src/shar.c:2312 +#, fuzzy, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "Sperrverzeichnis konnte nicht angelegt werden" + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "Habe in %s keine Shell-Kommandos gefunden" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s sieht wie reiner C Code aus, nicht wie ein Shell-Archiv" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Habe keine Shell-Kommandos nach `cut' in %s gefunden" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s ist wahrscheinlich kein Shell-Archiv" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "Nach der »cut«-Zeile kam: %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "»sh«-Prozeß wird gestartet" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Notwendige Argumente für Optionen in Langform sind auch für die\n" +"Kurzform notwendig.\n" +"\n" +" -d, --directory=VERZEICHNIS vor Auspacken ins Verzeichnis VERZEICHNIS " +"gehen\n" +" -c, --overwrite Option -c an shar-Skripte zum Überschreiben " +"von\n" +" Dateien weitergeben\n" +" -e, --exit-0 dasselbe wie »--split-at=\"exit 0\"«\n" +" -E, --split-at=STRING aneinanderhängende shars bei STRING teilen\n" +" -f, --force dasselbe wie »-c«\n" +" --help diese Meldung anzeigen und beenden\n" +" --version die Versionsnummer anzeigen und beenden\n" +"\n" +"Wenn keine DATEI angegeben wird von stdin gelesen.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "chdir auf Verzeichnis `%s' nicht möglich" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "Standard-Eingabe" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: Schreibfehler" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: zu kurze Datei" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: Zeile mit `end' fehlt" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: weitere Daten nach `=' Füllzeichen" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: ungültige Zeile" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: Zeile mit `begin' fehlt" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: Illegaler ~Benutzer" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: Benutzer `%s' existiert nicht" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "Auf %s kann nicht zugegriffen werden" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "Das Schreiben auf den (%s) wurde verweigert" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "Der Verknüpfung (Symlink) (%s) wurde nicht gefolgt" + +#: src/uudecode.c:408 +#, fuzzy, c-format +msgid "freopen of %s" +msgstr "Wiederherstellung von" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Aufruf: %s [Dateien]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Notwendige Argumente für Optionen in Langform sind auch für die\n" +"Kurzform notwendig.\n" +" -o, --output-file=DATEI Ausgabe in DATEI umleiten\n" +" --help diese Hilfe anzeigen und beenden\n" +" --version Versionsnummer anzeigen und beenden\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Schreibfehler" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Lesefehler" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Aufruf: %s [EINGABE_DATEI] AUSGABE_DATEI\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 Base64-Kodierung verwenden (vgl. RFC1521)\n" +" --help diese Hilfe anzeigen und beenden\n" +" --version Versionsnummer anzeigen und beenden\n" + +#: src/uuencode.c:276 +#, fuzzy, c-format +msgid "fopen-ing %s" +msgstr "Öffne `%s'" + +#: src/uuencode.c:278 +#, fuzzy, c-format +msgid "fstat-ing %s" +msgstr "Beginn mit Datei %s\n" + +#~ msgid "lock directory" +#~ msgstr "Sperrverzeichnis" + +#~ msgid "created" +#~ msgstr "wurde angelegt" + +#~ msgid "failed to create" +#~ msgstr "konnte nicht angelegt werden" + +#~ msgid "Must unpack archives in sequence!" +#~ msgstr "Archiv muss in der richtigen Reihenfolge ausgepackt werden!" + +#~ msgid "Please unpack part" +#~ msgstr "Bitte als nächsten Teil" + +#~ msgid "next!" +#~ msgstr "auspacken!" + +#~ msgid "failed" +#~ msgstr "ist fehlgeschlagen" + +#~ msgid "[no, yes, all, quit] (no)?" +#~ msgstr "[nein (n), ja (y), alle (a), Ende (q)] (nein)?" + +#~ msgid "original size" +#~ msgstr "ursprüngliche Größe" + +#~ msgid "current size" +#~ msgstr "jetzige Größe" + +#~ msgid "removed" +#~ msgstr "gelöscht" + +#~ msgid "failed to remove" +#~ msgstr "konnte nicht entfernt werden" diff --git a/po/el.gmo b/po/el.gmo new file mode 100644 index 0000000000000000000000000000000000000000..6c9fcfc15203cd09ca7b595464cd97079c536aa6 GIT binary patch literal 10486 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 LwE-%srxpJPqb;-9 literal 0 HcmV?d00001 diff --git a/po/el.po b/po/el.po new file mode 100644 index 0000000..6b95d37 --- /dev/null +++ b/po/el.po @@ -0,0 +1,1278 @@ +# Greek messages for GNU sharutils. +# Copyright © 1998 Free Software Foundation, Inc. +# Simos KSenitellis , 1998. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU sharutils 4.2\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 1998-06-20 18:03+0200\n" +"Last-Translator: Simos KSenitellis \n" +"Language-Team: Greek \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-7\n" +"Content-Transfer-Encoding: 8-bit\n" + +# +# File: lib/error.c, line: 91 +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "¶ãíùóôï óöÜëìá óõóôÞìáôïò" + +# +# File: lib/getopt.c, line: 583 +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: ç åðéëïãÞ `%s' åßíáé äéöïñïýìåíç\n" + +# +# File: lib/getopt.c, line: 607 +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: ç åðéëïãÞ `--%s' äå äÝ÷åôáé üñéóìá\n" + +# +# File: lib/getopt.c, line: 612 +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: ç åðéëïãÞ `%c%s' äå äÝ÷åôáé üñéóìá\n" + +# +# File: lib/getopt.c, line: 629 +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: ç åðéëïãÞ `%s' áðáéôåß üñéóìá\n" + +# +# File: lib/getopt.c, line: 658 +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: ìç áíáãíùñßóéìç åðéëïãÞ `--%s'\n" + +# +# File: lib/getopt.c, line: 662 +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: ìç áíáãíùñßóéìç åðéëïãÞ `%c%s'\n" + +# +# File: lib/getopt.c, line: 688 +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ìç áðïäåêôÞ åðéëïãÞ -- %c\n" + +# +# File: lib/getopt.c, line: 691 +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ìç Ýãêõñç åðéëïãÞ -- %c\n" + +# +# File: lib/getopt.c, line: 727 +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: ç åðéëïãÞ áðáéôåß üñéóìá -- %c\n" + +# +# File: lib/getopt.c, line: 583 +#: lib/getopt.c:881 +#, fuzzy, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: ç åðéëïãÞ `%s' åßíáé äéöïñïýìåíç\n" + +# +# File: lib/getopt.c, line: 607 +#: lib/getopt.c:899 +#, fuzzy, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: ç åðéëïãÞ `--%s' äå äÝ÷åôáé üñéóìá\n" + +# +# File: lib/xmalloc.c, line: 82 +#: lib/xmalloc.c:67 +#, fuzzy +msgid "memory exhausted" +msgstr "Ç ìíÞìç åîáíôëÞèçêå" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" + +# +# File: src/shar.c, line: 573 +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "ÐÑÏÅÉÄÏÐÏÉÇÓÇ: äåí åðáíáöÝñïíôáé ïé çìåñïìçíßåò ôùí áñ÷åßùí." + +# +# File: src/shar.c, line: 575 +#: src/shar.c:645 +#, fuzzy +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "" +"ÅãêáôáóôÞóôå ôçí GNU \\`touch', ðïõ äéáôßèåôáé ìå ôá GNU File Utilities..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "" + +# +# File: src/shar.c, line: 586 +#: src/shar.c:657 +#, fuzzy +msgid "failed to create lock directory" +msgstr "äåí Þôáí äõíáôÞ ç äçìéïõñãßá êáôáëüãïõ êëåéäþìáôïò" + +# +# File: src/shar.c, line: 586 +#: src/shar.c:661 +#, fuzzy, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "äåí Þôáí äõíáôÞ ç äçìéïõñãßá êáôáëüãïõ êëåéäþìáôïò" + +# +# File: src/shar.c, line: 586 +#: src/shar.c:663 +#, fuzzy, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "äåí Þôáí äõíáôÞ ç äçìéïõñãßá êáôáëüãïõ êëåéäþìáôïò" + +#: src/shar.c:671 +msgid "yes" +msgstr "" + +# +# File: src/shar.c, line: 1180 +#: src/shar.c:671 +#, fuzzy +msgid "overwrite this file" +msgstr "áíôéãñáöÞ áðü ðÜíù" + +#: src/shar.c:672 +msgid "no" +msgstr "" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "" + +#: src/shar.c:673 +msgid "all" +msgstr "" + +# +# File: src/shar.c, line: 1180 +#: src/shar.c:673 +#, fuzzy +msgid "overwrite all files" +msgstr "áíôéãñáöÞ áðü ðÜíù" + +#: src/shar.c:674 +msgid "none" +msgstr "" + +# +# File: src/shar.c, line: 1180 +#: src/shar.c:674 +#, fuzzy +msgid "overwrite no files" +msgstr "áíôéãñáöÞ áðü ðÜíù" + +#: src/shar.c:675 +msgid "help" +msgstr "" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "" + +#: src/shar.c:676 +msgid "quit" +msgstr "" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "" + +# +# File: src/shar.c, line: 627 +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "ÐÜñá ðïëëïß êáôÜëïãïé ãéá ÷ñÞóç ôçò mkdir" + +# +#: src/shar.c:737 +#, fuzzy, c-format +msgid "x - created directory `%s'\\''." +msgstr "äçìéïõñãßá êáôáëüãïõ" + +# +# File: src/shar.c, line: 586 +#: src/shar.c:739 +#, fuzzy, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "äåí Þôáí äõíáôÞ ç äçìéïõñãßá êáôáëüãïõ êëåéäþìáôïò" + +# +# File: src/shar.c, line: 687 +# File: src/shar.c, line: 914 +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "Áäõíáìßá ðñüóâáóçò óôï %s" + +# +# File: src/shar.c, line: 740 +# File: src/shar.c, line: 1876 +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "ôï -C äåí óõíßóôáôáé ðéá, ÷ñçóéìïðïéÞóôå -Z" + +# +# File: src/shar.c, line: 793 +# File: src/unshar.c, line: 367 +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "Áäõíáìßá åýñåóçò ôïõ ïíüìáôïò ôïõ ôñÝ÷ïíôïò êáôáëüãïõ" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" + +# +# File: src/shar.c, line: 935 +# File: src/shar.c, line: 1319 +#: src/shar.c:976 src/shar.c:1383 +#, fuzzy, c-format +msgid "New file, remaining %s, " +msgstr "ÍÝï áñ÷åßï, áðïìÝíïõí %ld, " + +# +# File: src/shar.c, line: 936 +# File: src/shar.c, line: 1320 +#: src/shar.c:977 src/shar.c:1384 +#, fuzzy, c-format +msgid "Limit still %s\n" +msgstr "Ôï üñéï åßíáé áêüìá %d\n" + +# +# File: src/shar.c, line: 952 +# File: src/shar.c, line: 1329 +# File: src/shar.c, line: 1518 +# File: src/shar.c, line: 1536 +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, fuzzy, c-format +msgid "restore of %s failed" +msgstr "åðáíÜêôçóç ôïõ" + +# +# File: src/shar.c, line: 954 +# File: src/shar.c, line: 1340 +#: src/shar.c:987 +#, fuzzy, c-format +msgid "End of part %d, continue with part %d" +msgstr "óõíÝ÷åéá ìå ôìÞìá" + +# +# File: src/shar.c, line: 967 +# File: src/shar.c, line: 1430 +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Áñ÷Þ áñ÷åßïõ %s\n" + +# +# File: src/shar.c, line: 909 +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: Äåí åßíáé êáíïíéêü áñ÷åßï" + +# +# File: src/shar.c, line: 924 +#: src/shar.c:1067 +#, fuzzy, c-format +msgid "In shar: remaining size %s\n" +msgstr "Óôï shar: åíáðïìåßíïí ìÝãåèïò %ld\n" + +# +# File: src/shar.c, line: 1002 +#: src/shar.c:1086 +msgid "empty" +msgstr "êåíü" + +# +# File: src/shar.c, line: 1003 +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(êÝíï)" + +# +# File: src/shar.c, line: 1027 +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "Äåí åßíáé äõíáôü ôï Üíïéãìá ôïõ áñ÷åßïõ %s" + +# +# File: src/shar.c, line: 1064 +#: src/shar.c:1148 +msgid "compressed" +msgstr "óõìðéåóìÝíï" + +# +# File: src/shar.c, line: 1065 +#: src/shar.c:1149 +msgid "gzipped" +msgstr "óõìðéåóìÝíï ìå gzip" + +# +# File: src/shar.c, line: 1065 +#: src/shar.c:1150 +#, fuzzy +msgid "bzipped" +msgstr "óõìðéåóìÝíï ìå gzip" + +# +# File: src/shar.c, line: 1065 +#: src/shar.c:1151 +msgid "binary" +msgstr "äõáäéêü" + +# +# File: src/shar.c, line: 1066 +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(óõìðéåóìÝíï)" + +# +# File: src/shar.c, line: 1067 +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(óõìðéåóìÝíï ìå gzip)" + +# +# File: src/shar.c, line: 1067 +#: src/shar.c:1154 +#, fuzzy +msgid "(bzipped)" +msgstr "(óõìðéåóìÝíï ìå gzip)" + +# +# File: src/shar.c, line: 1068 +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(äõáäéêü)" + +# +# File: src/shar.c, line: 1081 +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "Áäõíáìßá åêôÝëåóçò äéêñÜíùóçò" + +# +# File: src/shar.c, line: 1086 +# File: src/shar.c, line: 1138 +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Áñ÷åßï %s (%s)" + +# +# File: src/shar.c, line: 1132 +#: src/shar.c:1227 +msgid "text" +msgstr "êåßìåíï" + +# +# File: src/shar.c, line: 1133 +#: src/shar.c:1228 +msgid "(text)" +msgstr "(êåßìåíï)" + +# +# File: src/shar.c, line: 1179 +#: src/shar.c:1251 +#, fuzzy, c-format +msgid "overwriting %s" +msgstr "áíôéãñÜöåôáé áðü ðÜíù" + +# +# File: src/shar.c, line: 1180 +#: src/shar.c:1253 +#, fuzzy, c-format +msgid "overwrite %s" +msgstr "áíôéãñáöÞ áðü ðÜíù" + +# +# File: src/shar.c, line: 1183 +# File: src/shar.c, line: 1188 +#: src/shar.c:1257 +#, fuzzy, c-format +msgid "SKIPPING %s" +msgstr "ÐÑÏÓÐÅÑÁÓÌÁ" + +# +# File: src/shar.c, line: 1182 +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "ç åîáãùãÞ äéáêüðçêå áíþìáëá" + +# +# File: src/shar.c, line: 1188 +#: src/shar.c:1262 +#, fuzzy, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "(ôï áñ÷åßï Þäç õðÜñ÷åé)" + +# +# File: src/shar.c, line: 1206 +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "ÁðïèÞêåõóç ôïõ %s (%s)" + +# +# File: src/shar.c, line: 1211 +#: src/shar.c:1276 +#, fuzzy, c-format +msgid "x - extracting %s %s" +msgstr "äéáäéêáóßá åîáãùãÞò" + +# +# File: src/shar.c, line: 952 +# File: src/shar.c, line: 1329 +# File: src/shar.c, line: 1518 +# File: src/shar.c, line: 1536 +#: src/shar.c:1392 +#, fuzzy, c-format +msgid "restore of %s failed\n" +msgstr "åðáíÜêôçóç ôïõ" + +# +# File: src/shar.c, line: 954 +# File: src/shar.c, line: 1340 +#: src/shar.c:1401 +#, fuzzy, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "óõíÝ÷åéá ìå ôìÞìá" + +# +# File: src/shar.c, line: 953 +# File: src/shar.c, line: 1339 +#: src/shar.c:1407 +#, fuzzy, c-format +msgid "End of %s part %d" +msgstr "ÔÝëïò ôìÞìáôïò" + +# +# File: src/shar.c, line: 1346 +#: src/shar.c:1408 +msgid "archive" +msgstr "áñ÷åßï" + +# +# File: src/shar.c, line: 1350 +#: src/shar.c:1412 +#, fuzzy, c-format +msgid "File %s is continued in part %d" +msgstr "óõíå÷ßæåôáé óôï ôìÞìá" + +# +# File: src/shar.c, line: 1410 +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "Ðáñáêáëþ áíáäéðëþóôå ôï ôìÞìá 1 ðñþôá!" + +# +# File: src/shar.c, line: 1410 +#: src/shar.c:1460 +#, fuzzy +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "Ðáñáêáëþ áíáäéðëþóôå ôï ôìÞìá 1 ðñþôá!" + +# +# File: src/shar.c, line: 1427 +#: src/shar.c:1471 +#, fuzzy, c-format +msgid "STILL SKIPPING %s" +msgstr "ÁÊÏÌÁ ÐÑÏÓÐÅÑÍÏÍÔÁÉ" + +# +# File: src/shar.c, line: 1434 +#: src/shar.c:1479 +#, fuzzy, c-format +msgid "continuing file %s" +msgstr "óõíÝ÷åéá óôï áñ÷åßï" + +# +# File: src/shar.c, line: 1455 +#: src/shar.c:1497 +#, fuzzy, c-format +msgid "File %s is complete" +msgstr "åßíáé ðëÞñåò" + +# +# File: src/shar.c, line: 1464 +#: src/shar.c:1504 +#, fuzzy, c-format +msgid "uudecoding file %s" +msgstr "äéáäéêáóßá uudecode óôï áñ÷åßï" + +# +# File: src/shar.c, line: 1478 +#: src/shar.c:1514 +#, fuzzy, c-format +msgid "uncompressing file %s" +msgstr "áðïóõìðßåóç áñ÷åßïõ" + +# +# File: src/shar.c, line: 1489 +#: src/shar.c:1522 +#, fuzzy, c-format +msgid "gunzipping file %s" +msgstr "áðïóõìðßåóç áñ÷åßïõ ìå gunzip" + +# +# File: src/shar.c, line: 1489 +#: src/shar.c:1530 +#, fuzzy, c-format +msgid "bunzipping file %s" +msgstr "áðïóõìðßåóç áñ÷åßïõ ìå gunzip" + +# +# File: src/shar.c, line: 1552 +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "Áðïôõ÷ßá åëÝã÷ïõ ìå MD5" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "" + +# +# File: src/shar.c, line: 1647 +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "¶íïéãìá ôïõ `%s'" + +# +# File: src/shar.c, line: 1658 +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Êëåßóéìï ôïõ `%s'" + +# +# File: src/shar.c, line: 1670 +# File: src/unshar.c, line: 302 +# File: src/uudecode.c, line: 370 +# File: src/uuencode.c, line: 211 +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "ÄïêéìÜóôå `%s --help' ãéá ðåñéóóüôåñåò ðëçñïöïñßåò.\n" + +# +# File: src/shar.c, line: 1674 +# File: src/unshar.c, line: 306 +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ÁÑ×ÅÉÏ]...\n" + +# +# File: src/shar.c, line: 1675 +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Ïé õðï÷ñåùôéêïß ðáñÜìåôñïé óôá ðåñéöñáóôéêÜ ïñßóìáôá åßíáé õðï÷ñåùôéêïß\n" +"êáé ãéá ôá óýíôïìá ïñßóìáôá.\n" + +# +# File: src/uuencode.c, line: 216 +#: src/shar.c:1730 +#, fuzzy +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +" -m, --base64 ÷ñÞóç êùäéêïðïßçóçò base64 êáôÜ ôï RFC1521\n" +" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n" +" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò ðñïãñÜììáôïò êáé Ýîïäïò\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" + +# +# File: src/shar.c, line: 1694 +#: src/shar.c:1759 +#, fuzzy +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"¸ëåã÷ïò ôùí êåöáëßäùí shar:\n" +" -n, --archive-name=ONOMA ÷ñÞóç ôïõ ÏÍÏÌÁ ãéá üíïìá áñ÷åßïõ\n" +" -s, --submitter=ÄÉÅÕÈÕÍÓÇ ðáñÜêáìøç ôïõ ïíüìáôïò ôïõ áðïóôïëÝá\n" +" -a, --net-headers ÷ñÞóç Submitted-by: êáé Archive-name: êåöáëßäùí\n" +" -c, --cut-mark áñ÷Þ ôïõ shar ìå ãñáììÞ äéáêïðÞò\n" +"\n" +"ÅðéëïãÞ ôïõ ðùò èá óôïéâÜæïíôáé ôá áñ÷åßá:\n" +" -M, --mixed-uuencode áðüöáóç äõíáìéêÜ ãéá uuencode (åî ïñéóìïý)\n" +" -T, --text-files ìåôá÷åßñçóç üëùí ôùí áñ÷åßùí óáí áñ÷åßá " +"êåéìÝíïõ\n" +" -B, --uuencode ìåôá÷åßñçóç ôùí áñ÷åßùí óáí äõáäéêÜ, ÷ñÞóç " +"uuencode\n" +" -z, --gzip gzip êáé uuencode üëùí ôùí áñ÷åßùí\n" +" -g, --level-for-gzip=ÅÐÉÐÅÄÏ ÷ñÞóç -ÅÐÉÐÅÄÏ óõìðßåóçò (åî ïñéóìïý 9) óôï " +"gzip\n" +" -Z, --compress óõìðßåóç êáé uuencode ãéá üëá ôá áñ÷åßá\n" +" -b, --bits-per-code=BITS ÷ñÞóç -bBITS (åî ïñéóìïý 12) óôç óõìðßåóç\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" + +# +# File: src/shar.c, line: 1711 +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Ðñïóôáóßá óôç ìåôÜäïóç:\n" +" -w, --no-character-count áðïöõãÞ ÷ñÞóçò `wc -c' ãéá Ýëåã÷ï ìåãÝèïõò\n" +" -D, --no-md5-digest áðïöõãÞ ÷ñÞóçò `md5sum' ãéá Ýëåã÷ï " +"åãêõñüôçôáò\n" +" -F, --force-prefix åðéâïëÞ ÷áñáêôÞñá ðñïèÝìáôïò óå êÜèå ãñáììÞ\n" +" -d, --here-delimiter=STRING ÷ñÞóç STRING ãéá äéá÷ùñéóìü áñ÷åßùí óôï " +"shar\n" +"\n" +"Äçìéïõñãßá äéáöïñåôéêþí åéäþí shar:\n" +" -V, --vanilla-operation äçìéïõñãßá áðëþí êáé ÷ùñßò áðáéôÞóåéò áñ÷åßùí " +"shar\n" +" -P, --no-piping áðïêëåéóôéêÞ ÷ñÞóç ðñïóùñéíþí áñ÷åßùí üôáí " +"ãßíåôáé unshar\n" +" -x, --no-check-existing ôõöëÞ åããñáöÞ ðÜíù óå ôõ÷üí ðñïûðÜñ÷ïíôá " +"áñ÷åßùí\n" +" -X, --query-user åñþôçóç ÷ñÞóôç ãéá åããñáöÞ óå ðñïûðÜñ÷ïíôá " +"áñ÷åßá (ü÷é ãéá Net)\n" +" -m, --no-timestamp ÷ùñßò åðáíÜêôçóç çìåñïìçíéþí/ùñþí ôñïðïðïßçóçò " +"ôùí áñ÷åßùí\n" +" -Q, --quiet-unshar áðïöõãÞ ðåñéöñáóôéêþí ìçíõìÜôùí êáôÜ ôï unshar\n" +" -f, --basename áíÜêôçóç óå Ýíá êáôÜëïãï, áí êáé õðÜñ÷åé " +"éåñáñ÷ßá\n" +" --no-i18n íá ìç äçìéïõñãçèåß áñ÷åßï script õðïóôÞñéîçò " +"ôïðéêÞò ãëþóóáò\n" + +# +# File: src/shar.c, line: 1729 +#: src/shar.c:1800 +#, fuzzy +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"Ç åðéëïãÞ -o áðáéôåßôáé ìå -l Þ -L, ç åðéëïãÞ -n áðáéôåßôáé ìå -a.\n" +"Ç åðéëïãÞ -g õðïíïåß -z, ç åðéëïãÞ -b õðïíïåß -Z.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "" + +# +# File: src/shar.c, line: 1816 +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "Äåí åß÷å åðéëåãåß DEBUG óôç þñá ôçò ìåôáãëþôôéóçò" + +# +# File: src/shar.c, line: 1837 +#: src/shar.c:1986 +#, fuzzy, c-format +msgid "Hard limit %s\n" +msgstr "Óèåíáñü üñéï %dk\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "" + +# +# File: src/shar.c, line: 1904 +#: src/shar.c:2061 +#, fuzzy, c-format +msgid "Soft limit %s\n" +msgstr "Åëáóôéêü üñéï %dk\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "" + +# +# File: src/shar.c, line: 1963 +# File: src/unshar.c, line: 405 +# File: src/uudecode.c, line: 418 +# File: src/uuencode.c, line: 260 +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"ÐíåõìáôéêÜ Äéêáéþìáôá (C) %s Free Software Foundation, Inc.\n" +"Áõôü åßíáé åëåýèåñï ëïãéóìéêü· äåßôå ôï ðçãáßï êþäéêá ãéá ôïõò êáíüíåò áíôéãñáöÞò.\n" +"Äåí õðÜñ÷åé ÊÁÌÉÁ åããýçóç· ïýôå áêüìá ãéá ËÅÉÔÏÕÑÃÉÊÏÔÇÔÁ Þ ÊÁÔÁËËÇËÏÔÇÔÁ ÃÉÁ\n" +"ÃÉÁ ÅÍÁ ÓÕÃÊÅÊÑÉÌÅÍÏ ÓÊÏÐÏ.\n" + +# +# File: src/shar.c, line: 2011 +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "ÐÑÏÅÉÄÏÐÏÉÇÓÇ: Äåí õðÜñ÷åé äéáëïãéêüôçôá óå áðëÞ êáôÜóôáóç" + +# +# File: src/shar.c, line: 2022 +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "ÐÑÏÅÉÄÏÐÏÉÇÓÇ: ÅðéëïãÝò áðïèÞêåõóçò ìç-êåéìÝíïõ ðáñáêÜìöèçêáí" + +# +# File: src/shar.c, line: 2078 +#: src/shar.c:2238 +msgid "No input files" +msgstr "Äåí õðÜñ÷ïõí áñ÷åßá åéóüäïõ" + +# +# File: src/shar.c, line: 2084 +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "Äåí åßíáé äõíáôü íá ÷ñçóéìïðïéçèåß ç åðéëïãÞ -a ÷ùñßò ôï -n" + +# +# File: src/shar.c, line: 2090 +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "Äåí åßíáé äõíáôü íá ÷ñçóéìïðïéçèïýí ïé åðéëïãÝò -l Þ -L ÷ùñßò ôï -o" + +# +# File: src/shar.c, line: 2102 +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "ÐÁÑÁÊÁËÙ áðïöýãåôå ôá -X shar óôï Usenet Þ óôá äçìüóéá äßêôõá" + +# +# File: src/shar.c, line: 2143 +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "¸÷åôå áíáäéðëþóåé êáé ôï ôåëåõôáßï ôìÞìá" + +# +# File: src/shar.c, line: 2145 +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "ÄçìéïõñãÞèçêáí %d áñ÷åßá\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "" + +# +# File: src/shar.c, line: 586 +#: src/shar.c:2312 +#, fuzzy, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "äåí Þôáí äõíáôÞ ç äçìéïõñãßá êáôáëüãïõ êëåéäþìáôïò" + +# +# File: src/unshar.c, line: 158 +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "Äåí âñÝèçêáí åíôïëÝò öëïéïý óôï %s" + +# +# File: src/unshar.c, line: 174 +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "Ôï %s ìïéÜæåé ìå êáèáñü êþäéêá C êáé ü÷é ìå áñ÷åßï öëïéïý" + +# +# File: src/unshar.c, line: 210 +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Äåí âñÝèçêáí åíôïëÝò öëïéïý ìåôÜ ôï `cut' óôï %s" + +# +# File: src/unshar.c, line: 231 +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "Ôï %s äåí öáßíåôáé íá åßíáé áñ÷åßïõ öëïéïý" + +# +# File: src/unshar.c, line: 232 +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "Ç ãñáììÞ `cut' áêïëïõèïýíôáí áðü: %s" + +# +# File: src/unshar.c, line: 258 +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Åêêßíçóç äéåñãáóßáò `sh'" + +# +# File: src/unshar.c, line: 307 +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Ïé õðï÷ñåùôéêïß ðáñÜìåôñïé óôá ðåñéöñáóôéêÜ ïñßóìáôá åßíáé õðï÷ñåùôéêïß\n" +"êáé ãéá ôá óýíôïìá ïñßóìáôá.\n" +"\n" +" -d, --directory=ÊÁÔÁËÏÃÏÓ áëëáãÞ óôï ÊÁÔÁËÏÃÏ ðñéí ôçí áíáäßðëùóç\n" +" -c, --overwrite ÷ñÞóç -c óôï script ãéá åããñáöÞ ðÜíù óå " +"áñ÷åßá\n" +" -e, --exit-0 ßäéï ìå `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING äéáìïßñáóìá åíùìÝíùí shar ìåôÜ áðü ôï STRING\n" +" -f, --force ßäéï ìå `-c'\n" +" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n" +" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n" +"\n" +"Áí äåí õðÜñ÷åé áñ÷åßï åéóüäïõ, áíÜãíùóç áðü êáíïíéêÞ åßóïäï.\n" + +# +# File: src/unshar.c, line: 385 +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "Äåí åßíáé äõíáôÞ ç áëëáãÞ óôï êáôÜëïãï `%s'" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "" + +# +# File: src/unshar.c, line: 448 +#: src/unshar.c:469 +msgid "standard input" +msgstr "êáíïíéêÞ åßóïäïò" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "" + +# +# File: src/uuencode.c, line: 305 +#: src/uudecode.c:126 src/uudecode.c:430 +#, fuzzy, c-format +msgid "%s: Write error" +msgstr "ÓöÜëìá åããñáöÞò" + +# +# File: src/uudecode.c, line: 98 +# File: src/uudecode.c, line: 196 +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: Óýíôïìï áñ÷åßïõ" + +# +# File: src/uudecode.c, line: 141 +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: Äåí õðÜñ÷åé ãñáììÞ `end'" + +# +# File: src/uudecode.c, line: 205 +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: áêïëïõèïýí äåäïìÝíá ìåôÜ ôï ÷áñáêôÞñá padding `='" + +# +# File: src/uudecode.c, line: 229 +# File: src/uudecode.c, line: 237 +# File: src/uudecode.c, line: 251 +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: ìç áðïäåêôÞ ãñáììÞ" + +# +# File: src/uudecode.c, line: 289 +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: Äåí õðÜñ÷åé ãñáììÞ `begin'" + +# +# File: src/uudecode.c, line: 321 +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: Ìç Ýãêõñï ~user" + +# +# File: src/uudecode.c, line: 328 +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: Äåí õðÜñ÷åé ÷ñÞóôçò `%s'" + +# +# File: src/shar.c, line: 687 +# File: src/shar.c, line: 914 +#: src/uudecode.c:390 +#, fuzzy, c-format +msgid "cannot access %s" +msgstr "Áäõíáìßá ðñüóâáóçò óôï %s" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "" + +# +# File: src/shar.c, line: 952 +# File: src/shar.c, line: 1329 +# File: src/shar.c, line: 1518 +# File: src/shar.c, line: 1536 +#: src/uudecode.c:408 +#, fuzzy, c-format +msgid "freopen of %s" +msgstr "åðáíÜêôçóç ôïõ" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "" + +# +# File: src/uudecode.c, line: 374 +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "×ñÞóç: %s [ÁÑ×ÅÉÏ]...\n" + +# +# File: src/uudecode.c, line: 375 +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Ïé õðï÷ñåùôéêïß ðáñÜìåôñïé óôá ðåñéöñáóôéêÜ ïñßóìáôá åßíáé õðï÷ñåùôéêïß\n" +"êáé ãéá ôá óýíôïìá ïñßóìáôá.\n" +" -o, --output-file=ÁÑ×ÅÉÏ áðåõèåßáò Ýîïäïò óôï áñ÷åßï ÁÑ×ÅÉÏ\n" +" -h, --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n" +" -v, --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò ðñïãñÜììáôïò êáé " +"Ýîïäïò\n" +" -o, --output-file=ÁÑ×ÅÉÏ áð'åõèåßáò Ýîïäïò óôï ÁÑ×ÅÉÏ\n" + +# +# File: src/uuencode.c, line: 305 +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "ÓöÜëìá åããñáöÞò" + +# +# File: src/uuencode.c, line: 198 +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "ÓöÜëìá áíÜãíùóçò" + +# +# File: src/uuencode.c, line: 215 +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "×ñÞóç: %s [ÁÑ×ÅÉÏÅÉÓÏÄÏÕ] ÁÐÏÌÁÊÑÕÓÌÅÍÏÁÑ×ÅÉÏ\n" + +# +# File: src/uuencode.c, line: 216 +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 ÷ñÞóç êùäéêïðïßçóçò base64 êáôÜ ôï RFC1521\n" +" --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n" +" --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò ðñïãñÜììáôïò êáé Ýîïäïò\n" + +# +# File: src/shar.c, line: 1647 +#: src/uuencode.c:276 +#, fuzzy, c-format +msgid "fopen-ing %s" +msgstr "¶íïéãìá ôïõ `%s'" + +# +# File: src/shar.c, line: 967 +# File: src/shar.c, line: 1430 +#: src/uuencode.c:278 +#, fuzzy, c-format +msgid "fstat-ing %s" +msgstr "Áñ÷Þ áñ÷åßïõ %s\n" + +# +# File: src/shar.c, line: 596 +# File: src/shar.c, line: 2156 +#~ msgid "lock directory" +#~ msgstr "êáôÜëïãïò êëåéäþìáôïò" + +# +# File: src/shar.c, line: 596 +# File: src/shar.c, line: 637 +#~ msgid "created" +#~ msgstr "äçìéïõñãÞèçêå" + +# +# File: src/shar.c, line: 597 +# File: src/shar.c, line: 637 +#~ msgid "failed to create" +#~ msgstr "äåí Þôáí äõíáôÞ ç äçìéïõñãßá" + +# +# File: src/shar.c, line: 879 +#~ msgid "Must unpack archives in sequence!" +#~ msgstr "Ôá áñ÷åßá ðñÝðåé íá áíáäéðëùèïýí ìå óõãêåêñéìÝíç óåéñÜ!" + +# +# File: src/shar.c, line: 880 +# File: src/shar.c, line: 1413 +#~ msgid "Please unpack part" +#~ msgstr "Ðáñáêáëþ áíáäéðëþóôå ôï ôìÞìá" + +# +# File: src/shar.c, line: 880 +# File: src/shar.c, line: 1414 +#~ msgid "next!" +#~ msgstr "åðüìåíï!" + +# +# File: src/shar.c, line: 952 +# File: src/shar.c, line: 1329 +# File: src/shar.c, line: 1518 +# File: src/shar.c, line: 1536 +#~ msgid "failed" +#~ msgstr "áðïôõ÷ßá" + +# +# File: src/shar.c, line: 1181 +#~ msgid "[no, yes, all, quit] (no)?" +#~ msgstr "[no, yes, all, quit] (no)?" + +# +# File: src/shar.c, line: 1345 +#~ msgid "End of" +#~ msgstr "ÔÝëïò ôïõ" + +# +# File: src/shar.c, line: 1347 +#~ msgid "part" +#~ msgstr "ôìÞìá" + +# +# File: src/shar.c, line: 1349 +# File: src/shar.c, line: 1455 +#~ msgid "File" +#~ msgstr "Áñ÷åßï" + +# +# File: src/shar.c, line: 1593 +#~ msgid "original size" +#~ msgstr "áñ÷éêü ìÝãåèïò" + +# +# File: src/shar.c, line: 1594 +#~ msgid "current size" +#~ msgstr "ôñÝ÷ïí ìÝãåèïò" + +# +# File: src/shar.c, line: 1678 +#~ msgid "" +#~ "\n" +#~ "Giving feedback:\n" +#~ " --help display this help and exit\n" +#~ " --version output version information and exit\n" +#~ " -q, --quiet, --silent do not output verbose messages locally\n" +#~ "\n" +#~ "Selecting files:\n" +#~ " -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +#~ " -S, --stdin-file-list read file list from standard input\n" +#~ "\n" +#~ "Splitting output:\n" +#~ " -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX." +#~ "NN\n" +#~ " -l, --whole-size-limit=SIZE split archive, not files, to SIZE " +#~ "kilobytes\n" +#~ " -L, --split-size-limit=SIZE split archive, or files, to SIZE " +#~ "kilobytes\n" +#~ msgstr "" +#~ "\n" +#~ "Ãéá áíÜäñáóç:\n" +#~ " --help åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n" +#~ " --version åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n" +#~ " -q, --quiet, --silent áðïöõãÞ åìöÜíéóçò ðåñéöñáóôéêþí ìçíõìÜôùí " +#~ "ôïðéêÜ\n" +#~ "\n" +#~ "ÅðéëïãÞ áñ÷åßùí:\n" +#~ " -p, --intermix-type äõíáôüôçôá ÷ñÞóçò ôùí -[BTzZ] óå ëßóôåò " +#~ "áñ÷åßùí\n" +#~ " ãéá áëëáãÞ äéêáéùìÜôùí\n" +#~ " -S, --stdin-file-list áíÜãíùóç ëßóôáò áñ÷åßùí áðü êáíïíéêÞ åßóïäï\n" +#~ "\n" +#~ "Äéáìïßñáóìá åîüäïõ:\n" +#~ " -o, --output-prefix=ÐÑÏÈÅÌÁ åîïäïò óå áñ÷åßá ÐÑÏÈÅÌÁ.01 ìÝ÷ñé ÐÑÏÈÅÌÁ." +#~ "NN\n" +#~ " -l, --whole-size-limit=ÌÅÃÅÈÏÓ äéáìïßñáóìá ôåëéêïý áñ÷åßïõ, ü÷é ôùí " +#~ "åíäéÜìåóùí,\n" +#~ " óå ÌÅÃÅÈÏÓ Kbytes\n" +#~ " -L, --split-size-limit=ÌÅÃÅÈÏÓ äéáìïßñáóìá ôåëéêïý áñ÷åßïõ Þ ôùí " +#~ "åíäéÜìåóùí\n" +#~ " óå ÌÅÃÅÈÏÓ Kbytes\n" + +# +# File: src/shar.c, line: 1734 +# File: src/unshar.c, line: 320 +# File: src/uudecode.c, line: 380 +# File: src/uuencode.c, line: 220 +#~ msgid "Report bugs to .\n" +#~ msgstr "ÁíáöÝñáôå óöÜëìáôá óôï .\n" + +# +# File: src/shar.c, line: 2156 +#~ msgid "removed" +#~ msgstr "äéáãñÜöôçêå" + +# +# File: src/shar.c, line: 2157 +#~ msgid "failed to remove" +#~ msgstr "áðïôõ÷ßá óôç äéáãñáöÞ" diff --git a/po/en@boldquot.header b/po/en@boldquot.header new file mode 100644 index 0000000..fedb6a0 --- /dev/null +++ b/po/en@boldquot.header @@ -0,0 +1,25 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# +# This catalog furthermore displays the text between the quotation marks in +# bold face, assuming the VT100/XTerm escape sequences. +# diff --git a/po/en@quot.header b/po/en@quot.header new file mode 100644 index 0000000..a9647fc --- /dev/null +++ b/po/en@quot.header @@ -0,0 +1,22 @@ +# All this catalog "translates" are quotation characters. +# The msgids must be ASCII and therefore cannot contain real quotation +# characters, only substitutes like grave accent (0x60), apostrophe (0x27) +# and double quote (0x22). These substitutes look strange; see +# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html +# +# This catalog translates grave accent (0x60) and apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019). +# It also translates pairs of apostrophe (0x27) to +# left single quotation mark (U+2018) and right single quotation mark (U+2019) +# and pairs of quotation mark (0x22) to +# left double quotation mark (U+201C) and right double quotation mark (U+201D). +# +# When output to an UTF-8 terminal, the quotation characters appear perfectly. +# When output to an ISO-8859-1 terminal, the single quotation marks are +# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to +# grave/acute accent (by libiconv), and the double quotation marks are +# transliterated to 0x22. +# When output to an ASCII terminal, the single quotation marks are +# transliterated to apostrophes, and the double quotation marks are +# transliterated to 0x22. +# diff --git a/po/es.gmo b/po/es.gmo new file mode 100644 index 0000000000000000000000000000000000000000..b607026f36f23db296ee68401aac1502495f560a GIT binary patch literal 20873 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 PP_6QgsqZ$i;;Q?97Hn*( literal 0 HcmV?d00001 diff --git a/po/es.po b/po/es.po new file mode 100644 index 0000000..3f19cf4 --- /dev/null +++ b/po/es.po @@ -0,0 +1,1277 @@ +# Mensajes en español para GNU sharutils. +# Copyright (C) 1996 Free Software Foundation, Inc. +# Tomás Bautista , 1996. +# Santiago Vila , 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU sharutils 4.6.3-pre4\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2006-05-26 17:25+0200\n" +"Last-Translator: Santiago Vila \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Error del sistema desconocido" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: la opción `%s' es ambigua\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: la opción `--%s' no admite ningún argumento\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: la opción `%c%s' no admite ningún argumento\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: la opción `%s' requiere un argumento\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: opción `--%s' no reconocida\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: opción `%c%s' no reconocida\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opción ilegal -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opción inválida -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: la opción requiere un argumento -- %c\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: la opción `-W %s' es ambigua\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: la opción `-W %s' no admite ningún argumento\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "memoria agotada" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "Nota: no se verifican las sumas md5. Considere instalar GNU coreutils." + +# Nota: Se supone que este mensaje continúa en el siguiente. De ahí el "e". +# +# FIXME: No se traducen palabras sueltas sino frases completas. +# Hablar con el autor. +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "" +"ATENCIÓN: no se restablecerán las marcas de tiempo.\n" +" Considere tomar e" + +#: src/shar.c:645 +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "instalar GNU `touch'\\'', distribuido con GNU coreutils..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "el directorio de bloqueo '${lock_dir}' existe" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "fallo al crear el directorio de bloqueo" + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "x - creado el directorio de bloqueo `'%s\\''." + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "x - fallo al crear el directorio de bloqueo `'%s\\''." + +#: src/shar.c:671 +msgid "yes" +msgstr "sí" + +#: src/shar.c:671 +msgid "overwrite this file" +msgstr "sobrescribe este fichero" + +#: src/shar.c:672 +msgid "no" +msgstr "no" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "salta este fichero" + +#: src/shar.c:673 +msgid "all" +msgstr "todos" + +#: src/shar.c:673 +msgid "overwrite all files" +msgstr "sobrescribe todos los ficheros" + +#: src/shar.c:674 +msgid "none" +msgstr "ninguno" + +#: src/shar.c:674 +msgid "overwrite no files" +msgstr "no sobrescribe ningún fichero" + +#: src/shar.c:675 +msgid "help" +msgstr "ayuda" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "explica las opciones" + +#: src/shar.c:676 +msgid "quit" +msgstr "salir" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "sale inmediatamente" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Demasiados directorios para crear con `mkdir'" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "x - creado el directorio `%s'\\''." + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "x - fallo al crear el directorio `%s'\\''." + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "No se puede acceder a %s" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "La opción -C está obsoleta, utilice -Z en su lugar" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "No se puede obtener el nombre del directorio actual" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" +"¡Los archivos deben desempaquetarse en orden!\n" +"Por favor desempaquete '`cat ${lock_dir}/seq`' a continuación." + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "Nuevo fichero, faltan %s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "El límite es aún %s\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "la restauración de %s falló" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "Fin de la parte %d, continúa con la parte %d" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Fichero de comienzo %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: No es un fichero regular" + +# Me resulta demasiado inconexo ... ¿y poner algo así como +# `quedan %ld bytes' aunque no sea tan fiel como debiera? +# ipg +# A mí no me disgusta. Pero pongo "faltan" en vez de "quedan". tb +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "En `shar': faltan %s bytes\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "vacío" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(vacío)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "No se puede abrir el fichero %s" + +# Para que esto "haga juego" con otra cosa que hay más abajo, quizá habría +# que poner "comprimido con `compress'", ¡qué horror! sv +# Sí, ya sé que es un poco raro, pero, ¿qué otra cosa se podría hacer? tb +# Nada, creo. O esto, o lo que había antes. sv +# Bueno, la verdad es que así se respeta fielmente el original, pues +# lo que se traducen no son palabras sino significados. sv +#: src/shar.c:1148 +msgid "compressed" +msgstr "comprimido con `compress'" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "comprimido con `gzip'" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "comprimido con bzip" + +#: src/shar.c:1151 +msgid "binary" +msgstr "binario" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(comprimido)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(comprimido con `gzip')" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(comprimido con bzip)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(binario)" + +# Votaría por alguna descripción más amplia -- siempre doy la coña +# con esta frase: +# `No se pudo duplicar el proceso (falló la llamada a fork())' +# ipg +# O me equivoco, o hacer un fork no es duplicar un proceso, sino que crea +# un nuevo proceso: +# +# FORK(2V) SYSTEM CALLS FORK(2V) +# +# NAME +# fork - create a new process +# +# Por lo tanto voy a escribir otra cosa. tb +# +# Te ha faltado citar esto de la misma página de manual: +# +# DESCRIPTION +# fork creates a child process that differs from the parent +# process only in its PID and PPID, and in the fact that +# resource utilizations are set to 0. File locks and pend­ +# ing signals are not inherited. +# +# fork() realmente lo único que hace es copiar las tablas de datos del +# núcleo del padre y los segmentos de datos del padre, por lo que lo +# único en lo que difieren justo después de la llamada a fork() es en el +# PID, en los locks y en las señales en espera de servicio. A eso se le +# llama duplicar un proceso. Que luego se use para crear un proceso +# nuevo con exec() es harina de otro costal, pero la única manera de +# crear más procesos en Unix es pasar por duplicar primero un proceso. +# +# También es verdad que al usuario qué gracia le hará la diferencia, +# pero no debemos confundir los huevos con las castañas, y al menos, +# intentar que la gente lo comprenda. ipg +# +# +# Esto lo discutí con Iñaky y Jim Meyering y al final les convencí :-) +# Lo cambio. sv +# Para la poteridá: Antes decía: +# "No se pudo crear un proceso nuevo: fallo en la llamada a `fork'" +# Pues lo dejamos cambiado. tb +# +# FIXME: Escribir al autor, de todas formas. sv+ +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "Falló la llamada al sistema `fork'" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Fichero %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "texto" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(texto)" + +# He quitado una 'e' em+ +#: src/shar.c:1251 +#, c-format +msgid "overwriting %s" +msgstr "sobrescribiendo %s" + +#: src/shar.c:1253 +#, c-format +msgid "overwrite %s" +msgstr "sobrescribe %s" + +# Estamos empleando extensivamente: 'pasando por alto' em+ +# Bueno, eres tú quien lo está empleando extensivamente. +# Iñaky utiliza descartar, y yo depende del caso. +# +# Análisis semántico: +# Literalmente, skip es saltar, y quiere decir que no se considera. +# Pasar por alto, parece que sí se considera pero luego se hace la vista +# gorda, o algo así (como un "perdón"). +# Tal vez por eso no me acabe de gustar "pasar por alto". sv+ +#: src/shar.c:1257 +#, c-format +msgid "SKIPPING %s" +msgstr "SALTANDO %s" + +# interrumpida ? sv +# Interrumpir y abortar, aunque son cosas similares, +# normalmente dan lugar a resultados distintos. +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "extracción abortada" + +#: src/shar.c:1262 +#, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "SALTANDO %s (el fichero ya existe)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Guardando %s (%s)" + +#: src/shar.c:1276 +#, c-format +msgid "x - extracting %s %s" +msgstr "x - extrayendo< %s %s" + +#: src/shar.c:1392 +#, c-format +msgid "restore of %s failed\n" +msgstr "la restauración de %s falló\n" + +#: src/shar.c:1401 +#, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "Fin de la parte %ld, continúa con la parte %ld" + +# Nota: se supone que después de este mensaje aparece un numerito. +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "Fin de %s parte %d" + +#: src/shar.c:1408 +msgid "archive" +msgstr "archivo" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "El fichero %s continúa en la parte %d" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "¡Por favor, desempaquete primero la parte 1!" + +#: src/shar.c:1460 +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "¡Por favor, desempaquete la parte '${shar_sequence}' a continuación!" + +# Idem em+ +#: src/shar.c:1471 +#, c-format +msgid "STILL SKIPPING %s" +msgstr "TODAVÍA SALTANDO %s" + +#: src/shar.c:1479 +#, c-format +msgid "continuing file %s" +msgstr "continuando con el fichero %s" + +#: src/shar.c:1497 +#, c-format +msgid "File %s is complete" +msgstr "El fichero %s se ha completado" + +# Otra sugerencia: descodificando en lugar de decodificando. sv +# Y otra más: descodificando el archivo ... (añadir "el"). sv +# Ya... bueno. Por aquí solemos usar decodificar, en vez de descodificar, +# pero no sé cual es lo correcto. ¿Y qué tal descifrar? tb +# +# Me suena a criptografía (es decir, da a entender +# que está codificado de alguna manera extraña, +# cuando en realidad el "uuencode" es muy sencillo). sv +# ¿Entonces "descodificar"? Advierto que va a haber gente extrañada en +# este punto. Por ejemplo, yo. tb +# +# El Unix es bello .... :) ipg +# +# Una cosa: ¿decodificar o descodificar? +# (es que me suena mejor lo segundo) sv +# +# Para el Canal Plus ¿qué se usa? ¿un descodificador o un decodificador? +# Pregúntese a quien tenga uno, y entonces decidimos. tb +# :-) :-) :-) sv +#: src/shar.c:1504 +#, c-format +msgid "uudecoding file %s" +msgstr "decodificando el fichero %s con `uudecode'" + +# Nota: Añadir "con `uncompress'" está justificado por el hecho de que +# cuando se descomprime con gunzip se le llama "gunzipping". +#: src/shar.c:1514 +#, c-format +msgid "uncompressing file %s" +msgstr "descomprimiendo el fichero %s con `uncompress'" + +#: src/shar.c:1522 +#, c-format +msgid "gunzipping file %s" +msgstr "descomprimiendo el fichero %s con `gunzip'" + +#: src/shar.c:1530 +#, c-format +msgid "bunzipping file %s" +msgstr "descomprimiendo el fichero %s con `bunzip'" + +# Sugerencia: "suma de comprobación MD5" o "comprobación MD5". sv +# El "check" es el mismo "check" de "cheksum" (suma de comprobación), solo que +# MD5 no hace propiamente una suma sino un "revoltijo" con una +# función de `hash'. sv +# Los alemanes usan para esto `test.' Y a mí es una palabra que no me gusta, +# pero... tb +# Para MD5 he oído más los términos `huella digital MD5', `huella MD5' +# o `firma MD5'. ipg +# Pues si eso es lo que por ahí se oye, pues p'alante. tbd +# Si lo pones así, quizá quedaría mejor `Comprobación de la huella +# digital ...' y yo añadiría algo de `Es probable que el archivo esté +# jodido', pero más educadamente. ipg +# Hecho. tb +# +# Borro lo del fichero dañado. No es NADA fiel al original. +# Si el original hubiera querido decir algo acerca de un fichero dañado +# lo habría dicho. Además, puede que el fichero no esté dañado, sino +# que simplemente esté falsificado o sea otra versión. +# +# Propongo "Fallo en la suma MD5". Más fácil, más corto, más bonito... +# No importa que no sea exactamente una suma, puede considerarse una +# "suma generalizada". Además, el programa que genera eso se llama +# `md5sum' (es decir, parecido a "cheksum", y con la misma función aunque +# utilice un algoritmo distinto). sv +# +# No es la suma MD5 la que falla sino la comprobación, ¿no? tb +# Bueno, también puede decirse que es la suma la que falla, en tanto que no +# es la que debería ser. Déjalo como está, si te parece. sv +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "Fallo en la comprobación de la suma MD5" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "'aviso de restauración: el tamaño de %s no es %s'\n" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "reserva de espacio para el nombre del fichero de salida" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "Abriendo `%s'" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Cerrando `%s'" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Pruebe `%s --help' para más información.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Modo de empleo: %s [OPCIÓN]... [FICHERO]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Los argumentos obligatorios para las opciones largas\n" +"también son obligatorios para las opciones cortas.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"Opciones de realimentación:\n" +" --help muestra esta ayuda y finaliza\n" +" --version informa de la versión y finaliza\n" +" -q, --quiet, --silent no muestra mensajes de progreso localmente\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Selección de ficheros:\n" +" -p --intermix-type permite -[BTzZ] en listas de ficheros para " +"cambiar\n" +" el modo\n" +" -S, --stdin-file-list lee la lista de ficheros de la entrada estándar\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Selección de ficheros:\n" +"\n" +" -p, --intermix-type permite -[BTz] en listas de ficheros para cambiar " +"el\n" +" modo\n" +" -S, --stdin-file-list lee la lista de ficheros de la entrada estándar\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"División del resultado:\n" +" -o, --output-prefix=PREFIJO coloca el resultado en PREFIJO.01 a PREFIJO." +"NN\n" +" -l, --whole-size-limit=TAMAÑO divide el archivo, no los ficheros, en " +"trozos\n" +" de TAMAÑO kilobytes\n" +" -L, --split-size-limit=TAMAÑO divide el archivo, o los ficheros, en " +"trozos\n" +" de TAMAÑO kilobytes\n" + +# Otra cosa: El "controlling" y el "selecting" creo que no son gerundios. +# Diría que aquí lo que pega es: +# "Control de las cabeceras del archivo shar" +# "Selección de cómo se almacenan los archivos". +# ¿qué opinas? sv +# +# Nota: No hace falta poner sangría adicional cuando una opción te ocupe +# más de una línea. Solemos dejarlo al mismo nivel. +# (He cambiado tan sólo el "línea de corte", si estás de acuerdo, puedes +# hacerlo tú con los demás). sv +# ¿Coding -> cifrado? tb +# En -a ¿documentar? me suena un rato dao la vuerta :) ipg +# Vale. tb +#: src/shar.c:1759 +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Control de las cabeceras de archivo `shar':\n" +" -n, --archive-name=NOMBRE usa NOMBRE para documentar el archivo\n" +" -s, --submitter=DIRECCIÓN ignora el nombre del remitente\n" +" -a, --net-headers documenta el archivo `shar' con cabeceras\n" +" de tipo `Submitted-by:' y `Archive-name:'\n" +" -c, --cut-mark comienza el archivo `shar' con una\n" +" línea de corte\n" +" -t, --translate traduce los mensajes del script\n" +"\n" +"Selección del modo de almacenamiento de los archivos:\n" +" -M, --mixed-uuencode decide automáticamente el cifrado con\n" +" `uuencode' (por defecto)\n" +" -T, --text-files trata todos los archivos como texto\n" +" -B, --uuencode trata todos los archivos como datos \n" +" binarios, utilizando `uuencode'\n" +" -z, --gzip procesa todos los archivos con `gzip' y\n" +" `uuencode'\n" +" -g, --level-for-gzip=NIVEL pasa -NIVEL (por defecto 9) a `gzip'\n" +" -j, --bzip2 procesa todos los ficheros con bzip2\n" +" y uuencode\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress comprime y codifica con uuencode todos los\n" +" ficheros\n" +" -b, --bits-per-code=BITS pasa -bBITS (por omisión 12) a compress\n" + +# En -D, ¿qué tal `no comprueba la huella MD5 con `md5sum'' (donde +# digo `huella' pon lo que más te guste :)? +# En -V ¿`no exigente' -> `poco exigente'? +# En -Q ¿`actúa silenciosamente al ...'? +# Yo no traduciría `script' a `guión' ... me ha costado un rato darme +# cuenta de que querías decir (mente lúcida la mía que ha tardado en +# mirar la versión inglesa :). En todos sitios lo hemos dejado como +# script, pero entre comillas simples. Poca gente usa la palabra +# `guión' para referirse a un shell script. +# En -X `no para red' -> `no usar en Usenet o redes públicas' +# ipg +# Dejo algunas cosas como estaban (-Q) y otras las cambio. Lo de `guión', +# de acuerdo en dejarlo en `script' (me guiaba por algo que se discutió +# en la lista de spanglish). tb +# +# Lo de la "huella digital" para el "digest" me parece confuso y excesivo. +# Yo lo reservaría para la huella digital de PGP. sv +# Propongo algo más sencillo: +# "No utiliza la suma md5 para verificar.". sv +# +# Sospecho que en realidad utiliza algún algoritmo llamado md5sum ya +# definido en alguna librería para hacer esta comprobación, y lo que +# realmente viene a utilizar es el "digest" que obtiene de esta función. tb +# +# Bueno, ahora está mejor que antes, pero se puede confundir el +# algoritmo con el programa que lo implementa con el resultado del algoritmo. +# (Siendo efectivamente esto último a lo que se refiere realmente). +# Pero mejor lo dejamos así, no vaya a ser que al intentar traducir +# `digest' quede peor... sv +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Protección contra transmisión:\n" +" -w, --no-character-count no usa `wc -c' para verificar el tamaño\n" +" -D, --no-md5-digest no utiliza `md5sum' para verificar\n" +" -F, --force-prefix fuerza el carácter de prefijo en todas\n" +" las líneas\n" +" -d, --here-delimiter=CADENA usa CADENA para delimitar los ficheros en\n" +" el archivo `shar'\n" +"\n" +"Producción de distintas clases de archivos `shar':\n" +" -V, --vanilla-operation produce archivos `shar' muy sencillos y\n" +" poco exigentes\n" +" -P, --no-piping usa exclusivamente archivos temporales al\n" +" deshacer el archivo `shar'\n" +" -x, --no-check-existing escribe sin confirmar sobre archivos\n" +" existentes\n" +" -X, --query-user pregunta al usuario antes de escribir sobre\n" +" archivos (no para red)\n" +" -m, --no-timestamp no restaura las fechas y horas de modificación\n" +" del fichero\n" +" -Q, --quiet-unshar impide producir mensajes al deshacer\n" +" el archivo `shar'\n" +" -f, --basename restaura en un directorio, sin tener en cuenta\n" +" la jerarquía\n" +" --no-i18n no produce `script' de shell internacionalizado\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"La opción -o es necesaria con -l o -L, la opción -n es necesaria con -a.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "La opción -g implica -z, la opción -b implica -Z.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "La opción -g implica -z.\n" + +# Nota: Lo del último traductor es provisional hasta que piense algo mejor. +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" +"Comunicar bichos a <%s>.\n" +"Comunicar errores de traducción al último traductor:\n" +" msgunfmt /usr/share/locale/es/LC_MESSAGES/sharutils.mo | grep Last-" +"Translator\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "límite de tamaño de fichero inválido `%s'" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "formato inválido (campo \"count\" demasiado ancho): '%s'\n" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "No se seleccionó DEBUG en la compilación" + +# ¿Límite fijo o infranqueable? ipg +# Buena pregunta. Quién podrá resolverla? tb +# El resolvedor que la resuelva buen resolvedor será ... +# Me sace que aquí se refiere al límite duro, al que es `no más Santo +# Tomás'. Según recuerdo, el soft es el que se te deja pasar (en las +# cuotas, por ejemplo) por un periodo de gracia, pasado el cual, te +# abren el culo. El hard es el que no puedes pasar ni hinchao de +# coca. Yo creo que traduciría `Soft limit' como `Límite de aviso' y +# `Hard limit' como 'Límite inexcedible'. ipg +# "límite por hardware" me parece perfecto. sv +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "Límite por hardware %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "Este sistema no admite -Z ('compress'), utilice -z en su lugar" + +# ¿Límite de aviso? ipg +# Otra buena pregunta. tb +# Me remito a la anterior respuesta :). ipg +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "Límite por software %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "prefijo de salida ilegal\n" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"Esto es software libre; vea el código fuente para las condiciones de copia.\n" +"No hay NINGUNA garantía; ni siquiera de COMERCIABILIDAD o IDONEIDAD PARA UN\n" +"FIN DETERMINADO.\n" + +# ver arriba del todo. +# Lo cambio, con permiso. sv +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "ATENCIÓN: No se permite la interacción del usuario en modo `vanilla'" + +# ¿overridden es ignoradas? tal y como ha quedado no me parece fiel. +# tal vez añadiendo las opciones por defecto o algo así. ¿qué te +# parece? sv Overriden, desde mi punto de vista, significa que a las +# opciones que se introdujeron "no se les hace caso" override". O sea, +# que... cómo lo ponemos? tb +# ¿sustituídas? sv +# Los alemanes usan algo como "sobreescritas". No es por nada, pero... +# no se sustituyen estas opciones: se descartan? Se pasan por alto? +# +# Se ignoran? tb +# +# Esto es delicado. Ignorar es "no saber", pero por culpa de la +# palabra inglesa "ignore", la gente está empezando a usar "ignorar" como +# sinónimo de lo que realmente significa "ignore": no hacer caso. +# (mantengo una lucha sin cuartel contra esta palabra con ese significado). +# ^^^ Ya será menos, Santiago ;) ipg (¡e broma :D!) +# En estos casos se pueden usar "descartar", "no tener efecto" +# "pasar por alto", y cosas así. +# ¿Te gusta alguna? sv +# Pues sí... `descartadas' no me disgusta. No sé si preferiría `desechadas' +# aunque a lo mejor alguien pondrá pegas. tb +# +# Sí, yo... me suena a desechos (desperdicios). No sé. sv +# Ya, ya lo sabía... Cambio a "descartadas" a ver. tb +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "ATENCIÓN: Descartadas las opciones de almacenamiento para no-texto" + +# Sugerencia: "No hay ningún archivo de entrada". sv +# Apoyo la moción. ipg +# De acuerdo, en parte. tb +# Esta frase ya ha salido en otra ocasión. +# Si ponemos "No se han indicado archivos de entrada" +# el plural parece indicar que hay que dar varios archivos de entrada. +# Lo cambio, a ver si te gusta. sv +#: src/shar.c:2238 +msgid "No input files" +msgstr "No se ha indicado ningún fichero de entrada" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "No se puede usar la opción -a sin -n" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "No se puede usar la opción -l ó -L sin -o" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "" +"POR FAVOR evite archivos creados con `shar -X' en Usenet o redes públicas" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Ha desempaquetado la última parte" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "Creados %d ficheros\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "x - borrado el directorio de bloqueo `'%s\\''." + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "x - fallo al borrar el directorio de bloqueo `'%s\\''." + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "No se encontraron instrucciones de shell en %s" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s parece código C, no un archivo de shell" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "No se encontraron instrucciones de shell después de `cut' en %s" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "Probablemente %s no es un archivo de shell" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "La línea `cut' estaba seguida por: %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Iniciando el proceso `sh'" + +# guión -> `script' +# ¿concatenados o concadenados? +# ipg +# Por aquí usamos "concatenar", pero veo que es "concadenar". Cambiado. tb +# No lo lleves tan a misa :) que yo no estaba muy seguro. Ahora he +# mirado el diccionario, y resulta que ambas son válidas. Elige tú; a mí +# personalmente (y no sé por qué) me gusta más `concatenar'). ipg +# Y a mí también: es lo que la gente usa por aquí... tb +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Los argumentos obligatorios para las opciones largas\n" +"también son obligatorios para las opciones cortas.\n" +"\n" +" -d, --directory=DIRECTORIO cambia a DIRECTORIO antes de desempaquetar\n" +" -c, --overwrite pasa -c al `script' shar para sobreescribir\n" +" ficheros\n" +" -e, --exit-0 igual que `--split-at=\"exit 0\"'\n" +" -E, --split-at=CADENA divide los archivos `shar' concatenados\n" +" tras encontrar CADENA\n" +" -f, --force igual que `-c'\n" +" --help muestra esta ayuda y finaliza\n" +" --version informa de la versión y finaliza\n" +"\n" +"Si no se indica FICHERO, entonces se lee la entrada estándar.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "No se puede cambiar al directorio `%s'" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "reserva de espacio para el nombre del fichero" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "entrada estándar" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "reserva de espacio para el fichero" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: Error de escritura" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: Fichero cortado" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: No hay línea `end'" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: datos posteriores al carácter de relleno `='" + +# Preferiría "no válida". Pero vamos a dejarlo a ver qué opinan otros, +# ¿vale? tb +# Por mí, vale así, a ver qué dice Enrique cuando lo vea. sv +# (Pero que conste que yo te apoyo con lo de "ilegal") sv +# Yo opino que `no válida'. ipg +# Pues si ya somos tres, no creo que vaya a esperar mucho a poner `no válida'. +# A la próxima... tbd +# No, yo decía que por mí vale "ilegal". Prefiero ilegal. sv +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: línea ilegal" + +# Aquí tal vez se podría añadir "ninguna". +# "No hay ninguna línea `begin'". sv+ +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: No hay línea `begin'" + +# Ver el código fuente. Igual no habría que traducir ~user. sv +# No sé qué es lo que convendría... tb +# Yo creo que no es ilegal. Eso está especificando que la terminología +# de ~ no está aceptada ... a mi me parece que vale. ipg +# A ver: tenía puesto "~usuario inexistente". Qu'e es lo que viene mejor +# entre esta opción, "~usuario no válido" y "~usuario ilegal"? tb +# ¡¡Joder!! Pues ahora ni me aclaro ni ná de ná, ¿sabes seguro si el +# mensaje se usa para decir que no se acepta la terminología ~ +# o porque el dado no existe? Si es lo primero, que lo dudo, +# me inclino por ilegal, y si es la segunda, por poner `El usuario +# especificado no existe'. ipg +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: ~usuario ilegal" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: No hay ningún usuario `%s'" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "no se puede acceder a %s" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "denegada la escritura al FIFO (%s)" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "no se sigue al enlace (%s)" + +#: src/uudecode.c:408 +#, c-format +msgid "freopen of %s" +msgstr "Efectuando freopen sobre %s" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "Efectuando chmod sobre %s" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Modo de empleo: %s [FICHERO]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Los argumentos obligatorios para las opciones largas son también " +"obligatorios\n" +"para las opciones cortas.\n" +"\n" +" -o, --output-file=FICHERO dirige la salida hacia FICHERO\n" +" --help muestra esta ayuda y finaliza\n" +" --version informa de la versión y finaliza\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Error de escritura" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Error de lectura" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Modo de empleo: %s [FICHERO-DE-ENTRADA] FICHERO-REMOTO\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 utiliza base64 como se indica en RFC1521\n" +" --help muestra esta ayuda y finaliza\n" +" --version informa de la versión y finaliza\n" + +#: src/uuencode.c:276 +#, c-format +msgid "fopen-ing %s" +msgstr "Efectuando fopen sobre %s" + +#: src/uuencode.c:278 +#, c-format +msgid "fstat-ing %s" +msgstr "Efectuando fstat sobre %s" + +# Ídem ... ipg +# Ídem. tb +#~ msgid "lock directory" +#~ msgstr "directorio de bloqueo" + +#~ msgid "created" +#~ msgstr "creado" + +#~ msgid "failed to create" +#~ msgstr "fallo al crear" + +#~ msgid "Must unpack archives in sequence!" +#~ msgstr "¡Debe desempaquetar los archivos en orden!" + +# Me da en la nariz que este fallido se usa para conectar con +# la frase anterior en algo como `restauración de fallida', +# por lo que quizá debería ser `fallida'. Creo que tendrías que +# echar un ojo a las fuentes. ipg +# Efectivamente. Aparte que ambos mensajes están siempre en la misma +# línea. Lo cambio. tb +#~ msgid "failed" +#~ msgstr "fallida" + +# Habrá que vigilar a ver si dan la oportunidad de traducir también +# "n" "y" "a" y "q" pues si no, habrá que poner en su lugar algo como +# n (no) y (si). etc. sv +# En alemán está puesto como está puesto aquí. +# No se pueden traducir las opciones. tb +# Pero afortunadamente están empezando a traducir algunas cosas +# parecidas a esta. Mañana o pasado saldrá una versión de prueba de +# fileutils que cuando haces rm -i y te pregunta ¿borrar `lo.que.sea'? +# ya puedes contestar "s" o "n". +# Supongo que habrá que luchar por ello la próxima vez que haya oportunidad. +# (Estar al loro en la lista de "pretest", si existe). sv +# Vale. Hasta que eso sea así, lo mantenemos de este modo +# *provisionalmente*. tb +#~ msgid "[no, yes, all, quit] (no)?" +#~ msgstr "¿[no (n), sí (y), todo (a), salir (q)] (no)?" + +#~ msgid "End of" +#~ msgstr "Fin de" + +#~ msgid "part" +#~ msgstr "parte" + +#~ msgid "File" +#~ msgstr "Archivo" + +#~ msgid "original size" +#~ msgstr "tamaño original" + +#~ msgid "current size" +#~ msgstr "tamaño actual" + +# Sugerencias: acaba -> finaliza. sv +# Aquí se usa más "termina" o "sale". ¿Qué usa la gente por ahí? tb +# finaliza queda como más elegante. +# Solemos poner "termina" para los procesos, eso sí, pero no para +# el programa. sv +# +# Creo que "en la misma línea" están los otros, la terminación "ing" no +# siempre indica gerundio. La verdad es que es difícil... sv +# +# Ese `Dando información' me suena raro, ¿qué tal `para obtener +# información del programa'? No es tan literal, pero si más castellano +# inteligible y agradable de leer, a la vez que dice lo que el guiri. +# En --version hemos puesto en todos lados lo siguiente: +# "--version informa de la version y finaliza\n", te lo cambio +# En -q ... `actúa silenciosamente' ¿qué tal? (a veces ceñirse al +# original da unas frases que me suenan harto extrañas). +# ¿"Troceando la salida:\n" -> "Para particionar la salida:\n"? +# ¿No te suena `troceando' a la matanza del gorrino? :) +# En -o, te sugiero `manda la salida a los archivos PREFIJO.01, +# PREFIJO.02... PREFIJO.NN'; es más largo, pero a mi juicio (al menos ;) +# se entiende mejor. +# En -l y -L se confunde el `archive' guiri con el `archivo' castellano +# que se refiere a `file'. Quizá deberías decir (además de en mi +# opinión trocear->partir) `Parte el archivo shar (no los archivos) en +# partes de TAMAÑO kilobytes', y similarmente con -L. +# Otra cosa: en las líneas de comando, en lugar del infinitivo para +# el verbo, usa la tercera persona del singular. Lo hacemos así en todos +# sitios +# ipg +# "Dando información" -> "Informacion sobre las opciones" +# "no muestra mensajes del proceso localmente" -> "no muestra mensajes sobre +# el procesamiento" -- (¿"actua en silencio"?) +# "Troceando la salida" -> "División de la salida" +# tb +# +# Y además no es porque "lo hagamos así", ¡es que es eso lo que significa! +# Se llama "gerundio sustantivado", y aparece mencionado en la lista de +# pifias de Ángel Álvarez. sv +#~ msgid "" +#~ "\n" +#~ "Giving feedback:\n" +#~ " --help display this help and exit\n" +#~ " --version output version information and exit\n" +#~ " -q, --quiet, --silent do not output verbose messages locally\n" +#~ "\n" +#~ "Selecting files:\n" +#~ " -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +#~ " -S, --stdin-file-list read file list from standard input\n" +#~ "\n" +#~ "Splitting output:\n" +#~ " -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX." +#~ "NN\n" +#~ " -l, --whole-size-limit=SIZE split archive, not files, to SIZE " +#~ "kilobytes\n" +#~ " -L, --split-size-limit=SIZE split archive, or files, to SIZE " +#~ "kilobytes\n" +#~ msgstr "" +#~ "\n" +#~ "Información sobre las opciones:\n" +#~ " --help muestra esta ayuda y finaliza\n" +#~ " --version informa de la versión y finaliza\n" +#~ " -q, --quiet, --silent no muestra mensajes sobre el procesamiento\n" +#~ "\n" +#~ "Selección de archivos:\n" +#~ " -p, --intermix-type permite -[BTzZ] en las listas de archivos\n" +#~ " para cambiar de modo\n" +#~ " -S, --stdin-file-list lee la lista de archivos de la entrada " +#~ "estándar\n" +#~ "\n" +#~ "División de la salida:\n" +#~ " -o, --output-prefix=PREFIJO deja el resultado en los archivos\n" +#~ " del PREFIJO.01 hasta PREFIJO.NN\n" +#~ " -l, --whole-size-limit=TAMAÑO divide el archivo `shar', no los " +#~ "archivos,\n" +#~ " a TAMAÑO kilobytes\n" +#~ " -L, --split-size-limit=TAMAÑO divide el archivo `shar' o archivos\n" +#~ " a TAMAÑO kilobytes\n" + +#~ msgid "Report bugs to .\n" +#~ msgstr "Comunicar `bugs' a .\n" + +#~ msgid "removed" +#~ msgstr "borrado" + +#~ msgid "failed to remove" +#~ msgstr "fallo al borrar" diff --git a/po/et.gmo b/po/et.gmo new file mode 100644 index 0000000000000000000000000000000000000000..1f0ecdf3fa8943066c02b0a3e3e4a17b44a81223 GIT binary patch literal 14871 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%0Av`v>063Vh2aQ^Zrcj z;s+->EDPi;@R6vT4BT{fy%{eBL<3(6Nb*9pfZ@t;w>ir7#Q@(SXPLTk0F1`uhH1J* z>c?7fvtt(t(`e(7OG1p7iWnnb8~B_zp?s2m8ek(IM->*e!P0J zU=c4@xYB}zUX~Wnp!|;Pl4B^h0U?P|R@S{pvVfh+4wkW#15EHzzaNbKp2VVZQf&no z+|q%D)u_bkDhhl_H|m6kq!YCz*M~z@URXKEMfJ&a%fl~xaGSp<$qm*dt7=$(ZrOla zo+y>oGxbXLa`seO*#htf9rA4bBthy;KF7wNs-mE}tMafgTbo^6Ue=!$8JqapWp6zNejvv`6VA#`RS~FPz3w1=unb*Nuq%hw zzQPtG{PqDtqPBnOA;PN_#FMcK!+ynwa)YDE^i%DHB6C@xMONwqy!2pgN!uTBuz&Gk z$iWMiA707^*-G2)*mv#5D+^3_ezv;kJ-{TnICk1*-+*M9$e`iV-TcRH9mrxlA$3Iu zu|gH7D2NEkNLAqze=-GKdmR<{gNFSNBiwNQ-}_YJOu^AJ-a!szfD5!`g*8Q{h92{G zbaob`$3mhR7M7SN51>zq0j@$TBP=bCSqTA!0D0r z*%YsB{RGp)VFWvaw2RDf){RJI@tJ1&mcV9xnxIShbjv_CfSjS|WIKu)N|SN7!-_;_ ziw;Z}H*1~oO5Eb)Y}^|zT;vo$T_{O#M8a^hPK6?vmG|W_CL+yLRR0)yXO~u@6si#l zj@e~=8Py2X!8Vc=De)o5-NlGu`a;SIG5$QEi-!!K3>Fh6gQhS(MDEf93bwW;p>!NO zSj6Y+G>embvU#Evj~TP8Oo8}oWsc^#!nrAtC2f%^?Z!;Wiaz-?;)5%)OPqvwk1V{b+k z4;Njic(BW`H4T2@0{F|CF^P!vVL@ZJz{)~`PLW6`U1ek>O+U6gI~?c2b=^%5pX2H$ eFJ%Z0$GP>L^DIfZFZoWI8y_7xm*E$ug8v6nwdq;_ literal 0 HcmV?d00001 diff --git a/po/et.po b/po/et.po new file mode 100644 index 0000000..2aec948 --- /dev/null +++ b/po/et.po @@ -0,0 +1,886 @@ +# Estonian translations for sharutils. +# Copyright (C) 2002 Free Software Foundation, Inc. +# This file is distributed under the same license as the sharutils package. +# Toomas Soome , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: sharutils 4.6.1-pre1\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2005-11-08 10:45+0200\n" +"Last-Translator: Toomas Soome \n" +"Language-Team: Estonian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Tundmatu süsteemne viga" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: võti `%s' on mitmetähenduslik\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: võti `--%s' ei luba argumenti\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: võti `%c%s' ei luba argumenti\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: võti `%s' nõuab argumenti\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: tundmatu võti `--%s'\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: tundmatu võti `%c%s'\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: lubamatu võti -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: vigane võti -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: võti nõuab argumenti -- %c\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: võti `-W %s' on mitmetähenduslik\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: võti `-W %s' ei luba kasutada argumenti\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "mälu on otsas" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" +"Märkus: md5 kontrollsummasid ei kontrolli. Kaaluge GNU coreutils " +"paigaldamist." + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "HOIATUS: ei taasta ajatempleid. Kaaluge GNU failiutiliitide" + +#: src/shar.c:645 +#, fuzzy +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "paigaldan GNU \\`touch', GNU File Utilities komplektist..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "lukkude kataloogi loomine ebaõnnestus" + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "x - lukkude kataloog `'%s\\'' loodud." + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "x - lukkude kataloogi `'%s\\'' loomine ebaõnnestus." + +#: src/shar.c:671 +msgid "yes" +msgstr "" + +#: src/shar.c:671 +#, fuzzy +msgid "overwrite this file" +msgstr "kirjutan üle" + +#: src/shar.c:672 +msgid "no" +msgstr "" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "" + +#: src/shar.c:673 +msgid "all" +msgstr "" + +#: src/shar.c:673 +#, fuzzy +msgid "overwrite all files" +msgstr "kirjutan üle" + +#: src/shar.c:674 +msgid "none" +msgstr "" + +#: src/shar.c:674 +#, fuzzy +msgid "overwrite no files" +msgstr "kirjutan üle" + +#: src/shar.c:675 +msgid "help" +msgstr "" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "" + +#: src/shar.c:676 +msgid "quit" +msgstr "" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Liiga palju katalooge mkdir käsule" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "x - tekitasin kataloogi `%s'\\''." + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "x - kataloogi `%s'\\'' loomine ebaõnnestus." + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "%s ei saa kasutada" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "-C on ebasoovitab, kasutage -Z" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "Ei õnnestu tuvastada jooksva kataloogi nime" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" +"Arhiivid tuleb lahti pakkida järjekorras!\n" +"Palun pakkige järgmisena lahti osa '`cat ${lock_dir}/seq`'." + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "Uus fail, järgi %s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "Limiit on ikka %s\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "%s taastame ebaõnnestus" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "Osa %d lõpp, jätkan osaga %d" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Alustan fili %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: Pole tavaline fail" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "sharis: suurus veel %s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "tühi" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(tühi)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "Faili %s ei saa avada" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "kompressitud" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "gzipitud" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "bzipitud" + +#: src/shar.c:1151 +msgid "binary" +msgstr "binaar" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(kompressitud)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(gzipitud)" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(bzipitud)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(binaar)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "fork ebaõnnestus" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Fail %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "tekst" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(tekst)" + +#: src/shar.c:1251 +#, fuzzy, c-format +msgid "overwriting %s" +msgstr "kirjutan üle" + +#: src/shar.c:1253 +#, fuzzy, c-format +msgid "overwrite %s" +msgstr "kirjutan üle" + +#: src/shar.c:1257 +#, fuzzy, c-format +msgid "SKIPPING %s" +msgstr "JÄTAN VAHELE" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "väljastamine katkestatud" + +#: src/shar.c:1262 +#, fuzzy, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "(fail on juba olemas)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Salvestan %s (%s)" + +#: src/shar.c:1276 +#, fuzzy, c-format +msgid "x - extracting %s %s" +msgstr "väljastan" + +#: src/shar.c:1392 +#, c-format +msgid "restore of %s failed\n" +msgstr "%s taastamine ebaõnnestus\n" + +#: src/shar.c:1401 +#, fuzzy, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "Osa %d lõpp, jätkan osaga %d" + +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "%s Osa %d lõpp" + +#: src/shar.c:1408 +msgid "archive" +msgstr "arhiiv" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "Fail %s jätkub osas %d" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "Palun pakkige lahti esmalt osa 1!" + +#: src/shar.c:1460 +#, fuzzy +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "Palun pakkige lahti esmalt osa 1!" + +#: src/shar.c:1471 +#, fuzzy, c-format +msgid "STILL SKIPPING %s" +msgstr "JÄTAN IKKA VAHELE" + +#: src/shar.c:1479 +#, fuzzy, c-format +msgid "continuing file %s" +msgstr "jätkan faili" + +#: src/shar.c:1497 +#, fuzzy, c-format +msgid "File %s is complete" +msgstr "on valmis" + +#: src/shar.c:1504 +#, fuzzy, c-format +msgid "uudecoding file %s" +msgstr "uudekodeerin faili" + +#: src/shar.c:1514 +#, fuzzy, c-format +msgid "uncompressing file %s" +msgstr "unkompressin faili" + +#: src/shar.c:1522 +#, fuzzy, c-format +msgid "gunzipping file %s" +msgstr "gunzipin faili" + +#: src/shar.c:1530 +#, fuzzy, c-format +msgid "bunzipping file %s" +msgstr "bunzipin faili" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "MD5 kontroll ebaõnnestus" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "võtan ruumi väljundfaili nimele" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "Avan `%s'" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Sulen `%s'" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Lisainfot saate käsuga Try `%s --help'.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Kasutamine: %s [VÕTI]... [FAIL]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Kohustuslikud argumendid pikkades võtmetel on kohustuslikud ka lühikestel.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"Tagasiside:\n" +" --help esita see abiinfo\n" +" --version esita versiooni info\n" +" -q, --quiet, --silent ära väljasta tagasiside teateid lokaalselt\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Failide valimine:\n" +" -p, --intermix-type luba -[BTzZ] faililoendites moodi muutmiseks\n" +" -S, --stdin-file-list loe failide loend standardsisendist\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Failide valimine:\n" +" -p, --intermix-type luba -[BTz] faililoendites moodi muutmiseks\n" +" -S, --stdin-file-list loe failide loend standardsisendist\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"Väljundi jagamine:\n" +" -o, --output-prefix=PREFIKS väljasta faili PREFIKS.01 kuni PREFIKS.NN\n" +" -l, --whole-size-limit=MAHT jaga arhiiv, mitte failid, MAHT KB osadeks\n" +" -L, --split-size-limit=MAHT jaga arhiiv või failid MAHT KB osadeks\n" + +#: src/shar.c:1759 +#, fuzzy +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Shar päiste kontrollimine:\n" +" -n, --archive-name=NIMI määra arhiivi nimi\n" +" -s, --submitter=AADRESS muuda looja nime\n" +" -a, --net-headers väljasta Submitted-by: & Archive-name: päised\n" +" -c, --cut-mark shar algusse `cut' rida\n" +"\n" +"Failide paigutamise valik:\n" +" -M, --mixed-uuencode uuencode kasutatakse vajadusel (vaikimisi)\n" +" -T, --text-files kõik failid on tekstifailid\n" +" -B, --uuencode kõik failid on binaarsed, kasuta uuencode\n" +" -z, --gzip kasuta kõikide failidega gzip ja uuencode\n" +" -g, --level-for-gzip=TASE kasuta gzip -TASE (vaikimisi 9)\n" +" -j, --bzip2 kasuta kõikide failidega bzip2 ja uuencode\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress kompressi ja uukodeeri kõik failid\n" +" -b, --bits-per-code=BITTE kasutad compress -bBITTE (vaikimisi 12)\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Ülekandmiste kaitse:\n" +" -w, --no-character-count ära kasuta suuruse kontrolliks `wc -c'\n" +" -D, --no-md5-digest ära kasuta kontrolliks `md5sum'\n" +" -F, --force-prefix kasuta igal real prefiks sümbolit\n" +" -d, --here-delimiter=SÕNE kasuta SÕNE failide eraldamiseks arhiivis\n" +"\n" +"Erinevat tüüpi shar arhiivide loomine:\n" +" -V, --vanilla-operation loo väga lihtne shar\n" +" -P, --no-piping kasuta unshar ajal ainult ajutisi faile\n" +" -x, --no-check-existing kirjuta olemasolevad failid üle\n" +" -X, --query-user enne ülekirjutamist küsi (mitte Netis)\n" +" -m, --no-timestamp ära taasta failide muutmise aegu\n" +" -Q, --quiet-unshar väldi unshar ajal teateid\n" +" -f, --basename sõltumata hierarhiast taasta ühte kataloogi\n" +" --no-i18n ära loo rahvuskeelte toega skripti\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"Võti -o on nõutav võtmega -l või -L, võti -n on nõutav võtmega -a.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "Võti -g kasutab ka võtit -z, võti -b kasutab ka võtit -Z.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "Võti -g kasutab ka võtit -z.\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Vigadest teatage aadressil <%s>.\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "vigane faili suuruse piirang `%s'" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "vigane vorming (arvu väli on liiga lai): '%s'\n" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "DEBUG ei ole kompileerimise ajal määratud" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "Ületamatu piirang %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "See süsteem ei toeta võtit -Z ('compress'), kasutage selle asemel -z" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "Pehme piirang %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "lubamatu prefiks väljundile\n" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Autoriõigused © %s Free Software Foundation, Inc.\n" +"See on vaba tarkvara; kopeerimise tingimused leiate lähtetekstist. Igasugune\n" +"garantii puudub; isegi KESKMISE/TAVALISE KVALITEEDI GARANTIITA või SOBIVUSELE\n" +"TEATUD KINDLAKS EESMÄRGIKS.\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "HOIATUS: kasutaja ei saa lihtsa arhiivi loomisse sekkuda" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "HOIATUS: Mitte tekstilise paigutamise võtmed ümber määratud" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Sisendfaile pole" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "Võtit -a ei saa võtmeta -n kasutada" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "Võtit -l ega -L ei saa võtmeta -o kasutada" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "PALUN vältige -X shar'e Usenetis ja avalikes võrkudes" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Te olete viimase osa lahti pakkinud" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "Loodud %d faili\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "x - eemaldasin luku kataloogi `'%s\\''." + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "x - lukkude kataloogi eemaldamine ebaõnnestus `'%s\\''." + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "%s ei sisalda käsklusi käsuinterpretaatorile" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s paistab olema C kood, mitte käsuinterpretaatori arhiiv" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Failis %s puuduvad peale `cut' käsklust edasised käsud" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s pole tõenäoliselt käsuinterpretaatori arhiiv" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "Reale `cut' järgnes: %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Käivitan protsessi `sh'" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Kohustuslikud argumendid pikkadele võtmetele on kohustuslikud ka " +"lühikestele.\n" +"\n" +" -d, --directory=KATALOOG enne lahtipakkimist mine KATALOOGI\n" +" -c, --overwrite edasta failide ülekirjutamiseks shar arhiivi -" +"c\n" +" -e, --exit-0 sama, kui `--split-at=\"exit 0\"'\n" +" -E, --split-at=SÕNE poolita ühendatud arhiivid peale SÕNE\n" +" -f, --force sama, kui `-c'\n" +" --help esita see abiinfo\n" +" --version esita versiooni info\n" +"\n" +"Kui FAIL puudub, loetakse standardsisendit.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "Kataloogi `%s' ei õnnestu siseneda" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "faili nime puhvri võtmine" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "standardsisend" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "faili puhvri võtmine" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: Viga kirjutamisel" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: Lühike fail" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: Puudub rida `end'" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: täitesümbolile `=' järgnevad andmed" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: vigane rida" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: Puudub rida `begin'" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: Vigane ~kasutaja" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: Kasutaja `%s' puudub" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "%s ei saa kasutada" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "ei kirjuta FIFO faili (%s)" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "ei järgi nimeviidet (%s)" + +#: src/uudecode.c:408 +#, fuzzy, c-format +msgid "freopen of %s" +msgstr "Avan `%s'" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Kasutamine: %s [FAIL]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Kohustuslikud argumendid pikkadele võtmetele on kohustuslikud ka " +"lühikestele.\n" +" -o, --output-file=FAIL suuna väljund FAILI\n" +" --help esita see abiinfo\n" +" --version esita versiooni info\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Viga kirjutamisel" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Viga lugemisel" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Kasutamine: %s [SISENDFAIL] SIHTFAIL\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 kasuta RFC1521 vastavat base64 kodeerimist\n" +" --help esita see abiinfo\n" +" --version esita versiooni info\n" + +#: src/uuencode.c:276 +#, fuzzy, c-format +msgid "fopen-ing %s" +msgstr "Avan `%s'" + +#: src/uuencode.c:278 +#, fuzzy, c-format +msgid "fstat-ing %s" +msgstr "Alustan fili %s\n" + +#~ msgid "[no, yes, all, quit] (no)?" +#~ msgstr "[ei, jah, kõik, välju] (ei)?" + +#~ msgid "Please unpack part" +#~ msgstr "Palun pakkige lahti osa" + +#~ msgid "next!" +#~ msgstr "järgmine!" + +#~ msgid "File" +#~ msgstr "Fail" + +#~ msgid "original size" +#~ msgstr "algne suurus" + +#~ msgid "current size" +#~ msgstr "praegune suurus" diff --git a/po/fi.gmo b/po/fi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..21d39b0fcad3d3da52479905c6e48f98b1f0019f GIT binary patch literal 14909 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, 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU sharutils 4.6\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2005-09-16 17:33+0300\n" +"Last-Translator: Lauri Nurmi \n" +"Language-Team: Finnish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Tuntematon järjestelmävirhe" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: valitsin \"%s\" on moniselitteinen\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: valitsin \"--%s\" ei salli argumenttia\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: valitsin \"%c%s\" ei salli argumenttia\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: valitsin \"%s\" vaatii argumentin\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: tunnistamaton valitsin \"--%s\"\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: tunnistamaton valitsin \"%c%s\"\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: virheellinen valitsin -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: virheellinen valitsin -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: valitsin vaatii argumentin -- %c\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: valitsin \"-W %s\" on moniselitteinen\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: valitsin \"-W %s\" ei salli argumenttia\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "muisti lopussa" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" +"Huom: md5summia ei tarkasteta. Harkitse GNU coreutils -paketin asentamista." + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "VAROITUS: aikaleimoja ei palauteta. Harkitse GNU Fileutils -paketissa " + +#: src/shar.c:645 +#, fuzzy +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "" +"levitettävän GNU:n \\\"touch\\\"-ohjelman hankkimista ja asentamista..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "" + +#: src/shar.c:657 +#, fuzzy +msgid "failed to create lock directory" +msgstr "lukkohakemiston luominen epäonnistui" + +#: src/shar.c:661 +#, fuzzy, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "lukkohakemiston luominen epäonnistui" + +#: src/shar.c:663 +#, fuzzy, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "lukkohakemiston luominen epäonnistui" + +#: src/shar.c:671 +msgid "yes" +msgstr "" + +#: src/shar.c:671 +#, fuzzy +msgid "overwrite this file" +msgstr "ylikirjoita" + +#: src/shar.c:672 +msgid "no" +msgstr "" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "" + +#: src/shar.c:673 +msgid "all" +msgstr "" + +#: src/shar.c:673 +#, fuzzy +msgid "overwrite all files" +msgstr "ylikirjoita" + +#: src/shar.c:674 +msgid "none" +msgstr "" + +#: src/shar.c:674 +#, fuzzy +msgid "overwrite no files" +msgstr "ylikirjoita" + +#: src/shar.c:675 +msgid "help" +msgstr "" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "" + +#: src/shar.c:676 +msgid "quit" +msgstr "" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Liian monta hakemistoa mkdir-luontiin" + +#: src/shar.c:737 +#, fuzzy, c-format +msgid "x - created directory `%s'\\''." +msgstr "lukkohakemiston luominen epäonnistui" + +#: src/shar.c:739 +#, fuzzy, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "lukkohakemiston luominen epäonnistui" + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "Tiedostoa %s ei voi käyttää" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "-C on poistumassa käytöstä, käytä sen sijaan -Z" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "Nykyisen hakemiston nimeä ei voida selvittää" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "Uusi tiedosto, jäljellä %s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "Raja edelleen %s\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, fuzzy, c-format +msgid "restore of %s failed" +msgstr "tiedoston" + +#: src/shar.c:987 +#, fuzzy, c-format +msgid "End of part %d, continue with part %d" +msgstr "jatka osalla" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Aloitetaan tiedostoa %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: Ei ole tavallinen tiedosto" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "shar(): jäljellä oleva koko %s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "tyhjä" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(tyhjä)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "Tiedostoa %s ei voi avata" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "tiivistetty" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "gzip-tiivistetty" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "bzip-tiivistetty" + +#: src/shar.c:1151 +msgid "binary" +msgstr "binääri" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(tiivistetty)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(gzip-tiivistetty)" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(bzip-tiivistetty)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(binääri)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "Haarauttaminen epäonnistui" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Tiedosto %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "teksti" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(teksti)" + +#: src/shar.c:1251 +#, fuzzy, c-format +msgid "overwriting %s" +msgstr "ylikirjoitetaan" + +#: src/shar.c:1253 +#, fuzzy, c-format +msgid "overwrite %s" +msgstr "ylikirjoita" + +#: src/shar.c:1257 +#, fuzzy, c-format +msgid "SKIPPING %s" +msgstr "OHITETAAN" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "purku keskeytetty" + +#: src/shar.c:1262 +#, fuzzy, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "(tiedosto on jo olemassa)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Tallennetaan %s (%s)" + +#: src/shar.c:1276 +#, fuzzy, c-format +msgid "x - extracting %s %s" +msgstr "puretaan" + +#: src/shar.c:1392 +#, fuzzy, c-format +msgid "restore of %s failed\n" +msgstr "tiedoston" + +#: src/shar.c:1401 +#, fuzzy, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "jatka osalla" + +#: src/shar.c:1407 +#, fuzzy, c-format +msgid "End of %s part %d" +msgstr "Osan loppu" + +#: src/shar.c:1408 +msgid "archive" +msgstr "Arkiston loppu" + +#: src/shar.c:1412 +#, fuzzy, c-format +msgid "File %s is continued in part %d" +msgstr "jatkuu osassa" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "Pura osa 1 ensin!" + +#: src/shar.c:1460 +#, fuzzy +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "Pura osa 1 ensin!" + +#: src/shar.c:1471 +#, fuzzy, c-format +msgid "STILL SKIPPING %s" +msgstr "OHITETAAN EDELLEEN" + +#: src/shar.c:1479 +#, fuzzy, c-format +msgid "continuing file %s" +msgstr "jatketaan tiedostoa" + +#: src/shar.c:1497 +#, fuzzy, c-format +msgid "File %s is complete" +msgstr "on täydellinen" + +#: src/shar.c:1504 +#, fuzzy, c-format +msgid "uudecoding file %s" +msgstr "puretaan tiedoston uu-koodaus" + +#: src/shar.c:1514 +#, fuzzy, c-format +msgid "uncompressing file %s" +msgstr "puretaan tiedoston tiivistys" + +#: src/shar.c:1522 +#, fuzzy, c-format +msgid "gunzipping file %s" +msgstr "puretaan tiedoston gzip-tiivistys" + +#: src/shar.c:1530 +#, fuzzy, c-format +msgid "bunzipping file %s" +msgstr "puretaan tiedoston bzip-tiivistys" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "MD5-tarkastus epäonnistui" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "varataan tulostiedoston nimi" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "Avataan \"%s\"" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Suljetaan \"%s\"" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Lisätietoja saa komennolla \"%s --help\".\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Käyttö: %s [VALITSIN]... [TIEDOSTO]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Pitkien valitsinten pakolliset argumentit ovat pakollisia myös lyhyille " +"valitsimille.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"Palautteen antaminen:\n" +" --help näytä tämä ohje ja poistu\n" +" --version näytä versiotiedot ja poistu\n" +" -q, --quiet, --silent älä tulosta monisanaisia viestejä paikallisesti\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Tiedostojen valinta:\n" +" -p, --intermix-type salli tilan vaihto tiedostoluetteloissa\n" +" käyttäen -[BTzZ]\n" +" -S, --stdin-file-list lue tiedostoluettelo vakiosyötteestä\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Tiedostojen valinta:\n" +" -p, --intermix-type salli tilan vaihto tiedostoluetteloissa\n" +" käyttäen -[BTz]\n" +" -S, --stdin-file-list lue tiedostoluettelo vakiosyötteestä\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"Tulosteen halkaiseminen:\n" +" -o, --output-prefix=ETULIITE tulosta tiedostoihin ETULIITE.01 - ETULIITE." +"NN\n" +" -l, --whole-size-limit=KOKO halkaise arkisto, ei tiedostoja, KOKO " +"kilotavuun\n" +" -L, --split-size-limit=KOKO halkaise arkisto tai tiedostot KOKO " +"kilotavuun\n" + +#: src/shar.c:1759 +#, fuzzy +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Arkiston otsakkeiden säätely:\n" +" -n, --archive-name=NIMI käytä NIMEä arkiston kuvailuun\n" +" -s, --submitter=OSOITE kumoa lähettäjän nimi\n" +" -a, --net-headers tulosta otsakkeet Submitted-by: ja Archinve-" +"Name:\n" +" -c, --cut-mark aloita arkisto katkaisurivillä\n" +"\n" +"Tiedostojen varastointitavan valinta:\n" +" -M, --mixed-uuencode valitse uu-koodaus dynaamisesti\n" +" -T, --text-files käsittele kaikki tiedostot tekstinä\n" +" -B, --uuencode käsittele kaikki tiedostot binäärisinä, " +"käyttäen\n" +" uu-koodausta\n" +" -z, --gzip gzip-tiivistä ja uu-koodaa kaikki tiedostot\n" +" -g, --level-for-gzip=TASO anna gzip-ohjelmalle valitsin -TASO (oletus " +"9)\n" +" -j, --bzip2 bzip2-tiivistä ja uu-koodaa kaikki tiedostot\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress tiivistä ja uu-koodaa kaikki tiedostot\n" +" -b, --bits-per-code=MÄÄRÄ anna valitsin -bMÄÄRÄ (oletus 12)\n" +" compress-komennolle\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Suojaus siirtoa varten:\n" +" -w, --no-character-count älä käytä koon tarkistamiseen komentoa \"wc -" +"c\"\n" +" -D, --no-md5-digest älä käytä varmentamiseen \"md5sum\"-" +"koostetta\n" +" -F, --force-prefix pakota etuliitemerkki jokaiselle riville\n" +" -d, --here-delimiter=MJONO käytä MJONOa arkiston tiedostojen " +"erottamiseen\n" +"\n" +"Erilaisten arkistojen tuottaminen:\n" +" -V, --vanilla-operation tuota hyvin yksinkertaisia ja helppokäyttöisiä\n" +" arkistoja\n" +" -P, --no-piping käytä purkamisen aikana vain " +"väliaikaistiedostoja\n" +" -x, --no-check-existing ylikirjoita olemassaolevat tiedostot kysymättä\n" +" -X, --query-user kysy käyttäjältä ennen ylikirjoitusta (älä " +"käytä\n" +" verkkoon tuleviin arkistoihin)\n" +" -m, --no-timestamp älä palauta tiedostojen muutosaikoja\n" +" -Q, --quiet-unshar vältä monisanaisia viestejä arkistoa " +"purettaessa\n" +" -f, --basename palauta yhteen hakemistoon, " +"hakemistorakenteesta\n" +" välitämättä\n" +" --no-i18n älä tuota kansainvälistettyä " +"kuorikomentotiedostoa\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"Valitsin -o vaaditaan valitsimen -l tai -L kanssa, valitsin -n vaaditaan\n" +"valitsimen -a kanssa.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "" +"Valitsin -g sisältää valitsimen -z, valitsin -b sisältää valitsimen -Z.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "Valitsin -g sisältää valitsimen -z.\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" +"Ilmoita ohjelmistovioista osoitteeseen <%s>.\n" +"Suomennoksen virheistä voi ilmoittaa listalle .\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "virheellinen tiedoston kokoraja \"%s\"" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "virheellinen muoto (count-kenttä on liian leveä): \"%s\"\n" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "DEBUGia ei otettu käyttöön käännösaikana" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "Kova raja %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "" +"Tämä järjestelmä ei tue valitsinta -Z (\"compress\"-ohjelma), käytä sen " +"sijaan valitsinta -z" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "Pehmeä raja %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "virheellinen tulostiedoston etuliite\n" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Tekijänoikeus © %s Free Software Foundation, Inc.\n" +"Tämä on vapaa ohjelmisto; katso kopiointiehdot lähdekoodista. Takuuta EI\n" +"ole, ei edes KAUPALLISESTI HYVÄKSYTTÄVÄSTÄ LAADUSTA tai SOPIVUUDESTA TIETTYYN TARKOITUKSEEN.\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "VAROITUS: Yksinkertaisessa tilassa ei ole vuorovaikutteisuutta" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "VAROITUS: Ei-tekstin varastointivalinnat ohitettu" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Ei syötetiedostoja" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "Valitsinta -a ei voi käyttää ilman valitsinta -n" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "Valitsimia -l ja -L ei voi käyttää ilman valitsinta -o" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "" +"VÄLTÄ valitsimella -X luotuja arkistoja keskusteluryhmissä ja julkisissa " +"verkoissa" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Viimeinen osa on purettu" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "Luotiin %d tiedostoa\n" + +#: src/shar.c:2310 +#, fuzzy, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "lukkohakemiston luominen epäonnistui" + +#: src/shar.c:2312 +#, fuzzy, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "lukkohakemiston luominen epäonnistui" + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "Tiedostosta %s ei löytynyt kuorikomentoja" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s vaikuttaa pelkältä C-koodilta, ei kuoriarkistolta" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Tiedostosta %s ei löytynyt kuorikomentoja leikkauskohdan jälkeen." + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s ei todennäköisesti ole kuoriarkisto" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "Leikkausriviä seurasi: %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Käynnistetään \"sh\"-prosessi" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Pitkien valitsinten pakolliset argumentit ovat pakollisia myös lyhyille " +"valitsimille.\n" +"\n" +" -d, --directory=HAKEMISTO siirry HAKEMISTOoon ennen purkua\n" +" -c, --overwrite anna shar-komentotiedostolle valitsin -c\n" +" tiedostojen ylikirjoittamiseksi\n" +" -e, --exit-0 sama kuin \"--split-at=\"exit 0\" \"\n" +" -E, --split-at=MJONO halkaise yhdistetyt arkistot MJONOn jälkeen\n" +" -f, --force sama kuin \"-c\"\n" +" --help näytä tämä ohje ja poistu\n" +" --version näytä versiotiedot ja poistu\n" +"\n" +"Jos TIEDOSTOa ei anneta, luetaan vakiosyötettä.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "Hakemistoon \"%s\" siirtyminen epäonnistui" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "varaa tiedostonimen puskuri" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "vakiosyöte" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "varaa tiedostopuskuri" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: Kirjoitusvirhe" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: Osittainen tiedosto" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: Lopetusriviä \"end\" ei ole" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: dataa täytemerkin \"=\" jälkeen" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: virheellinen rivi" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: Aloitusriviä \"begin\" ei ole" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: Virheellinen ~käyttäjä" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: Käyttäjää \"%s\" ei ole" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "tiedostoa %s ei voi käyttää" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "FIFO-putkeen (%s) ei kirjoiteta" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "symlinkkiä (%s) ei seurata" + +#: src/uudecode.c:408 +#, fuzzy, c-format +msgid "freopen of %s" +msgstr "Avataan \"%s\"" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Käyttö: %s [TIEDOSTO]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Pitkien valitsinten pakolliset argumentit ovat pakollisia myös lyhyille " +"valitsimille.\n" +" -o, --output-file=TIED ohjaa tuloste TIEDostoon\n" +" --help näytä tämä ohje ja poistu\n" +" --version tulosta versiotiedot ja poistu\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Kirjoitusvirhe" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Lukuvirhe" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Käyttö: %s [SYÖTETIEDOSTO] ETÄTIEDOSTO\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 käytä base64-koodausta RFC 1521:n mukaisesti\n" +" --help näytä tämä ohje ja poistu\n" +" --version tulosta versiotiedot ja poistu\n" + +#: src/uuencode.c:276 +#, fuzzy, c-format +msgid "fopen-ing %s" +msgstr "Avataan \"%s\"" + +#: src/uuencode.c:278 +#, fuzzy, c-format +msgid "fstat-ing %s" +msgstr "Aloitetaan tiedostoa %s\n" + +#~ msgid "[no, yes, all, quit] (no)?" +#~ msgstr "[no, yes, all, quit] (no)?" + +#~ msgid "Please unpack part" +#~ msgstr "Pura osa" + +#~ msgid "next!" +#~ msgstr "seuraavaksi!" + +#~ msgid "File" +#~ msgstr "Tiedosto" + +#~ msgid "original size" +#~ msgstr "alkuperäinen koko" + +#~ msgid "current size" +#~ msgstr "nykyinen koko" + +#~ msgid "Must unpack archives in sequence!" +#~ msgstr "Arkistot on purettava järjestyksessä!" + +#~ msgid "lock directory" +#~ msgstr "lukkohakemisto" + +#, fuzzy +#~ msgid "created lock directory" +#~ msgstr "lukkohakemisto" + +#, fuzzy +#~ msgid "created %s" +#~ msgstr "luotu" + +#, fuzzy +#~ msgid "could not create %s" +#~ msgstr "luominen epäonnistui" + +#~ msgid "restore of" +#~ msgstr "tiedoston" + +#~ msgid "failed" +#~ msgstr "palautus epäonnistui" + +#~ msgid "removed" +#~ msgstr "poistettu" + +#~ msgid "failed to remove" +#~ msgstr "poistaminen epäonnistui" + +#~ msgid "continue with part" +#~ msgstr "jatka osalla" + +#~ msgid "End of" +#~ msgstr "' '" + +#~ msgid "part" +#~ msgstr "Osan loppu" diff --git a/po/fr.gmo b/po/fr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..e08a7d138cf5c515f7e15c8fff0fae867c186300 GIT binary patch literal 20626 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 SFv||3N3P%WhAXFeEBZeq2Cj_& literal 0 HcmV?d00001 diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 0000000..034a68e --- /dev/null +++ b/po/fr.po @@ -0,0 +1,988 @@ +# Messages français pour GNU concernant sharutils. +# Copyright © 2004 Free Software Foundation, Inc. +# Michel Robitaille , traducteur depuis/since 1996. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU sharutils 4.6.3-pre4\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2006-05-23 08:00-0500\n" +"Last-Translator: Michel Robitaille \n" +"Language-Team: French \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8-bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Erreur système inconnue." + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: l'option « %s » est ambiguë.\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: l'option « --%s » n'admet pas de paramètre.\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: l'option « %c%s » n'admet pas de paramètre.\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: l'option « %s » requiert un paramètre.\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: l'option « --%s » n'est pas reconnue.\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: l'option « %c%s » n'est pas reconnue.\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: l'option -- %c est illégale.\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: l'option -- %c est invalide.\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: l'option --%c exige un paramètre.\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: l'option « -W %s » est ambiguë\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: l'option « -W %s » n'admet pas d'argument\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "mémoire épuisée" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" +"Note: pas de vérification des md5sums. Considérer l'installation de GNU " +"coreutils." + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "ATTENTION: les cachets des dates ne seront pas restaurés. Obtenir et" + +#: src/shar.c:645 +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "installer `touch'\\'' de GNU, distribué dans GNU coreutils..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "le verrou du répertoire '${lock_dir}' existe" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "échec de création du verrou de répertoire." + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "x - verrou de répertoire créé `'%s\\''." + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "x - échec de création du verrou de répertoire `'%s\\''." + +#: src/shar.c:671 +msgid "yes" +msgstr "oui" + +#: src/shar.c:671 +msgid "overwrite this file" +msgstr "écraser le fichier" + +#: src/shar.c:672 +msgid "no" +msgstr "non" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "escamoter le fichier" + +#: src/shar.c:673 +msgid "all" +msgstr "tous" + +#: src/shar.c:673 +msgid "overwrite all files" +msgstr "écraser tous les fichiers" + +#: src/shar.c:674 +msgid "none" +msgstr "aucun" + +#: src/shar.c:674 +msgid "overwrite no files" +msgstr "n'écraser aucun fichier" + +#: src/shar.c:675 +msgid "help" +msgstr "aide" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "expliciter les choix" + +#: src/shar.c:676 +msgid "quit" +msgstr "quitter" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "quitter immédiatement" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Trop de répertoires à créer." + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "x - répertoire créé `%s'\\''." + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "x - échec de création du répertoire `%s'\\''." + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "Incapable d'accéder à %s" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "L'option -C tombe en désuétude, utilisez -Z de préférence." + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "Incapable d'obtenir le nom du répertoire courant." + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" +"Les archives doivent être dépaquetées en séquence!\n" +"SVP dépaqueter la partie '`cat ${lock_dir}/seq`' ensuite." + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "Nouveau fichier, reste encore %s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "La limite demeure %s\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "restauration de %s a échoué" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "Fin du segment %d, poursuite avec le segment %d" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Traitement de %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: n'est pas un fichier régulier." + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "Dans « shar »: espace encore disponible %s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "vide" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(vide)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "Incapable d'ouvrir le fichier %s" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "de type « compress »" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "de type « gzip »" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "de type « bzip »" + +#: src/shar.c:1151 +msgid "binary" +msgstr "binaire" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(format « compress »)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(format « gzip »)" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(format « bzip »)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(binaire)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "Incapable de faire un clonage (fork)." + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Fichier %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "texte" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(texte)" + +#: src/shar.c:1251 +#, c-format +msgid "overwriting %s" +msgstr "écrasement de %s" + +#: src/shar.c:1253 +#, c-format +msgid "overwrite %s" +msgstr "écraser de %s" + +#: src/shar.c:1257 +#, c-format +msgid "SKIPPING %s" +msgstr "ESCAMOTER %s" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "Extraction abandonnée." + +#: src/shar.c:1262 +#, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "ESCAMOTAGE de %s (le fichier existe déjà)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Compression de %s (%s)" + +#: src/shar.c:1276 +#, c-format +msgid "x - extracting %s %s" +msgstr "x - extraction de %s %s" + +#: src/shar.c:1392 +#, c-format +msgid "restore of %s failed\n" +msgstr "restauration de %s a échoué\n" + +#: src/shar.c:1401 +#, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "Fin du segment %ld, poursuite avec le segment %ld" + +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "Fin de %s segment %d" + +#: src/shar.c:1408 +msgid "archive" +msgstr "l'archive" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "Fichier %s se poursuit dans le segment %d" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "Prière de dépaqueter le premier segment d'abord!" + +#: src/shar.c:1460 +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "Prière de dépaqueter le segment '${shar_sequence}' ensuite!" + +#: src/shar.c:1471 +#, c-format +msgid "STILL SKIPPING %s" +msgstr "ESCAMOTAGE TOUJOURS EN COURS %s" + +#: src/shar.c:1479 +#, c-format +msgid "continuing file %s" +msgstr "suite du fichier %s" + +#: src/shar.c:1497 +#, c-format +msgid "File %s is complete" +msgstr "Le fichier %s est complet" + +#: src/shar.c:1504 +#, c-format +msgid "uudecoding file %s" +msgstr "uudécodage du fichier %s" + +#: src/shar.c:1514 +#, c-format +msgid "uncompressing file %s" +msgstr "décompression du fichier %s" + +#: src/shar.c:1522 +#, c-format +msgid "gunzipping file %s" +msgstr "décompression du fichier %s à l'aide de « gunzip »" + +#: src/shar.c:1530 +#, c-format +msgid "bunzipping file %s" +msgstr "décompression du fichier %s à l'aide de « bunzip »" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "La vérification MD5 a échouée." + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "" +"'AVERTISSEMENT de restauration warning: la taille de %s n'est pas %s'\n" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "allocation du nom de ficheir de sortie" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "Ouverture de « %s »" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Fermeture de « %s »" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Pour en savoir davantage, faites: « %s --help ».\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Usage: %s [OPTION]... [FICHIER]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Les paramètres obligatoires pour les formes longues des options le sont " +"aussi\n" +"pour les formes courtes correspondantes.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"Fournir de l'aide rétroactive:\n" +" --help afficher l'aide-mémoire\n" +" --version afficher le nom et la version du logiciel\n" +" -q, --quiet, --silent ne pas afficher des messages trop longs\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Sélection des fichiers:\n" +" -p, --intermix-type permettre -[BTzZ] dans la liste des fichiers pour " +"changer le mode\n" +" -S, --stdin-file-list lire la liste des fichiers à partir de l'entrée " +"standard\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Sélection des fichiers:\n" +" -p, --intermix-type permettre -[BTzZ] dans la liste des fichiers pour " +"changer le mode\n" +" -S, --stdin-file-list lire la liste des fichiers à partir de l'entrée " +"standard\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"Séparation de la sortie:\n" +" -o, --output-prefix=PRÉFIXE produire la sortie dans les fichiers " +"PREFIX.01 jusqu'à PREFIX.NN\n" +" -l, --whole-size-limit=TAILLE scinder l'archive, pas les fichier, selon la " +"TAILLE en kiloctets\n" +" -L, --split-size-limit=TAILLE scinder l'archive, ou les fichiers, selon la " +"TAILLLe en kiloctets\n" + +#: src/shar.c:1759 +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Modes de contrôle des en-têtes:\n" +" -n, --archive-name=NOM donner NOM comme titre de l'archive\n" +" -s, --submitter=ADRESSE remplacer le nom du demandeur par défaut\n" +" par l'ADRESSE\n" +" -a, --net-headers générer les en-têtes: \"Submitted-by:\"\n" +" et \"Archive-name:\"\n" +" -c, --cut-mark insérer une ligne de démarcation au début (cut)\n" +" -t, --translate traduire le message dans le script\n" +"\n" +"Sélection de la méthode de stockage:\n" +" -M, --mixed-uuencode décider de l'uuencodage dynamiquement\n" +" (option par défaut)\n" +" -T, --text-files traiter tous les fichiers comme\n" +" des fichiers de textes\n" +" -B, --uuencode uuencoder tous les fichiers comme des " +"binaires\n" +" -z, --gzip comprimer avec « gzip » et uuencoder tous les " +"fichiers\n" +" -g, --level-for-gzip=NIVEAU passer -LEVEL (par défaut 9) à « gzip »\n" +" -j, --bzip2 comprimer avec « bzip2 » et uuencoder tous " +"les fichiers\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress compresser et uuencoder tous les fichiers\n" +" -b, --bits-per-code=BITS utiliser -bBITS (par défaut 12) pour la " +"compression\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Erreurs de transmission:\n" +" -w, --no-character-count ne pas utiliser « wc -c » pour vérifier\n" +" la taille en nombre de caractères\n" +" -D, --no-md5-digest ne pas utiliser la somme de contrôle « " +"md5sum »\n" +" pour vérifier le contenu\n" +" -F, --force-prefix placer le caractère préfixe sur chaque " +"ligne\n" +" -d, --here-delimiter=CHAÎNE délimiter chaque fichier d'archive par " +"CHAÎNE\n" +"\n" +"Modalités d'archivage:\n" +" -V, --vanilla-operation produire des archives simples et peu exigeantes\n" +" -P, --no-piping utiliser des fichiers temporaires\n" +" au moment du désarchivage\n" +" -x, --no-check-existing écraser de façon aveugle les fichiers\n" +" déjà existants\n" +" -X, --query-user confirmer chaque écrasement (*pas* pour le " +"réseau)\n" +" -m, --no-timestamp ne pas restaurer les dates originales des " +"fichiers\n" +" -Q, --quiet-unshar inhiber le mode bavard pendant le désarchivage\n" +" -f, --basename désarchiver tout au même niveau de répertoire\n" +" --no-i18n ne pas produire un script non-internationalisé\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"L'option -o est requise pour -l ou -L, l'option -n est requise pour -a.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "L'option -g force -z, l'option -b force -Z.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "L'option -g force l'option -z.\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Rapporter toutes anomalies à <%s>.\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "limite `%s' invalide pour la taille de fichiers" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "format invlaide (champ trop grand pour le décompte): '%s'\n" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "DEBUG n'était pas configuré lors de la compilation" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "Limite matérielle %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "" +"Le système ne supporte pas l'option -Z (compression), utiliser -z à la place." + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "Limite logicielle %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "préfixe de sortie illégal\n" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Copyright © %s Free Software Foundation, Inc.\n" +"Ce logiciel est libre; voir les sources pour les conditions de \n" +"reproduction. AUCUNE garantie n'est donnée; tant pour des raisons\n" +"COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "" +"AVERTISSEMENT: aucune interaction possible avec l'usager en mode « vanilla »." + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "ATTENTION: annulation des options de stockage en mode non-texte." + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Aucun fichier à lire." + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "L'option -a requiert aussi l'option -n" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "L'option -l ou -L requiert aussi l'option -o" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "" +"De grâce, évitez -X pour des archives devant transiter par réseaux publics" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Vous avez dépaqueté le dernier segment." + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "%d fichiers ont été créés.\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "x - retrait du verrou de répertoire `'%s\\''." + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "x - échec lors du retrait du verrou de répertoire `'%s\\''." + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "Aucune commande retrouvée dans %s" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s ressemble plus à du code C qu'à une archive de type « shar »." + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Aucune commande retrouvée après la ligne de démarcation (cut), dans %s" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s n'est probablement pas une archive de type « shar »." + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "La ligne de démarcation (cut) était suivie par %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Démarrage du processus « sh »." + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Les paramètres obligatoires pour les formes longues des options le sont " +"aussi\n" +"pour les formes courtes correspondantes.\n" +"\n" +" -d, --directory=RÉP effectuer le dépaquetage dans le RÉPertoire\n" +" -c, --overwrite relayer -c au script shar pour réécrire les " +"fichiers\n" +" -e, --exit-0 identique à --split-at=\"exit 0\"»\n" +" -E, --split-at=CHAÎNE scinder les archives concaténées après CHAÎNE\n" +" -f, --force identique à -c\n" +" --help afficher l'aide-mémoire\n" +" --version afficher le nom et la version du logiciel\n" +"\n" +"Sans FICHIER, la lecture s'effectue à partir de l'entrée standard.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "Ne peut changer le répertoire à « %s »" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "allocation d'un tampon de nom de fichier" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "entrée standard" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "allocation du tampon de fichier" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: erreur d'écriture" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: fichier tronqué." + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: ligne de démarcation de la fin (end) est manquante." + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: quelque chose après un « = » de remplissage." + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: ligne illégale." + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: ligne de démarcation du début (begin) est manquante." + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: ~usager illégal." + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: n'est pas un usager « %s »" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "ne peut accéder %s" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "écriture interdite en PEPS (FIFO) (sur %s)" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "ne suit pas le lien symbolique (%s)" + +#: src/uudecode.c:408 +#, c-format +msgid "freopen of %s" +msgstr "fropen de %s" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "chmod de %s" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Usage: %s [FICHIER]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Les paramètres obligatoires pour les formes longues des options le sont\n" +"aussi pour les formes courtes correspondantes.\n" +"\n" +" -o, --output-file=FICHIER rediriger la sortie vers le FICHIER\n" +" --help afficher l'aide-mémoire\n" +" --version afficher le nom et la version du logiciel\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Erreur d'écriture." + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Erreur de lecture." + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Usage: %s [FICHIER_LOCAL] FICHIER_ELOIGNÉ\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 utiliser l'encodage base64, tel que décrit\n" +" dans le RFC1521\n" +" --help afficher l'aide-mémoire\n" +" --version afficher le nom et la version du logiciel\n" + +#: src/uuencode.c:276 +#, c-format +msgid "fopen-ing %s" +msgstr "ouverture par fopen %s" + +#: src/uuencode.c:278 +#, c-format +msgid "fstat-ing %s" +msgstr "acquisition des stats par fstat %s" + +#~ msgid "[no, yes, all, quit] (no)?" +#~ msgstr "[no=non, yes=oui, all=tout, quit=quitter] (n)?" + +#~ msgid "Please unpack part" +#~ msgstr "Prière de dépaqueter le segment" + +#~ msgid "next!" +#~ msgstr "ensuite!" + +#~ msgid "File" +#~ msgstr "Le fichier" + +#~ msgid "original size" +#~ msgstr "taille originale" + +#~ msgid "current size" +#~ msgstr "taillle courante" + +#~ msgid "lock directory" +#~ msgstr "Création du verrou de répertoire." + +#~ msgid "created" +#~ msgstr "créé" + +#~ msgid "failed to create" +#~ msgstr "Ne peut créer le verrou de répertoire." + +#~ msgid "Must unpack archives in sequence!" +#~ msgstr "Les archives doivent être dépaquetées dans l'ordre!" + +#~ msgid "failed" +#~ msgstr "n'a pas réussi" + +#~ msgid "End of" +#~ msgstr "Fin de" + +#~ msgid "part" +#~ msgstr "segment" + +#~ msgid "removed" +#~ msgstr "détruit" + +#~ msgid "failed to remove" +#~ msgstr "échec de destruction" + +#~ msgid "" +#~ "\n" +#~ "Giving feedback:\n" +#~ " --help display this help and exit\n" +#~ " --version output version information and exit\n" +#~ " -q, --quiet, --silent do not output verbose messages locally\n" +#~ "\n" +#~ "Selecting files:\n" +#~ " -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +#~ " -S, --stdin-file-list read file list from standard input\n" +#~ "\n" +#~ "Splitting output:\n" +#~ " -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX." +#~ "NN\n" +#~ " -l, --whole-size-limit=SIZE split archive, not files, to SIZE " +#~ "kilobytes\n" +#~ " -L, --split-size-limit=SIZE split archive, or files, to SIZE " +#~ "kilobytes\n" +#~ msgstr "" +#~ "\n" +#~ "Modes informatifs de sortie:\n" +#~ " --help afficher l'aide-mémoire\n" +#~ " --version afficher le nom et la version du logiciel\n" +#~ " -q, --quiet, --silent inhiber le mode bavard\n" +#~ "\n" +#~ "Choix des fichiers:\n" +#~ " -p, --intermix-type autoriser -[BTzZ] le changement de mode de\n" +#~ " traitement sur les fichiers de la liste\n" +#~ " -S, --stdin-file-list lire la liste des fichiers à partir de\n" +#~ " l'entrée standard\n" +#~ "\n" +#~ "Découpage de la sortie:\n" +#~ " -o, --output-prefix=PREFIXE produire le fichier d'archive selon\n" +#~ " des fichiers segments portant le nom de\n" +#~ " PREFIXE.01 à PREFIXE.NN\n" +#~ " -l, --whole-size-limit=N scinder le fichier d'archive en segments " +#~ "dont\n" +#~ " la taille sera de N kilo-octets\n" +#~ " -L, --split-size-limit=N scinder le fichier d'archive en segments " +#~ "dont\n" +#~ " fichiers auront une taille de N kilo-" +#~ "octets\n" + +#~ msgid "Report bugs to .\n" +#~ msgstr "" +#~ "Rapporter toutes anomalies à l'adresse: .\n" diff --git a/po/ga.gmo b/po/ga.gmo new file mode 100644 index 0000000000000000000000000000000000000000..8d805cc257b7e462632b44b9dcdea06541efea17 GIT binary patch literal 19688 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, 1998. +# Kevin Patrick Scannell , 2005, 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: sharutils 4.6.3-pre4\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2006-05-22 18:52-0500\n" +"Last-Translator: Kevin Patrick Scannell \n" +"Language-Team: Irish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Earráid anaithnid chórais" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: Tá an rogha `%s' débhríoch\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `--%s'\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `%c%s'\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: tá argóint de dhíth i ndiaidh na rogha `%s'\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: rogha anaithnid `--%s'\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: rogha anaithnid `%c%s'\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: rogha neamhcheadaithe -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: rogha neamhbhailí -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: tá argóint de dhíth i ndiaidh na rogha -- %c\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: Tá an rogha `-W %s' débhríoch\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `-W %s'\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "cuimhne ídithe" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" +"Nóta: ní fhíorófar suimeanna MD5. Ba chóir duit coreutils GNU a shuiteáil " +"(le fáil as Gaeilge freisin)." + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "RABHADH: ní athchóireofar na stampaí ama. Ba chóir duit\"" + +#: src/shar.c:645 +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "`touch' GNU á shuiteáil, dáilte mar chuid de coreutils GNU..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "tá comhadlann ghlasála '${lock_dir}' ann" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "theip ar chruthú na comhadlainne glasála" + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "z - cruthaíodh comhadlann ghlasála `'%s\\''." + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "x - theip ar chruthú na comhadlainne glasála `'%s\\''." + +#: src/shar.c:671 +msgid "yes" +msgstr "forscríobh" + +#: src/shar.c:671 +msgid "overwrite this file" +msgstr "forscríobh an comhad seo" + +#: src/shar.c:672 +msgid "no" +msgstr "ná forscríobh" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "lig an comhad seo thart" + +#: src/shar.c:673 +msgid "all" +msgstr "gach comhad" + +#: src/shar.c:673 +msgid "overwrite all files" +msgstr "forscríobh gach comhad" + +#: src/shar.c:674 +msgid "none" +msgstr "neamhní" + +#: src/shar.c:674 +msgid "overwrite no files" +msgstr "ná forscríobh comhad ar bith" + +#: src/shar.c:675 +msgid "help" +msgstr "cabhair" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "mínigh na roghanna" + +#: src/shar.c:676 +msgid "quit" +msgstr "scoir" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "scoir anois láithreach" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "An iomarca comhadlann le haghaidh cruthaithe ag mkdir" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "x - cruthaíodh comhadlann `%s'\\''." + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "x - theip ar chruthú na comhadlainne `%s'\\''." + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "Ní féidir %s a rochtain" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "tá -C i léig; bain úsáid as -Z ina áit" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "Ní féidir ainm na comhadlainne reatha a fháil" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" +"Ní mór cartlanna a dhíphacáil in ord!\n" +"Ba chóir duit páirt '`cat ${lock_dir}/seq`' a dhíphacáil anois." + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "Comhad nua, fágtha: %s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "Teorainn = %s fós\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "theip ar athchóiriú de %s" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "Deireadh %d, lean ar aghaidh leis an bpáirt %d" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Comhad %s á thosú\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: Ní gnáthchomhad é" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "Sa chartlann: méid fágtha: %s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "folamh" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(folamh)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "Ní féidir comhad %s a oscailt" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "comhbhrúite" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "comhbhrúite le gzip" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "comhbhrúite le bzip" + +#: src/shar.c:1151 +msgid "binary" +msgstr "dénártha" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(comhbhrúite)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(comhbhrúite le gzip)" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(comhbhrúite le bzip)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(dénártha)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "Níorbh fhéidir forc a dhéanamh" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Comhad %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "téacs" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(téacs)" + +#: src/shar.c:1251 +#, c-format +msgid "overwriting %s" +msgstr "%s á fhorscríobh" + +#: src/shar.c:1253 +#, c-format +msgid "overwrite %s" +msgstr "forscríobh %s" + +#: src/shar.c:1257 +#, c-format +msgid "SKIPPING %s" +msgstr "%s Á LIGEAN THART" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "tobscoireadh an bhaint amach" + +#: src/shar.c:1262 +#, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "%s Á LIGEAN THART (tá an comhad ann cheana)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "%s á shábháil (%s)" + +#: src/shar.c:1276 +#, c-format +msgid "x - extracting %s %s" +msgstr "x - %s %s á bhaint amach" + +#: src/shar.c:1392 +#, c-format +msgid "restore of %s failed\n" +msgstr "theip ar athchóiriú de %s\n" + +#: src/shar.c:1401 +#, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "Deireadh %ld, lean ar aghaidh leis an bpáirt %ld" + +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "Deireadh %s, páirt %d" + +#: src/shar.c:1408 +msgid "archive" +msgstr "cartlann" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "Comhad %s leanta ar aghaidh i bpáirt %d" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "Díphacáil páirt a haon ar dtús, le do thoil!" + +#: src/shar.c:1460 +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "Díphacáil páirt '${shar_sequence}' anois, le do thoil!" + +#: src/shar.c:1471 +#, c-format +msgid "STILL SKIPPING %s" +msgstr "%s Á LIGEAN THART FÓS" + +#: src/shar.c:1479 +#, c-format +msgid "continuing file %s" +msgstr "comhad %s á leanúint ar aghaidh" + +#: src/shar.c:1497 +#, c-format +msgid "File %s is complete" +msgstr "Comhad %s curtha i gcrích" + +#: src/shar.c:1504 +#, c-format +msgid "uudecoding file %s" +msgstr "comhad %s á dhíchódú le uudecode" + +#: src/shar.c:1514 +#, c-format +msgid "uncompressing file %s" +msgstr "comhad %s á dhí-chomhbhrú" + +#: src/shar.c:1522 +#, c-format +msgid "gunzipping file %s" +msgstr "comhad %s á dhí-chomhbhrú le gunzip" + +#: src/shar.c:1530 +#, c-format +msgid "bunzipping file %s" +msgstr "comhad %s á dhí-chomhbhrú le bunzip" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "theip ar sheiceáil MD5" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "'rabhadh athbhunaithe: ní ionann méid de %s agus %s'\n" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "ainm an aschomhaid á dháileadh" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "`%s' á oscailt" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "`%s' á dhúnadh" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Bain triail as `%s --help' chun tuilleadh eolais a fháil.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Úsáid: %s [ROGHA]... [COMHAD]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Is riachtanach le rogha ghearr aon argóint atá riachtanach leis an rogha " +"fhada.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"Aiseolas:\n" +" --help taispeáin an chabhair seo agus scoir\n" +" --version taispeáin eolas faoin leagan agus scoir\n" +" -q, --quiet, --silent ná taispeáin teachtaireachtaí foclacha go logánta\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Roghnú comhad:\n" +" -p, --intermix-type ceadaigh -[BTzZ] i liosta comhad chun an mód a " +"athrú\n" +" -S, --stdin-file-list léigh liosta comhad ón ionchur caighdeánach\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Roghnú comhad:\n" +" -p, --intermix-type ceadaigh -[BTz] i liosta comhad chun an mód a " +"athrú\n" +" -S, --stdin-file-list léigh liosta comhad ón ionchur caighdeánach\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"Roinnt an aschuir:\n" +" -o, --output-prefix=RÉIMÍR scríobh RÉIMÍR.01 go RÉIMÍR.NN i gcomhad\n" +" -l, --whole-size-limit=MÉID roinn cartlann (amháin), MÉID KB ar a mhéad\n" +" -L, --split-size-limit=MÉID roinn cartlann nó comhaid, MÉID KB ar a " +"mhéad\n" + +#: src/shar.c:1759 +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Rialú na gceanntásc sa chartlann:\n" +" -n, --archive-name=AINM úsáid AINM chun an chartlann a dhoiciméadú\n" +" -s, --submitter=SEOLADH sáraigh an t-ainm `Submitted-by'\n" +" -a, --net-headers úsáid ceanntásca Submitted-by: & Archive-name:\n" +" -c, --cut-mark tosaigh an chartlann le líne `cut'\n" +" -t, --translate aistrigh teachtaireachtaí sa script\n" +"\n" +"Conas a líontar comhaid:\n" +" -M, --mixed-uuencode socraigh úsáid de uuencode go dinimiciúil " +"(réamhshocrú)\n" +" -T, --text-files déileáil le gach comhad mar ghnáth-théacs\n" +" -B, --uuencode déileáil le gach comhad mar dhénártha, úsáid " +"uuencode\n" +" -z, --gzip úsáid gzip agus uuencode ar gach comhad\n" +" -g, --level-for-gzip=LBHL seachaid -LBHL (réamhshocrú=9) go gzip\n" +" -j, --bzip2 úsáid bzip2 agus uuencode ar gach comhad\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress comhbhrúigh agus rith uuencode ar gach " +"comhad\n" +" -b, --bits-per-code=GIOTÁIN seol -bGIOTÁIN (réamhshocrú 12) go " +"`compress'\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Cosaint ar tharchur:\n" +" -w, --no-character-count ná húsáid `wc -c' chun an méid a sheiceáil\n" +" -D, --no-md5-digest ná fíoraigh le díolaim `md5sum'\n" +" -F, --force-prefix éiligh an carachtar réimíre ar gach líne\n" +" -d, --here-delimiter=TEAGHRÁN úsáid TEAGHRÁN idir na comhaid sa chartlann\n" +"\n" +"Cruthú cartlanna difriúla:\n" +" -V, --vanilla-operation cruthaigh cartlanna an-shimplí agus an-éasca\n" +" -P, --no-piping úsáid comhaid shealadacha amháin ag am `unshar'\n" +" -x, --no-check-existing forscríobh comhaid atá ann, gan idirdhealú\n" +" -X, --query-user fiafraigh roimh fhorscríobh aon chomhad (seachas " +"Líonra)\n" +" -m, --no-timestamp ná hathchóirigh amanna mionathraithe\n" +" -Q, --quiet-unshar ná taispeáin teachtaireachtaí foclacha ag am " +"`unshar'\n" +" -f, --basename athchóirigh i gcomhadlann aonair, d'ainneoin " +"ordlathas\n" +" --no-i18n ná cruthaigh script idirnáisiúntaithe bhlaoisce\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"Tá gá le rogha -o in éineacht le -l nó -L, agus rogha -n in éineacht le -a.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "" +"Úsáidtear -z go huathoibríoch nuair a shonraítear -g, agus ar an nós céanna " +"úsáidtear -Z le -b.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "Úsáidtear -z go huathoibríoch nuair a shonraítear -g.\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Seol tuairiscí fabhtanna chuig <%s>.\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "uasmhéid neamhbhailí na gcomhad `%s'" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "formáid neamhbhailí (réimse líonta róleathan): `%s'\n" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "Níor úsáideadh DEBUG ag am tiomsaithe" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "Uasteorainn chrua %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "Ní thacaíonn an córas seo le -Z ('compress'), úsáid -z ina ionad" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "Uasteorainn bhog %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "réimír neamhcheadaithe aschurtha\n" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Copyright © %s Free Software Foundation, Inc.\n" +"Is saorbhogearra é an ríomhchlár seo; féach ar an bhunchód le haghaidh\n" +"coinníollacha cóipeála. Níl baránta ar bith ann; go fiú níl baránta ann\n" +"d'INDÍOLTACHT nó FEILIÚNACHT D'FHEIDHM AR LEITH.\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "RABHADH: níl idirghníomhú leis an úsáideoir sa mhód fanaile" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "RABHADH: Sáraíodh roghanna stórála neamhthéacs" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Gan inchomhaid" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "Ní féidir rogha -a a úsáid gan -n" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "Ní féidir rogha -l nó -L a úsáid gan -o" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "LE DO THOIL, seachain cartlanna -X ar Usenet nó líonraí poiblí eile" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Tá an pháirt deiridh díphacáilte agat" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "Cruthaíodh %d comhad\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "x - baineadh comhadlann ghlasála `'%s\\''." + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "x - theip ar bhaint na comhadlainne glasála `'%s\\''." + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "Níor aimsíodh ordú ar bith i %s" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "Is dealraitheach %s le cód amh C, ní cosúil le cartlann bhlaoisce" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Níor aimsíodh aon ordú blaoisce i ndiaidh `cut' i %s" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "is dócha nach bhfuil %s ina chartlann bhlaoisce" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "Is é seo a leanann an líne `cut': %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Próiseas `sh' á thosú" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Is riachtanach le rogha ghearr aon argóint atá riachtanach\n" +"leis an rogha fhada.\n" +"\n" +" -d, --directory=COMHADLANN athraigh go COMHADLANN roimh dhíphacáil\n" +" -c, --overwrite seachaid -c go script `shar' chun comhaid a " +"fhorscríobh\n" +" -e, --exit-0 ar comhbhrí le `--split-at=\"exit 0\"'\n" +" -E, --split-at=TEAGHRÁN roinn cartlanna ceangailte tar éis TEAGHRÁN\n" +" -f, --force ar comhbhrí le `-c'\n" +" --help taispeáin an chabhair seo agus scoir\n" +" --version taispeáin eolas faoin leagan agus scoir\n" +"\n" +"Mura bhfuil COMHAD ann, léigh ón ionchur caighdeánach.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "Ní féidir an chomhadlann oibre a athrú go `%s'" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "dáil maolán le haghaidh comhadainm" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "ionchur caighdeánach" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "dáil maolán le haghaidh comhaid" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: Earráid sa scríobh" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: Comhad gearr" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: Gan líne `end'" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: tá sonraí ann tar éis an charachtair stuála `='" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: líne neamhcheadaithe" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: Gan líne `begin'" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: ~Úsáideoir neamhcheadaithe" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: Níl aon úsáideoir darb ainm `%s'" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "Ní féidir %s a rochtain" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "níor ceadaíodh FIFO a scríobh (%s)" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "ní leanfar nasc siombalach (%s)" + +#: src/uudecode.c:408 +#, c-format +msgid "freopen of %s" +msgstr "%s á oscailt le freopen" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "chmod de %s" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Úsáid: %s [COMHAD]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Is riachtanach le rogha ghearr aon argóint atá riachtanach leis an rogha " +"fhada.\n" +" -o, --output-file=COMHAD scríobh i gCOMHAD go díreach\n" +" --help taispeáin an chabhair seo agus scoir\n" +" --version taispeáin eolas faoin leagan agus scoir\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Earráid sa scríobh" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Earráid sa léamh" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Úsáid: %s [INCHOMHAD] CIANCHOMHAD\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 úsáid ionchódú base64 de réir RFC1521\n" +" --help taispeáin an chabhair seo agus scoir\n" +" --version taispeáin eolas faoin leagan agus scoir\n" + +#: src/uuencode.c:276 +#, c-format +msgid "fopen-ing %s" +msgstr "%s á oscailt le fopen" + +#: src/uuencode.c:278 +#, c-format +msgid "fstat-ing %s" +msgstr "%s á léamh le fstat" + +#~ msgid "[no, yes, all, quit] (no)?" +#~ msgstr "[níl, tá, uile, scoir] (níl)?" + +#~ msgid "Please unpack part" +#~ msgstr "Díphacáil páirt, le do thoil" + +#~ msgid "next!" +#~ msgstr "ar aghaidh!" + +#~ msgid "File" +#~ msgstr "Comhad" + +#~ msgid "original size" +#~ msgstr "bunmhéid" + +#~ msgid "current size" +#~ msgstr "méid faoi láthair" + +# lock not verb +#~ msgid "lock directory" +#~ msgstr "comhadlann ghlasála" + +#~ msgid "created" +#~ msgstr "cruthaithe" + +#~ msgid "failed to create" +#~ msgstr "theip ar chruthú" + +#~ msgid "Must unpack archives in sequence!" +#~ msgstr "Ní mór cartlanna a dhíphacáil in ord!" + +#~ msgid "failed" +#~ msgstr "teipthe" + +#~ msgid "End of" +#~ msgstr "Deireadh" + +#~ msgid "part" +#~ msgstr "páirt" + +#~ msgid "removed" +#~ msgstr "bainte" + +#~ msgid "failed to remove" +#~ msgstr "theip ar bhaint" diff --git a/po/gl.gmo b/po/gl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..d16fff2011f2f095739bb15456c65d3a2822420e GIT binary patch literal 10176 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 literal 0 HcmV?d00001 diff --git a/po/gl.po b/po/gl.po new file mode 100644 index 0000000..7ef93e9 --- /dev/null +++ b/po/gl.po @@ -0,0 +1,986 @@ +# Galician translation of sharutils. +# Copyright (C) 2000 Free Software Foundation, Inc +# Jesús Bravo Álvarez , 2000. +# +# Se desexas colaborar connosco na traducción de programas libres ó galego, +# vai mira-la páxina do noso grupo: http://www.ctv.es/USERS/jtarrio/trans +# +# First Version: 2000-01-22 00:01+0100 +# +msgid "" +msgstr "" +"Project-Id-Version: sharutils 4.2c\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2000-05-30 09:45+0200\n" +"Last-Translator: Jesús Bravo Álvarez \n" +"Language-Team: Galician \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Erro de sistema descoñecido" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: a opción `%s' é ambigua\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: a opción `--%s' non permite ningún argumento\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: a opción `%c%s' non permite ningún argumento\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: a opción `%s' require un argumento\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: opción `--%s' descoñecida\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: opción `%c%s' descoñecida\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opción ilegal -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opción inválida -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: a opción require un argumento -- %c\n" + +#: lib/getopt.c:881 +#, fuzzy, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: a opción `%s' é ambigua\n" + +#: lib/getopt.c:899 +#, fuzzy, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: a opción `--%s' non permite ningún argumento\n" + +#: lib/xmalloc.c:67 +#, fuzzy +msgid "memory exhausted" +msgstr "Memoria esgotada" + +#: src/shar.c:608 +#, fuzzy +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" +"AVISO: non se están a restablece-las datas. Considere obter e instalar" + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "" +"AVISO: non se están a restablece-las datas. Considere obter e instalar" + +#: src/shar.c:645 +#, fuzzy +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "GNU \\`touch', distribuído coas Utilidades de Ficheiro de GNU..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "" + +#: src/shar.c:657 +#, fuzzy +msgid "failed to create lock directory" +msgstr "fallo ó crea-lo directorio de bloqueo" + +#: src/shar.c:661 +#, fuzzy, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "fallo ó crea-lo directorio de bloqueo" + +#: src/shar.c:663 +#, fuzzy, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "fallo ó crea-lo directorio de bloqueo" + +#: src/shar.c:671 +msgid "yes" +msgstr "" + +#: src/shar.c:671 +#, fuzzy +msgid "overwrite this file" +msgstr "¿sobrescribir" + +#: src/shar.c:672 +msgid "no" +msgstr "" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "" + +#: src/shar.c:673 +msgid "all" +msgstr "" + +#: src/shar.c:673 +#, fuzzy +msgid "overwrite all files" +msgstr "¿sobrescribir" + +#: src/shar.c:674 +msgid "none" +msgstr "" + +#: src/shar.c:674 +#, fuzzy +msgid "overwrite no files" +msgstr "¿sobrescribir" + +#: src/shar.c:675 +msgid "help" +msgstr "" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "" + +#: src/shar.c:676 +msgid "quit" +msgstr "" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Demasiados directorios para xerar co mkdir" + +#: src/shar.c:737 +#, fuzzy, c-format +msgid "x - created directory `%s'\\''." +msgstr "fallo ó crea-lo directorio de bloqueo" + +#: src/shar.c:739 +#, fuzzy, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "fallo ó crea-lo directorio de bloqueo" + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "Non se pode acceder a %s" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "-C vai ficar obsoleta, utilice -Z no seu lugar" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "Non se pode obte-lo nome do directorio actual" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" + +#: src/shar.c:976 src/shar.c:1383 +#, fuzzy, c-format +msgid "New file, remaining %s, " +msgstr "Novo ficheiro, quedan %ld, " + +#: src/shar.c:977 src/shar.c:1384 +#, fuzzy, c-format +msgid "Limit still %s\n" +msgstr "O límite é aínda %d\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, fuzzy, c-format +msgid "restore of %s failed" +msgstr "a recuperación de" + +#: src/shar.c:987 +#, fuzzy, c-format +msgid "End of part %d, continue with part %d" +msgstr "siga coa parte" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Comezando ficheiro %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: Non é un ficheiro normal" + +#: src/shar.c:1067 +#, fuzzy, c-format +msgid "In shar: remaining size %s\n" +msgstr "No shar: queda un tamaño de %ld\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "baleiro" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(baleiro)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "Non se pode abri-lo ficheiro %s" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "comprimido" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "comprimido con gzip" + +#: src/shar.c:1150 +#, fuzzy +msgid "bzipped" +msgstr "comprimido con gzip" + +#: src/shar.c:1151 +msgid "binary" +msgstr "binario" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(comprimido)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(comprimido con gzip)" + +#: src/shar.c:1154 +#, fuzzy +msgid "(bzipped)" +msgstr "(comprimido con gzip)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(binario)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "Non se puido facer un \"fork\"" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Ficheiro %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "texto" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(texto)" + +#: src/shar.c:1251 +#, fuzzy, c-format +msgid "overwriting %s" +msgstr "sobrescribindo" + +#: src/shar.c:1253 +#, fuzzy, c-format +msgid "overwrite %s" +msgstr "¿sobrescribir" + +#: src/shar.c:1257 +#, c-format +msgid "SKIPPING %s" +msgstr "" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "extracción abortada" + +#: src/shar.c:1262 +#, fuzzy, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "(o ficheiro xa existe)" + +#: src/shar.c:1272 +#, fuzzy, c-format +msgid "Saving %s (%s)" +msgstr "gardando %s (%s)" + +#: src/shar.c:1276 +#, fuzzy, c-format +msgid "x - extracting %s %s" +msgstr "extraendo" + +#: src/shar.c:1392 +#, fuzzy, c-format +msgid "restore of %s failed\n" +msgstr "a recuperación de" + +#: src/shar.c:1401 +#, fuzzy, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "siga coa parte" + +#: src/shar.c:1407 +#, fuzzy, c-format +msgid "End of %s part %d" +msgstr "Fin da parte" + +#: src/shar.c:1408 +msgid "archive" +msgstr "arquivo" + +#: src/shar.c:1412 +#, fuzzy, c-format +msgid "File %s is continued in part %d" +msgstr "continúase na parte" + +#: src/shar.c:1456 +#, fuzzy +msgid "Please unpack part 1 first!" +msgstr "por favor, desempaquete primeiro a parte 1" + +#: src/shar.c:1460 +#, fuzzy +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "por favor, desempaquete primeiro a parte 1" + +#: src/shar.c:1471 +#, c-format +msgid "STILL SKIPPING %s" +msgstr "" + +#: src/shar.c:1479 +#, fuzzy, c-format +msgid "continuing file %s" +msgstr "continuando o ficheiro" + +#: src/shar.c:1497 +#, fuzzy, c-format +msgid "File %s is complete" +msgstr "está completo" + +#: src/shar.c:1504 +#, fuzzy, c-format +msgid "uudecoding file %s" +msgstr "uu-decodificando ficheiro" + +#: src/shar.c:1514 +#, fuzzy, c-format +msgid "uncompressing file %s" +msgstr "descomprimindo ficheiro" + +#: src/shar.c:1522 +#, fuzzy, c-format +msgid "gunzipping file %s" +msgstr "descomprimindo con gunzip o ficheiro" + +#: src/shar.c:1530 +#, fuzzy, c-format +msgid "bunzipping file %s" +msgstr "descomprimindo con gunzip o ficheiro" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "a comprobación MD5 fallou" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "Abrindo `%s'" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Pechando `%s'" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Probe `%s --help' para máis información.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Uso: %s [OPCIÓN]... [FICHEIRO]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Os argumentos obrigatorios para as opcións longas son tamén obligatorios " +"para\n" +"as opcións curtas.\n" + +#: src/shar.c:1730 +#, fuzzy +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +" -m, --base64 usar codificación base64 como no RFC1521\n" +" --help amosar esta axuda e saír\n" +" --version amosa-la información da versión e saír\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" + +#: src/shar.c:1759 +#, fuzzy +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Controlando as cabeceiras do shar:\n" +" -n, --archive-name=NOME usar NOME para documenta-lo arquivo\n" +" -s, --submitter=ENDEREZO sustitui-lo nome do creador\n" +" -a, --net-headers escribir cabeceiras Submitted-by: e Archive-" +"name:\n" +" -c, --cut-mark comeza-lo shar cunha liña de corte\n" +"\n" +"Escollendo o modo de almacenamento:\n" +" -M, --mixed-uuencode decidir uuencode dinámicamente (defecto)\n" +" -T, --text-files considerar tódolos ficheiros como texto\n" +" -B, --uuencode considerar tódolos ficheiros como binarios,\n" +" usar uuencode\n" +" -z, --gzip aplicar gzip e uuencode a tódolos ficheiros\n" +" -g, --level-for-gzip=NIVEL pasarlle -NIVEL (9 por omisión) a gzip\n" +" -Z, --compress aplicar compress e uuencode a tódolos " +"ficheiros\n" +" -b, --bits-per-code=BITS pasarlle -bBITS (12 por omisión) a compress\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Protexendo os erros de transmisión:\n" +" -w, --no-character-count non usar `wc -c' para comproba-lo tamaño\n" +" -D, --no-md5-digest non usa-lo resume `md5sum' para comprobar\n" +" -F, --force-prefix forza-lo carácter de prefixo en tódalas " +"liñas\n" +" -d, --here-delimiter=CADEA usar CADEA para delimita-los ficheiros no " +"shar\n" +"\n" +"Producindo diferentes clases de shars:\n" +" -V, --vanilla-operation producir shars moi sinxelos e sen preguntas\n" +" -P, --no-piping usar ficheiros temporais exclusivamente no " +"momento\n" +" de facer unshar\n" +" -x, --no-check-existing sobrescribi-los ficheiros que xa existan sen\n" +" se preocupar\n" +" -X, --query-user preguntar ó usuario antes de sobrescribi-los\n" +" ficheiros (non para Internet)\n" +" -m, --no-timestamp non restaura-la data de modificación dos " +"ficheiros\n" +" -Q, --quiet-unshar evitar mensaxes pormenorizadas ó face-lo unshar\n" +" -f, --basename restaurar nun directorio, a pesar da xerarquía\n" +" --no-i18n non producir un script de shell " +"internacionalizado\n" + +#: src/shar.c:1800 +#, fuzzy +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"Requérese a opción -o con -l ou -L, requérese a opción -n con -a.\n" +"A opción -g implica -z, a opción -b implica -Z.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "Non se escolleu DEBUG ó compilar" + +#: src/shar.c:1986 +#, fuzzy, c-format +msgid "Hard limit %s\n" +msgstr "Límite duro %dk\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "" + +#: src/shar.c:2061 +#, fuzzy, c-format +msgid "Soft limit %s\n" +msgstr "Límite suave %dk\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"Isto é software libre; mire o código fonte para as condicións de copia. Non\n" +"hai NINGUNHA garantía; nin sequera de MERCABILIDADE ou VALIDEZ PARA UN FIN\n" +"PARTICULAR.\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "AVISO: Non hai interacción co usuario no modo `vanilla'" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "AVISO: As opcións de almacenamento non de texto están a ser ignoradas" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Non hai ficheiros de entrada" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "Non se pode usa-la opción -a sen -n" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "Non se pode usa-la opción -l ou -L sen -o" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "POR FAVOR, evite os shar -X en Usenet ou en redes públicas" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Desempaquetouse a última parte" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "Creáronse %d ficheiros\n" + +#: src/shar.c:2310 +#, fuzzy, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "fallo ó crea-lo directorio de bloqueo" + +#: src/shar.c:2312 +#, fuzzy, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "fallo ó crea-lo directorio de bloqueo" + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "Non se atoparon comandos de shell en %s" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s semella código C, non un arquivo de shell" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Non se atopou ningún comando de shell despois da liña de corte en %s" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s probablemente non é un arquivo de shell" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "A liña de corte estaba seguida por: %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Executando o proceso `sh'" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Os argumentos obrigatorios para as opcións longas son tamén obligatorios " +"para\n" +"as opcións curtas.\n" +"\n" +" -d, --directory=DIRECTORY cambiar a DIRECTORIO antes de desempaquetar\n" +" -c, --overwrite pasarlle -c ó script shar para sobrescribir\n" +" ficheiros\n" +" -e, --exit-0 o mesmo que `--split-at=\"exit 0\"'\n" +" -E, --split-at=CADEA dividir shars concatenados despois de CADEA\n" +" -f, --force o mesmo que `-c'\n" +" --help amosar esta axuda e saír\n" +" --version amosa-la información da versión e saír\n" +"\n" +"Se non se indica FICHEIRO, lese da entrada estándar.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "Non se pode cambiar ó directorio `%s'" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "entrada estándar" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, fuzzy, c-format +msgid "%s: Write error" +msgstr "Erro de escritura" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: Ficheiro curto" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: Non hai liña `end'" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: datos tralo carácter de recheo `='" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: liña ilegal" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: Non hai liña `begin'" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: ~usuario ilegal" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: Non hai tal usuario `%s'" + +#: src/uudecode.c:390 +#, fuzzy, c-format +msgid "cannot access %s" +msgstr "Non se pode acceder a %s" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "" + +#: src/uudecode.c:408 +#, fuzzy, c-format +msgid "freopen of %s" +msgstr "Abrindo `%s'" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Uso: %s [FICHEIRO]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Os argumentos obrigatorios para as opcións longas son tamén obligatorios " +"para\n" +"as opcións curtas.\n" +" -o, --output-file=FICHEIRO redirixir a saída a FICHEIRO\n" +" --help amosar esta axuda e saír\n" +" --version amosa-la información da versión e saír\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Erro de escritura" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Erro de lectura" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Uso: %s [FICH-ENTRADA] FICH-REMOTO\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 usar codificación base64 como no RFC1521\n" +" --help amosar esta axuda e saír\n" +" --version amosa-la información da versión e saír\n" + +#: src/uuencode.c:276 +#, fuzzy, c-format +msgid "fopen-ing %s" +msgstr "Abrindo `%s'" + +#: src/uuencode.c:278 +#, fuzzy, c-format +msgid "fstat-ing %s" +msgstr "Comezando ficheiro %s\n" + +#~ msgid "[no, yes, all, quit] (no)?" +#~ msgstr "[non (n), si (y), todos (a), saír (q)] (non)?" + +#~ msgid "Please unpack part" +#~ msgstr "Por favor, desempaquete a parte" + +#~ msgid "next!" +#~ msgstr "trala anterior" + +#, fuzzy +#~ msgid "File" +#~ msgstr "ficheiro" + +#~ msgid "original size" +#~ msgstr "tamaño orixinal" + +#~ msgid "current size" +#~ msgstr "tamaño actual" + +#~ msgid "Must unpack archives in sequence!" +#~ msgstr "Debe desempaqueta-los arquivos en secuencia" + +#~ msgid "lock directory" +#~ msgstr "directorio de bloqueo" + +#, fuzzy +#~ msgid "created lock directory" +#~ msgstr "directorio de bloqueo" + +#, fuzzy +#~ msgid "created %s" +#~ msgstr "creado" + +#, fuzzy +#~ msgid "could not create %s" +#~ msgstr "fallo ó crealo" + +#~ msgid "restore of" +#~ msgstr "a recuperación de" + +#~ msgid "failed" +#~ msgstr "fallou" + +#~ msgid "removed" +#~ msgstr "borrado" + +#~ msgid "failed to remove" +#~ msgstr "fallo ó borralo" + +#~ msgid "continue with part" +#~ msgstr "siga coa parte" + +#, fuzzy +#~ msgid "End of" +#~ msgstr "fin de" + +#~ msgid "part" +#~ msgstr "parte" + +#~ msgid "" +#~ "\n" +#~ "Giving feedback:\n" +#~ " --help display this help and exit\n" +#~ " --version output version information and exit\n" +#~ " -q, --quiet, --silent do not output verbose messages locally\n" +#~ "\n" +#~ "Selecting files:\n" +#~ " -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +#~ " -S, --stdin-file-list read file list from standard input\n" +#~ "\n" +#~ "Splitting output:\n" +#~ " -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX." +#~ "NN\n" +#~ " -l, --whole-size-limit=SIZE split archive, not files, to SIZE " +#~ "kilobytes\n" +#~ " -L, --split-size-limit=SIZE split archive, or files, to SIZE " +#~ "kilobytes\n" +#~ msgstr "" +#~ "\n" +#~ "Obtendo información:\n" +#~ " --help amosar esta axuda e saír\n" +#~ " --version amosa-la información da versión e saír\n" +#~ " -q, --quiet, --silent non escribir mensaxes pormenorizadas " +#~ "localmente\n" +#~ "\n" +#~ "Escollendo os ficheiros:\n" +#~ " -p, --intermix-type permitir -[BTzZ] nas listas de ficheiros para\n" +#~ " cambia-lo modo\n" +#~ " -S, --stdin-file-list le-la lista de ficheiros da entrada estándar\n" +#~ "\n" +#~ "Dividindo a saída:\n" +#~ " -o, --output-prefix=PREFIXO escribir ós ficheiros PREFIXO.01 a " +#~ "PREFIXO.NN\n" +#~ " -l, --whole-size-limit=TAMAÑO dividi-lo arquivo, non os ficheiros, en\n" +#~ " TAMAÑO kilobytes\n" +#~ " -L, --split-size-limit=TAMAÑO dividi-lo arquivo, ou os ficheiros, en\n" +#~ " TAMAÑO kilobytes\n" + +#~ msgid "Report bugs to .\n" +#~ msgstr "Comunique os erros a .\n" + +#~ msgid "skipping" +#~ msgstr "saltando" + +#~ msgid "still skipping" +#~ msgstr "saltando" diff --git a/po/hu.gmo b/po/hu.gmo new file mode 100644 index 0000000000000000000000000000000000000000..cd56ff06c1ba58a4fd3d2711b3d28317963e014b GIT binary patch literal 13420 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, 2002. +# This file is distributed under the same license as the PACKAGE package. +# +msgid "" +msgstr "" +"Project-Id-Version: sharutils-4.3.70\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2002-08-05 11:43GMT\n" +"Last-Translator: Gábor István \n" +"Language-Team: Hungarian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 0.9.5\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Ismeretlen rendszerhiba" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: a `%s' kapcsoló nem egyértelmû\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: a `--%s' kapcsoló nem enged meg argumentumot\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: a `%c%s' kapcsoló nem enged meg argumentumot\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: a `%s' kapcsolóhoz argumentum szükséges\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: a `--%s' kapcsoló ismeretlen\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: a `%c%s' kapcsoló ismeretlen\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: illegális kapcsoló -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: érvénytelen kapcsoló -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: a kapcsolónak szüksége van egy argumentumra -- %c\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: a `-W %s' kapcsoló nem egyértelmû\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: a `-W %s' kapcsoló nem enged meg argumentumot\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "elfogyott a memória" + +#: src/shar.c:608 +#, fuzzy +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "FIGYELEM: nem lehet helyre állítani az idõbélyeget. Szerezze be a és" + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "FIGYELEM: nem lehet helyre állítani az idõbélyeget. Szerezze be a és" + +#: src/shar.c:645 +#, fuzzy +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "" +"telepítse a GNU \\'touch'-ot, amit a File Utilites csomagban találja meg..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "" + +#: src/shar.c:657 +#, fuzzy +msgid "failed to create lock directory" +msgstr "nem sikerült rázolni a könyvtárat" + +#: src/shar.c:661 +#, fuzzy, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "nem sikerült rázolni a könyvtárat" + +#: src/shar.c:663 +#, fuzzy, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "nem sikerült rázolni a könyvtárat" + +#: src/shar.c:671 +msgid "yes" +msgstr "" + +#: src/shar.c:671 +#, fuzzy +msgid "overwrite this file" +msgstr "felülírva" + +#: src/shar.c:672 +msgid "no" +msgstr "" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "" + +#: src/shar.c:673 +msgid "all" +msgstr "" + +#: src/shar.c:673 +#, fuzzy +msgid "overwrite all files" +msgstr "felülírva" + +#: src/shar.c:674 +msgid "none" +msgstr "" + +#: src/shar.c:674 +#, fuzzy +msgid "overwrite no files" +msgstr "felülírva" + +#: src/shar.c:675 +msgid "help" +msgstr "" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "" + +#: src/shar.c:676 +msgid "quit" +msgstr "" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Túl sok a könyvtár ennek az mkdir verziónak" + +#: src/shar.c:737 +#, fuzzy, c-format +msgid "x - created directory `%s'\\''." +msgstr "nem sikerült rázolni a könyvtárat" + +#: src/shar.c:739 +#, fuzzy, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "nem sikerült rázolni a könyvtárat" + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "A %s-t nem lehet elérni" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "a '-C'-vel való kezdés kifogásolható , használja helyette a '-Z'-t " + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "Nem lehet megtudni az könyvtár nevét" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" + +#: src/shar.c:976 src/shar.c:1383 +#, fuzzy, c-format +msgid "New file, remaining %s, " +msgstr "Új fájl, megmaradt %ld," + +#: src/shar.c:977 src/shar.c:1384 +#, fuzzy, c-format +msgid "Limit still %s\n" +msgstr "A határ %d\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, fuzzy, c-format +msgid "restore of %s failed" +msgstr "helyreállítás" + +#: src/shar.c:987 +#, fuzzy, c-format +msgid "End of part %d, continue with part %d" +msgstr "folytatás ezzel a résszel" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "A %s fájl indítása\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: Nem reguláris fájl" + +#: src/shar.c:1067 +#, fuzzy, c-format +msgid "In shar: remaining size %s\n" +msgstr "In shar: fennmaradó hely %ld\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "üres" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(üres)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "Nem lehet megnyitni a '%s' fájlt" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "tömörített" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "gzippel tömörítve" + +#: src/shar.c:1150 +#, fuzzy +msgid "bzipped" +msgstr "gzippel tömörítve" + +#: src/shar.c:1151 +msgid "binary" +msgstr "bináris" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(tömörített)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(gzippel tömörítve)" + +#: src/shar.c:1154 +#, fuzzy +msgid "(bzipped)" +msgstr "(gzippel tömörítve)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(bináris)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "Nem lehet eldönteni" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Fájl %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "szöveg" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(szöveg)" + +#: src/shar.c:1251 +#, fuzzy, c-format +msgid "overwriting %s" +msgstr "felülírás" + +#: src/shar.c:1253 +#, fuzzy, c-format +msgid "overwrite %s" +msgstr "felülírva" + +#: src/shar.c:1257 +#, fuzzy, c-format +msgid "SKIPPING %s" +msgstr "ÁTUGRÁS" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "Kitömörítés megszakítva" + +#: src/shar.c:1262 +#, fuzzy, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "(fájl már létezik)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Mentés %s (%s)" + +#: src/shar.c:1276 +#, fuzzy, c-format +msgid "x - extracting %s %s" +msgstr "kitömörítés" + +#: src/shar.c:1392 +#, fuzzy, c-format +msgid "restore of %s failed\n" +msgstr "helyreállítás" + +#: src/shar.c:1401 +#, fuzzy, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "folytatás ezzel a résszel" + +#: src/shar.c:1407 +#, fuzzy, c-format +msgid "End of %s part %d" +msgstr "Vége a résznek" + +#: src/shar.c:1408 +msgid "archive" +msgstr "archív fájl" + +#: src/shar.c:1412 +#, fuzzy, c-format +msgid "File %s is continued in part %d" +msgstr "rész folytatva" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "Kérem csomagolja az elsõ részt!" + +#: src/shar.c:1460 +#, fuzzy +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "Kérem csomagolja az elsõ részt!" + +#: src/shar.c:1471 +#, fuzzy, c-format +msgid "STILL SKIPPING %s" +msgstr "MÉG MINDIG ÁTUGROM" + +#: src/shar.c:1479 +#, fuzzy, c-format +msgid "continuing file %s" +msgstr "fájl folytatása" + +#: src/shar.c:1497 +#, fuzzy, c-format +msgid "File %s is complete" +msgstr "kész" + +#: src/shar.c:1504 +#, fuzzy, c-format +msgid "uudecoding file %s" +msgstr "fájl uudekódólása" + +#: src/shar.c:1514 +#, fuzzy, c-format +msgid "uncompressing file %s" +msgstr "fájl kicsomagolása" + +#: src/shar.c:1522 +#, fuzzy, c-format +msgid "gunzipping file %s" +msgstr "fájl kicsomagolása" + +#: src/shar.c:1530 +#, fuzzy, c-format +msgid "bunzipping file %s" +msgstr "fájl kicsomagolása" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "MD5 ellenõrzés sikertelen" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "A '%s' megnyitása" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "A '%s' bezárása" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Próbálja a `%s --help'-et több információért.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Használat: %s [KAPCSOLÓ]... [FÁJL]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Ha egy hosszú kapcsolóhoz kötelezõ argumentumot megadni, akkor ez a " +"megfelelõ\n" +"rövid kapcsolónál is kötelezõ.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"Vissza jelzést ad\n" +" --help megjeleníti ezt a segítséget és kilép\n" +" --version kiírja a verziószámot és kilép\n" +" -q, --quiet, --silent nem ír ki semilyen üzenetez helyileg\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Fájl kiválasztása:\n" +" -p, --intermix-type engedélyezi a -[BTzZ] módok választásást a fájl " +"listában\n" +" -S, --stdin-file-list fájl listát olvas szabványos bemenetrõl\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Fájl kiválasztása:\n" +" -p, --intermix-type engedélyezi a -[BTz] módok választásást a fájl " +"listában\n" +" -S, --stdin-file-list fájl listát olvas szabványos bemenetrõl\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"A kimenet szétvágása:\n" +" -o, --output-prefix=ELÕTÉT a fájlmeneti fájlok ELÕTÉT.01-tõl ELÕTÉT.NN-" +"ig lesznek\n" +" -l, --whole-size-limit=MÉRET szétvágja az archívumot,a bemenetet nem " +"vágja, MÉRET kilobájtra\n" +" -L, --split-size-limit=MÉRET szétvágja az archívumot,a bemenetet ha kell " +"vágja, MÉRET kilobájtra\n" + +#: src/shar.c:1759 +#, fuzzy +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"A shar fejléc kezelése:\n" +" -n, --archive-name=NÉV a NEVet használja a dokumentum arcíválához\n" +" -s, --submitter=CÍM átírja a kitöltlõ nevét\n" +" -a, --net-headers kiírja a kitöltõ és az archív név fejléceket\n" +" -c, --cut-mark a shar indítása a sor kitvágásával\n" +"\n" +"A fájl tárolásának kiválasztása:\n" +" -M, --mixed-uuencode dinamikusan uudekódolás (alapbeállítás)\n" +" -T, --text-files az összes fájlt szövegként kezeli\n" +" -B, --uuencode az összes fájlt binárisként kezeli, használja " +"az uuencode-ot\n" +" -z, --gzip gzippli és uuenkódolja az összes fájlt\n" +" -g, --level-for-gzip=SZINT meghatározza a gzip tömörítés SZINTjét " +"(alapból 9)\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress tömöríti és uuenkódolja az összes fájlt\n" +" -b, --bits-per-code=BITEK átad egy -bBITEKet (alapból 12) a " +"tömörítõnek\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Az átvitel védelme:\n" +" -w, --no-character-count nem használja a `wc -c'-t a méret " +"ellenõrzéshez\n" +" -D, --no-md5-digest nem használja az `md5sum'-t az aláírás " +"ellenõrzést\n" +" -F, --force-prefix kierõleleti az elõtét karakterket minden " +"sorban\n" +" -d, --here-delimiter=SZTRING a SZTRINGET használja a fájlok " +"elválasztásához\n" +"\n" +"Különbözõ fajtájú megosztások:\n" +" -V, --vanilla-operation létrehozz egy nagyon egyszerû és " +"beazonosíthatatlan fájlt\n" +" -P, --no-piping különlegesen használja az ideiglenes fájlt az " +"kicsomagolás során\n" +" -x, --no-check-existing nem kérdez rá a felülírásra\n" +" -X, --query-user rákérdez a fájl felülírására (nem a netten)\n" +" -m, --no-timestamp nem állítja vissza a módosítás dátumát és " +"idejét\n" +" -Q, --quiet-unshar nem foglalja az idõt a kicsomagolás alatt az " +"üzenetekkel\n" +" -f, --basename helyreállít egy könyvtárat, az egész " +"hiarerhiával\n" +" --no-i18n nem egy nemzetközileg is használató " +"parancsállományt hoz létre\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"A '-o' opciónak vagy a '-l' vagy a '-L'-re van szüksége, a '-n' opciónak a '-" +"a'-ra van szüksége.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "A '-g' magába foglalja a '-z'-t és a '-b' a '-Z'-t.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "A '-g' magába foglalja a '-z'.\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Hibajelentéseket a(z) <%s> címre küldj.\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "A hiba keresés nincs volt kiválasztva a fordítás alatt" + +#: src/shar.c:1986 +#, fuzzy, c-format +msgid "Hard limit %s\n" +msgstr "Szigorú határ %dk\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "" +"Ez a rendszer nem támogatja a '-Z'-t ('compress'), használja a '-z'-t " +"helyette" + +#: src/shar.c:2061 +#, fuzzy, c-format +msgid "Soft limit %s\n" +msgstr "Finom határ %dk\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"Ez a szoftver egy szabad program; a részletekért nézze meg a másolási feltételeket. A\n" +"program mûködésére NINCS semmilyen garancia\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "" +"FIGYELEM: A vanilla módba nincs semilyen felhasználói beavatkozásra lehetõség" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "FIGYELEM : Nem szöveges tárolás opció felülírva" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Nincs bementi fájl" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "Az '-a' opciót nem használhatja az '-n' nélkül" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "A '-l' vagy a 'L' opciót nem használhatja a '-o' nélkül" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "" +"KÉREM kerülja a '-X' -es megosztást a Useneten vagy egyéb nyilvános hálózaton" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Ön kicsomagolta az utolsó részt is" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "Létrehozva a %d fájl\n" + +#: src/shar.c:2310 +#, fuzzy, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "nem sikerült rázolni a könyvtárat" + +#: src/shar.c:2312 +#, fuzzy, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "nem sikerült rázolni a könyvtárat" + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "Találtam egy nem parancsértelmezõ parancsot a %s-ben" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "A %s C kódnak néz ki és nem parancsértelmezõ archívumnak" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Találtam egy nem parancsértelmezõ parancsot a %s cut után" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s talán nem parancsértelmezõ archív" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "A kivágás sort %s követte" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "'sh' mûvelet indítása" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Ha egy hosszú kapcsolóhoz kötelezõ argumentumot megadni, akkor ez a " +"megfelelõ\n" +"rövid kapcsolónál is kötelezõ.\n" +" -d, --directory=KÖNYVTÁR belép a KÖNYVTÁRba mielöt kicsomagol\n" +" -c, --overwrite a fájlokat felülírja\n" +" -e, --exit-0 ugyanaz mint a `--split-at=\"exit 0\"'\n" +" -E, --split-at=SZTRING szétvágja a SZTRINGnél összefûzött fájlokat\n" +" -f, --force ugyanaz mint a `-c'\n" +" --help megjeleniti ezt a segítséget és kilép\n" +" --version kiírja a verziószámot és kilép\n" +"\n" +"Ha nincs bemeneti fájl akkor a szabványos bemenetrõl olvas.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "Nem lehet belépni a '%s' könyvtárba" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "szabványos bemenet" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, fuzzy, c-format +msgid "%s: Write error" +msgstr "%s: írás hiba" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: Rövid fájl" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s Nincs 'end' sor" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: az adatokat az `=' sortöltõ szó követi" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: érvénytelen sor" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: Nincs 'begin' sor" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: Érvénytelen ~felhasználó" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: Nem felh. '%s'" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "%s: hozzáférés sikertelen" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "megtagadta a (%s) FIFO írását" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "nem követem a (%s) szimbolikus hivatkozást" + +#: src/uudecode.c:408 +#, fuzzy, c-format +msgid "freopen of %s" +msgstr "A '%s' megnyitása" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Használat: %s [FÁJL]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Ha egy hosszú kapcsolóhoz kötelezõ argumentumot megadni, akkor ez a " +"megfelelõ\n" +"rövid kapcsolónál is kötelezõ.\n" +" -o, --output-file=FÁJL közvetken kimenet a FÁJLba\n" +" --help meg jeleniti ezt a segítséget és kilép\n" +" --version kiírja a verzió információkat és kilép\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Írási hiba" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Olvasási hiba" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Használat: %s [BEFILE] KÜLSÕFÁJL\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 a base64 enkódólást az RFC1521 szerint végzi el\n" +" --help megjeleniti ezt a segítséget és kilép\n" +" --version kiírja a verzió információt és kilép\n" + +#: src/uuencode.c:276 +#, fuzzy, c-format +msgid "fopen-ing %s" +msgstr "A '%s' megnyitása" + +#: src/uuencode.c:278 +#, fuzzy, c-format +msgid "fstat-ing %s" +msgstr "A %s fájl indítása\n" + +#~ msgid "[no, yes, all, quit] (no)?" +#~ msgstr "[nem, igen, az összest,kilép] (nem)?" + +#~ msgid "Please unpack part" +#~ msgstr "Kérem csomagolja ki" + +#~ msgid "next!" +#~ msgstr "következõ!" + +#~ msgid "File" +#~ msgstr "Fájl" + +#~ msgid "original size" +#~ msgstr "az eredeti méret" + +#~ msgid "current size" +#~ msgstr "az aktuális méret" + +#~ msgid "Must unpack archives in sequence!" +#~ msgstr "Ki kell csomagolni az archívumot ehhez!" + +#~ msgid "lock directory" +#~ msgstr "könyvtár zárolása" + +#, fuzzy +#~ msgid "created lock directory" +#~ msgstr "könyvtár zárolása" + +#, fuzzy +#~ msgid "created %s" +#~ msgstr "létrehozva" + +#, fuzzy +#~ msgid "could not create %s" +#~ msgstr "nem sikerült létrehozni" + +#~ msgid "restore of" +#~ msgstr "helyreállítás" + +#~ msgid "failed" +#~ msgstr "sikertelen" + +#~ msgid "removed" +#~ msgstr "eltávolítva" + +#~ msgid "failed to remove" +#~ msgstr "nem sikerült eltávolítani" + +#~ msgid "continue with part" +#~ msgstr "folytatás ezzel a résszel" + +#~ msgid "End of" +#~ msgstr "Vége" + +#~ msgid "part" +#~ msgstr "rész" diff --git a/po/insert-header.sin b/po/insert-header.sin new file mode 100644 index 0000000..b26de01 --- /dev/null +++ b/po/insert-header.sin @@ -0,0 +1,23 @@ +# Sed script that inserts the file called HEADER before the header entry. +# +# At each occurrence of a line starting with "msgid ", we execute the following +# commands. At the first occurrence, insert the file. At the following +# occurrences, do nothing. The distinction between the first and the following +# occurrences is achieved by looking at the hold space. +/^msgid /{ +x +# Test if the hold space is empty. +s/m/m/ +ta +# Yes it was empty. First occurrence. Read the file. +r HEADER +# Output the file's contents by reading the next line. But don't lose the +# current line while doing this. +g +N +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/po/it.gmo b/po/it.gmo new file mode 100644 index 0000000000000000000000000000000000000000..55e74b16fedba60bfca64bdec155e905b16a1f8b GIT binary patch literal 19567 zcmds;dvGP!UFQ!@z_ADh>;Q=&N!#&6Gs#?e#`ZXl;&Ci%q=|w?QY4M-I0>HCy{)T` z?!7JdLo=GJAr9{V;gJVWfvP|X3a9|#5eiZT6lDm-V{3Pd_wuMvJT^gQxjFEGFLmyN&*M4xKJH)kWzM}9{5kL+!LwiP+}DGr zzrwjYz+VGf;9r9@aksqKxm&?ILEYaE(zSadNK^L~@MbUvzZiTPJPLj{sCpj0NidAtWyy*2O!;M1T;@@^1P zxc7lKfOTnT{W?fhw+X%u z{8mu&{0&fa`g>4x|MELMz8YjI?jbM&p8z%9cLw}P@P6+9JE-y83UNihmxIp(Uk|Fk zSrC?SkAa#`4vHV%1Bwqm0Nw)rV0ivfP<-%TIH>jbDR3J64G`8brqTRg3iCiJ z_eN0P9e_80Uk9rFyFggkeKV-<{xB&1`e{(#dnVlfAt=81J5cTZ2^78l1=PCTity_F zv4Ho3s&^LD`$bUwZGc**3e>pX2dbZ61nJ8CXHet*$AEXR=&H92YMl!3!so$n;LmXX z$FG9-dGT(T@Q=8^^DgEJ{$KF7d4BeU*L%0z>+x^F*UOFg(b5wQT_!{T< z={^REo}UKA2hW3Pz5;wHDET@Cie77=<~s=Qp90nX{h;{wcR}&bUw~@&&mco|FMh3` z{~3@exHhQg-vMggzXVE7{uX3v?gcFBo!~tI9|KkIDexxnCqU8f=RxB?@J8k0Y(2$g5smk zf*SwLuSfU6$WMSbu%3T1S5V{s6sY>21sRIFZO-@qHc)iA z1ilpfQBeK;Iw-mQBT#ht4EPZEqIqmAcphXa+s_!5hH>)OX(j>bu_$iXI;U)&3Kp`08)M^S=j0mzyA_zH=w2@4gEB67ZpL z|0ZyX`z|QC_&|97BcSN<3!uLH2~gktYf%0DA5ioDe;^{~Zd>r{u?nicr@&+2M?ih= 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 f_SFMg;wfd, 2004, 2005, 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: sharutils 4.6.3-pre4\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2006-05-23 11:50+0100\n" +"Last-Translator: Marco Colombo \n" +"Language-Team: Italian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Errore di sistema sconosciuto" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: l'opzione '%s' è ambigua\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: l'opzione '--%s' non accetta argomenti\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: l'opzione '%c%s' non accetta argomenti\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: l'opzione '%s' richiede un argomento\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: opzione '--%s' non riconosciuta\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: opzione '%c%s' non riconosciuta\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: opzione illecita -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: opzione non valida -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: l'opzione richiede un argomento -- %c\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: l'opzione '-W %s' è ambigua\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: l'opzione '-W %s' non accetta argomenti\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "memoria esaurita" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" +"Nota: md5sums non verificati. Si suggerisce di installare GNU coreutils." + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "ATTENZIONE: orario del file non ripristinato. Si suggerisce" + +# NdT: cos'è questo \\? +#: src/shar.c:645 +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "di installare GNU 'touch', distribuito in GNU coreutil." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "la directory di lock '${lock_dir}' esiste" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "creazione della directory di lock non riuscita" + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "x - creata directory di lock \"%s\\\"." + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "x - creazione della directory di lock \"%s\\\" non riuscita." + +#: src/shar.c:671 +msgid "yes" +msgstr "sì" + +#: src/shar.c:671 +msgid "overwrite this file" +msgstr "sovrascrivere questo file" + +#: src/shar.c:672 +msgid "no" +msgstr "no" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "ignorare questo file" + +#: src/shar.c:673 +msgid "all" +msgstr "tutti" + +#: src/shar.c:673 +msgid "overwrite all files" +msgstr "sovrascrivere tutti i file" + +#: src/shar.c:674 +msgid "none" +msgstr "nessuno" + +#: src/shar.c:674 +msgid "overwrite no files" +msgstr "non sovrascrivere alcun file" + +#: src/shar.c:675 +msgid "help" +msgstr "aiuto" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "spiega le scelte" + +#: src/shar.c:676 +msgid "quit" +msgstr "esci" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "uscire immediatamente" + +# Qui ho seguito la traduzione francese. +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Troppe directory da creare" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "x - creata directory \"%s\"." + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "x - creazione della directory \"%s\" non riuscita." + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "Impossibile accedere a %s" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "-C è deprecato, usare -Z al suo posto" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "Impossibile ottenere il nome della directory corrente" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" +"Gli archivi vanno estratti in ordine!\n" +"Estrarre la parte '`cat ${lock_dir}/seq`'." + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "Nuovo file, rimane %s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "Il limite è ancora %s\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "ripristino di %s non riuscito" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "Fine della parte %d, continua con la parte %d" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Inizio file %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: non è un file normale" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "In shar: dimensione rimanente %s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "vuoto" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(vuoto)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "Impossibile aprire il file %s" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "compresso" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "compresso con gzip" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "compresso con bzip" + +#: src/shar.c:1151 +msgid "binary" +msgstr "binario" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(compresso)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(compresso con gzip)" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(compresso con bzip)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(binario)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "Impossibile effettuare un fork" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "File %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "testo" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(testo)" + +#: src/shar.c:1251 +#, c-format +msgid "overwriting %s" +msgstr "sovrascrittura di %s in corso" + +#: src/shar.c:1253 +#, c-format +msgid "overwrite %s" +msgstr "sovrascrivere %s" + +#: src/shar.c:1257 +#, c-format +msgid "SKIPPING %s" +msgstr "%s IGNORATO" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "estrazione interrotta" + +#: src/shar.c:1262 +#, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "%s IGNORATO (il file esiste già)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Salvataggio di %s (%s)" + +# FIXME +#: src/shar.c:1276 +#, c-format +msgid "x - extracting %s %s" +msgstr "x - estrazione di %s %s" + +#: src/shar.c:1392 +#, c-format +msgid "restore of %s failed\n" +msgstr "ripristino di %s non riuscito\n" + +#: src/shar.c:1401 +#, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "Fine della parte %ld, continua con la parte %ld" + +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "Fine di %s parte %d" + +#: src/shar.c:1408 +msgid "archive" +msgstr "archivio" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "Il file %s continua in parte %d" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "Estrarre prima la parte 1." + +# FIXME +#: src/shar.c:1460 +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "Adesso estrarre la parte ${shar_sequence}." + +#: src/shar.c:1471 +#, c-format +msgid "STILL SKIPPING %s" +msgstr "%s IGNORATO ANCORA" + +# FIXME +#: src/shar.c:1479 +#, c-format +msgid "continuing file %s" +msgstr "continuazione del file %s" + +#: src/shar.c:1497 +#, c-format +msgid "File %s is complete" +msgstr "Il file %s è completo" + +#: src/shar.c:1504 +#, c-format +msgid "uudecoding file %s" +msgstr "esecuzione di uudecode sul file %s" + +# FIXME +#: src/shar.c:1514 +#, c-format +msgid "uncompressing file %s" +msgstr "estrazione di un file compress %s" + +#: src/shar.c:1522 +#, c-format +msgid "gunzipping file %s" +msgstr "estrazione di un file gzip %s" + +#: src/shar.c:1530 +#, c-format +msgid "bunzipping file %s" +msgstr "estrazione di un file bzip %s" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "Controllo MD5 fallito" + +# FIXME +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "'attenzione: la dimensione di %s non è %s'\n" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "allocazione nome del file di output" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "Apertura di '%s'" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Chiusura di '%s'" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Usare '%s --help' per maggiori informazioni.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Uso: %s [OPZIONE]... [FILE]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Gli argomenti obbligatori per le opzioni lunghe lo sono anche per quelle " +"corte.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"Aiuto e informazioni:\n" +" --help mostra questo aiuto ed esce\n" +" --version mostra le informazioni sulla versione ed esce\n" +" -q, --quiet, --silent non mostra messaggi prolissi localmente\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Selezione dei file:\n" +" -p, --intermix-type permette -[BTzZ] nella lista dei file per " +"modificare\n" +" la modalità\n" +" -S, --stdin-file-list legge la lista dei file dallo standard input\n" +"\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Selezione dei file:\n" +" -p, --intermix-type permette -[BTzZ] nella lista dei file per " +"modificare\n" +" la modalità\n" +" -S, --stdin-file-list legge la lista dei file dallo standard input\n" +"\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"Divisione dell'output:\n" +" -o, --output-prefix=PREFISSO i nomi dei file di output vanno da " +"PREFISSO.01\n" +" fino a PREFISSO.NN\n" +" -l, --whole-size-limit=NUM divide gli archivi, non i file, ogni NUM " +"kbyte\n" +" -L, --split-size-limit=NUM divide gli archivi o i file ogni NUM " +"kilobyte\n" + +# stock: impacchettare? +#: src/shar.c:1759 +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Controllo delle intestazioni:\n" +" -n, --archive-name=NOME usa NOME come titolo dell'archivio\n" +" -s, --submitter=INDIRIZZO cambia il nome del creatore\n" +" -a, --net-headers crea gli header Submitted-by: e Archive-name:\n" +" -c, --cut-mark crea demarcazione di taglio all'inizio del " +"file\n" +" (riga 'Cut Here')\n" +" -t, --translate traduci i messaggi nello script\n" +"\n" +"Modalità di impacchettamento:\n" +" -M, --mixed-uuencode decide dinamicamente se usare uuencode\n" +" (predefinito)\n" +" -T, --text-files tratta tutti i file come testo\n" +" -B, --uuencode tratta tutti i file come binari, usa " +"uuencode\n" +" -z, --gzip esegue gzip e uuencode su tutti i file\n" +" -g, --level-for-gzip=LIVELLO passa -LIVELLO (predefinito 9) a gzip\n" +" -j, --bzip2 esegue bzip2 e uuencode su tutti i file\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress esegue compress e uuencode su tutti i file\n" +" -b, --bits-per-code=BITS passa -bBITS (predefinito 12) a compress\n" + +# Qui ho seguito la traduzione francese. +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Protezione contro errori di trasmissione:\n" +" -w, --no-character-count non usa 'wc -c' per controllare le " +"dimensioni\n" +" -D, --no-md5-digest non usa 'md5sum' per verificare il " +"contenuto\n" +" -F, --force-prefix forza il carattere di prefisso su ogni riga\n" +" -d, --here-delimiter=STRINGA usa STRINGA per delimitare i file in shar\n" +"\n" +"Modalità di archiviazione:\n" +" -V, --vanilla-operation produce archivi semplici e poco esigenti\n" +" -P, --no-piping usa file temporanei durante l'estrazione\n" +" -x, --no-check-existing sovrascrive i file esistenti\n" +" -X, --query-user chiede conferma prima di sovrascrivere i file\n" +" (non per la rete)\n" +" -m, --no-timestamp non ripristina le date originali dei file\n" +" -Q, --quiet-unshar evita messaggi prolissi durante l'estrazione\n" +" -f, --basename estrae i file in una sola directory\n" +" --no-i18n non produce uno script internazionalizzato\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"L'opzione -o è richiesta con -l o -L, l'opzione -n è richiesta con -a.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "L'opzione -g implica -z, l'opzione -b implica -Z.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "L'opzione -g implica -z.\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Segnalare i bug a <%s>.\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "limite dimensione del file '%s' non valido" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "formato non valido (campo troppo largo): '%s'\n" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "DEBUG non è stato selezionato alla compilazione" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "Limite duro %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "Questo sistema non supporta -Z ('compress'), usare -z al suo posto" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "Limite morbido %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "prefisso di output illecito\n" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"Questo è software libero; si vedano i sorgenti per le condizioni di copia.\n" +"NON c'è alcuna garanzia; neppure di COMMERCIABILITÀ o di IDONEITÀ AD UNO\n" +"SCOPO PARTICOLARE.\n" + +# FIXME: vanilla: standard? semplice? +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "ATTENZIONE: nessun intervento dell'utente in modalità standard." + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "ATTENZIONE: cambiate le opzioni di archiviazione non di testo" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Nessun file di input" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "Impossibile usare l'opzione -a senza -n" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "Impossibile usare le opzioni -l o -L senza -o" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "PER FAVORE evitare di creare shar con -X su Usenet o reti pubbliche" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Ultima parte estratta" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "Creati %d file\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "x - directory di lock \"%s\" rimossa." + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "x - rimozione della directory di lock \"%s\" non riuscita." + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "Nessun comando di shell trovato in %s" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s sembra codice C grezzo, non un archivio della shell" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Nessun comando di shell trovato dopo 'cut' in %s" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s probabilmente non è un archivio della shell" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "La linea 'cut' era seguita da: %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Avvio del processo 'sh'" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Gli argomenti obbligatori per le opzioni lunghe lo sono anche per quelle " +"corte.\n" +"\n" +" -d, --directory=DIRECTORY si sposta in DIRECTORY prima di estrarre\n" +" -c, --overwrite passa -c allo script di shar per " +"sovrascrivere\n" +" i file\n" +" -e, --exit-0 come '--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING divide dopo STRING i file di shar concatenati\n" +" -f, --force come '-c'\n" +" --help mostra questo aiuto ed esce\n" +" --version mostra le informazioni sulla versione ed esce\n" +"\n" +"Se nessun FILE è indicato, viene letto lo standard input.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "Impossibile spostarsi in '%s'" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "allocare un buffer per il nome del file" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "standard input" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "allocare un buffer per il file" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: errore di scrittura" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: file corto" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: riga 'end' mancante" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: altri dati seguono il carattere di riempimento '='" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: riga illecita" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: manca la riga 'begin'" + +# NdT: utente illecito mi sembra proprio brutto +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: ~utente non valido" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: utente '%s' non esistente" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "impossibile accedere a %s" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "scrittura FIFO negata (%s)" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "collegamenti simbolici non seguiti (%s)" + +#: src/uudecode.c:408 +#, c-format +msgid "freopen of %s" +msgstr "Riapertura di %s" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "Cambiamento dei permessi di %s" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Uso: %s [FILE]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Gli argomenti obbligatori per le opzioni lunghe lo sono anche per quelle " +"corte.\n" +" -o, --output-file=FILE salva l'output su FILE\n" +" --help mostra questo aiuto ed esce\n" +" --version mostra le informazioni sulla versione ed esce\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Errore di scrittura" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Errore di lettura" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Uso: %s [INFILE] FILEREMOTO\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 usa la codifica base64 come definita in RFC1521\n" +" --help mostra questo aiuto ed esce\n" +" --version mostra le informazioni sulla versione ed esce\n" + +#: src/uuencode.c:276 +#, c-format +msgid "fopen-ing %s" +msgstr "Apertura di %s" + +# FIXME +#: src/uuencode.c:278 +#, c-format +msgid "fstat-ing %s" +msgstr "Controllo di %s" + +#~ msgid "[no, yes, all, quit] (no)?" +#~ msgstr "[n=no , y=sì, a=tutti, q=interrompi] (no)?" + +#~ msgid "Please unpack part" +#~ msgstr "Estrarre parte" + +#~ msgid "next!" +#~ msgstr "prossimo" + +#~ msgid "File" +#~ msgstr "File" + +#~ msgid "original size" +#~ msgstr "dimensione originale" + +#~ msgid "current size" +#~ msgstr "dimensione corrente" + +#~ msgid "lock directory" +#~ msgstr "directory di lock" + +#~ msgid "created" +#~ msgstr "creato" + +#~ msgid "failed to create" +#~ msgstr "creazione non riuscita" + +#~ msgid "Must unpack archives in sequence!" +#~ msgstr "Gli archivi vanno estratti in sequenza." + +#~ msgid "failed" +#~ msgstr "non riuscito" + +#~ msgid "End of" +#~ msgstr "Fine di" + +#~ msgid "part" +#~ msgstr "parte" + +#~ msgid "removed" +#~ msgstr "rimosso" + +#~ msgid "failed to remove" +#~ msgstr "eliminazione fallita" diff --git a/po/ja.gmo b/po/ja.gmo new file mode 100644 index 0000000000000000000000000000000000000000..75c806b03278b2e5fa1317bbb6449c39e4d5245f GIT binary patch literal 18965 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, 1999, 2002, 2005, 2006. +# This file is distributed under the same license as the sharutils package. +# Contributed by +# SAKAI Kiyotaka , 1995. +# And taken over on 1999-11-04 by IIDA. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU sharutils 4.6.3\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2006-08-30 08:15+0900\n" +"Last-Translator: IIDA Yosiaki \n" +"Language-Team: Japanese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=EUC-JP\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "°ÕÌ£ÉÔÌÀ¤Î¥·¥¹¥Æ¥à¡¦¥¨¥é¡¼¤Ç¤¹" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: ¥ª¥×¥·¥ç¥ó`%s'¤ÏÛ£Ëæ¤Ç¤¹\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: ¥ª¥×¥·¥ç¥ó`--%s'¤Ï¡¢°ú¿ô¤ò¤È¤ê¤Þ¤»¤ó\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: ¥ª¥×¥·¥ç¥ó`%c%s'¤Ï¡¢°ú¿ô¤ò¤È¤ê¤Þ¤»¤ó\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: ¥ª¥×¥·¥ç¥ó`%s'¤Ï¡¢°ú¿ô¤¬É¬ÍפǤ¹\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: ǧ¼±¤Ç¤­¤Ê¤¤¥ª¥×¥·¥ç¥ó`--%s'\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: ǧ¼±¤Ç¤­¤Ê¤¤¥ª¥×¥·¥ç¥ó`%c%s'\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ÉÔÀµ¤Ê¥ª¥×¥·¥ç¥ó -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ̵¸ú¤Ê¥ª¥×¥·¥ç¥ó -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: °ú¿ô¤ÎɬÍפʥª¥×¥·¥ç¥ó -- %c\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: ¥ª¥×¥·¥ç¥ó`-W %s'¤ÏÛ£Ëæ¤Ç¤¹\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: ¥ª¥×¥·¥ç¥ó`-W %s'¤Ï¡¢°ú¿ô¤ò¤È¤ê¤Þ¤»¤ó\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "¥á¥â¥ê¡¼¤ò»È¤¤²Ì¤¿¤·¤Þ¤·¤¿" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" +"Ãí°Õ: md5sum¤Î¸¡¾Ú¤ò¤·¤Þ¤»¤ó¡£GNU coreutils¤Î¥¤¥ó¥¹¥È¡¼¥ë¤ò¤´¸¡Æ¤¤¯¤À¤µ¤¤¡£" + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "·Ù¹ð: ¥¿¥¤¥à¡¦¥¹¥¿¥ó¥×¤òÌ᤻¤Þ¤»¤ó¡£" + +#: src/shar.c:645 +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "" +"GNU coreutils¤ÇÇÛÉÛ¤µ¤ì¤ë`GNU touch'\\''¤ÎÆþ¼ê¡¢\n" +"¥¤¥ó¥¹¥È¡¼¥ë¤ò¤´¸¡Æ¤¤¯¤À¤µ¤¤¡Ä" + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "¥í¥Ã¥¯¡¦¥Ç¥£¥ì¥¯¥È¥ê¡¼'${lock_dir}'¤¬¤¢¤ê¤Þ¤¹" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "¥í¥Ã¥¯¡¦¥Ç¥£¥ì¥¯¥È¥ê¡¼¤ÎºîÀ®¤Ë¼ºÇÔ¤·¤Þ¤·¤¿" + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "x - ¥í¥Ã¥¯¡¦¥Ç¥£¥ì¥¯¥È¥ê¡¼¤òºîÀ® `'%s\\''." + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "x - ¥í¥Ã¥¯¡¦¥Ç¥£¥ì¥¯¥È¥ê¡¼¤ÎºîÀ®¤Ë¼ºÇÔ `'%s\\''." + +#: src/shar.c:671 +msgid "yes" +msgstr "yes" + +#: src/shar.c:671 +msgid "overwrite this file" +msgstr "¤³¤Î¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­" + +#: src/shar.c:672 +msgid "no" +msgstr "no" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "¤³¤Î¥Õ¥¡¥¤¥ë¤òÈô¤Ð¤¹" + +#: src/shar.c:673 +msgid "all" +msgstr "all" + +#: src/shar.c:673 +msgid "overwrite all files" +msgstr "Á´¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­" + +#: src/shar.c:674 +msgid "none" +msgstr "none" + +#: src/shar.c:674 +msgid "overwrite no files" +msgstr "¾å½ñ¤­¤·¤Ê¤¤" + +#: src/shar.c:675 +msgid "help" +msgstr "help" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "ÁªÂò¤ÎÀâÌÀ" + +#: src/shar.c:676 +msgid "quit" +msgstr "quit" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "¤¹¤°¤ËÈ´¤±¤ë" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "mkdir¤ÇÀ¸À®¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¡¼¤Î¿ô¤¬Â¿¤¹¤®¤Þ¤¹" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "x - ¥Ç¥£¥ì¥¯¥È¥ê¡¼¤òºîÀ® `%s'\\''." + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "x - ¥Ç¥£¥ì¥¯¥È¥ê¡¼¤ÎºîÀ®¤Ë¼ºÇÔ `%s'\\''." + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "%s¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤Þ¤»¤ó" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "-C¤Ë¤Ï¥±¥Á¤¬¤Ä¤¤¤Æ¤¤¤Þ¤¹¡£-Z¤ò¤ª»È¤¤¤¯¤À¤µ¤¤" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¡¼Ì¾¤ò¼èÆÀ¤Ç¤­¤Þ¤»¤ó" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" +"½ñ¸Ë¤Ï½ç½ø¤É¤ª¤ê¥¢¥ó¥Ñ¥Ã¥¯¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó!\n" +"¼¡¤Ï'`cat ${lock_dir}/seq`'¤ò¥¢¥ó¥Ñ¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£" + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "¿·µ¬¥Õ¥¡¥¤¥ë¤Ç¡¢»Ä¤ê%s¡¢" + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "¤Þ¤À¸ÂÅÙ¤Ï%s¤Ç¤¹\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "%s¤Î²óÉü¤Ë¼ºÇÔ" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "¥Ñ¡¼¥È%d¤Î½ª¤ê¡¢¥Ñ¡¼¥È%d¤Ë³¤­¤Þ¤¹" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "¥Õ¥¡¥¤¥ë%s¤ò»Ï¤á¤Þ¤¹\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: ¤Õ¤Ä¤¦¤Î¥Õ¥¡¥¤¥ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "sharÃæ: »Ä¤ê¥µ¥¤¥º%s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "¶õ¤Î" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(¶õ)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "¥Õ¥¡¥¤¥ë%s¤ò¥ª¡¼¥×¥ó¤Ç¤­¤Þ¤»¤ó" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "compress¤Ç°µ½Ì¤µ¤ì¤¿" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "gzip¤Ç°µ½Ì¤µ¤ì¤¿" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "bzip¤Ç°µ½Ì¤µ¤ì¤¿" + +#: src/shar.c:1151 +msgid "binary" +msgstr "¥Ð¥¤¥Ê¥ê¡¼" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(compress¤µ¤ì¤Æ¤¤¤Þ¤¹)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(gzip¤µ¤ì¤Æ¤¤¤Þ¤¹)" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(bzip¤µ¤ì¤Æ¤¤¤Þ¤¹)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(¥Ð¥¤¥Ê¥ê¡¼)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "fork¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "¥Õ¥¡¥¤¥ë%s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "¥Æ¥­¥¹¥È" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(¥Æ¥­¥¹¥È)" + +#: src/shar.c:1251 +#, c-format +msgid "overwriting %s" +msgstr "%s¤Ë¾å½ñ¤­¤·¤Æ¤¤¤Þ¤¹" + +#: src/shar.c:1253 +#, c-format +msgid "overwrite %s" +msgstr "%s¤ò¾å½ñ¤­" + +#: src/shar.c:1257 +#, c-format +msgid "SKIPPING %s" +msgstr "%s¤òÈô¤Ð¤·¤Æ¤¤¤Þ¤¹" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "Ãê½Ð¤òÃæÃǤ·¤Þ¤¹" + +#: src/shar.c:1262 +#, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "%s¤òÈô¤Ð¤·¤Æ¤¤¤Þ¤¹ (¥Õ¥¡¥¤¥ë¤Ï¤¹¤Ç¤Ë¸ºß¤·¤Æ¤¤¤Þ¤¹)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "%s (%s) ¤òÊݸ¤·¤Æ¤¤¤Þ¤¹" + +#: src/shar.c:1276 +#, c-format +msgid "x - extracting %s %s" +msgstr "x - Ãê½ÐÃæ %s %s" + +#: src/shar.c:1392 +#, c-format +msgid "restore of %s failed\n" +msgstr "%s¤Î²óÉü¤Ë¼ºÇÔ\n" + +#: src/shar.c:1401 +#, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "¥Ñ¡¼¥È%ld¤Î½ª¤ê¡¢¥Ñ¡¼¥È%ld¤Ë³¤­¤Þ¤¹" + +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "%s¥Ñ¡¼¥È%d¤Î½ª¤ê" + +#: src/shar.c:1408 +msgid "archive" +msgstr "½ñ¸Ë" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "¥Õ¥¡¥¤¥ë%s¤Ï¼¡¤Î¥Ñ¡¼¥È%d¤Ë³¤­¤Þ¤¹" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "¥Ñ¡¼¥È1¤òºÇ½é¤Ë¥¢¥ó¥Ñ¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤!" + +#: src/shar.c:1460 +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "¥Ñ¡¼¥È'${shar_sequence}'¤ò¼¡¤Ë¥¢¥ó¥Ñ¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤!" + +#: src/shar.c:1471 +#, c-format +msgid "STILL SKIPPING %s" +msgstr "¤Þ¤À%s¤òÈô¤Ð¤·¤Æ¤¤¤Þ¤¹" + +#: src/shar.c:1479 +#, c-format +msgid "continuing file %s" +msgstr "¥Õ¥¡¥¤¥ë%s¤Ë³¤­¤Þ¤¹" + +#: src/shar.c:1497 +#, c-format +msgid "File %s is complete" +msgstr "¥Õ¥¡¥¤¥ë%s¤¬½ª¤ê¤Þ¤·¤¿" + +#: src/shar.c:1504 +#, c-format +msgid "uudecoding file %s" +msgstr "¥Õ¥¡¥¤¥ë%s¤òuudecode¤·¤Æ¤¤¤Þ¤¹" + +#: src/shar.c:1514 +#, c-format +msgid "uncompressing file %s" +msgstr "¥Õ¥¡¥¤¥ë%s¤òuncompress¤·¤Æ¤¤¤Þ¤¹" + +#: src/shar.c:1522 +#, c-format +msgid "gunzipping file %s" +msgstr "¥Õ¥¡¥¤¥ë%s¤ògunzip¤·¤Æ¤¤¤Þ¤¹" + +#: src/shar.c:1530 +#, c-format +msgid "bunzipping file %s" +msgstr "¥Õ¥¡¥¤¥ë%s¤òbunzip¤·¤Æ¤¤¤Þ¤¹" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "MD5¥Á¥§¥Ã¥¯¤¬¼ºÇÔ¤·¤Þ¤·¤¿" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "'²óÉü»þ·Ù¹ð: %s¤Î¥µ¥¤¥º¤¬%s¤Ç¤Ê¤¤'\n" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "½ÐÎÏ¥Õ¥¡¥¤¥ë̾¤Î³äÉÕ¤±" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "`%s'¤ò¤Ò¤é¤¤¤Æ¤¤¤Þ¤¹" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "`%s'¤òÊĤ¸¤Æ¤¤¤Þ¤¹" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "¾Ü¤·¤¯¤Ï`%s --help'¤ò¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤¡£\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "»ÈÍÑË¡: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "Ĺ·Á¼°¤Î¥ª¥×¥·¥ç¥ó¤Çɬ¿Ü¤Ê°ú¿ô¤Ï¡¢Ã»·Á¼°¤Î¥ª¥×¥·¥ç¥ó¤Ç¤âɬ¿Ü¤Ç¤¹¡£\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤ÎÄó¶¡:\n" +" --help ¤³¤Î¥Ø¥ë¥×¤òɽ¼¨¤·¤Æ½ªÎ»\n" +" --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»\n" +" -q, --quiet, --silent ³Îǧ¤Î¤¿¤á¤Î¥á¥Ã¥»¡¼¥¸¤ò¥í¡¼¥«¥ë¤Ë½Ð¤µ¤Ê¤¤\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"¥Õ¥¡¥¤¥ë¤ÎÁªÂò:\n" +" -p, --intermix-type ¥â¡¼¥É¤òÊѹ¹¤¹¤ë¤¿¤á¤Ë¥Õ¥¡¥¤¥ë¡¦¥ê¥¹¥È¤Ë-[BTzZ]¤òµö" +"¤¹\n" +" -S, --stdin-file-list ¥Õ¥¡¥¤¥ë¡¦¥ê¥¹¥È¤òɸ½àÆþÎϤ«¤éÆɤ߹þ¤à\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"¥Õ¥¡¥¤¥ë¤ÎÁªÂò:\n" +" -p, --intermix-type ¥â¡¼¥É¤òÊѹ¹¤¹¤ë¤¿¤á¤Ë¥Õ¥¡¥¤¥ë¡¦¥ê¥¹¥È¤Ë-[BTz]¤òµö" +"¤¹\n" +" -S, --stdin-file-list ¥Õ¥¡¥¤¥ë¡¦¥ê¥¹¥È¤òɸ½àÆþÎϤ«¤éÆɤ߹þ¤à\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"½ÐÎϤÎʬ³ä:\n" +" -o, --output-prefix=PREFIX PREFIX.01¤«¤éPREFIX.NN¤Ë½ÐÎÏ\n" +" -l, --whole-size-limit=SIZE ¥Õ¥¡¥¤¥ë¤Ç¤Ê¤¯½ñ¸Ë¤òSIZE¥­¥í¥Ð¥¤¥È¤Ëʬ³ä\n" +" -L, --split-size-limit=SIZE ½ñ¸Ë¤ä¥Õ¥¡¥¤¥ë¤òSIZE¥­¥í¥Ð¥¤¥È¤Ëʬ³ä\n" + +#: src/shar.c:1759 +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"shar¥Ø¥Ã¥À¡¼¤ÎÀ©¸æ:\n" +" -n, --archive-name=NAME ½ñ¸Ë̾¤È¤·¤ÆNAME¤ò»ÈÍÑ\n" +" -s, --submitter=ADDRESS ºîÀ®¼Ô̾¤ò»ØÄê\n" +" -a, --net-headers Submitted-by:¤ÈArchive-name:¥Ø¥Ã¥À¡¼¤ò½ÐÎÏ\n" +" -c, --cut-mark cut¹Ô¤Çshar¤ò»Ï¤á¤ë\n" +" -t, --translate ¥¹¥¯¥ê¥×¥È¤Î¥á¥Ã¥»¡¼¥¸¤òËÝÌõ\n" +"\n" +"³ÊǼÊýË¡¤ÎÁªÂò:\n" +" -M, --mixed-uuencode uuencode¤òưŪ¤Ë·èÄê (´ûÄê)\n" +" -T, --text-files ¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤ò¥Æ¥­¥¹¥È¤È¤·¤Æ°·¤¦\n" +" -B, --uuencode ¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤ò¥Ð¥¤¥Ê¥ê¡¼¤È¤·¤Æ°·¤¤¡¢\n" +" uuencode¤ò»ÈÍÑ\n" +" -z, --gzip ¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤ògzip¤·¤Æuuencode\n" +" -g, --level-for-gzip=LEVEL gzip¤Ë-LEVEL (´ûÄê¤Ï9) ¤òÅϤ¹\n" +" -j, --bzip2 ¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤òbzip2¤·¤Æuuencode\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress ¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤òcompress¤·¤Æuuencode\n" +" -b, --bits-per-code=BITS compress¤Ë-bBITS (´ûÄê¤Ç¤Ï12) ¤òÅϤ¹\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"ÅÁÁ÷¤Ë¤¿¤¤¤¹¤ëÊݸî:\n" +" -w, --no-character-count ¥µ¥¤¥º¤Î¥Á¥§¥Ã¥¯¤Ë`wc -c'¤ò»ÈÍѤ·¤Ê¤¤\n" +" -D, --no-md5-digest ¥À¥¤¥¸¥§¥¹¥È¤Î¥Á¥§¥Ã¥¯¤Ë`md5sum'¤ò»ÈÍѤ·¤Ê" +"¤¤\n" +" -F, --force-prefix ÀÜƬʸ»ú¤ò³Æ¹Ô¤ÎÁ°¤ËÃÖ¤¯\n" +" -d, --here-delimiter=STRING shar¤Ç¥Õ¥¡¥¤¥ë¤òʬ³ä¤¹¤ë¶èÀÚ¤ê¤ËSTRING¤ò»È" +"ÍÑ\n" +"\n" +"Ê̼ïÎà¤Îshar¤ÎÀ¸À®:\n" +" -V, --vanilla-operation ¤«¤Ê¤ê´Ê·é¤Ç¤æ¤ë¤¤shar¤òÀ¸À®\n" +" -P, --no-piping unshar»þ¤ËÇÓ¾Ū¤Ê°ì»þ¥Õ¥¡¥¤¥ë¤ò»ÈÍÑ\n" +" -x, --no-check-existing ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Æ¤âɬ¤º¾å½ñ¤­\n" +" -X, --query-user ¥Õ¥¡¥¤¥ë¤Î¾å½ñ¤­»þ¤Ë¥æ¡¼¥¶¡¼¤ËÌä¹ç¤» (not for " +"Net)\n" +" -m, --no-timestamp ¥Õ¥¡¥¤¥ë¤Î¹¹¿·Æü»þ¤òÌᤵ¤Ê¤¤\n" +" -Q, --quiet-unshar unshar»þ¤Î³Îǧ¥á¥Ã¥»¡¼¥¸¤ò¾Êά\n" +" -f, --basename ³¬Áز½¤»¤º¤Ë¡¢1¤Ä¤Î¥Ç¥£¥ì¥¯¥È¥ê¡¼¤ËÌ᤹\n" +" --no-i18n ¹ñºÝ²½¤µ¤ì¤¿¥·¥§¥ë¡¦¥¹¥¯¥ê¥×¥È¤òÀ¸À®¤·¤Ê¤¤\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"¥ª¥×¥·¥ç¥ó-l¤ä-L¤Ë¤Ï-o¤¬É¬Íפǡ¢¥ª¥×¥·¥ç¥ó-a¤Ë¤Ï-n¤¬É¬ÍפǤ¹¡£\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "¥ª¥×¥·¥ç¥ó-g¤Ï-z¤ò´Þ¤ß¡¢¥ª¥×¥·¥ç¥ó-b¤Ï-Z¤ò´Þ¤ß¤Þ¤¹¡£\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "¥ª¥×¥·¥ç¥ó-g¤Ï-z¤ò´Þ¤ß¤Þ¤¹¡£\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" +"¥Ð¥°Êó¹ð¤Ï¡¢<%s>¤Ø¤ªÁ÷¤ê¤¯¤À¤µ¤¤¡£\n" +"ÏÂÌõ¤Î¸í¤ê¤Ï¡¢¤Ø¤ªÁ÷¤ê¤¯¤À¤µ¤¤¡£\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "̵¸ú¤Ê¥Õ¥¡¥¤¥ë¡¦¥µ¥¤¥º¾å¸Â `%s'" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "̵¸ú¤Ê·Á¼° (¥«¥¦¥ó¥ÈÍ󤬹­²á¤®): '%s'\n" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "¥³¥ó¥Ñ¥¤¥ë»þ¤ËDEBUG¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "¥Ï¡¼¥É¡¦¥ê¥ß¥Ã¥È¤¬%s¤Ç¤¹\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "" +"¤³¤Î¥·¥¹¥Æ¥à¤Ç¤Ï-Z ('compress') ¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤»¤ó¤Î¤Ç¡¢-z¤ÇÂåÍѤ·¤Æ¤¯¤À¤µ¤¤" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "¥½¥Õ¥È¡¦¥ê¥ß¥Ã¥È¤¬%s¤Ç¤¹\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "̵¸ú¤Ê½ÐÎÏÀÜƬ¼­\n" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +"ÌõÃí: Èó¾ï¤Ë½ÅÍפÊʸ¾Ï¤Î¤¿¤á¡¢¸¶Ê¸¤ò»Ä¤·¤Æ¤¤¤Þ¤¹¡£\n" +" -- »²¹ÍÌõ\n" +"¤³¤ì¤Ï¡¢¥Õ¥ê¡¼¡¦¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¡£Ê£À½¤Î¾ò·ï¤Ï¡¢¥½¡¼¥¹¤ò¤´Í÷¤¯¤À¤µ¤¤¡£\n" +"°ìÀÚ¤ÎÊݾڤϤ¢¤ê¤Þ¤»¤ó¡£¾¦¶ÈÀ­¤äÆÃÄêÌÜŪŬ¹çÀ­¤Ë´Ø¤¹¤ëÊݾڤ¹¤é¤¢¤ê¤Þ¤»¤ó¡£\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "·Ù¹ð: ´ÊÁǥ⡼¥É¤Ç¤Ï¥æ¡¼¥¶¡¼¤È¤ÎÂÐÏäϤ¢¤ê¤Þ¤»¤ó" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "·Ù¹ð: ¥Æ¥­¥¹¥È¤Ç¤Ê¤¤³ÊǼ¥ª¥×¥·¥ç¥ó¤Ï¡¢Ìµ»ë¤µ¤ì¤Þ¤·¤¿" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "-n¥ª¥×¥·¥ç¥ó¤Î»ØÄê¤Ì¤­¤Ç¡¢-a¥ª¥×¥·¥ç¥ó¤Ï»È¤¨¤Þ¤»¤ó" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "-o¥ª¥×¥·¥ç¥ó¤Î»ØÄê¤Ì¤­¤Ç¡¢-l¤ä-L¥ª¥×¥·¥ç¥ó¤Ï»È¤¨¤Þ¤»¤ó" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "Usenet¤ä¸ø½°Ì֤Ǥϡ¢-X shar¤ò»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "ºÇ¸å¤Î¥Ñ¡¼¥È¤ò¥¢¥ó¥Ñ¥Ã¥¯¤·¤Þ¤·¤¿" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "%d¸Ä¤Î¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤·¤¿\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "x - ¥í¥Ã¥¯¡¦¥Ç¥£¥ì¥¯¥È¥ê¡¼¤òºï½ü `'%s\\''." + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "x - ¥í¥Ã¥¯¡¦¥Ç¥£¥ì¥¯¥È¥ê¡¼¤Îºï½ü¤Ë¼ºÇÔ `'%s\\''." + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "%s¤Ë¤Ï¥·¥§¥ë¡¦¥³¥Þ¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s¤ÏC¤Î¥³¡¼¥É¤Ç¡¢¥·¥§¥ë½ñ¸Ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "%s¤Î`cut'¤Î¸å¤Ë¥·¥§¥ë¡¦¥³¥Þ¥ó¥É¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s¤Ï¡¢¤ª¤½¤é¤¯¥·¥§¥ë½ñ¸Ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "%s¤Ë³¤¤¤Æ`cut'¹Ô¤¬¤¢¤ê¤Þ¤¹" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "`sh'¤Î¥×¥í¥»¥¹¤ò³«»Ï¤·¤Þ¤¹" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Ĺ·Á¼°¤Î¥ª¥×¥·¥ç¥ó¤Çɬ¿Ü¤Ê°ú¿ô¤Ï¡¢Ã»·Á¼°¤Î¥ª¥×¥·¥ç¥ó¤Ç¤âɬ¿Ü¤Ç¤¹¡£\n" +" -d, --directory=DIRECTORY ¥¢¥ó¥Ñ¥Ã¥¯¤ÎÁ°¤ËDIRECTORY¤Ë°ÜÆ°\n" +" -c, --overwrite ¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤¹¤ë¤è¤¦¡¢-c¤òshar¤ËÅϤ¹\n" +" -e, --exit-0 `--split-at=\"exit 0\"'¤ÈƱ¤¸\n" +" -E, --split-at=STRING ¤Ä¤Ê¤¬¤Ã¤¿shar¤òSTRING¤Î¸å¤í¤Çʬ³ä\n" +" -f, --force `-c'¤ÈƱ¤¸\n" +" --help ¤³¤Î¥Ø¥ë¥×¤òɽ¼¨¤·¤Æ½ªÎ»\n" +" --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»\n" +"\n" +"¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¡¢É¸½àÆþÎϤòÆɤߤޤ¹¡£\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "`%s'¤Ëchdir¤Ç¤­¤Þ¤»¤ó" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "¥Õ¥¡¥¤¥ë̾¥Ð¥Ã¥Õ¥¡¡¼¤Î³äÉÕ¤±" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "ɸ½àÆþÎÏ" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "¥Õ¥¡¥¤¥ë¡¦¥Ð¥Ã¥Õ¥¡¡¼¤Î³äÉÕ¤±" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: ½ñ¹þ¤ß¥¨¥é¡¼" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: û¤¤¥Õ¥¡¥¤¥ë" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: `end'¹Ô¤¬¤¢¤ê¤Þ¤»¤ó" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: µÍ¤áʸ»ú¤Î`='¤Ë³¤¯¥Ç¡¼¥¿" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: ÉÔÀµ¤Ê¹Ô" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: `begin'¹Ô¤¬¤¢¤ê¤Þ¤»¤ó" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: ÉÔÀµ¤Ê~user" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: `%s'¤È¤¤¤¦¥æ¡¼¥¶¡¼¤Ï¸ºß¤·¤Þ¤»¤ó" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "%s¤Ë¥¢¥¯¥»¥¹¤Ç¤­¤Þ¤»¤ó" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "FIFO (%s) ¤Ø¤Î½ñ¹þ¤ßµñÈÝ" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "¥·¥ó¥Ü¥ê¥Ã¥¯¡¦¥ê¥ó¥¯ (%s) ¤ÏÄɤ¤¤Þ¤»¤ó" + +#: src/uudecode.c:408 +#, c-format +msgid "freopen of %s" +msgstr "%s¤Îfreopen" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "%s¤Îchmod" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "»ÈÍÑË¡: %s [¥Õ¥¡¥¤¥ë]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Ĺ·Á¼°¤Î¥ª¥×¥·¥ç¥ó¤Çɬ¿Ü¤Ê°ú¿ô¤Ï¡¢Ã»·Á¼°¤Î¥ª¥×¥·¥ç¥ó¤Ç¤âɬ¿Ü¤Ç¤¹¡£\n" +" -o, --output-file=FILE ľÀÜFILE¤Ë½ÐÎÏ\n" +" --help ¤³¤Î¥Ø¥ë¥×¤òɽ¼¨¤·¤Æ½ªÎ»\n" +" --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "½ñ¹þ¤ß¥¨¥é¡¼" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Æɼè¤ê¥¨¥é¡¼" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "»ÈÍÑË¡: %s [ÆþÎÏ¥Õ¥¡¥¤¥ë] ±ó³Ö¥Õ¥¡¥¤¥ë\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 RFC1521¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ëbase64Éä¹æ²½¤ò»ÈÍÑ\n" +" --help ¤³¤Î¥Ø¥ë¥×¤òɽ¼¨¤·¤Æ½ªÎ»\n" +" --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤·¤Æ½ªÎ»\n" + +#: src/uuencode.c:276 +#, c-format +msgid "fopen-ing %s" +msgstr "%s¤òfopen¤·¤Æ¤¤¤Þ¤¹" + +#: src/uuencode.c:278 +#, c-format +msgid "fstat-ing %s" +msgstr "%s¤òfstat¤·¤Æ¤¤¤Þ¤¹" diff --git a/po/nb.gmo b/po/nb.gmo new file mode 100644 index 0000000000000000000000000000000000000000..e0fba477a5bc030ed4057ecaf87564d3da7c4f64 GIT binary patch literal 1307 zcma)*&2AGh5XToNUkj=P;!qF>BM3c!!zOB>Y)e%r6{?^uDk%rJ;A9=wjbjI|Hzf#x z#5-{3!ih)V&VeW3fVd!d0WKVn;P33x4>bs^cz-*dzsED)$>*a(uL6w2m?trxVIIN! zgy{#_6$Hn@GX*EXi?CO~Q{YRm1imiT--G92e+N&4CwAwI!DFx=fWx2x1vJmW5!m1M z3?9?Z@D^HA{) zSzmtuL@NEU4^M;%_Is<8#zZQ`1yjUyoHUwHN=l6|_vkKDG8y10w2w-SQaVZ!!&5!# z2vf?e6Q&8XB5QN)@-Q1>NM%Y`yDmj$vUI1{^2eF99Gbtyp!EL_929M9d6~AnVT6`X z`9_U-MR{fe{rv>OU`4mIS=S`(rH;1=x7OGobxbGBCPeB^=7PJ{tnr4U^9jArZHmi{ z$*si|BDiz>i6c?Df?qXU<{e`lT}XvY=#5OIv}R&b&jb}ZqnVQ`oxxk#SP|Y`s?k}? zng3MuCUZO{)hN0`{jWlzv3T6SM-hZ{nRlf>byHWR(Pdg4$Cfx6yAWY#c!#Bq)-2Ph zV$Rr@+-6ph>pDTkhqKOCe{`YX_!n$z{vv>Hn|~fNAjq~-T5GtpqQpG$qEWXw`bVKd P^ToVDn_Q}`?Wu#`7ja?9 literal 0 HcmV?d00001 diff --git a/po/nb.po b/po/nb.po new file mode 100644 index 0000000..33dcc9c --- /dev/null +++ b/po/nb.po @@ -0,0 +1,1248 @@ +# Norwegian messages for GNU gettext. (bokmål dialect) +# Copyright (C) 1996 Free Software Foundation, Inc. +# Karl Anders Øygard , 1996. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU gettext 0.10.12\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2002-06-25 20:04+0200\n" +"Last-Translator: Karl Anders Øygard \n" +"Language-Team: Norwegian-bokmål \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Ukjent systemfeil" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: flagg «%s» er flertydig\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: flagg «--%s» tar ikke argumenter\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: flagg «%c%s» tar ikke argumenter\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: flagg «%s» behøver et argument\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: ukjent flagg «--%s»\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: ukjent flagg «%c%s»\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ulovlig flagg -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ugyldig flagg -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: flagg behøver et argument -- %c\n" + +#: lib/getopt.c:881 +#, fuzzy, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: flagg «%s» er flertydig\n" + +#: lib/getopt.c:899 +#, fuzzy, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: flagg «--%s» tar ikke argumenter\n" + +#: lib/xmalloc.c:67 +#, fuzzy +msgid "memory exhausted" +msgstr "minnet oppbrukt" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "" + +#: src/shar.c:645 +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "" + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "" + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "" + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "" + +#: src/shar.c:671 +msgid "yes" +msgstr "" + +#: src/shar.c:671 +msgid "overwrite this file" +msgstr "" + +#: src/shar.c:672 +msgid "no" +msgstr "" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "" + +#: src/shar.c:673 +msgid "all" +msgstr "" + +#: src/shar.c:673 +msgid "overwrite all files" +msgstr "" + +#: src/shar.c:674 +msgid "none" +msgstr "" + +#: src/shar.c:674 +msgid "overwrite no files" +msgstr "" + +#: src/shar.c:675 +msgid "help" +msgstr "" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "" + +#: src/shar.c:676 +msgid "quit" +msgstr "" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "" + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "" + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "" + +#: src/shar.c:901 src/unshar.c:379 +#, fuzzy +msgid "Cannot get current directory name" +msgstr "kan ikke skifte til filkatalog \"%s\"" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" + +#: src/shar.c:976 src/shar.c:1383 +#, fuzzy, c-format +msgid "New file, remaining %s, " +msgstr "feil under lesing av \"%s\"" + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "" + +#: src/shar.c:1086 +msgid "empty" +msgstr "" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "" + +#: src/shar.c:1111 +#, fuzzy, c-format +msgid "Cannot open file %s" +msgstr "kan ikke opprette utfilen \"%s\"" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "" + +#: src/shar.c:1151 +msgid "binary" +msgstr "" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "" + +#: src/shar.c:1227 +msgid "text" +msgstr "" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "" + +#: src/shar.c:1251 +#, c-format +msgid "overwriting %s" +msgstr "" + +#: src/shar.c:1253 +#, c-format +msgid "overwrite %s" +msgstr "" + +#: src/shar.c:1257 +#, c-format +msgid "SKIPPING %s" +msgstr "" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "" + +#: src/shar.c:1262 +#, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "" + +#: src/shar.c:1276 +#, c-format +msgid "x - extracting %s %s" +msgstr "" + +#: src/shar.c:1392 +#, c-format +msgid "restore of %s failed\n" +msgstr "" + +#: src/shar.c:1401 +#, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "" + +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "" + +#: src/shar.c:1408 +msgid "archive" +msgstr "" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "" + +#: src/shar.c:1460 +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "" + +#: src/shar.c:1471 +#, c-format +msgid "STILL SKIPPING %s" +msgstr "" + +#: src/shar.c:1479 +#, fuzzy, c-format +msgid "continuing file %s" +msgstr "ingen innfiler spesifisert" + +#: src/shar.c:1497 +#, c-format +msgid "File %s is complete" +msgstr "" + +#: src/shar.c:1504 +#, c-format +msgid "uudecoding file %s" +msgstr "" + +#: src/shar.c:1514 +#, fuzzy, c-format +msgid "uncompressing file %s" +msgstr "kan ikke opprette utfilen \"%s\"" + +#: src/shar.c:1522 +#, c-format +msgid "gunzipping file %s" +msgstr "" + +#: src/shar.c:1530 +#, c-format +msgid "bunzipping file %s" +msgstr "" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, fuzzy, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Prøv «%s --help» for mer informasjon\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" + +#: src/shar.c:1759 +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "" + +#: src/shar.c:2238 +#, fuzzy +msgid "No input files" +msgstr "ingen innfiler spesifisert" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "" + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "" + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" + +#: src/unshar.c:397 +#, fuzzy, c-format +msgid "Cannot chdir to `%s'" +msgstr "kan ikke skifte til filkatalog \"%s\"" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "standard inn" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, fuzzy, c-format +msgid "%s: illegal line" +msgstr "%s: ulovlig flagg -- %c\n" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "" + +#: src/uudecode.c:408 +#, c-format +msgid "freopen of %s" +msgstr "" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" + +#: src/uuencode.c:276 +#, c-format +msgid "fopen-ing %s" +msgstr "" + +#: src/uuencode.c:278 +#, c-format +msgid "fstat-ing %s" +msgstr "" + +#~ msgid "missing arguments" +#~ msgstr "mangler argument" + +#~ msgid "too many arguments" +#~ msgstr "for mange argumenter" + +#, fuzzy +#~ msgid "" +#~ "Usage: %s [OPTION] [[[TEXTDOMAIN] MSGID] | [-s [MSGID]...]]\n" +#~ " -d, --domain=TEXTDOMAIN retrieve translated messages from TEXTDOMAIN\n" +#~ " -e enable expansion of some escape sequences\n" +#~ " -E (ignored for compatibility)\n" +#~ " -h, --help display this help and exit\n" +#~ " -n suppress trailing newline\n" +#~ " -V, --version display version information and exit\n" +#~ " [TEXTDOMAIN] MSGID retrieve translated message corresponding\n" +#~ " to MSGID from TEXTDOMAIN\n" +#~ msgstr "" +#~ "Bruk: %s [FLAGG] [[[TEXTDOMAIN] MSGID] | [-s [MSGID]...]]\n" +#~ " -d, --domain=TEXTDOMAIN hent oversatte meldinger fra TEXTDOMAIN\n" +#~ " -e slå på ekspandering av noen escape-sekvenser\n" +#~ " -E (tillatt av kompatibilitetshensyn)\n" +#~ " -h, --help vis denne hjelpeteksten og avslutt\n" +#~ " -n undertrykk etterfølgende linjeskift\n" +#~ " -v, --version vis programversjon og avslutt\n" +#~ " [TEXTDOMAIN] MSGID hent oversatt melding som stemmer overens med " +#~ "MSGID\n" +#~ " fra TEXTDOMAIN\n" + +#~ msgid "" +#~ "\n" +#~ "If the TEXTDOMAIN parameter is not given, the domain is determined from " +#~ "the\n" +#~ "environment variable TEXTDOMAIN. If the message catalog is not found in " +#~ "the\n" +#~ "regular directory, another location can be specified with the " +#~ "environment\n" +#~ "variable TEXTDOMAINDIR.\n" +#~ "When used with the -s option the program behaves like the `echo' " +#~ "command.\n" +#~ "But it does not simply copy its arguments to stdout. Instead those " +#~ "messages\n" +#~ "found in the selected catalog are translated.\n" +#~ "Standard search directory: %s\n" +#~ msgstr "" +#~ "\n" +#~ "Hvis TEXTDOMAIN-parameteren ikke er gitt, blir domenet valgt fra\n" +#~ "miljøvariabelen TEXTDOMAIN. Hvis meldingskatalogen ikke finnes i den\n" +#~ "vanlige filkatalogen, kan en annen filkatalog spesifiseres ved hjelp av\n" +#~ "miljøvariabelen TEXTDOMAIN.\n" +#~ "Når flagget -s blir brukt, oppfører programmet seg som kommandoen " +#~ "«echo».\n" +#~ "Programmet kopierer imidlertid ikke sine argumenter til standard ut. I\n" +#~ "stedet blir meldinger i den valgte katalogen oversatt.\n" +#~ "Standard søkekatalog er: %s\n" + +#~ msgid "" +#~ "internationalized messages should not contain the `\\%c' escape sequence" +#~ msgstr "" +#~ "internasjonaliserte meldinger skal ikke inneholde escape-sekvensen «\\%c»" + +#~ msgid "standard output" +#~ msgstr "standard ut" + +#~ msgid "error while writing \"%s\" file" +#~ msgstr "feil under skriving av filen \"%s\"" + +#~ msgid "exactly 2 input files required" +#~ msgstr "behøver nøyaktig to innfiler" + +#~ msgid "" +#~ "Usage: %s [OPTION] def.po ref.po\n" +#~ "Mandatory arguments to long options are mandatory for short options too.\n" +#~ " -h, --help display this help and exit\n" +#~ " -V, --version output version information and exit\n" +#~ "\n" +#~ "Compare two Uniforum style .po files to check that both contain the same\n" +#~ "set of msgid strings. The def.po file is an existing PO file with the\n" +#~ "old translations. The ref.po file is the last created PO file\n" +#~ "(generally by xgettext). This is useful for checking that you have\n" +#~ "translated each and every message in your program. Where an exact match\n" +#~ "cannot be found, fuzzy matching is used to produce better diagnostics.\n" +#~ msgstr "" +#~ "Bruk: %s [FLAGG] def.po ref.po\n" +#~ "Obligatoriske argumenter til lange flagg er obligatoriske også til korte " +#~ "flagg.\n" +#~ " -h, --help vis denne hjelpeteksten og avslutt\n" +#~ " -V, --version vis programversjon og avslutt\n" +#~ "\n" +#~ "Sammenligner to Uniforum .po-filer for å sjekke at begge inneholder det\n" +#~ "samme settet msgid-strenger. def.po-filen er en eksisterende PO-fil med " +#~ "de\n" +#~ "gamle oversettelsene. ref.po-filen er den sist genererte PO-filen\n" +#~ "(vanligvis generert med xgettext). Dette er nyttig for å sjekke at du " +#~ "har\n" +#~ "oversatt alle meldinger i programmet. Der en eksakt overensstemmelse " +#~ "ikke\n" +#~ "finnes, blir «fuzzy» sammenligning brukt for å få bedre diagnostikk.\n" + +#~ msgid "this message is used but not defined..." +#~ msgstr "denne meldingen er brukt, men ikke definert..." + +#~ msgid "...but this definition is similar" +#~ msgstr "... men denne definisjonen ligner" + +#~ msgid "this message is used but not defined in %s" +#~ msgstr "denne meldingen er brukt, men ikke definert i %s" + +#~ msgid "warning: this message is not used" +#~ msgstr "advarsel: denne meldingen er ikke brukt" + +#~ msgid "duplicate message definition" +#~ msgstr "duplisert definisjon av melding" + +#~ msgid "this is the location of the first definition" +#~ msgstr "den første definisjonen finnes her" + +#~ msgid "this message has no definition in the \"%s\" domain" +#~ msgstr "denne meldingen har ingen definisjon i \"%s\"-domenet" + +#~ msgid "no input file given" +#~ msgstr "ingen innfil spesifisert" + +#~ msgid "error while opening \"%s\" for writing" +#~ msgstr "feil under åpning av \"%s\" for skriving" + +#~ msgid "" +#~ "Usage: %s [OPTION] filename.po ...\n" +#~ "Mandatory arguments to long options are mandatory for short options too.\n" +#~ " -a, --alignment=NUMBER align strings to NUMBER bytes (default: %d)\n" +#~ " -h, --help display this help and exit\n" +#~ " --no-hash binary file will not include the hash table\n" +#~ " -o, --output-file=FILE specify output file name as FILE\n" +#~ " --strict enable strict Uniforum mode\n" +#~ " -v, --verbose list input file anomalies\n" +#~ " -V, --version output version information and exit\n" +#~ "\n" +#~ "If input file is -, standard input is read. If output file is -,\n" +#~ "output is written to standard output.\n" +#~ msgstr "" +#~ "Bruk: %s [FLAGG] filnavn.po ...\n" +#~ "Obligatoriske argumenter til lange flagg er obligatoriske også til korte " +#~ "flagg.\n" +#~ " -a, --alignment=ANTALL justér strenger til ANTALL bytes (forvalgt: %" +#~ "d)\n" +#~ " -h, --help vis denne hjelpeteksten og avslutt\n" +#~ " --no-hash binærfil skal ikke inneholde hash-tabell\n" +#~ " -o, --output-file=FILNAVN sett utfil til FILNAVN\n" +#~ " --strict lag strengt Uniforum-konform .po-fil\n" +#~ " -v, --verbose list alle avvik i innfil\n" +#~ " -V, --version vis programversjon og avslutt\n" +#~ "\n" +#~ "Hvis innfil er -, vil inndata bli lest fra standard inn. Dersom utfil er " +#~ "-,\n" +#~ "vil utdata bli skrevet til standard ut.\n" + +#~ msgid "while creating hash table" +#~ msgstr "mens hash-tabellen ble laget" + +#, fuzzy +#~ msgid "warning: no header entry found" +#~ msgstr "advarsel: denne meldingen er ikke brukt" + +#~ msgid "domain name \"%s\" not suitable as file name" +#~ msgstr "domenenavnet \"%s\" passer ikke som filnavn" + +#~ msgid "domain name \"%s\" not suitable as file name: will use prefix" +#~ msgstr "domenenavnet \"%s\" passer ikke som filnavn: bruker prefiks" + +#~ msgid "`domain %s' directive ignored" +#~ msgstr "nøkkelord «domain %s» ignorert" + +#~ msgid "empty `msgstr' entry ignored" +#~ msgstr "tom «msgstr»-linje ignorert" + +#~ msgid "headerfield `%s' missing in header" +#~ msgstr "filhodefelt «%s» mangler i filhode" + +#~ msgid "header field `%s' should start at beginning of line" +#~ msgstr "filhodefelt «%s» skulle ha startet ved begynnelsen av linjen" + +#~ msgid "some header fields still have the initial default value" +#~ msgstr "noen filhodefelt har fremdeles sin initielle verdi" + +#~ msgid "field `%s' still has initial default value" +#~ msgstr "feltet «%s» har fremdeles sin forvalgte verdi" + +#~ msgid "duplicate message ID" +#~ msgstr "duplisert meldings-id" + +#~ msgid "WARNING: source file contains fuzzy translation" +#~ msgstr "ADVARSEL: kildefil har «fuzzy» oversettelser" + +#~ msgid "`msgid' and `msgstr' entry does not both begin with '\\n'" +#~ msgstr "«msgid»- og «msgstr»-verdiene begynner ikke begge med '\\n'" + +#~ msgid "`msgid' and `msgstr' entry does not both end with '\\n'" +#~ msgstr "«msgid»- og «msgstr»-verdiene slutter ikke begge med '\\n'" + +#~ msgid "" +#~ "number of format specifications in `msgid' and `msgstr' does not match" +#~ msgstr "" +#~ "antall format-spesifiseringer i «msgid» og «msgstr» stemmer ikke overens" + +#~ msgid "format specifications for argument %u are not the same" +#~ msgstr "format-spesifiseringene for argument %u er ulike" + +#, fuzzy +#~ msgid "" +#~ "Usage: %s [OPTION] def.po ref.po\n" +#~ "Mandatory arguments to long options are mandatory for short options too.\n" +#~ " -e, --no-escape do not use C escapes in output (default)\n" +#~ " -E, --escape use C escapes in output, no extended chars\n" +#~ " -h, --help display this help and exit\n" +#~ " -i, --indent indented output style\n" +#~ " -o, --output-file=FILE result will be written to FILE\n" +#~ " --strict strict Uniforum output style\n" +#~ " -v, --verbose increase verbosity level\n" +#~ " -V, --version output version information and exit\n" +#~ msgstr "" +#~ "Bruk: %s [FLAGG] INNFIL ...\n" +#~ "Obligatoriske argumenter til lange flagg er obligatoriske også til korte " +#~ "flagg.\n" +#~ " -e, --no-escape ikke bruk C-escapekoder i utdata (forvalgt)\n" +#~ " -E, --escape bruk C-escapekoder i utdata, ingen utvidede " +#~ "tegn\n" +#~ " -h, --help vis denne hjelpeteksten og avslutt\n" +#~ " -i, --indent indentert utdata\n" +#~ " -o, --output-file=FIL resultat blir skrevet til FIL\n" +#~ " --strict lag strengt Uniforum-konformt utdata\n" +#~ " -v, --verbose gi mer fyldige meldinger\n" +#~ " -V, --version vis programversjon og avslutt\n" + +#~ msgid "" +#~ "\n" +#~ "Merges two Uniforum style .po files together. The def.po file is an\n" +#~ "existing PO file with the old translations which will be taken over to\n" +#~ "the newly created file as long as they still match; comments will be\n" +#~ "preserved, but extract comments and file positions will be discarded.\n" +#~ "The ref.po file is the last created PO file (generally by xgettext), any\n" +#~ "translations or comments in the file will be discarded, however dot\n" +#~ "comments and file positions will be preserved. Where an exact match\n" +#~ "cannot be found, fuzzy matching is used to produce better results. The\n" +#~ "results are written to stdout unless an output file is specified.\n" +#~ msgstr "" +#~ "\n" +#~ "Fletter sammen to Uniforum .po-filer. def.po-filen er en eksisterende\n" +#~ "PO-fil med gamle oversettelser, som vil bli overført til den nye filen\n" +#~ "dersom de fremdeles stemmer. Kommentarer blir tatt med, men kommentarer " +#~ "om\n" +#~ "selve ekstraheringen og fil-posisjoner blir slettet. ref.po-filen er " +#~ "den\n" +#~ "sist genererte PO-filen (vanligvis generert med xgettext). " +#~ "Oversettelser\n" +#~ "eller kommentarer i denne filen blir slettet, men punktum-kommentarer og\n" +#~ "fil-posisjoner blir ivaretatt. Der det ikke lar seg gjøre å finne en\n" +#~ "eksakt overensstemmelse, blir «fuzzy» sammenligning brukt for å få bedre\n" +#~ "resultater. Resultatet blir skrevet til standard ut, med mindre en " +#~ "utfil\n" +#~ "er spesifisert.\n" + +#~ msgid "" +#~ "%sRead %d old + %d reference, merged %d, fuzzied %d, missing %d, obsolete " +#~ "%d.\n" +#~ msgstr "" +#~ "%sLeste %d gamle + %d referanser, flettet inn %d, antok %d, mangler %d,\n" +#~ "utdaterte %d.\n" + +#~ msgid " done.\n" +#~ msgstr " ferdig.\n" + +#, fuzzy +#~ msgid "" +#~ "Usage: %s [OPTION] [FILE]...\n" +#~ "Mandatory arguments to long options are mandatory for short options too.\n" +#~ " -e, --no-escape do not use C escapes in output (default)\n" +#~ " -E, --escape use C escapes in output, no extended chars\n" +#~ " -h, --help display this help and exit\n" +#~ " -i, --indent write indented output style\n" +#~ " -o, --output-file=FILE write output into FILE instead of standard " +#~ "output\n" +#~ " --strict write strict uniforum style\n" +#~ " -V, --version output version information and exit\n" +#~ msgstr "" +#~ "Bruk: %s [FLAGG] INNFIL ...\n" +#~ "Obligatoriske argumenter til lange flagg er obligatoriske også til korte " +#~ "flagg.\n" +#~ " -e, --no-escape ikke bruk C-escapekoder i utdata (forvalgt)\n" +#~ " -E, --escape bruk C-escapekoder i utdata, ingen utvidede " +#~ "tegn\n" +#~ " -h, --help vis denne hjelpeteksten og avslutt\n" +#~ " -i, --indent indentert utdata\n" +#~ " -o, --output-file=FIL resultat blir skrevet til FIL i stedet for\n" +#~ " standard ut\n" +#~ " --strict lag strengt Uniforum-konformt utdata\n" +#~ " -V, --version vis programversjon og avslutt\n" + +#, fuzzy +#~ msgid "" +#~ "\n" +#~ "Convert binary .mo files to Uniforum style .po files.\n" +#~ "Both little-endian and big-endian .mo files are handled.\n" +#~ "If no input file is given or it is -, standard input is read.\n" +#~ "By default the output is written to standard output.\n" +#~ msgstr "" +#~ "\n" +#~ "Konverter binære .mo-filer til Uniforum .po-filer.\n" +#~ "Både «little-endian» og «big-endian» .mo filer blir håndtert.\n" +#~ "Dersom innfil er -, blir standard inn lest.\n" +#~ "Dersom intet annet er spesifisert, blir det skrevet til standard ut.\n" + +#~ msgid "file \"%s\" truncated" +#~ msgstr "filen \"%s\" er avkuttet" + +#~ msgid "seek \"%s\" offset %ld failed" +#~ msgstr "«seek» \"%s\" posisjon %ld feilet" + +#~ msgid "error while opening \"%s\" for reading" +#~ msgstr "feil under åpning av «%s» for lesing" + +#~ msgid "file \"%s\" is not in GNU .mo format" +#~ msgstr "filen \"%s\" er ikke i GNU .mo-format" + +#~ msgid "missing `msgstr' section" +#~ msgstr "mangler «msgstr»-seksjon" + +#, fuzzy +#~ msgid "found %d fatal errors" +#~ msgstr "fant %d fatale feil" + +#, fuzzy +#~ msgid "too many errors, aborting" +#~ msgstr "for mange feil, avslutter" + +#~ msgid "keyword \"%s\" unknown" +#~ msgstr "nøkkelord \"%s\" ukjent" + +#~ msgid "illegal control sequence" +#~ msgstr "ulovlig kontrollsekvens" + +#~ msgid "end-of-line within string" +#~ msgstr "slutt-på-linje inne i streng" + +#~ msgid "end-of-file within string" +#~ msgstr "slutt-på-fil inne i streng" + +#~ msgid "while preparing output" +#~ msgstr "under klargjøring av utdata" + +#~ msgid "%s and %s are mutually exclusive" +#~ msgstr "%s og %s utelukker hverandre" + +#~ msgid "--join-existing cannot be used when output is written to stdout" +#~ msgstr "" +#~ "--join-existing kan ikke brukes når utdata blir skrevet til standard ut" + +#~ msgid "warning: type of file `%s' is unknown; will try C" +#~ msgstr "advarsel: typen til fil «%s» er ukjent, forsøker C" + +#~ msgid "cannot change back to directory \"%s\"" +#~ msgstr "kan ikke skifte tilbake til filkatalog \"%s\"" + +#, fuzzy +#~ msgid "" +#~ "Usage: %s [OPTION] INPUTFILE ...\n" +#~ "Mandatory arguments to long options are mandatory for short options too.\n" +#~ " -a, --extract-all extract all strings\n" +#~ " -c, --add-comments[=TAG] place comment block with TAG (or those\n" +#~ " preceding keyword lines) in output file\n" +#~ " -C, --c++ recognize C++ style comments\n" +#~ " -d, --default-domain=NAME use NAME.po for output (instead of " +#~ "messages.po)\n" +#~ " -D, --directory=DIRECTORY change to DIRECTORY before processing\n" +#~ " -e, --no-escape do not use C escapes in output " +#~ "(default)\n" +#~ " -E, --escape use C escapes in output, no extended " +#~ "chars\n" +#~ " -f, --files-from=FILE get list of input files from FILE\n" +#~ " --force-po write PO file even if empty\n" +#~ " -F, --sort-by-file sort output by file location\n" +#~ msgstr "" +#~ "Bruk: %s [FLAGG] INNFIL ...\n" +#~ "Obligatoriske argumenter til lange flagg er obligatoriske også til korte " +#~ "flagg.\n" +#~ " -a, --extract-all ekstrahér alle strenger\n" +#~ " -c, --add-comments[=TAG] lagre kommentarblokker med TAG (eller\n" +#~ " kommentarer i linjer som kommer foran\n" +#~ " nøkkelord) i utfilen\n" +#~ " -C, --c++ kjenn igjen C++-kommentarer\n" +#~ " -d, --default-domain=NAVN lagre utdata i NAVN.po (i stedet for\n" +#~ " messages.po)\n" +#~ " -D, --directory=FILKATALOG skift til FILKATALOG før prosessering\n" +#~ " -e, --no-escape ikke bruk C-escapekoder i utdata " +#~ "(forvalgt)\n" +#~ " -E, --escape bruk C-escapekoder i utdata, ingen " +#~ "utvidede tegn\n" +#~ " -f, --files-from=FIL hent liste av innfiler fra FIL\n" +#~ " --force-po skriv PO-fil selv om den vil bli tom\n" +#~ " -F, --sort-by-file sorter utdata etter fil-lokasjon\n" + +#, fuzzy +#~ msgid "" +#~ " -h, --help display this help and exit\n" +#~ " -i, --indent write the .po file using indented style\n" +#~ " -j, --join-existing join messages with existing file\n" +#~ " -k, --keyword[=WORD] additonal keyword to be looked for " +#~ "(without\n" +#~ " WORD means not to use default keywords)\n" +#~ " -l, --string-limit=NUMBER set string length limit to NUMBER " +#~ "instead %u\n" +#~ " -m, --msgstr-prefix[=STRING] use STRING or \"\" as prefix for msgstr " +#~ "entries\n" +#~ " -M, --msgstr-suffix[=STRING] use STRING or \"\" as suffix for msgstr " +#~ "entries\n" +#~ " --no-location do not write '#: filename:line' lines\n" +#~ msgstr "" +#~ " -h, --help vis denne hjelpeteksten og avslutt\n" +#~ " -i, --indent lag indentert utdata\n" +#~ " -j, --join-existing flett sammen meldinger med eksisterende " +#~ "fil\n" +#~ " -k, --keyword[=ORD] se også etter nøkkelordet ORD (mangler\n" +#~ " ORD, skal ikke de vanlige nøkkelord " +#~ "brukes)\n" +#~ " -l, --string-limit=NUMMER sett største streng-lengde til NUMMER\n" +#~ " i stedet for %u\n" +#~ " -m, --msgstr-prefix[=STRENG] bruk STRENG eller \"\" som prefiks for\n" +#~ " msgstr-verdier\n" +#~ " -M, --msgstr-suffix[=STRENG] bruk STRENG eller \"\" som suffiks for\n" +#~ " msgstr-verdier\n" +#~ " --no-location ikke lag «#: filnavn:linje»-linjer\n" + +#, fuzzy +#~ msgid "" +#~ " -n, --add-location generate '#: filename:line' lines " +#~ "(default)\n" +#~ " --omit-header don't write header with `msgid \"\"' " +#~ "entry\n" +#~ " -p, --output-dir=DIR output files will be placed in directory " +#~ "DIR\n" +#~ " -s, --sort-output generate sorted output and remove " +#~ "duplicates\n" +#~ " --strict write out strict Uniforum conforming .po " +#~ "file\n" +#~ " -T, --trigraphs understand ANSI C trigraphs for input\n" +#~ " -V, --version output version information and exit\n" +#~ " -x, --exclude-file=FILE entries from FILE are not extracted\n" +#~ "\n" +#~ "If INPUTFILE is -, standard input is read.\n" +#~ msgstr "" +#~ " -n, --add-location lag «#: filenavn:linje»-linjer " +#~ "(forvalgt)\n" +#~ " --omit-header ikke lag startseksjon med «msgid \"\"»\n" +#~ " -p, --output-dir=KAT plassér utfiler i filkatalogen KAT\n" +#~ " -s, --sort-output sortér utdata og ta bort duplikater\n" +#~ " --strict lag strengt Uniforum-konform .po-fil\n" +#~ " -T, --trigraphs forstå ANSI C trigraphs i inndata\n" +#~ " -V, --version vis programversjon og avslutt\n" +#~ " -x, --exclude-file=FIL innslag fra FIL blir ikke ekstrahert\n" +#~ "\n" +#~ "Dersom INNFIL er -, vil det bli lest fra standard inn.\n" + +#~ msgid "this file may not contain domain directives" +#~ msgstr "denne filen kan ikke inneholde domene-nøkkelord" + +#~ msgid "...this is the location of the first definition" +#~ msgstr "... dette er lokasjonen til den første definisjonen" diff --git a/po/nl.gmo b/po/nl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..08eadbb0ecaf6f341547c75b18611cbe6f459ac1 GIT binary patch literal 19534 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, 1996, 2005. +# Freek de Kruijf , 2005, 2006. +msgid "" +msgstr "" +"Project-Id-Version: sharutils 4.6.1-pre5\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2006-01-21 00:26+0100\n" +"Last-Translator: Freek de Kruijf \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.1\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Onbekende systeemfout" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: optie `%s' is niet eenduidig\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: optie `--%s' staat geen argument toe\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: optie `%c%s' staat geen argument toe\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: optie `%s' vereist een argument\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: onbekende optie `--%s'\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: onbekende optie `%c%s'\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ongeldige optie -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ongeldige optie -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: optie vereist een argument -- %c\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: optie `-W %s' is niet eenduidig\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: optie `-W %s' staat geen argument toe\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "geen geheugen meer beschikbaar" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" +"Let op: md5sum is niet geverifi�rd. Overweeg de installatie van 'GNU " +"coreutils'." + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "" +"WAARSCHUWING: tijdsaanduidingen niet teruggezet. Overweeg het verkrijgen en" + +#: src/shar.c:645 +#, fuzzy +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "" +"installeren van GNU `touch'\\'', gedistribueerd in 'GNU File Utilities'..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "vergrendelmap '${lock_dir}' bestaat" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "het aanmaken van een vergrendelmap is mislukt" + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "x - aangemaakte vergrendelmap is `'%s\\''." + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "x - het aanmaken van vergrendelmap `'%s\\'' is mislukt." + +#: src/shar.c:671 +msgid "yes" +msgstr "ja" + +#: src/shar.c:671 +msgid "overwrite this file" +msgstr "dit bestand overschrijven" + +#: src/shar.c:672 +msgid "no" +msgstr "nee" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "dit bestand overslaan" + +#: src/shar.c:673 +msgid "all" +msgstr "alles" + +#: src/shar.c:673 +msgid "overwrite all files" +msgstr "alle bestanden overschrijven" + +#: src/shar.c:674 +msgid "none" +msgstr "geen" + +#: src/shar.c:674 +msgid "overwrite no files" +msgstr "geen bestanden overschrijven" + +#: src/shar.c:675 +msgid "help" +msgstr "help" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "verklaar de keuze" + +#: src/shar.c:676 +msgid "quit" +msgstr "stop" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "be�ndig onmiddelijk" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Te veel mappen om aan te maken met mkdir" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "x - aangemaakte map is `%s'\\''." + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "x - aanmaken van map `%s'\\'' is mislukt." + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "Kan geen toegang krijgen tot %s" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "-C is verouderd, gebruik nu -Z" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "Kan de naam van de huidige map niet vinden" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" +"Archieven moeten in volgorde uitgepakt worden!\n" +"Pak aub als volgende het deel '`cat ${lock_dir}/seq`' uit." + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "Nieuw bestand, nu nog %s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "De grens is nog steeds %s\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "terugzetten van %s is mislukt" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "Einde van deel %d, doorgaan met deel %d" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Beginbestand %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: Geen gewoon bestand" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "In shar: resterende grootte %s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "leeg" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(leeg)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "Kan bestand %s niet openen" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "gecomprimeerd" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "gemaakt met gzip" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "gemaakt met bzip2" + +#: src/shar.c:1151 +msgid "binary" +msgstr "binair" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(gecomprimeerd)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(gemaakt met gzip)" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(gemaakt met bzip2)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(binair)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "'Fork' is mislukt" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Bestand %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "tekst" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(tekst)" + +#: src/shar.c:1251 +#, c-format +msgid "overwriting %s" +msgstr "bezig met overschrijven %s" + +#: src/shar.c:1253 +#, c-format +msgid "overwrite %s" +msgstr "overschrijf %s" + +#: src/shar.c:1257 +#, c-format +msgid "SKIPPING %s" +msgstr "BEZIG MET OVERSLAAN VAN %s" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "extraheren afgebroken" + +#: src/shar.c:1262 +#, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "BEZIG MET OVERSLAAN VAN %s (bestand bestaat al)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Bezig met opslaan van %s (%s)" + +#: src/shar.c:1276 +#, c-format +msgid "x - extracting %s %s" +msgstr "x - bezig met extraheren %s %s" + +#: src/shar.c:1392 +#, c-format +msgid "restore of %s failed\n" +msgstr "terugzetten van %s is mislukt\n" + +#: src/shar.c:1401 +#, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "Einde van deel %ld, doorgaan met deel %ld" + +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "Einde van %s deel %d" + +#: src/shar.c:1408 +msgid "archive" +msgstr "archief" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "Bestand %s gaat verder in deel %d" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "Pak eerst deel 1 uit!" + +#: src/shar.c:1460 +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "Pak eerst deel '${shar_sequence}' uit!" + +#: src/shar.c:1471 +#, c-format +msgid "STILL SKIPPING %s" +msgstr "NOG STEEDS BEZIG MET OVERSLAAN VAN %s" + +#: src/shar.c:1479 +#, c-format +msgid "continuing file %s" +msgstr "doorgaan met bestand %s" + +#: src/shar.c:1497 +#, c-format +msgid "File %s is complete" +msgstr "Bestand %s is compleet" + +#: src/shar.c:1504 +#, c-format +msgid "uudecoding file %s" +msgstr "bezig met decoderen (uudecode) van bestand %s" + +#: src/shar.c:1514 +#, c-format +msgid "uncompressing file %s" +msgstr "bezig met decomprimeren van bestand %s" + +#: src/shar.c:1522 +#, c-format +msgid "gunzipping file %s" +msgstr "bezig met decomprimeren (gunzip) van bestand %s" + +#: src/shar.c:1530 +#, c-format +msgid "bunzipping file %s" +msgstr "bezig met decomprimeren (bunzip2) van bestand %s" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "MD5 controle is mislukt" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "'herstelwaarschuwing: grootte van %s is niet %s'\n" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "toevoegen van uitvoerbestandsnaam" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "Bezig `%s' te openen" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Bezig `%s' te sluiten" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Probeer `%s --help' voor meer informatie.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Gebruik: %s [OPTIE]... [BESTAND]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Verplichte argumenten bij lange opties zijn ook verplicht bij korte opties.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"Terugmelding:\n" +" --help toon deze hulptekst en be�ndig programma\n" +" --version toon versie-informatie en be�ndig programma\n" +" -q, --quiet, --silent toon lokaal geen uitgebreide berichten\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Selectie van bestanden:\n" +" -p, --intermix-type sta -[BTzZ] toe in bestandslijsten om\n" +" de modus te veranderen\n" +" -S, --stdin-file-list lees bestandslijst van standaardinvoer\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Selectie van bestanden:\n" +" -p, --intermix-type sta -[BTz] toe in bestandslijsten om\n" +" de modus te veranderen\n" +" -S, --stdin-file-list lees bestandslijst van standaardinvoer\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"Uitvoer splitsen:\n" +" -o, --output-prefix=VOORL uitvoer naar bestand VOORL.01 tot VOORL.NN\n" +" -l, --whole-size-limit=GRTT splits archief, geen bestanden, in GRTT " +"kilobytes\n" +" -L, --split-size-limit=GRTT splits archief, of bestanden, tot GRTT " +"kilobytes\n" + +#: src/shar.c:1759 +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Inhoud van de shar-kop:\n" +" -n, --archive-name=NAAM geef het archief de (informatieve) naam NAAM\n" +" -s, --submitter=ADRES vervang de naam van de archivaris door ADRES\n" +" -a, --net-headers voeg de kopregels Submitted-by: en Archive-name: " +"toe\n" +" -c, --cut-mark begin de shar met een afbreekregel\n" +" -t, --translate vertaal boodschappen in het script\n" +"\n" +"Hoe bestanden behandeld worden:\n" +" -M, --mixed-uuencode laat shar beslissen of uuencode nodig is\n" +" (dit is de standaard)\n" +" -T, --text-files alle bestanden zijn tekstbestanden\n" +" -B, --uuencode alle bestanden zijn binair, gebruik uuencode\n" +" -z, --gzip pas gzip en uuencode toe op alle bestanden\n" +" -g, --level-for-gzip=NIVEAU gebruik gzip met optie -NIVEAU (standaard -" +"9)\n" +" -j, --bzip2 pas bzip2 en uuencode toe op alle bestanden\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress pas compress en uuencode toe op alle " +"bestanden\n" +" -b, --bits-per-code=BITS geef -bBITS (default 12) door aan compress\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Bescherming tegen transmissie:\n" +" -w, --no-character-count gebruik geen `wc -c' voor groottecontrole\n" +" -D, --no-md5-digest gebruik geen `md5sum' om te verifi�en\n" +" -F, --force-prefix gebruik het voorvoegkarakter op elke regel\n" +" -d, --here-delimiter=TEKST gebruik TEKST om bestanden te scheiden in de " +"shar\n" +"\n" +"Aanmaken van verschillende soorten shars:\n" +" -V, --vanilla-operation maak eenvoudige en weinig eisende shars\n" +" -P, --no-piping gebruik tijdelijke bestanden tijdens unshar\n" +" -x, --no-check-existing overschrijf bestaande bestanden blindelings\n" +" -X, --query-user vraag gebruiker voor overschrijven bestanden\n" +" (niet voor Net)\n" +" -m, --no-timestamp zet de bestandsmodificatie datum/tijd niet " +"terug\n" +" -Q, --quiet-unshar voorkom meldingen tijdens unshar\n" +" -f, --basename terugzetten in �n directory, hi�archie " +"negerend\n" +" --no-i18n maak geen ge�ternationaliseerd shellscript\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"Optie -o is vereist bij -l of -L, optie -n is vereist bij -a.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "Optie -g impliceert -z, optie -b impliceert -Z.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "Optie -g impliceert -z.\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" +"Rapporteer bugs naar <%s>.\n" +"Rapporteer opmerkingen over de vertaling naar .\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "ongeldige limiet, `%s', van de grootte van een bestand" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "ongeldige opmaak (telveld te breed): '%s'\n" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "DEBUG niet meevertaald" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "Harde limiet %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "Dit systeem ondersteunt -Z ('compress') niet, gebruik -z" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "Zachte grens %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "onjuiste uitvoervoorloopnaam\n" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"Dit is vrije software; zie de bronbestanden voor de kopieervoorwaarden.\n" +"Er is GEEN garantie; ook niet voor VERKOOPBAARHEID of GESCHIKTHEID VOOR\n" +"EEN BEPAALD DOEL.\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "WAARSCHUWING: De normale mode is niet interactief" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "WAARSCHUWING: de opties voor opslag van niet-tekst worden genegeerd" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Geen invoerbestanden" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "Optie -a kan niet zonder -n gebruikt worden" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "De opties -l of -L kunnen niet zonder -o gebruikt worden" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "Vermijd -X shars op Usenet en op openbare netwerken" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Het laatste deel is uitgepakt" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "%d bestand(en) aangemaakt\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "x - vergrendelmap `'%s\\'' is verwijderd." + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "x - verwijderen van vergrendelmap `'%s\\'' is mislukt." + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "Geen shell-opdrachten gevonden in %s" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s ziet eruit als een C-programma, niet als een shell-archief" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Geen shell opdrachten gevonden na `cut' in %s" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s is waarschijnlijk geen shell-archief" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "Na de `cut'-regel volgde: %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Bezig een `sh'-proces op te starten" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Verplichte argumenten bij lange opties zijn ook verplicht bij korte opties.\n" +"\n" +" -d, --directory=MAP ga naar MAP alvorens uit te pakken\n" +" -c, --overwrite geef -c aan shar script voor het\n" +" overschrijven van bestanden\n" +" -e, --exit-0 zelfde als `--split-at=\"exit 0\"'\n" +" -E, --split-at=TEKST splits samengevoegde shars na TEKST\n" +" -f, --force zelfde als `-c'\n" +" --help toon hulptekst en be�ndig programma\n" +" --version toon versie-informatie en be�ndig programma\n" +"\n" +"Als er geen BESTAND is, lees van standaardinvoer.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "Huidige map op `%s' zetten is mislukt" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "voeg een buffer voor de bestandsnaam toe" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "standaardinvoer" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "voeg een buffer voor het bestand toe" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: Schrijffout" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: Bestand is te kort" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: Geen `end'-regel" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: gegevens aanwezig na het `='-vulteken" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: onjuiste regel" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: Geen `begin'-regel" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: Onjuiste ~gebruiker" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: Er bestaat geen gebruiker `%s'" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "kan geen toegang krijgen tot %s" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "kan niet naar FIFO (%s) schrijven" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "symbolische koppeling (%s) wordt niet gevolgd" + +#: src/uudecode.c:408 +#, fuzzy, c-format +msgid "freopen of %s" +msgstr "Bezig fopen op %s toe te passen" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Gebruik: %s [BESTAND]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Verplichte argumenten bij lange opties zijn ook verplicht bij korte opties.\n" +" -o, --output-file=BESTAND uitvoer naar BESTAND\n" +" --help toon deze hulptekst en be�ndig programma\n" +" --version toon versie-informatie en be�ndig programma\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Fout bij schrijven" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Fout bij lezen" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Gebruik: %s [LOKAAL_BESTAND] NIETLOKAAL_BESTAND\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 gebruik base64 codering zoals in RFC1521\n" +" --help toon deze hulptekst en be�ndig programma\n" +" --version toon versie-informatie en be�ndig programma\n" + +#: src/uuencode.c:276 +#, c-format +msgid "fopen-ing %s" +msgstr "Bezig fopen op %s toe te passen" + +#: src/uuencode.c:278 +#, c-format +msgid "fstat-ing %s" +msgstr "Bezig fstat op %s toe te passen" diff --git a/po/nn.gmo b/po/nn.gmo new file mode 100644 index 0000000000000000000000000000000000000000..fea1385b21d12ce6fb2db1b421daeaa354bbe210 GIT binary patch literal 969 zcma)4!EO^V5M7{vwA?rW0yF}a9$>;IY9K771lkHkkhUrdw@Nr!$93b_sqJmajSt|8 z#1C-d2S9uV7fyT&<94G!3j)h;pLhJm9^3E7`MLKIwX=lFgq(1W@Qx7LXTn9o7s74A zH^LP{bRvopqN~IqzCwJHc$ava@PTk4$WBGk4dP40A@33KHR7!*{+9SU{eL8;l!G=$ z-!s)X)J0R#$?E@f#ZlrikVMgt-w{rF&}io8zxiJOPQaHr=zFr~~sFb&L# za>TViA||PHz(zeON>jSyvzG6c(sI)LZ4Jc#-|$bXO%JhQ%?|H->=gKlTSv#s;OW{+ z5ZrtI#zR`GQ*XqZd~B@8t`oArC#7(hn+$rTK%q-4y;QDEqnfcI-dN9Z*>V;x3s;!u z88p)L9)@0rbRlboahj44H~F3nyUuhCOz&c&Nhw*na4V(E_&IYPbIY_-%p04*GiDV$ z)&*4z-zS3E0v3l9Gi^DLwNjdzHcOPIMacxmoU>5|YsT(#A(=)!(Z;$VENatMGSs{j zcRStH*%j1lX}oN-r?F-)7cv|FH979b2vDeXP&Kp~?ZbxT^c6 zkXmHW>dDFgr80ZuBp4_r#PkJ%!43nTf{VV=PD7Bx;SN7ypQ(r>+)@gc)=vs44(;>H ZthZbX;F65^oBt|Fu+G1BIljcS+@CuA3N8Qu literal 0 HcmV?d00001 diff --git a/po/nn.po b/po/nn.po new file mode 100644 index 0000000..caf8c87 --- /dev/null +++ b/po/nn.po @@ -0,0 +1,1212 @@ +# Norwegian messages for GNU gettext. (nynorsk dialect) +# Copyright (C) 1996 Free Software Foundation, Inc. +# Karl Anders Øygard , 1996. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU gettext 0.10.12\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2002-06-25 20:04+0200\n" +"Last-Translator: Karl Anders Øygard \n" +"Language-Team: Norwegian-nynorsk \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: flagg «%s» er fleirtydig\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: flagg «--%s» tek ikkje argument\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: flagg «%c%s» tek ikkje argument\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: flagg «%s» treng eit argument\n" + +#: lib/getopt.c:771 +#, fuzzy, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: ulovleg flagg -- %c\n" + +#: lib/getopt.c:775 +#, fuzzy, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: ulovleg flagg -- %c\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ulovleg flagg -- %c\n" + +#: lib/getopt.c:804 +#, fuzzy, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ulovleg flagg -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: flagg treng eit argument -- %c\n" + +#: lib/getopt.c:881 +#, fuzzy, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: flagg «%s» er fleirtydig\n" + +#: lib/getopt.c:899 +#, fuzzy, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: flagg «--%s» tek ikkje argument\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "" + +#: src/shar.c:645 +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "" + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "" + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "" + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "" + +#: src/shar.c:671 +msgid "yes" +msgstr "" + +#: src/shar.c:671 +msgid "overwrite this file" +msgstr "" + +#: src/shar.c:672 +msgid "no" +msgstr "" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "" + +#: src/shar.c:673 +msgid "all" +msgstr "" + +#: src/shar.c:673 +msgid "overwrite all files" +msgstr "" + +#: src/shar.c:674 +msgid "none" +msgstr "" + +#: src/shar.c:674 +msgid "overwrite no files" +msgstr "" + +#: src/shar.c:675 +msgid "help" +msgstr "" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "" + +#: src/shar.c:676 +msgid "quit" +msgstr "" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "" + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "" + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "" + +#: src/shar.c:901 src/unshar.c:379 +#, fuzzy +msgid "Cannot get current directory name" +msgstr "kan ikkje skifte til filkatalog \"%s\"" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" + +#: src/shar.c:976 src/shar.c:1383 +#, fuzzy, c-format +msgid "New file, remaining %s, " +msgstr "feil under skriving av fila \"%s\"" + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "" + +#: src/shar.c:1086 +msgid "empty" +msgstr "" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "" + +#: src/shar.c:1111 +#, fuzzy, c-format +msgid "Cannot open file %s" +msgstr "kan ikkje opprette utfila \"%s\"" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "" + +#: src/shar.c:1151 +msgid "binary" +msgstr "" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "" + +#: src/shar.c:1227 +msgid "text" +msgstr "" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "" + +#: src/shar.c:1251 +#, c-format +msgid "overwriting %s" +msgstr "" + +#: src/shar.c:1253 +#, c-format +msgid "overwrite %s" +msgstr "" + +#: src/shar.c:1257 +#, c-format +msgid "SKIPPING %s" +msgstr "" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "" + +#: src/shar.c:1262 +#, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "" + +#: src/shar.c:1276 +#, c-format +msgid "x - extracting %s %s" +msgstr "" + +#: src/shar.c:1392 +#, c-format +msgid "restore of %s failed\n" +msgstr "" + +#: src/shar.c:1401 +#, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "" + +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "" + +#: src/shar.c:1408 +msgid "archive" +msgstr "" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "" + +#: src/shar.c:1460 +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "" + +#: src/shar.c:1471 +#, c-format +msgid "STILL SKIPPING %s" +msgstr "" + +#: src/shar.c:1479 +#, fuzzy, c-format +msgid "continuing file %s" +msgstr "inga innfil spesifisert" + +#: src/shar.c:1497 +#, c-format +msgid "File %s is complete" +msgstr "" + +#: src/shar.c:1504 +#, c-format +msgid "uudecoding file %s" +msgstr "" + +#: src/shar.c:1514 +#, fuzzy, c-format +msgid "uncompressing file %s" +msgstr "kan ikkje opprette utfila \"%s\"" + +#: src/shar.c:1522 +#, c-format +msgid "gunzipping file %s" +msgstr "" + +#: src/shar.c:1530 +#, c-format +msgid "bunzipping file %s" +msgstr "" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, fuzzy, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Prøv «%s --help» for meir informasjon\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" + +#: src/shar.c:1759 +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "" + +#: src/shar.c:2238 +#, fuzzy +msgid "No input files" +msgstr "inga innfil spesifisert" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "" + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "" + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" + +#: src/unshar.c:397 +#, fuzzy, c-format +msgid "Cannot chdir to `%s'" +msgstr "kan ikkje skifte til filkatalog \"%s\"" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, fuzzy, c-format +msgid "%s: illegal line" +msgstr "%s: ulovleg flagg -- %c\n" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "" + +#: src/uudecode.c:408 +#, c-format +msgid "freopen of %s" +msgstr "" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" + +#: src/uuencode.c:276 +#, c-format +msgid "fopen-ing %s" +msgstr "" + +#: src/uuencode.c:278 +#, c-format +msgid "fstat-ing %s" +msgstr "" + +#~ msgid "missing arguments" +#~ msgstr "manglar argument" + +#, fuzzy +#~ msgid "too many arguments" +#~ msgstr "manglar argument" + +#, fuzzy +#~ msgid "" +#~ "Usage: %s [OPTION] [[[TEXTDOMAIN] MSGID] | [-s [MSGID]...]]\n" +#~ " -d, --domain=TEXTDOMAIN retrieve translated messages from TEXTDOMAIN\n" +#~ " -e enable expansion of some escape sequences\n" +#~ " -E (ignored for compatibility)\n" +#~ " -h, --help display this help and exit\n" +#~ " -n suppress trailing newline\n" +#~ " -V, --version display version information and exit\n" +#~ " [TEXTDOMAIN] MSGID retrieve translated message corresponding\n" +#~ " to MSGID from TEXTDOMAIN\n" +#~ msgstr "" +#~ "Bruk: %s [FLAGG] [[[TEXTDOMAIN] MSGID] | [-s [MSGID]...]]\n" +#~ " -d, --domain=TEXTDOMAIN hent oversette meldingar frå TEXTDOMAIN\n" +#~ " -e slå på ekspandering av nokre escape-" +#~ "sekvensar\n" +#~ " -E (tillete av kompatibilitetsomsyn)\n" +#~ " -h, --help vis denne hjelpeteksta og avslutt\n" +#~ " -n undertrykk etterfølgjande linjeskift\n" +#~ " -v, --version vis programversjon og avslutt\n" +#~ " [TEXTDOMAIN] MSGID hent oversett melding som stemmer overeins " +#~ "med\n" +#~ " MSGID frå TEXTDOMAIN\n" + +#~ msgid "" +#~ "\n" +#~ "If the TEXTDOMAIN parameter is not given, the domain is determined from " +#~ "the\n" +#~ "environment variable TEXTDOMAIN. If the message catalog is not found in " +#~ "the\n" +#~ "regular directory, another location can be specified with the " +#~ "environment\n" +#~ "variable TEXTDOMAINDIR.\n" +#~ "When used with the -s option the program behaves like the `echo' " +#~ "command.\n" +#~ "But it does not simply copy its arguments to stdout. Instead those " +#~ "messages\n" +#~ "found in the selected catalog are translated.\n" +#~ "Standard search directory: %s\n" +#~ msgstr "" +#~ "\n" +#~ "Dersom TEXTDOMAIN-parameteren ikkje er gjeven, vert domenet valgt frå\n" +#~ "miljøvariabelen TEXTDOMAIN. Dersom meldingskatalogen ikkje finst i den\n" +#~ "vanlege filkatalogen, kan ein annan filkatalog spesifiserast ved hjelp " +#~ "av\n" +#~ "miljøvariabelen TEXTDOMAIN.\n" +#~ "Når flagget -s vert brukt, oppfører programmet seg som kommandoen " +#~ "«echo»,\n" +#~ "men gjer ikkje ein enkel kopiering av argumenta sine til standard ut. I\n" +#~ "staden vert meldingar som er funne i den valgte katalogen oversatt.\n" +#~ "Standard søkekatalog er: %s\n" + +#~ msgid "" +#~ "internationalized messages should not contain the `\\%c' escape sequence" +#~ msgstr "" +#~ "internasjonaliserte meldingar skal ikkje innehalde escape-sekvensen «\\%c»" + +#~ msgid "error while writing \"%s\" file" +#~ msgstr "feil under skriving av fila \"%s\"" + +#~ msgid "exactly 2 input files required" +#~ msgstr "treng nøyaktig to innfiler" + +#~ msgid "" +#~ "Usage: %s [OPTION] def.po ref.po\n" +#~ "Mandatory arguments to long options are mandatory for short options too.\n" +#~ " -h, --help display this help and exit\n" +#~ " -V, --version output version information and exit\n" +#~ "\n" +#~ "Compare two Uniforum style .po files to check that both contain the same\n" +#~ "set of msgid strings. The def.po file is an existing PO file with the\n" +#~ "old translations. The ref.po file is the last created PO file\n" +#~ "(generally by xgettext). This is useful for checking that you have\n" +#~ "translated each and every message in your program. Where an exact match\n" +#~ "cannot be found, fuzzy matching is used to produce better diagnostics.\n" +#~ msgstr "" +#~ "Bruk: %s [FLAGG] def.po ref.po\n" +#~ "Obligatoriske argumenter til lange flagg er obligatoriske også til korte " +#~ "flagg.\n" +#~ " -h, --help vis denne hjelpeteksta og avslutt\n" +#~ " -V, --version vis programversjon og avslutt\n" +#~ "\n" +#~ "Samanliknar to Uniforum .po-filer for å sjekke at begge inneheld det " +#~ "samme\n" +#~ "settet msgid-strengar. def.po-filen er ein eksisterende PO-fil med dei\n" +#~ "gamle oversetjingane. ref.po-filen er den sist genererte PO-fila\n" +#~ "(vanligvis generert med xgettext). Dette er nyttig for å sjekke at du " +#~ "har\n" +#~ "oversett alle meldingar i programmet. Der samsvar ikkje kan finnast, " +#~ "vert\n" +#~ "«fuzzy» samanlikning brukt for å få betre diagnostikk.\n" + +#~ msgid "this message is used but not defined..." +#~ msgstr "denne meldinga er brukt, men ikkje definert..." + +#~ msgid "...but this definition is similar" +#~ msgstr "... men denne definisjonen liknar" + +#~ msgid "this message is used but not defined in %s" +#~ msgstr "denne meldinga er brukt, men ikkje definert i %s" + +#~ msgid "warning: this message is not used" +#~ msgstr "advarsel: denne meldinga er ikkje brukt" + +#~ msgid "this is the location of the first definition" +#~ msgstr "den første definisjonen finst her" + +#~ msgid "this message has no definition in the \"%s\" domain" +#~ msgstr "denne meldinga har ingen definisjon i \"%s\"-domenet" + +#~ msgid "no input file given" +#~ msgstr "inga innfil spesifisert" + +#, fuzzy +#~ msgid "error while opening \"%s\" for writing" +#~ msgstr "feil under skriving av fila \"%s\"" + +#~ msgid "" +#~ "Usage: %s [OPTION] filename.po ...\n" +#~ "Mandatory arguments to long options are mandatory for short options too.\n" +#~ " -a, --alignment=NUMBER align strings to NUMBER bytes (default: %d)\n" +#~ " -h, --help display this help and exit\n" +#~ " --no-hash binary file will not include the hash table\n" +#~ " -o, --output-file=FILE specify output file name as FILE\n" +#~ " --strict enable strict Uniforum mode\n" +#~ " -v, --verbose list input file anomalies\n" +#~ " -V, --version output version information and exit\n" +#~ "\n" +#~ "If input file is -, standard input is read. If output file is -,\n" +#~ "output is written to standard output.\n" +#~ msgstr "" +#~ "Bruk: %s [FLAGG] filnavn.po ...\n" +#~ "Obligatoriske argumenter til lange flagg er obligatoriske også til korte " +#~ "flagg.\n" +#~ " -a, --alignment=ANTALL justér strengar til ANTALL bytes (forvalgt: %" +#~ "d)\n" +#~ " -h, --help vis denne hjelpeteksta og avslutt\n" +#~ " --no-hash binærfil skal ikkje innehalde hash-tabell\n" +#~ " -o, --output-file=FILNAVN sett utfil til FILNAVN\n" +#~ " --strict lag strengt Uniforum-konform .po-fil\n" +#~ " -v, --verbose list alle avvik i innfil\n" +#~ " -V, --version vis programversjon og avslutt\n" +#~ "\n" +#~ "Dersom innfil er -, vil inndata verte lest frå standard inn. Dersom " +#~ "utfil\n" +#~ "er -, vil utdata verte skrive til standard ut.\n" + +#~ msgid "while creating hash table" +#~ msgstr "mens hash-tabellen vart laga" + +#, fuzzy +#~ msgid "warning: no header entry found" +#~ msgstr "advarsel: denne meldinga er ikkje brukt" + +#~ msgid "domain name \"%s\" not suitable as file name" +#~ msgstr "domenenamnet \"%s\" passar ikkje som filnavn" + +#~ msgid "domain name \"%s\" not suitable as file name: will use prefix" +#~ msgstr "domenenamnet \"%s\" passar ikkje som filnavn: brukar prefiks" + +#~ msgid "headerfield `%s' missing in header" +#~ msgstr "filhovud-feltet «%s» manglar i filhovud" + +#~ msgid "header field `%s' should start at beginning of line" +#~ msgstr "filhovud-feltet «%s» skulle ha starta på byrjinga av linja" + +#~ msgid "some header fields still have the initial default value" +#~ msgstr "nokre filhovud-felt har framleis sin initielle verdi" + +#~ msgid "field `%s' still has initial default value" +#~ msgstr "feltet «%s» har framleis sin forvalgte verdi" + +#~ msgid "WARNING: source file contains fuzzy translation" +#~ msgstr "ADVARSEL: kildefila har «fuzzy» oversetjingar" + +#~ msgid "`msgid' and `msgstr' entry does not both begin with '\\n'" +#~ msgstr "«msgid»- og «msgstr»-verdiane byrjarr ikkje båe med '\\n'" + +#~ msgid "`msgid' and `msgstr' entry does not both end with '\\n'" +#~ msgstr "«msgid»- og «msgstr»-verdiane sluttar ikkje båe med '\\n'" + +#~ msgid "" +#~ "number of format specifications in `msgid' and `msgstr' does not match" +#~ msgstr "" +#~ "antall format-spesifiseringar i «msgid» og «msgstr» stemmer ikkje overeins" + +#~ msgid "format specifications for argument %u are not the same" +#~ msgstr "format-spesifiseringane for argument %u er ulike" + +#, fuzzy +#~ msgid "" +#~ "Usage: %s [OPTION] def.po ref.po\n" +#~ "Mandatory arguments to long options are mandatory for short options too.\n" +#~ " -e, --no-escape do not use C escapes in output (default)\n" +#~ " -E, --escape use C escapes in output, no extended chars\n" +#~ " -h, --help display this help and exit\n" +#~ " -i, --indent indented output style\n" +#~ " -o, --output-file=FILE result will be written to FILE\n" +#~ " --strict strict Uniforum output style\n" +#~ " -v, --verbose increase verbosity level\n" +#~ " -V, --version output version information and exit\n" +#~ msgstr "" +#~ "Bruk: %s [FLAGG] INNFIL ...\n" +#~ "Obligatoriske argumenter til lange flagg er obligatoriske også til korte " +#~ "flagg.\n" +#~ " -e, --no-escape ikkje bruk C-escapekoder i utdata (forvalgt)\n" +#~ " -E, --escape bruk C-escapekoder i utdata, ingen utvida " +#~ "teikn\n" +#~ " -h, --help vis denne hjelpeteksta og avslutt\n" +#~ " -i, --indent indentert utdata\n" +#~ " -o, --output-file=FIL resultat vert skrive til FIL\n" +#~ " --strict lag strengt Uniforum-konformt utdata\n" +#~ " -V, --version vis programversjon og avslutt\n" + +#~ msgid "" +#~ "\n" +#~ "Merges two Uniforum style .po files together. The def.po file is an\n" +#~ "existing PO file with the old translations which will be taken over to\n" +#~ "the newly created file as long as they still match; comments will be\n" +#~ "preserved, but extract comments and file positions will be discarded.\n" +#~ "The ref.po file is the last created PO file (generally by xgettext), any\n" +#~ "translations or comments in the file will be discarded, however dot\n" +#~ "comments and file positions will be preserved. Where an exact match\n" +#~ "cannot be found, fuzzy matching is used to produce better results. The\n" +#~ "results are written to stdout unless an output file is specified.\n" +#~ msgstr "" +#~ "\n" +#~ "Fletter saman to Uniforum .po-filer. def.po-filen er ei eksisterande\n" +#~ "PO-fil med gamle oversetjingar, som vil verte overført til den nye fila\n" +#~ "dersom dei framleis stemmer. Kommentarar vert teke med, men kommentarer " +#~ "om\n" +#~ "sjølve ekstraheringa og fil-posisjoner vert sletta. ref.po-filen er den\n" +#~ "sist genererte PO-fila (vanlegvis generert med xgettext). Oversetjingar\n" +#~ "eller kommentarer i denne fila vert sletta, men punktum-kommentarer og\n" +#~ "fil-posisjonar vert teke vare på. Der det ikkje er mogleg å finne ei\n" +#~ "eksakt overeinsstemming, vert «fuzzy» samanlikning brukt for å få betre\n" +#~ "resultat. Resultatet vert skrive til standard ut, med mindre ei utfil " +#~ "er\n" +#~ "spesifisert.\n" + +#~ msgid "" +#~ "%sRead %d old + %d reference, merged %d, fuzzied %d, missing %d, obsolete " +#~ "%d.\n" +#~ msgstr "" +#~ "%sLeste %d gamle + %d referansar, fletta inn %d, «fuzzya» %d, manglar %" +#~ "d,\n" +#~ "utdaterte %d.\n" + +#, fuzzy +#~ msgid "" +#~ "Usage: %s [OPTION] [FILE]...\n" +#~ "Mandatory arguments to long options are mandatory for short options too.\n" +#~ " -e, --no-escape do not use C escapes in output (default)\n" +#~ " -E, --escape use C escapes in output, no extended chars\n" +#~ " -h, --help display this help and exit\n" +#~ " -i, --indent write indented output style\n" +#~ " -o, --output-file=FILE write output into FILE instead of standard " +#~ "output\n" +#~ " --strict write strict uniforum style\n" +#~ " -V, --version output version information and exit\n" +#~ msgstr "" +#~ "Usage: %s [OPTION] [FILE]...\n" +#~ "Mandatory arguments to long options are mandatory for short options too.\n" +#~ " -e, --no-escape do not use C escapes in output (default)\n" +#~ " -E, --escape use C escapes in output, no extended chars\n" +#~ " -h, --help display this help and exit\n" +#~ " -i, --indent write indented output style\n" +#~ " -o, --output-file=FILE write output into FILE instead of standard " +#~ "output\n" +#~ " --strict write strict uniforum style\n" +#~ " -V, --version output version information and exit\n" + +#, fuzzy +#~ msgid "" +#~ "\n" +#~ "Convert binary .mo files to Uniforum style .po files.\n" +#~ "Both little-endian and big-endian .mo files are handled.\n" +#~ "If no input file is given or it is -, standard input is read.\n" +#~ "By default the output is written to standard output.\n" +#~ msgstr "" +#~ "\n" +#~ "Konverter binære .mo-filer til Uniforum .po-filer. Både «little-endian» " +#~ "og\n" +#~ "«big-endian» .mo filer vert håndtert. Dersom innfil er -, blir standard\n" +#~ "inn lest. Dersom utfil er -, vert det skrive til standard ut.\n" + +#~ msgid "file \"%s\" truncated" +#~ msgstr "filen \"%s\" er avkutta" + +#~ msgid "seek \"%s\" offset %ld failed" +#~ msgstr "«seek» \"%s\" posisjon %ld feila" + +#, fuzzy +#~ msgid "error while opening \"%s\" for reading" +#~ msgstr "feil under skriving av fila \"%s\"" + +#~ msgid "file \"%s\" is not in GNU .mo format" +#~ msgstr "fila \"%s\" er ikkje i GNU .mo-format" + +#~ msgid "missing `msgstr' section" +#~ msgstr "manglar «msgstr»-seksjon" + +#, fuzzy +#~ msgid "found %d fatal errors" +#~ msgstr "fann %d fatale feil" + +#, fuzzy +#~ msgid "too many errors, aborting" +#~ msgstr "for mange feil, avsluttar" + +#~ msgid "while preparing output" +#~ msgstr "under klargjering av utdata" + +#~ msgid "%s and %s are mutually exclusive" +#~ msgstr "%s og %s utelukker kvarandre" + +#~ msgid "--join-existing cannot be used when output is written to stdout" +#~ msgstr "" +#~ "--join-existing kan ikkje brukast når utdata vert skrive til standard ut" + +#~ msgid "cannot change back to directory \"%s\"" +#~ msgstr "kan ikkje skifte tilbake til filkatalog \"%s\"" + +#, fuzzy +#~ msgid "" +#~ "Usage: %s [OPTION] INPUTFILE ...\n" +#~ "Mandatory arguments to long options are mandatory for short options too.\n" +#~ " -a, --extract-all extract all strings\n" +#~ " -c, --add-comments[=TAG] place comment block with TAG (or those\n" +#~ " preceding keyword lines) in output file\n" +#~ " -C, --c++ recognize C++ style comments\n" +#~ " -d, --default-domain=NAME use NAME.po for output (instead of " +#~ "messages.po)\n" +#~ " -D, --directory=DIRECTORY change to DIRECTORY before processing\n" +#~ " -e, --no-escape do not use C escapes in output " +#~ "(default)\n" +#~ " -E, --escape use C escapes in output, no extended " +#~ "chars\n" +#~ " -f, --files-from=FILE get list of input files from FILE\n" +#~ " --force-po write PO file even if empty\n" +#~ " -F, --sort-by-file sort output by file location\n" +#~ msgstr "" +#~ "Bruk: %s [FLAGG] INNFIL ...\n" +#~ "Obligatoriske argumenter til lange flagg er obligatoriske også til korte " +#~ "flagg.\n" +#~ " -a, --extract-all ekstrahér alle strengar\n" +#~ " -c, --add-comments[=TAG] lagre kommentarblokker med TAG (eller\n" +#~ " kommentarar i linjer som kjem foran\n" +#~ " nøkkelord) i utfila\n" +#~ " -C, --c++ kjenn igjen C++-kommentarar\n" +#~ " -d, --default-domain=NAVN lagre utdata i NAVN.po (i staden for\n" +#~ " messages.po)\n" +#~ " -D, --directory=FILKATALOG skift til FILKATALOG før prosessering\n" +#~ " -e, --no-escape ikkje bruk C-escapekoder i utdata " +#~ "(forvalgt)\n" +#~ " -E, --escape bruk C-escapekoder i utdata, ingen utvida " +#~ "teikn\n" +#~ " -f, --files-from=FIL hent liste av innfiler frå FIL\n" +#~ " -F, --sort-by-file sorter utdata etter fil-lokasjon\n" + +#, fuzzy +#~ msgid "" +#~ " -h, --help display this help and exit\n" +#~ " -i, --indent write the .po file using indented style\n" +#~ " -j, --join-existing join messages with existing file\n" +#~ " -k, --keyword[=WORD] additonal keyword to be looked for " +#~ "(without\n" +#~ " WORD means not to use default keywords)\n" +#~ " -l, --string-limit=NUMBER set string length limit to NUMBER " +#~ "instead %u\n" +#~ " -m, --msgstr-prefix[=STRING] use STRING or \"\" as prefix for msgstr " +#~ "entries\n" +#~ " -M, --msgstr-suffix[=STRING] use STRING or \"\" as suffix for msgstr " +#~ "entries\n" +#~ " --no-location do not write '#: filename:line' lines\n" +#~ msgstr "" +#~ " -h, --help vis denne hjelpeteksta og avslutt\n" +#~ " -i, --indent lag indentert utdata\n" +#~ " -j, --join-existing flett saman meldingar med eksisterande " +#~ "fil\n" +#~ " -k, --keyword[=ORD] sjå også etter nøkkelordet ORD (manglar " +#~ "ORD,\n" +#~ " skal ikkje dei vanlege nøkkelorda " +#~ "nyttast)\n" +#~ " -l, --string-limit=NUMMER sett største streng-lengde til NUMMER\n" +#~ " i staden for %u\n" +#~ " -m, --msgstr-prefix[=STRENG] bruk STRENG eller \"\" som prefiks for\n" +#~ " msgstr-verdiar\n" +#~ " -M, --msgstr-suffix[=STRENG] bruk STRENG eller \"\" som suffiks for\n" +#~ " msgstr-verdiar\n" +#~ " --no-location ikkje lag «#: filnavn:linje»-linjer\n" + +#, fuzzy +#~ msgid "" +#~ " -n, --add-location generate '#: filename:line' lines " +#~ "(default)\n" +#~ " --omit-header don't write header with `msgid \"\"' " +#~ "entry\n" +#~ " -p, --output-dir=DIR output files will be placed in directory " +#~ "DIR\n" +#~ " -s, --sort-output generate sorted output and remove " +#~ "duplicates\n" +#~ " --strict write out strict Uniforum conforming .po " +#~ "file\n" +#~ " -T, --trigraphs understand ANSI C trigraphs for input\n" +#~ " -V, --version output version information and exit\n" +#~ " -x, --exclude-file=FILE entries from FILE are not extracted\n" +#~ "\n" +#~ "If INPUTFILE is -, standard input is read.\n" +#~ msgstr "" +#~ " -n, --add-location lag «#: filenavn:linje»-linjer " +#~ "(forvalgt)\n" +#~ " --omit-header ikkje lag startseksjon med «msgid \"\"»\n" +#~ " -p, --output-dir=KAT plassér utfiler i filkatalogen KAT\n" +#~ " -s, --sort-output sortér utdata og ta bort duplikat\n" +#~ " --strict lag strengt Uniforum-konform .po-fil\n" +#~ " -T, --trigraphs forstå ANSI C trigraphs i inndata\n" +#~ " -V, --version vis programversjon og avslutt\n" +#~ " -x, --exclude-file=FIL innslag frå FIL vert ikkje ekstrahert\n" +#~ "\n" +#~ "Dersom INNFIL er -, vil det verte lese frå standard inn.\n" + +#~ msgid "this file may not contain domain directives" +#~ msgstr "denne fila kan ikkje innehalde domene-nøkkelord" diff --git a/po/pl.gmo b/po/pl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..55e05f732a53343db2cae4a5839a1de2787f9e61 GIT binary patch literal 19540 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, 2005-2006. +# partially based on initial translation by Wojtek ¦lusarczyk of PLD, 1999. +# +msgid "" +msgstr "" +"Project-Id-Version: sharutils 4.6.3-pre4\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2006-05-20 09:26+0200\n" +"Last-Translator: Jakub Bogusz \n" +"Language-Team: Polish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Nieznany b³±d systemowy" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: opcja `%s' jest niejednoznaczna\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: opcja `--%s' nie mo¿e mieæ argumentu\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: opcja `%c%s' nie mo¿e mieæ argumentu\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: opcja `%s' wymaga argumentu\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: nierozpoznana opcja `--%s'\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: nierozpoznana opcja `%c%s'\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: niedopuszczalna opcja -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: b³êdna opcja -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: opcja wymaga argumentu -- %c\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: opcja `-W %s' jest niejednoznaczna\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: opcja `-W %s' nie mo¿e mieæ argumentu\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "pamiêæ wyczerpana" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "Uwaga: sumy md5 nie s± sprawdzane. Do tego potrzebne s± GNU coreutils." + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "UWAGA: nie przywrócono znacznika czasu." + +#: src/shar.c:645 +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "Do tego potrzebny jest GNU `touch'\\'' z pakietu GNU coreutils..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "katalog blokuj±cy '${lock_dir}' istnieje" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "nie uda³o siê utworzyæ katalogu blokuj±cego" + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "x - utworzono katalog blokuj±cy `'%s\\''." + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "x - nie uda³o siê utworzyæ katalogu blokuj±cego `'%s\\''." + +#: src/shar.c:671 +msgid "yes" +msgstr "tak" + +#: src/shar.c:671 +msgid "overwrite this file" +msgstr "nadpisanie tego pliku" + +#: src/shar.c:672 +msgid "no" +msgstr "nie" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "pominiêcie tego pliku" + +#: src/shar.c:673 +msgid "all" +msgstr "wszystkie" + +#: src/shar.c:673 +msgid "overwrite all files" +msgstr "nadpisanie wszystkich plików" + +#: src/shar.c:674 +msgid "none" +msgstr "¿aden" + +#: src/shar.c:674 +msgid "overwrite no files" +msgstr "nie nadpisywanie ¿adnego pliku" + +#: src/shar.c:675 +msgid "help" +msgstr "pomoc" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "wyja¶nienie opcji" + +#: src/shar.c:676 +msgid "quit" +msgstr "koniec" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "natychmiastowe zakoñczenie" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Zbyt wiele katalogów dla programu mkdir" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "x - utworzono katalog `%s'\\''." + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "x - nie uda³o siê utworzyæ katalogu `%s'\\''." + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "Brak dostêpu do %s" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "-C jest przestarza³e, nale¿y u¿yæ opcji -Z" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "Nie mo¿na pobraæ nazwy bie¿±cego katalogu" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" +"Archiwa musz± byæ rozpakowywane w kolejno¶ci!\n" +"Proszê rozpakowaæ teraz czê¶æ '`cat ${lock_dir}/seq`'." + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "Nowy plik, pozosta³o %s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "Ograniczenie rozmiaru to nadal %s\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "przywrócenie %s nie powiod³o siê" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "Koniec czê¶ci %d, ci±g dalszy w czê¶ci %d" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Pocz±tkowy plik %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: To nie jest zwyk³y plik" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "W shar: pozosta³y rozmiar %s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "pusty" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(pusty)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "Nie mo¿na otworzyæ pliku %s" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "skompresowany" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "skompresowany gzipem" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "skompresowany bzipem" + +#: src/shar.c:1151 +msgid "binary" +msgstr "binarny" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(skompresowany" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(skompresowany gzipem)" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(skompresowany bzipem)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(binarny)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "Nie mo¿na wykonaæ fork" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Plik %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "tekst" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(tekst)" + +#: src/shar.c:1251 +#, c-format +msgid "overwriting %s" +msgstr "nadpisywanie %s" + +#: src/shar.c:1253 +#, c-format +msgid "overwrite %s" +msgstr "nadpisaæ %s" + +#: src/shar.c:1257 +#, c-format +msgid "SKIPPING %s" +msgstr "POMINIÊTO %s" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "rozpakowywanie przerwane" + +#: src/shar.c:1262 +#, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "POMINIÊTO %s (plik ju¿ istnieje)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Zapisywanie %s (%s)" + +#: src/shar.c:1276 +#, c-format +msgid "x - extracting %s %s" +msgstr "x - rozpakowywanie %s %s" + +#: src/shar.c:1392 +#, c-format +msgid "restore of %s failed\n" +msgstr "przywrócenie %s nie powiod³o siê\n" + +#: src/shar.c:1401 +#, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "Koniec czê¶ci %ld, ci±g dalszy w czê¶ci %ld" + +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "Koniec czê¶ci %2$d %1$s" + +#: src/shar.c:1408 +msgid "archive" +msgstr "archiwum" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "Plik %s bêdzie kontynuowany w czê¶ci %d" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "Proszê najpierw rozpakowaæ pierwsz± czê¶æ!" + +#: src/shar.c:1460 +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "Proszê nastêpnie rozpakowaæ czê¶æ '${shar_sequence}'!" + +#: src/shar.c:1471 +#, c-format +msgid "STILL SKIPPING %s" +msgstr "NADAL POMINIÊTO %s" + +#: src/shar.c:1479 +#, c-format +msgid "continuing file %s" +msgstr "ci±g dalszy pliku %s" + +#: src/shar.c:1497 +#, c-format +msgid "File %s is complete" +msgstr "Plik %s jest kompletny" + +#: src/shar.c:1504 +#, c-format +msgid "uudecoding file %s" +msgstr "dekodowanie pliku %s programem uudecode" + +#: src/shar.c:1514 +#, c-format +msgid "uncompressing file %s" +msgstr "rozpakowywanie pliku %s programem uncompress" + +#: src/shar.c:1522 +#, c-format +msgid "gunzipping file %s" +msgstr "rozpakowywanie pliku %s programem gunzip" + +#: src/shar.c:1530 +#, c-format +msgid "bunzipping file %s" +msgstr "rozpakowywanie pliku %s programem bunzip" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "Sprawdzenie sumy kontrolnej MD5 nie powiod³o siê" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "'uwaga odzyskiwania: rozmiar %s nie wynosi %s'\n" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "przydzielanie nazwy pliku wyj¶ciowego" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "Otwieranie `%s'" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Zamykanie `%s'" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Wywo³anie `%s --help' poda wiêcej informacji.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Sk³adnia: %s [OPCJA]... [PLIK]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Argumenty obowi±zkowe dla opcji d³ugich obowi±zuj± równie¿ dla opcji " +"krótkich.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"Sterowanie komunikatami:\n" +" --help wy¶wietlenie tego opisu i zakoñczenie\n" +" --version wy¶wietlenie informacji o wersji i zakoñczenie\n" +" -q, --quiet, --silent nie wypisywanie lokalnie szczegó³owych " +"komunikatów\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Wybór plików:\n" +" -p, --intermix-type dopuszczenie -[BTzZ] w listach plików do zmiany " +"trybu\n" +" -S, --stdin-file-list odczyt listy plików ze standardowego wej¶cia\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Wybór plików:\n" +" -p, --intermix-type dopuszczenie -[BTz] w listach plików do zmiany " +"trybu\n" +" -S, --stdin-file-list odczyt listy plików ze standardowego wej¶cia\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"Dzielenie wyj¶cia:\n" +" -o, --output-file=PREFIKS zapis do plików PREFIKS.01 do PREFIKS.NN\n" +" -l, --whole-size-limit=ILE dzielenie archiwum, nie plików, na ILE kB\n" +" -L, --split-size-limit=ILE dzielenie archiwum lub plików, na ILE kB\n" + +#: src/shar.c:1759 +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Sterowanie nag³ówkami shara:\n" +" -n, --archive-name=NAZWA u¿ycie NAZWY dla archiwum\n" +" -s, --submitter=ADRES nadpisanie nazwy wysy³aj±cego\n" +" -a, --net-headers dodanie nag³ówków Submitted-by: oraz Archive-" +"name:\n" +" -c, --cut-mark rozpoczêcie archiwum lini± obciêcia\n" +" -t, --translate przet³umaczenie wiadomo¶ci w skrypcie\n" +"\n" +"Wybór sposobu zapisu plików:\n" +" -M, --mixed-uuencode dynamiczny wybór uuencode (domy¶lne)\n" +" -T, --text-files wszystkie pliki s± tekstowe\n" +" -B, --uuencode wszystkie pliki s± binarne, wymagaj± " +"uuencode\n" +" -z, --gzip u¿ycie gzipa i uuencode dla wszystkich " +"plików\n" +" -g, --level-for-gzip=POZIOM przekazanie -POZIOM do gzipa (domy¶lnie 9)\n" +" -j, --bzip2 u¿ycie bzip2 i uuencode dla wszystkich " +"plików\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress u¿ycie compress i uuencode dla wszystkich " +"plików\n" +" -b, --bits-per-code=BITÓW przekazanie -bBITÓW (domy¶lnie 12) do " +"compress\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Ochrona transmisji:\n" +" -w, --no-character-count nie u¿ywanie `wc -c' do sprawdzania " +"rozmiaru\n" +" -D, --no-md5-digest nie u¿ywanie skrótu `md5sum' do weryfikacji\n" +" -F, --force-prefix wymuszenie znaku lokalizacji dla ka¿dej " +"linii\n" +" -d, --here-delimiter=£AÑCUCH u¿yj £AÑCUCHA do ograniczania plików\n" +"\n" +"Tworzenie ró¿nych rodzajów archiwów shar:\n" +" -V, --vanilla-operation tworzenie bardzo prostych i niewymagaj±cych " +"sharów\n" +" -P, --no-piping tworzenie tymczasowych plików na czas " +"rozpakowywania\n" +" -x, --no-check-existing nadpisywanie istniej±cych plików bez " +"ostrze¿enia\n" +" -X, --query-user pytanie przed nadpisywaniem plików (nie dla " +"sieci)\n" +" -m, --no-timestamp nie przywracanie czasu modyfikacji plików\n" +" -Q, --quiet-unshar nie wy¶wietlanie informacji podczas dekompresji\n" +" -f, --basename odtwarzanie w jednym podkatalogu, bez " +"hierarchii\n" +" --no-i18n nie tworzenie umiêdzynarodowionego skryptu\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"Opcja -o jest wymagana przy -l lub -L, opcja -n jest wymagana przy -a.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "Opcja -g implikuje -z, opcja -b implikuje -Z.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "Opcja -g implikuje -z.\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" +"B³êdy w programie nale¿y zg³aszaæ na adres <%s>, natomiast b³êdy\n" +"w t³umaczeniu - na .\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "b³êdne ograniczenie rozmiaru pliku `%s'" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "b³êdny format (pole liczbowe zbyt szerokie): '%s'\n" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "DEBUG nie zosta³o wybrane na etapie kompilacji" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "Twarde ograniczenie %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "Ten system nie obs³uguje -Z ('compress'), nale¿y u¿yæ -z" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "Miêkkie ograniczenie %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "niedozwolony prefiks wyj¶cia\n" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"To oprogramowanie jest darmowe; warunki kopiowania s± opisane w ¼ród³ach.\n" +"Autorzy nie daj± ¯ADNYCH gwarancji, w tym równie¿ gwarancji PRZYDATNO¦CI\n" +"DO SPRZEDA¯Y LUB DO KONKRETNYCH CELÓW.\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "UWAGA: Tryb vanilla nie jest interakcyjny" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "UWAGA: nadpisano opcje zachowywania nietekstowego" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Brak pliku wej¶ciowego" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "Nie mo¿na u¿yæ opcji -a bez -n" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "Nie mo¿na u¿yæ opcji -l ani -L bez -o" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "PROSZÊ unikaæ archiwów -X na Usenecie i w sieciach publicznych" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Rozpakowano ostatni± czê¶æ" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "Utworzono %d plików\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "x - usuniêto katalog blokuj±cy `'%s\\''." + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "x - nie uda³o siê usun±æ katalogu blokuj±cego `'%s\\''." + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "Nie znaleziono poleceñ pow³oki w %s" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s wygl±da jak surowy kod w jêzyku C, nie archiwum shellowe" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Nie znaleziono poleceñ shellowych po `cut' w %s" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s prawdopodobnie nie jest archiwum shellowym" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "Po linii `cut' nastêpuje: %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Uruchamianie procesu `sh'" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Argumenty obowi±zkowe dla opcji d³ugich obowi±zuj± równie¿ dla opcji " +"krótkich.\n" +"\n" +" -d, --directory=KATALOG przej¶cie do KATALOGU przed rozpakowaniem\n" +" -c, --overwrite przekazanie opcji -c dla shar aby nadpisaæ " +"pliki\n" +" -e, --exit-0 to samo co `--split-at=\"exit 0\"'\n" +" -E, --split-at=£AÑCUCH dzielenie po³±czonych sharów po £AÑCUCHU\n" +" -f, --force to samo co `-c'\n" +" --help wy¶wietlenie tego opisu i zakoñczenie\n" +" --version wy¶wietlenie informacji o wersji i " +"zakoñczenie\n" +"\n" +"Je¿eli nie podano PLIKU, dane zostan± pobrane ze standardowego wej¶cia.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "Nie mo¿na zmieniæ katalogu na `%s'" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "przydzielanie bufora na nazwy plików" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "standardowe wej¶cie" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "przydzielanie bufora na pliki" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: B³±d zapisu" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: Krótki plik" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: Brak lini `end'" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: dane nastêpuj±ce po znaku dope³niaj±cym `='" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: niedozwolona linia" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: Brak linii `begin'" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: Niedozwolony ~u¿ytkownik" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: U¿ytkownik `%s' nie istnieje" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "brak dostêpu do %s" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "odmowa zapisu do FIFO (%s)" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "nie pod±¿anie za dowi±zaniem symbolicznym (%s)" + +#: src/uudecode.c:408 +#, c-format +msgid "freopen of %s" +msgstr "freopen %s" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "chmod %s" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Sk³adnia: %s [PLIK]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Argumenty obowi±zkowe dla opcji d³ugich obowi±zuj± równie¿ dla opcji " +"krótkich.\n" +" -o, --output-file=PLIK zapis bezpo¶rednio do PLIKU\n" +" --help wy¶wietlenie tego opisu i zakoñczenie\n" +" --version wy¶wietlenie informacji o wersji i zakoñczenie\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "B³±d zapisu" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "B³±d odczytu" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Sk³adnia: %s [PLIK_WEJ¦CIOWY] PLIK_ZDALNY\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 u¿ycie kodowanie base64 zgodnie z RFC1521\n" +" --help wy¶wietlenie tego opisu i zakoñczenie\n" +" --version wy¶wietlenie informacji o wersji i zakoñczenie\n" + +#: src/uuencode.c:276 +#, c-format +msgid "fopen-ing %s" +msgstr "Otwieranie przez fopen %s" + +#: src/uuencode.c:278 +#, c-format +msgid "fstat-ing %s" +msgstr "Wykonywanie fstat na %s" diff --git a/po/pt.gmo b/po/pt.gmo new file mode 100644 index 0000000000000000000000000000000000000000..75944927563a6428997724d4bdfa3cf7d5595ad4 GIT binary patch literal 4019 zcma)oGw=##_@}JJW1W zSEs6bHoF3@Ad-uP;Dm(4g$OAJjvR6(hyxd-a6nuU5}yZd2>8A3p8bepiI#i+)77tD zz4w1#?LR(n?++E%BKN1cUwMa8&w>AbCx5v9agS0bz<+`f_~5-teHgq1egqt}&tvdI zJnw@a178L|2>uj&9Q;N5{`cU6JpUPd6#Ne;di1-L`V4p$oC62o`@wxs^n4eTbAJSi zzE|7#zXhM*`48a3;C=TgwFW*0%Dx;FJ>Le;fZqo@;Op)CH^7hb{3a;+{|bt~{{={|z+K-~l{ z!2J-EbAR$)rJe$R4N6=@$tQq^!HM)QBKJ#B{P`WI!M}lD1n-9wIj;|j9lPL@;19sZz+Zvqz`uacf+y~8^nU{s zzAKPd>RX`j{W6H_>NY6n|F~U$4TNs>Ic~8}E>gVS6M>QwA}_I$>mhFOi*VHXJ`2hv z+=`uYrug+Zx0H^=RPyK)xA09^6-ORil1oP~;X>jF-Ss8DNc_ZS$?HeCk6sV(u*fa7 zBbVf^#9c1QPw1?#1^#MoiM8;m=7LUxF1#C>VYa7pS8Aif*k+kFJ|3r2DlNc4RXBohn$*{;pnkdTVG$X+DpZTy!>THcyVP$PT?V7v@_L zF~{3cl^L(M)2!Kfee8VMJVq;G|InuSNGG=NHa4YA7BqTv^ny7A=O0m3pJ=oz%GBk0H!a7m zDs`04_SEk)?Yxez-XZ1GO6Gz%(HP>YEUD?;c78{#cq?A%xuiZcbkybEr5jiDt_ihJ zuo*@oU@+WG3V70Gin*)ui};H!5CS9{CX zd)iE0n&{|j>^DAWn7t8fPJmEZRKqNdHBY;+6x1e>*4BIH)pau!O*7Z8m&TX1>M)*{ zY?m}p2di>CvK=)T+m;B)(wg6Gmt}4jZijna;b!2Rc(!+t8L16g9GvV(DvdDC8%Y5* zAZfO+Ac`obV!jb_5R>M}Pii4ZxDm|AifaA!)wQd=n~RIb7uVM7Wxd(E)*tlb_pv?w zjlo)fU3MMa|NQdi`r7)Hy2wa8&zS_-#C2{G#;M8EEHipS9jhb4c~sh$N*xFo@B7R%M!n&ZaF$mFQX+rAc(D8ii=!x_VfRqETK&wai6+EjmByZ1e|F zT^;C&E>k33eP(It=}7*a)=Ou*=j8X&5`xjDou+c$q1>5h>8a?BXha zii7wZm3sxY2?L)mGLz=d>R1xmmd~wS??>m)pL-@ceJCvFZ(ASravCjp+tufXY1vUE z3CTM(Q=3WMS(=j5x|&dLFIMT)(E^+5t|ckLm}jCNC+W!1w(Ud@eN{SX-FMm6rE3$0 zbl)T-HDZPJleA0|ht95EHCbus$<)W#%zFCUy^+pduT$jqrIa?TIr32R)?tsYJ=jj; zu}!_Bu<_WZ?QyeJ982hEd2oz_q}optqv-uM$bg6qm4|PM4OPIo<`}CD6j6UKNTbn( z3jyA=iERQUMpMj3*C!RJste=Ay;<8&@lgy#kWj}i56mJw8A{7^&@;iVW8$%^2ZueT z+YCJxI{IAeWOFtu3kr~7#mO={oQ{~jc+x)P?ZJ0QF-IzyBS&PNTD9aX! z83PWer#a|tCYQ(9skBSxmjtyb(r{3v!i*llY@OZPNd6CWTwi~qR`piJ%Y)u}zn+leW;{-9 z4%f%J6bp<, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: GNU sharutils\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2002-06-24 20:30+0200\n" +"Last-Translator: unknown\n" +"Language-Team: Portugese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "" + +#: src/shar.c:645 +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "" + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "" + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "" + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "" + +#: src/shar.c:671 +msgid "yes" +msgstr "" + +#: src/shar.c:671 +msgid "overwrite this file" +msgstr "" + +#: src/shar.c:672 +msgid "no" +msgstr "" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "" + +#: src/shar.c:673 +msgid "all" +msgstr "" + +#: src/shar.c:673 +msgid "overwrite all files" +msgstr "" + +#: src/shar.c:674 +msgid "none" +msgstr "" + +#: src/shar.c:674 +msgid "overwrite no files" +msgstr "" + +#: src/shar.c:675 +msgid "help" +msgstr "" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "" + +#: src/shar.c:676 +msgid "quit" +msgstr "" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Demasiados nomes de directorias para poder criar uma directoria" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "" + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "" + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "No possvel aceder a %s" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "-C est a cair em desuso, utilize antes -Z" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "No se consegue obter o nome da directoria corrente" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" + +#: src/shar.c:976 src/shar.c:1383 +#, fuzzy, c-format +msgid "New file, remaining %s, " +msgstr "Ficheiro novo, espao ainda disponvel %ld," + +#: src/shar.c:977 src/shar.c:1384 +#, fuzzy, c-format +msgid "Limit still %s\n" +msgstr "O limite dura %d\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Arrancando o ficheiro %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: No um ficheiro ordinrio" + +#: src/shar.c:1067 +#, fuzzy, c-format +msgid "In shar: remaining size %s\n" +msgstr "Em shar: o espao ainda disponvel %ld\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "vazio" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "No possvel abrir o ficheiro %s" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "via `compress'" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "via `gzip'" + +#: src/shar.c:1150 +#, fuzzy +msgid "bzipped" +msgstr "via `gzip'" + +#: src/shar.c:1151 +msgid "binary" +msgstr "binrio" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "" + +#: src/shar.c:1154 +#, fuzzy +msgid "(bzipped)" +msgstr "via `gzip'" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "No possvel fazer um `fork'" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Ficheiro %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "texto" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "" + +#: src/shar.c:1251 +#, c-format +msgid "overwriting %s" +msgstr "" + +#: src/shar.c:1253 +#, c-format +msgid "overwrite %s" +msgstr "" + +#: src/shar.c:1257 +#, c-format +msgid "SKIPPING %s" +msgstr "" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "" + +#: src/shar.c:1262 +#, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Gravando %s (%s)" + +#: src/shar.c:1276 +#, fuzzy, c-format +msgid "x - extracting %s %s" +msgstr "Gravando %s (%s)" + +#: src/shar.c:1392 +#, fuzzy, c-format +msgid "restore of %s failed\n" +msgstr "Foram criados %d ficheiros\n" + +#: src/shar.c:1401 +#, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "" + +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "" + +#: src/shar.c:1408 +msgid "archive" +msgstr "" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "" + +#: src/shar.c:1460 +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "" + +#: src/shar.c:1471 +#, c-format +msgid "STILL SKIPPING %s" +msgstr "" + +#: src/shar.c:1479 +#, fuzzy, c-format +msgid "continuing file %s" +msgstr "Arrancando o ficheiro %s\n" + +#: src/shar.c:1497 +#, c-format +msgid "File %s is complete" +msgstr "" + +#: src/shar.c:1504 +#, fuzzy, c-format +msgid "uudecoding file %s" +msgstr "Arrancando o ficheiro %s\n" + +#: src/shar.c:1514 +#, fuzzy, c-format +msgid "uncompressing file %s" +msgstr "No possvel abrir o ficheiro %s" + +#: src/shar.c:1522 +#, fuzzy, c-format +msgid "gunzipping file %s" +msgstr "Arrancando o ficheiro %s\n" + +#: src/shar.c:1530 +#, fuzzy, c-format +msgid "bunzipping file %s" +msgstr "Arrancando o ficheiro %s\n" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "Abrindo `%s'" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Fechando `%s'" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Para mais informao, tente `%s --help'.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Utilizao: %s [OPO]... [FICHEIRO]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Os argumentos obrigatrios para as opes na forma longa so tambm\n" +"obrigatrios para a forma curta que lhe corresponde.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" + +#: src/shar.c:1759 +#, fuzzy +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Controlo dos cabealhos de `shar':\n" +" -n, --archive-name=NOME atribui ao arquivo o nome NOME\n" +" -s, --submitter=ENDERECO altera o nome original\n" +" -a, --net-headers produz os cabealhos Submitted-by: e Archive-" +"name:\n" +" -c, --cut-mark coloca uma linha de demarcao no incio de `shar'\n" +"\n" +"Metodos de armazenamento:\n" +" -M, --mixed-uuencode faz `uuencode' dinamicamente (por defeito)\n" +" -T, --text-files considera todos os ficheiros de texto\n" +" -B, --uuencode considera todos os ficheiros binrios,\n" +" usa `uuencode'\n" +" -z, --gzip aplica `gzip' e `uuencode' a todos os " +"ficheiros\n" +" -g, --level-for-gzip=NIVEL fornece -NIVEL (valor defeito 9) a `gzip'\n" +" -Z, --compress aplica `compress' e `uuencode' a todos os\n" +" ficheiros\n" +" -b, --bits-per-code=BITS fornece -bBITS (valor defeito 12) a " +"`compress'\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" + +#: src/shar.c:1800 +#, fuzzy +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"Exige-se a opo -o com -l ou -L, exige-se a opo -n com -a.\n" +"A opo -g implica -z, a opo -b implica -Z.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "No se escolheu DEBUG durante a compilao" + +#: src/shar.c:1986 +#, fuzzy, c-format +msgid "Hard limit %s\n" +msgstr "Limite tipo `hard' de %dk\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "" + +#: src/shar.c:2061 +#, fuzzy, c-format +msgid "Soft limit %s\n" +msgstr "Limite tipo `soft' de %dk\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "ATENO: No h interveno do utilizador no modo `vanilla'" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "ATENO: As opes para armazenamento no-textual foram anuladas" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Nenhum ficheiro de entrada" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "No se pode usar a opo -a sem a opo -n" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "No se pode usar a opo -l ou -L sem a opo -o" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "" +"Por favor, evite -X em arquivos de shell com grande difuso (redes pblicas)" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "Foram criados %d ficheiros\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "" + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "" + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "No foi encontrado nenhum comando de shell, em %s" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s parece ser cdigo C em bruto, no um arquivo de shell" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "No foi encontrado nenhum comando de shell aps o `cut', em %s" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s provavelmente nao um arquivo de shell" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr " linha de demarcao seguiu-se: %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Arrancando o processo `sh'" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "No possvel mudar para a directoria `%s'" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "entrada standard" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, fuzzy, c-format +msgid "%s: Write error" +msgstr "Erro durante a escrita" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: Ficheiro de dimenso reduzida" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: Falta a linha `end'" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: Falta a linha `begin'" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: ~utilizador no permitido" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: No existe o utilizador `%s'" + +#: src/uudecode.c:390 +#, fuzzy, c-format +msgid "cannot access %s" +msgstr "No possvel aceder a %s" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "" + +#: src/uudecode.c:408 +#, fuzzy, c-format +msgid "freopen of %s" +msgstr "Abrindo `%s'" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Utilizao: %s [FICHEIRO]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Erro durante a escrita" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Erro durante a leitura" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Utilizao: %s [FICHEIRO_DE_ENTRADA] FICHEIRO_REMOTO\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" + +#: src/uuencode.c:276 +#, fuzzy, c-format +msgid "fopen-ing %s" +msgstr "Abrindo `%s'" + +#: src/uuencode.c:278 +#, fuzzy, c-format +msgid "fstat-ing %s" +msgstr "Arrancando o ficheiro %s\n" + +#, fuzzy +#~ msgid "created %s" +#~ msgstr "Foram criados %d ficheiros\n" + +#, fuzzy +#~ msgid "could not create %s" +#~ msgstr "No possvel fazer um `fork'" + +#~ msgid "" +#~ "\n" +#~ "Giving feedback:\n" +#~ " --help display this help and exit\n" +#~ " --version output version information and exit\n" +#~ " -q, --quiet, --silent do not output verbose messages locally\n" +#~ "\n" +#~ "Selecting files:\n" +#~ " -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +#~ " -S, --stdin-file-list read file list from standard input\n" +#~ "\n" +#~ "Splitting output:\n" +#~ " -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX." +#~ "NN\n" +#~ " -l, --whole-size-limit=SIZE split archive, not files, to SIZE " +#~ "kilobytes\n" +#~ " -L, --split-size-limit=SIZE split archive, or files, to SIZE " +#~ "kilobytes\n" +#~ msgstr "" +#~ "\n" +#~ "Mensagens informativas:\n" +#~ " --help apresenta esta mensagem de apoio e termina\n" +#~ " --version identifica o programa e termina\n" +#~ " -q, --quiet, --silent no apresenta mensagens pormenorizadas " +#~ "localmente\n" +#~ "\n" +#~ "Escolha dos ficheiros:\n" +#~ " -p, --intermix-type permite -[BTzZ] na lista de ficheiros para\n" +#~ " mudar de modo\n" +#~ " -S, --stdin-file-list ler a lista de ficheiros da entrada standard\n" +#~ "\n" +#~ "Delimitar os resultados:\n" +#~ " -o, --output-prefix=PREFIXO gera os ficheiros PREFIXO.01 a PREFIXO." +#~ "NN\n" +#~ " -l, --whole-size-limit=TAMANHO limita os arquivos, no os ficheiros,\n" +#~ " a TAMANHO kbytes\n" +#~ " -L, --split-size-limit=TAMANHO limita os arquivos, ou os ficheiros,\n" +#~ " a TAMANHO kbytes\n" diff --git a/po/quot.sed b/po/quot.sed new file mode 100644 index 0000000..0122c46 --- /dev/null +++ b/po/quot.sed @@ -0,0 +1,6 @@ +s/"\([^"]*\)"/“\1”/g +s/`\([^`']*\)'/‘\1’/g +s/ '\([^`']*\)' / ‘\1’ /g +s/ '\([^`']*\)'$/ ‘\1’/g +s/^'\([^`']*\)' /‘\1’ /g +s/“”/""/g diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin new file mode 100644 index 0000000..2436c49 --- /dev/null +++ b/po/remove-potcdate.sin @@ -0,0 +1,19 @@ +# Sed script that remove the POT-Creation-Date line in the header entry +# from a POT file. +# +# The distinction between the first and the following occurrences of the +# pattern is achieved by looking at the hold space. +/^"POT-Creation-Date: .*"$/{ +x +# Test if the hold space is empty. +s/P/P/ +ta +# Yes it was empty. First occurrence. Remove the line. +g +d +bb +:a +# The hold space was nonempty. Following occurrences. Do nothing. +x +:b +} diff --git a/po/ru.gmo b/po/ru.gmo new file mode 100644 index 0000000000000000000000000000000000000000..42b8585c16d97fe015076dad4dcd9de8ea9dd74e GIT binary patch literal 19442 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 jQ73D(Tdl*USHxCvas?q;^x=uxJ=S!xu), 1998. +# Pavel Maryanov , 2004, 2005, 2006. +msgid "" +msgstr "" +"Project-Id-Version: sharutils 4.6.3-pre4\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2006-05-22 14:35+0300\n" +"Last-Translator: Pavel Maryanov \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=KOI8-R\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.2\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÓÉÓÔÅÍÎÁÑ ÏÛÉÂËÁ" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: ÏÐÃÉÑ `%s' ÎÅ ÏÄÎÏÚÎÁÞÎÁ\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: ÏÐÃÉÑ `--%s' ÎÅ ÒÁÚÒÅÛÁÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÁÒÇÕÍÅÎÔ\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: ÏÐÃÉÑ `%c%s' ÎÅ ÒÁÚÒÅÛÁÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÁÒÇÕÍÅÎÔ\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: ÄÌÑ ÏÐÃÉÉ `%s' ÔÒÅÂÕÅÔÓÑ ÁÒÇÕÍÅÎÔ\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÏÐÃÉÑ `--%s'\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÏÐÃÉÑ `%c%s'\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÁÑ ÏÐÃÉÑ -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ÎÅ×ÅÒÎÁÑ ÏÐÃÉÑ -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: ÄÌÑ ÏÐÃÉÉ ÔÒÅÂÕÅÔÓÑ ÁÒÇÕÍÅÎÔ -- %c\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: ÏÐÃÉÑ `-W %s' ÎÅÏÄÎÏÚÎÁÞÎÁ\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: ÏÐÃÉÑ `-W %s' ÎÅ ÒÁÚÒÅÛÁÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÁÒÇÕÍÅÎÔ\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "ðÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" +"úÁÍÅÞÁÎÉÅ: md5-ÓÕÍÍÙ ÎÅ ÐÒÏ×ÅÒÑÀÔÓÑ. ëÁË ÎÁÓÞ£Ô ÕÓÔÁÎÏ×ËÉ coreutils ÏÔ GNU?" + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "ðòåäõðòåöäåîéå: ×ÒÅÍÅÎÎÙÅ ÍÅÔËÉ ÎÅ ×ÏÓÓÔÁÎÁ×ÌÉ×ÁÀÔÓÑ." + +#: src/shar.c:645 +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ GNU `touch'\\'' ÉÚ ÐÁËÅÔÁ GNU coreutils..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "ËÁÔÁÌÏÇ ÂÌÏËÉÒÏ×ËÉ '${lock_dir}' ÓÕÝÅÓÔ×ÕÅÔ" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ËÁÔÁÌÏÇ ÂÌÏËÉÒÏ×ËÉ" + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "x - ÓÏÚÄÁÎ ËÁÔÁÌÏÇ ÂÌÏËÉÒÏ×ËÉ `'%s\\''." + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "x - ÎÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ËÁÔÁÌÏÇ ÂÌÏËÉÒÏ×ËÉ `'%s\\''." + +#: src/shar.c:671 +msgid "yes" +msgstr "ÄÁ" + +#: src/shar.c:671 +msgid "overwrite this file" +msgstr "ÐÅÒÅÚÁÐÉÓÁÔØ ÜÔÏÔ ÆÁÊÌ" + +#: src/shar.c:672 +msgid "no" +msgstr "ÎÅÔ" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "ÐÒÏÐÕÓÔÉÔØ ÜÔÏÔ ÆÁÊÌ" + +#: src/shar.c:673 +msgid "all" +msgstr "×ÓÅ" + +#: src/shar.c:673 +msgid "overwrite all files" +msgstr "ÐÅÒÅÚÁÐÉÓÁÔØ ×ÓÅ ÆÁÊÌÙ" + +#: src/shar.c:674 +msgid "none" +msgstr "ÎÉ ÏÄÎÏÇÏ" + +#: src/shar.c:674 +msgid "overwrite no files" +msgstr "ÎÅ ÐÅÒÅÚÁÐÉÓÙ×ÁÔØ ÆÁÊÌÙ" + +#: src/shar.c:675 +msgid "help" +msgstr "ÐÏÍÏÝØ" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "ÏÂßÑÓÎÅÎÉÅ ×ÁÒÉÁÎÔÏ×" + +#: src/shar.c:676 +msgid "quit" +msgstr "×ÙÈÏÄ" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "×ÙÊÔÉ ÎÅÍÅÄÌÅÎÎÏ" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ËÁÔÁÌÏÇÏ× ÄÌÑ ÓÏÚÄÁÎÉÑ Ó ÐÏÍÏÝØÀ mkdir" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "x - ÓÏÚÄÁÎ ËÁÔÁÌÏÇ `%s'\\''." + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "x - ÎÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ËÁÔÁÌÏÇ `%s'\\''." + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÄÏÓÔÕÐ Ë %s" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "ïÐÃÉÑ C ÎÅ ÏÄÏÂÒÑÅÔÓÑ, ÉÓÐÏÌØÚÕÊÔÅ -Z" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÉÍÑ ÔÅËÕÝÅÇÏ ËÁÔÁÌÏÇÁ" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" +"áÒÈÉ×Ù ÄÏÌÖÎÙ ÂÙÔØ ÒÁÓÐÁËÏ×ÁÎÙ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏ!\n" +"ðÏÖÁÌÕÊÓÔÁ, ÓÌÅÄÕÀÝÅÊ ÒÁÓÐÁËÕÊÔÅ ÞÁÓÔØ '`cat ${lock_dir}/seq`'." + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "îÏ×ÙÊ ÆÁÊÌ, ÏÓÔÁÌÏÓØ %s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "ïÇÒÁÎÉÞÅÎÉÅ ×ÓÅ ÅÝÅ %s\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "ÎÅ ÕÄÁÌÏÓØ ×ÏÓÓÔÁÎÏ×ÉÔØ %s" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "ëÏÎÅà ÞÁÓÔÉ %d, ÐÒÏÄÏÌÖÅÎÉÅ × ÞÁÓÔÉ %d" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "îÁÞÁÌÏ ÆÁÊÌÁ %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: îÅ Ñ×ÌÑÅÔÓÑ ÏÂÙÞÎÙÍ ÆÁÊÌÏÍ" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "÷ shar: ÏÓÔÁ×ÛÉÊÓÑ ÒÁÚÍÅÒ %s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "ÐÕÓÔÏÊ" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(ÐÕÓÔÏÊ)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ %s" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "ÓÖÁÔÙÊ" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "ÓÖÁÔÙÊ gzip" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "ÓÖÁÔÙÊ bzip" + +#: src/shar.c:1151 +msgid "binary" +msgstr "Ä×ÏÉÞÎÙÊ" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(ÓÖÁÔÙÊ)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(ÓÖÁÔÙÊ gzip)" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(ÓÖÁÔÙÊ bzip)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(Ä×ÏÉÞÎÙÊ)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÄÏÞÅÒÎÉÊ ÐÒÏÃÅÓÓ" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "æÁÊÌ %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "ÔÅËÓÔÏ×ÙÊ" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(ÔÅËÓÔÏ×ÙÊ)" + +#: src/shar.c:1251 +#, c-format +msgid "overwriting %s" +msgstr "ÐÅÒÅÚÁÐÉÓÙ×ÁÅÔÓÑ %s" + +#: src/shar.c:1253 +#, c-format +msgid "overwrite %s" +msgstr "ÐÅÒÅÚÁÐÉÓÁÔØ %s" + +#: src/shar.c:1257 +#, c-format +msgid "SKIPPING %s" +msgstr "ðòïðõóëáåôóñ %s" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "ÉÚ×ÌÅÞÅÎÉÅ ÐÒÅÒ×ÁÎÏ" + +#: src/shar.c:1262 +#, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "ðòïðõóëáåôóñ %s (ÆÁÊÌ ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "óÏÈÒÁÎÑÅÔÓÑ %s (%s)" + +#: src/shar.c:1276 +#, c-format +msgid "x - extracting %s %s" +msgstr "x - ÉÚ×ÌÅËÁÅÔÓÑ %s %s" + +#: src/shar.c:1392 +#, c-format +msgid "restore of %s failed\n" +msgstr "ÎÅ ÕÄÁÌÏÓØ ×ÏÓÓÔÁÎÏ×ÉÔØ%s\n" + +#: src/shar.c:1401 +#, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "ëÏÎÅà ÞÁÓÔÉ %ld, ÐÒÏÄÏÌÖÅÎÉÅ × ÞÁÓÔÉ %ld" + +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "ëÏÎÅà %s ÞÁÓÔÉ %d" + +#: src/shar.c:1408 +msgid "archive" +msgstr "ÁÒÈÉ×Á" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "æÁÊÌ %s ÐÒÏÄÏÌÖÁÅÔÓÑ × ÞÁÓÔÉ %d" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "òÁÓÐÁËÕÊÔÅ ÓÎÁÞÁÌÁ ÞÁÓÔØ 1, ÐÏÖÁÌÕÊÓÔÁ!" + +#: src/shar.c:1460 +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "ðÏÖÁÌÕÊÓÔÁ, ÓÌÅÄÕÀÝÅÊ ÒÁÓÐÁËÕÊÔÅ ÞÁÓÔØ '${shar_sequence}'!" + +#: src/shar.c:1471 +#, c-format +msgid "STILL SKIPPING %s" +msgstr "÷ó³ åý³ ðòïðõóëáåôóñ %s" + +#: src/shar.c:1479 +#, c-format +msgid "continuing file %s" +msgstr "ÐÒÏÄÏÌÖÅÎÉÅ ÆÁÊÌÁ %s" + +#: src/shar.c:1497 +#, c-format +msgid "File %s is complete" +msgstr "æÁÊÌ %s ÚÁ×ÅÒÛ£Î" + +#: src/shar.c:1504 +#, c-format +msgid "uudecoding file %s" +msgstr "ÄÅËÏÄÉÒÕÅÔÓÑ uue-ÆÁÊÌ %s" + +#: src/shar.c:1514 +#, c-format +msgid "uncompressing file %s" +msgstr "ÒÁÓÐÁËÏ×Ù×ÁÅÔÓÑ ÆÁÊÌ %s" + +#: src/shar.c:1522 +#, c-format +msgid "gunzipping file %s" +msgstr "ÒÁÓÐÁËÏ×Ù×ÁÅÔÓÑ gzip-ÆÁÊÌ %s" + +#: src/shar.c:1530 +#, c-format +msgid "bunzipping file %s" +msgstr "ÒÁÓÐÁËÏ×Ù×ÁÅÔÓÑ bzip-ÆÁÊÌ %s" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "óÂÏÊ ÐÒÏ×ÅÒËÉ MD5" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "'ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ ÐÒÉ ×ÏÓÓÔÁÎÏ×ÌÅÎÉÉ: ÒÁÚÍÅÒ %s ÎÅ ÒÁ×ÅÎ %s'\n" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "ÎÁÚÎÁÞÁÅÔÓÑ ÉÍÑ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "ïÔËÒÙ×ÁÅÔÓÑ `%s'" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "úÁËÒÙ×ÁÅÔÓÑ `%s'" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "ðÏÐÒÏÂÕÊÔÅ `%s --help' ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÉÎÆÏÒÍÁÃÉÉ.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ïðãéñ]... [æáêì]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"ïÂÑÚÁÔÅÌØÎÙÅ ÁÒÇÕÍÅÎÔÙ ÄÌÑ ÄÌÉÎÎÙÈ ÏÐÃÉÊ ÔÁËÖÅ Ñ×ÌÑÀÔÓÑ ÏÂÑÚÁÔÅÌØÎÙÍÉ\n" +"É ÄÌÑ ËÏÒÏÔËÉÈ ÏÐÃÉÊ.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"ïÂÒÁÔÎÁÑ Ó×ÑÚØ:\n" +" --help ×Ù×ÏÄ ÜÔÏÊ ÓÐÒÁ×ËÉ É ×ÙÈÏÄ\n" +" --version ×Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ×ÅÒÓÉÉ É ×ÙÈÏÄ\n" +" -q, --quiet, --silent ÎÅ ×Ù×ÏÄÉÔØ ÌÏËÁÌØÎÏ ÐÏÄÒÏÂÎÙÅ ÓÏÏÂÝÅÎÉÑ\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"÷ÙÂÏÒ ÆÁÊÌÏ×:\n" +" -p, --intermix-type ÒÁÚÒÅÛÅÎÉÅ -[BTzZ] × ÓÐÉÓËÁÈ ÆÁÊÌÏ×\n" +" ÄÌÑ ÉÚÍÅÎÅÎÉÑ ÒÅÖÉÍÁ\n" +" -S, --stdin-file-list ÞÔÅÎÉÅ ÓÐÉÓËÁ ÆÁÊÌÏ× ÓÏ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"÷ÙÂÏÒ ÆÁÊÌÏ×:\n" +" -p, --intermix-type ÒÁÚÒÅÛÅÎÉÅ -[BTz] × ÓÐÉÓËÁÈ ÆÁÊÌÏ× ÄÌÑ ÉÚÍÅÎÅÎÉÑ " +"ÒÅÖÉÍÁ\n" +" -S, --stdin-file-list ÞÔÅÎÉÅ ÓÐÉÓËÁ ÆÁÊÌÏ× ÓÏ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"òÁÚÂÉ×ËÁ ×Ù×ÏÄÁ:\n" +" -o, --output-prefix=ðòåæéëó ×Ù×ÏÄ × ÆÁÊÌ ðòåæéëó.01 ÞÅÒÅÚ ðòåæéëó.NN\n" +" -l, --whole-size-limit=òáúíåò ÒÁÚÂÉ×ËÁ ÁÒÈÉ×Á, Á ÎÅ ÆÁÊÌÏ×, ÎÁ òáúíåò " +"ËÉÌÏÂÁÊÔ\n" +" -L, --split-size-limit=òáúíåò ÒÁÚÂÉ×ËÁ ÁÒÈÉ×Á ÉÌÉ ÆÁÊÌÏ× ÎÁ òáúíåò " +"ËÉÌÏÂÁÊÔ\n" + +#: src/shar.c:1759 +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"õÐÒÁ×ÌÅÎÉÅ ÚÁÇÏÌÏ×ËÁÍÉ shar:\n" +" -n, --archive-name=éíñ ÉÓÐÏÌØÚÏ×ÁÎÉÅ éíåîé ÄÌÑ ÏÐÉÓÁÎÉÑ ÁÒÈÉ×Á\n" +" -s, --submitter=áäòåó ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÉÍÅÎÉ ÏÔÐÒÁ×ÉÔÅÌÑ\n" +" -a, --net-headers ×Ù×ÏÄ ÚÁÇÏÌÏ×ËÏ× Submitted-by: É Archive-name:\n" +" -c, --cut-mark ÎÁÞÁÌÏ shar Ó ÌÉÎÉÉ ÏÔÒÅÚÁ\n" +" -t, --translate ÐÅÒÅ×ÏÄ ÓÏÏÂÝÅÎÉÊ × ÓËÒÉÐÔÅ\n" +"\n" +"÷ÙÂÏÒ ÔÉÐÁ ËÏÄÉÒÏ×ÁÎÉÑ ÆÁÊÌÏ×:\n" +" -M, --mixed-uuencode ÄÉÎÁÍÉÞÅÓËÏÅ ×ËÌÀÞÅÎÉÅ uue-ËÏÄÉÒÏ×ÁÎÉÑ (ÐÏ " +"ÕÍÏÌÞÁÎÉÀ)\n" +" -T, --text-files ÉÎÔÅÒÐÒÅÔÁÃÉÑ ×ÓÅÈ ÆÁÊÌÏ× ËÁË ÔÅËÓÔÏ×ÙÈ\n" +" -B, --uuencode ÉÎÔÅÒÐÒÅÔÁÃÉÑ ×ÓÅÈ ÆÁÊÌÏ× ËÁË Ä×ÏÉÞÎÙÈ,\n" +" ÉÓÐÏÌØÚÏ×ÁÎÉÅ uue-ËÏÄÉÒÏ×ÁÎÉÑ\n" +" -z, --gzip ÓÖÁÔÉÅ gzip É uue-ËÏÄÉÒÏ×ÁÎÉÅ ×ÓÅÈ ÆÁÊÌÏ×\n" +" -g, --level-for-gzip=õòï÷åîø ÐÅÒÅÄÁÞÁ -õòï÷åîø (ÐÏ ÕÍÏÌÞÁÎÉÀ 9) × gzip\n" +" -j, --bzip2 ÓÖÁÔÉÅ bzip É uue-ËÏÄÉÒÏ×ÁÎÉÅ ×ÓÅÈ ÆÁÊÌÏ×\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress ÓÖÁÔÉÅ compress É uue-ËÏÄÉÒÏ×ÁÎÉÅ ×ÓÅÈ " +"ÆÁÊÌÏ×\n" +" -b, --bits-per-code=âéôù ÐÅÒÅÄÁÞÁ -bâéôù (ÐÏ ÕÍÏÌÞÁÎÉÀ 12) × compress\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"úÁÝÉÔÁ ÐÒÉ ÐÅÒÅÄÁÞÅ:\n" +" -w, --no-character-count ÎÅ ÉÓÐÏÌØÚÏ×ÁÔØ `wc -c' ÄÌÑ ÐÒÏ×ÅÒËÉ ÒÁÚÍÅÒÁ\n" +" -D, --no-md5-digest ÎÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÉÇÎÁÔÕÒÕ `md5sum' ÄÌÑ " +"ÐÒÏ×ÅÒËÉ\n" +" -F, --force-prefix ÐÒÉÎÕÄÉÔÅÌØÎÁÑ ×ÓÔÁ×ËÁ ÓÉÍ×ÏÌÁ ÐÒÅÆÉËÓÁ " +"ËÁÖÄÕÀ ÓÔÒÏËÕ\n" +" -d, --here-delimiter=óôòïëá ÉÓÐÏÌØÚÏ×ÁÎÉÅ óôòïëé ÄÌÑ ÏÔÄÅÌÅÎÉÑ ÆÁÊÌÏ× × " +"shar\n" +"\n" +"óÏÚÄÁÎÉÅ ÒÁÚÌÉÞÎÙÈ ÔÉÐÏ× shar:\n" +" -V, --vanilla-operation ÓÏÚÄÁÎÉÅ ÏÞÅÎØ ÐÒÏÓÔÙÈ É ÎÅÔÒÅÂÏ×ÁÔÅÌØÎÙÈ " +"ÁÒÈÉ×Ï×\n" +" -P, --no-piping ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÔÏÌØËÏ ×ÒÅÍÅÎÎÙÈ ÆÁÊÌÏ× ÐÒÉ " +"ÒÁÓÐÁËÏ×ËÅ\n" +" -x, --no-check-existing ÓÌÅÐÁÑ ÐÅÒÅÚÁÐÉÓØ ÓÕÝÅÓÔ×ÕÀÝÉÈ ÆÁÊÌÏ×\n" +" -X, --query-user ÚÁÐÒÏÓ Õ ÐÏÌØÚÏ×ÁÔÅÌÑ ÐÅÒÅÄ ÐÅÒÅÚÁÐÉÓØÀ ÆÁÊÌÏ×\n" +" -m, --no-timestamp ÎÅ ×ÏÓÓÔÁÎÁ×ÌÉ×ÁÔØ ÄÁÔÙ É ×ÒÅÍÅÎÁ ÉÚÍÅÎÅÎÉÑ " +"ÆÁÊÌÏ×\n" +" -Q, --quiet-unshar ÐÏÄÁ×ÌÅÎÉÅ ÐÏÄÒÏÂÎÙÈ ÓÏÏÂÝÅÎÉÊ ÐÒÉ ÒÁÓÐÁËÏ×ËÅ\n" +" -f, --basename ÒÁÓÐÁËÏ×ËÁ × ÏÄÉÎ ËÁÔÁÌÏÇ ÂÅÚ ÓÏÈÒÁÎÅÎÉÑ " +"ÉÅÒÁÒÈÉÉ\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"äÌÑ ÏÐÃÉÉ -o ÔÒÅÂÕÅÔÓÑ -l ÉÌÉ -L, ÄÌÑ ÏÐÃÉÉ -n is ÔÒÅÂÕÅÔÓÑ -a.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "" +"ïÐÃÉÑ -g ÐÏÄÒÁÚÕÍÅ×ÁÅÔ ÉÓÐÏÌØÚÏ×ÁÎÉÅ -z, ÏÐÃÉÑ -b ÐÏÄÒÁÚÕÍÅ×ÁÅÔ " +"ÉÓÐÏÌØÚÏ×ÁÎÉÅ -Z.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "ïÐÃÉÑ -g ÐÏÄÒÁÚÕÍÅ×ÁÅÔ ÉÓÐÏÌØÚÏ×ÁÎÉÅ -z.\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "ïÔÞÅÔÙ Ï ÏÛÉÂËÁÈ ÏÔÐÒÁ×ÌÑÊÔÅ ÎÁ <%s>.\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "ÎÅ×ÅÒÎÏÅ ÐÒÅÄÅÌØÎÏÅ ÚÎÁÞÅÎÉÅ ÒÁÚÍÅÒÁ ÆÁÊÌÁ `%s'" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "ÎÅ×ÅÒÎÙÊ ÆÏÒÍÁÔ (ÐÏÌÅ ÓÞ£ÔÞÉËÁ ÓÌÉÛËÏÍ ÄÌÉÎÎÏÅ): '%s'\n" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "ïÐÃÉÑ DEBUG ÎÅ ÂÙÌÁ ×ÙÂÒÁÎÁ ×Ï ×ÒÅÍÑ ËÏÍÐÉÌÑÃÉÉ" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "öÅÓÔËÏÅ ÏÇÒÁÎÉÞÅÎÉÅ %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "üÔÁ ÓÉÓÔÅÍÁ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ -Z ('compress'), ×ÍÅÓÔÏ ÎÅÅ ÉÓÐÏÌØÚÕÊÔÅ -z" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "íÑÇËÏÅ ÏÇÒÁÎÉÞÅÎÉÅ %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ÐÒÅÆÉËÓ ×Ù×ÏÄÁ\n" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"üÔÏ Ó×ÏÂÏÄÎÏÅ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ. õÓÌÏ×ÉÑ ÅÇÏ ËÏÐÉÒÏ×ÁÎÉÑ ÓÍÏÔÒÉÔÅ ×\n" +"ÉÓÈÏÄÎÙÈ ÔÅËÓÔÁÈ. îÅ ÐÒÅÄÏÓÔÁ×ÌÑÅÔÓÑ îéëáëïê ÇÁÒÁÎÔÉÉ; ÄÁÖÅ ÇÁÒÁÎÔÉÉ\n" +"ðòéçïäîïóôé äìñ ðòïäáöé ÉÌÉ ðòéíåîéíïóôé äìñ ëïîëòåôîïê ãåìé.\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "ðòåäõðòåöäåîéå: ÷ ÒÅÖÉÍÅ vanilla ÎÅÔ ÄÉÁÌÏÇÁ Ó ÐÏÌØÚÏ×ÁÔÅÌÅÍ" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "ðòåäõðòåöäåîéå: ïÐÃÉÉ ÈÒÁÎÅÎÉÑ ÎÅÔÅËÓÔÏ×ÙÈ ÆÁÊÌÏ× ÐÅÒÅÏÐÒÅÄÅÌÅÎÙ" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "îÅÔ ×ÈÏÄÎÙÈ ÆÁÊÌÏ×" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "ïÐÃÉÀ -a ÎÅ×ÏÚÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÂÅÚ -n" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "ïÐÃÉÉ -l ÉÌÉ -L ÎÅ×ÏÚÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÂÅÚ -o" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "ðïöáìõêóôá, ÉÚÂÅÇÁÊÔÅ ÒÅÖÉÍÁ -X × Usenet ÉÌÉ ÏÂÝÅÄÏÓÔÕÐÎÙÈ ÓÅÔÑÈ" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "÷Ù ÒÁÓÐÁËÏ×ÁÌÉ ÐÏÓÌÅÄÎÀÀ ÞÁÓÔØ" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "óÏÚÄÁÎÏ ÆÁÊÌÏ×: %d\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "x - ÕÄẠ́ΠËÁÔÁÌÏÇ ÂÌÏËÉÒÏ×ËÉ `'%s\\''." + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "x - ÎÅ ÕÄÁÌÏÓØ ÕÄÁÌÉÔØ ËÁÔÁÌÏÇ ÂÌÏËÉÒÏ×ËÉ `'%s\\''." + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "÷ %s ÎÅ ÎÁÊÄÅÎÙ shell-ËÏÍÁÎÄÙ" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s ÐÏÈÏÖ ÎÁ ÎÅÏÂÒÁÂÏÔÁÎÎÙÊ ËÏÄ C, Á ÎÅ ÎÁ shell-ÁÒÈÉ×" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "÷ %s ÐÏÓÌÅ `cut' ÎÅ ÎÁÊÄÅÎÙ shell-ËÏÍÁÎÄÙ" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "÷ÅÒÏÑÔÎÏ, %s ÎÅ Ñ×ÌÑÅÔÓÑ shell-ÁÒÈÉ×ÏÍ" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "ðÏÓÌÅ ÓÔÒÏËÉ `cut' ÓÌÅÄÕÅÔ: %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "úÁÐÕÓËÁÅÔÓÑ ÐÒÏÃÅÓÓ `sh'" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"ïÂÑÚÁÔÅÌØÎÙÅ ÁÒÇÕÍÅÎÔÙ ÄÌÑ ÄÌÉÎÎÙÈ ÏÐÃÉÊ ÔÁËÖÅ Ñ×ÌÑÀÔÓÑ ÏÂÑÚÁÔÅÌØÎÙÍÉ\n" +"É ÄÌÑ ËÏÒÏÔËÉÈ ÏÐÃÉÊ.\n" +"\n" +" -d, --directory=ëáôáìïç ÐÅÒÅÈÏÄ × ëáôáìïç ÐÅÒÅÄ ÒÁÓÐÁËÏ×ËÏÊ\n" +" -c, --overwrite ÐÅÒÅÄÁÞÁ -c × ÓËÒÉÐÔ shar ÄÌÑ ÐÅÒÅÚÁÐÉÓÉ " +"ÆÁÊÌÏ×\n" +" -e, --exit-0 ÜË×É×ÁÌÅÎÔ `--split-at=\"exit 0\"'\n" +" -E, --split-at=óôòïëá ÒÁÚÂÉÅÎÉÅ ÏÂßÅÄÉÎÅÎÎÙÈ shar-ÁÒÈÉ×Ï× ÐÏÓÌÅ " +"óôòïëé\n" +" -f, --force ÜË×É×ÁÌÅÎÔ `-c'\n" +" --help ×Ù×ÏÄ ÜÔÏÊ ÓÐÒÁ×ËÉ É ×ÙÈÏÄ\n" +" --version ×Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ×ÅÒÓÉÉ É ×ÙÈÏÄ\n" +"\n" +"åÓÌÉ æáêì ÎÅ ÕËÁÚÁÎ, ÞÔÅÎÉÅ ÐÒÏÉÚ×ÏÄÉÔÓÑ ÓÏ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÊÔÉ × ËÁÔÁÌÏÇ `%s'" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "ÎÁÚÎÁÞÅÎÉÅ ÂÕÆÅÒÁ ÉÍÅÎÉ ÆÁÊÌÁ" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "ÓÔÁÎÄÁÒÔÎÙÊ ××ÏÄ" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "ÎÁÚÎÁÞÅÎÉÅ ÂÕÆÅÒÁ ÆÁÊÌÁ" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: ïÛÉÂËÁ ÚÁÐÉÓÉ" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: ëÏÒÏÔËÉÊ ÆÁÊÌ" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: îÅÔ ÓÔÒÏËÉ `end'" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: ÄÁÎÎÙÅ, ÓÌÅÄÕÀÝÉÅ ÐÏÓÌÅ ÓÉÍ×ÏÌÁ `='" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÁÑ ÓÔÒÏËÁ" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: îÅÔ ÓÔÒÏËÉ `begin'" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: îÅÄÏÐÕÓÔÉÍÙÊ ~ÐÏÌØÚÏ×ÁÔÅÌØ" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: îÅÔ ÐÏÌØÚÏ×ÁÔÅÌÑ `%s'" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÄÏÓÔÕÐ Ë %s" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "ÚÁÐÒÅÝÅÎÁ ÚÁÐÉÓØ FIFO (%s)" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "ÎÅÔ ÓÌÅÄÕÀÝÅÊ ÓÉÍ×ÏÌÉÞÅÓËÏÊ ÓÓÙÌËÉ (%s)" + +#: src/uudecode.c:408 +#, c-format +msgid "freopen of %s" +msgstr "÷ÙÐÏÌÎÑÅÔÓÑ freopen %s" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "÷ÙÐÏÌÎÑÅÔÓÑ chmod %s" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [æáêì]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"ïÂÑÚÁÔÅÌØÎÙÅ ÁÒÇÕÍÅÎÔÙ ÄÌÑ ÄÌÉÎÎÙÈ ÏÐÃÉÊ ÔÁËÖÅ Ñ×ÌÑÀÔÓÑ ÏÂÑÚÁÔÅÌØÎÙÍÉ\n" +"É ÄÌÑ ËÏÒÏÔËÉÈ ÏÐÃÉÊ.\n" +" -o, --output-file=æáêì ÎÁÐÒÁ×ÌÅÎÉÅ ×Ù×ÏÄÁ × æáêì\n" +" --help ×Ù×ÏÄ ÜÔÏÊ ÓÐÒÁ×ËÉ É ×ÙÈÏÄ\n" +" --version ×Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ×ÅÒÓÉÉ É ×ÙÈÏÄ\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "ïÛÉÂËÁ ÚÁÐÉÓÉ" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "ïÛÉÂËÁ ÞÔÅÎÉÑ" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [÷èïäîïê_æáêì] õäáìåîîùê_æáêì\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 ÉÓÐÏÌØÚÏ×ÁÎÉÅ base64-ËÏÄÉÒÏ×ÁÎÉÑ ÓÏÇÌÁÓÎÏ RFC1521\n" +" --help ×Ù×ÏÄ ÜÔÏÊ ÓÐÒÁ×ËÉ É ×ÙÈÏÄ\n" +" --version ×Ù×ÏÄ ÉÎÆÏÒÍÁÃÉÉ Ï ×ÅÒÓÉÉ É ×ÙÈÏÄ\n" + +#: src/uuencode.c:276 +#, c-format +msgid "fopen-ing %s" +msgstr "÷ÙÐÏÌÎÑÅÔÓÑ fopen %s" + +#: src/uuencode.c:278 +#, c-format +msgid "fstat-ing %s" +msgstr "÷ÙÐÏÌÎÑÅÔÓÑ fstat %s" diff --git a/po/rw.gmo b/po/rw.gmo new file mode 100644 index 0000000000000000000000000000000000000000..f2f2014afcd15f0c8dce34cd21e55816c0bdd0fc GIT binary patch literal 545 zcmYL_O;6k~5QbeoR1tCF(hCP4;V>Z!yJD4Y(W-n%2%;iLd+NoToz1!=c507-9I9UU z3;aEPOUJ89JMyDk^6`^<#dW_~g;I_4wun~DE>CVKxee?AED${On% z8$#@|CagQGpIEspSXL4DY{u*W+m8A}u@XV}LgLQZUsw@b&*29;udT_YUn&!k54+bT>D0l4SC5ymXA1(zFXx9N~er(6j_(c2f`;bve4C1VIzy+x@9jX zZE%Yz0$JPmw6g6P?=*E#HA0E1&E<_Yy>idW%$1zb{{v%p;xf4BX`?;))Z5@HT<~2m zHArVkaa~-lA7_we$+NI=D2IooiF) day-+Nh=VW-ULA@@?R0D9>Pv(+&Zr-)_y_)8mFNHf literal 0 HcmV?d00001 diff --git a/po/rw.po b/po/rw.po new file mode 100644 index 0000000..84b6943 --- /dev/null +++ b/po/rw.po @@ -0,0 +1,962 @@ +# Kinyarwanda translations for sharutils package. +# Copyright (C) 2005 Free Software Foundation, Inc. +# This file is distributed under the same license as the sharutils package. +# Steve Murphy , 2005. +# Steve performed initial rough translation from compendium built from translations provided by the following translators: +# Philibert Ndandali , 2005. +# Viateur MUGENZI , 2005. +# Noëlla Mupole , 2005. +# Carole Karema , 2005. +# JEAN BAPTISTE NGENDAHAYO , 2005. +# Augustin KIBERWA , 2005. +# Donatien NSENGIYUMVA , 2005. +# Antoine Bigirimana , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: sharutils 4.3.78\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2005-04-04 10:55-0700\n" +"Last-Translator: Steven Michael Murphy \n" +"Language-Team: Kinyarwanda \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/error.c:131 lib/error.c:159 +#, fuzzy +msgid "Unknown system error" +msgstr "Sisitemu Ikosa" + +#: lib/getopt.c:694 +#, fuzzy, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s:Ihitamo ni" + +#: lib/getopt.c:719 +#, fuzzy, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s:Ihitamo Kwemerera" + +#: lib/getopt.c:724 +#, fuzzy, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s:Ihitamo Kwemerera" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, fuzzy, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s:Ihitamo" + +#: lib/getopt.c:771 +#, fuzzy, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s:Ihitamo" + +#: lib/getopt.c:775 +#, fuzzy, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s:Ihitamo" + +#: lib/getopt.c:801 +#, fuzzy, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s:Ihitamo" + +#: lib/getopt.c:804 +#, fuzzy, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s:Sibyo Ihitamo" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, fuzzy, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s:Ihitamo" + +#: lib/getopt.c:881 +#, fuzzy, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s:Ihitamo ni" + +#: lib/getopt.c:899 +#, fuzzy, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s:Ihitamo Kwemerera" + +#: lib/xmalloc.c:67 +#, fuzzy +msgid "memory exhausted" +msgstr "Ububiko" + +#: src/shar.c:608 +#, fuzzy +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "OYA Na" + +#: src/shar.c:643 +#, fuzzy +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "OYA Na" + +#: src/shar.c:645 +#, fuzzy +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "gukora iyinjizaporogaramu:%s in Idosiye" + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "" + +#: src/shar.c:657 +#, fuzzy +msgid "failed to create lock directory" +msgstr "Byanze Kuri Kurema bushyinguro" + +#: src/shar.c:661 +#, fuzzy, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "Byanze Kuri Kurema bushyinguro" + +#: src/shar.c:663 +#, fuzzy, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "Byanze Kuri Kurema bushyinguro" + +#: src/shar.c:671 +msgid "yes" +msgstr "" + +# sfx2/source\doc\new.src:DLG_NEW_FILE.CB_MERGE_STYLE.text +#: src/shar.c:671 +#, fuzzy +msgid "overwrite this file" +msgstr "Guhindura" + +#: src/shar.c:672 +msgid "no" +msgstr "" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "" + +#: src/shar.c:673 +msgid "all" +msgstr "" + +# sfx2/source\doc\new.src:DLG_NEW_FILE.CB_MERGE_STYLE.text +#: src/shar.c:673 +#, fuzzy +msgid "overwrite all files" +msgstr "Guhindura" + +#: src/shar.c:674 +msgid "none" +msgstr "" + +# sfx2/source\doc\new.src:DLG_NEW_FILE.CB_MERGE_STYLE.text +#: src/shar.c:674 +#, fuzzy +msgid "overwrite no files" +msgstr "Guhindura" + +#: src/shar.c:675 +msgid "help" +msgstr "" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "" + +#: src/shar.c:676 +msgid "quit" +msgstr "" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "" + +#: src/shar.c:718 +#, fuzzy +msgid "Too many directories for mkdir generation" +msgstr "ububiko bw'amaderese kugirango" + +#: src/shar.c:737 +#, fuzzy, c-format +msgid "x - created directory `%s'\\''." +msgstr "Byanze Kuri Kurema bushyinguro" + +#: src/shar.c:739 +#, fuzzy, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "Byanze Kuri Kurema bushyinguro" + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "" + +#: src/shar.c:860 +#, fuzzy +msgid "-C is being deprecated, use -Z instead" +msgstr "-C ni Bitemewe. Gukoresha" + +#: src/shar.c:901 src/unshar.c:379 +#, fuzzy +msgid "Cannot get current directory name" +msgstr "Kubona KIGEZWEHO bushyinguro Izina:" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" + +#: src/shar.c:976 src/shar.c:1383 +#, fuzzy, c-format +msgid "New file, remaining %s, " +msgstr "IDOSIYE" + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, fuzzy, c-format +msgid "restore of %s failed" +msgstr "Kugarura Bya" + +#: src/shar.c:987 +#, fuzzy, c-format +msgid "End of part %d, continue with part %d" +msgstr "urifuzagukomeza Na:" + +#: src/shar.c:1001 src/shar.c:1477 +#, fuzzy, c-format +msgid "Starting file %s\n" +msgstr "IDOSIYE" + +#: src/shar.c:1052 +#, fuzzy, c-format +msgid "%s: Not a regular file" +msgstr "%s:a Ibisanzwe IDOSIYE" + +#: src/shar.c:1067 +#, fuzzy, c-format +msgid "In shar: remaining size %s\n" +msgstr "Ingano" + +#: src/shar.c:1086 +msgid "empty" +msgstr "kirimo ubusa" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(ubusa)" + +#: src/shar.c:1111 +#, fuzzy, c-format +msgid "Cannot open file %s" +msgstr "Gufungura IDOSIYE" + +# officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Save.Graphic.Format..1.text +#: src/shar.c:1148 +#, fuzzy +msgid "compressed" +msgstr "Byegeranijwe" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "" + +# #-#-#-#-# goodies.pot (PACKAGE VERSION) #-#-#-#-# +# goodies/source\filter.vcl\epbm\dlgepbm.src:DLG_EXPORT_EPBM.RB_RAW.text +# #-#-#-#-# goodies.pot (PACKAGE VERSION) #-#-#-#-# +# goodies/source\filter.vcl\epgm\dlgepgm.src:DLG_EXPORT_EPGM.RB_RAW.text +# #-#-#-#-# goodies.pot (PACKAGE VERSION) #-#-#-#-# +# goodies/source\filter.vcl\eppm\dlgeppm.src:DLG_EXPORT_EPPM.RB_RAW.text +#: src/shar.c:1151 +#, fuzzy +msgid "binary" +msgstr "Nyabibiri" + +#: src/shar.c:1152 +#, fuzzy +msgid "(compressed)" +msgstr "(Byegeranijwe" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "" + +#: src/shar.c:1155 +#, fuzzy +msgid "(binary)" +msgstr "(Nyabibiri" + +#: src/shar.c:1168 +#, fuzzy +msgid "Could not fork" +msgstr "OYA" + +# sc/source\ui\src\globstr.src:RID_GLOBSTR.STR_HFCMD_FILE.text +#: src/shar.c:1173 src/shar.c:1233 +#, fuzzy, c-format +msgid "File %s (%s)" +msgstr "IDOSIYE" + +#: src/shar.c:1227 +msgid "text" +msgstr "umwandiko" + +# #-#-#-#-# scp.pot (PACKAGE VERSION) #-#-#-#-# +# scp/source\office\profile.lng:STR_VALUE_OBJECT_TEXT.text +# #-#-#-#-# scp.pot (PACKAGE VERSION) #-#-#-#-# +# scp/source\office\profile.lng:STR_DIR_OFFICEOBJECT_WRITER.text +#: src/shar.c:1228 +#, fuzzy +msgid "(text)" +msgstr "(Umwandiko" + +# sfx2/source\doc\new.src:DLG_NEW_FILE.CB_MERGE_STYLE.text +#: src/shar.c:1251 +#, fuzzy, c-format +msgid "overwriting %s" +msgstr "Guhindura" + +# sfx2/source\doc\new.src:DLG_NEW_FILE.CB_MERGE_STYLE.text +#: src/shar.c:1253 +#, fuzzy, c-format +msgid "overwrite %s" +msgstr "Guhindura" + +#: src/shar.c:1257 +#, fuzzy, c-format +msgid "SKIPPING %s" +msgstr "Gusimbuka:%s" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "" + +#: src/shar.c:1262 +#, fuzzy, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "(IDOSIYE" + +#: src/shar.c:1272 +#, fuzzy, c-format +msgid "Saving %s (%s)" +msgstr "Mu kubika" + +#: src/shar.c:1276 +#, fuzzy, c-format +msgid "x - extracting %s %s" +msgstr "Mu kubika" + +#: src/shar.c:1392 +#, fuzzy, c-format +msgid "restore of %s failed\n" +msgstr "Kugarura Bya" + +#: src/shar.c:1401 +#, fuzzy, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "urifuzagukomeza Na:" + +#: src/shar.c:1407 +#, fuzzy, c-format +msgid "End of %s part %d" +msgstr "Impera Bya" + +#: src/shar.c:1408 +msgid "archive" +msgstr "" + +#: src/shar.c:1412 +#, fuzzy, c-format +msgid "File %s is continued in part %d" +msgstr "ni in" + +#: src/shar.c:1456 +#, fuzzy +msgid "Please unpack part 1 first!" +msgstr "1. Itangira" + +#: src/shar.c:1460 +#, fuzzy +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "1. Itangira" + +#: src/shar.c:1471 +#, fuzzy, c-format +msgid "STILL SKIPPING %s" +msgstr "Gusimbuka:%s" + +#: src/shar.c:1479 +#, fuzzy, c-format +msgid "continuing file %s" +msgstr "IDOSIYE" + +#: src/shar.c:1497 +#, fuzzy, c-format +msgid "File %s is complete" +msgstr "ni Byuzuye" + +#: src/shar.c:1504 +#, fuzzy, c-format +msgid "uudecoding file %s" +msgstr "IDOSIYE" + +#: src/shar.c:1514 +#, fuzzy, c-format +msgid "uncompressing file %s" +msgstr "IDOSIYE" + +#: src/shar.c:1522 +#, fuzzy, c-format +msgid "gunzipping file %s" +msgstr "IDOSIYE" + +#: src/shar.c:1530 +#, fuzzy, c-format +msgid "bunzipping file %s" +msgstr "IDOSIYE" + +#: src/shar.c:1585 +#, fuzzy +msgid "MD5 check failed" +msgstr "Kugenzura... Byanze" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "" + +#: src/shar.c:1699 +#, fuzzy, c-format +msgid "Opening `%s'" +msgstr "Gufungura %s%S" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, fuzzy, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "kugirango Birenzeho Ibisobanuro" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "" + +#: src/shar.c:1727 +#, fuzzy +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "ingingo Kuri Amahitamo kugirango Amahitamo" + +#: src/shar.c:1730 +#, fuzzy +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"Ifashayobora Kugaragaza iyi Ifashayobora Na Verisiyo Ibisohoka Verisiyo " +"Ibisobanuro Na Q OYA Ibisohoka Ubutumwa" + +#: src/shar.c:1738 +#, fuzzy +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"Idosiye P Ubwoko Kwemerera in IDOSIYE Intonde Kuri Guhindura>> IDOSIYE " +"Urutonde Gusoma IDOSIYE Urutonde Bivuye Bisanzwe" + +#: src/shar.c:1745 +#, fuzzy +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"Idosiye P Ubwoko Kwemerera in IDOSIYE Intonde Kuri Guhindura>> IDOSIYE " +"Urutonde Gusoma IDOSIYE Urutonde Bivuye Bisanzwe" + +#: src/shar.c:1752 +#, fuzzy +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"Ibisohoka o Ibisohoka Imbanziriza Ibisohoka Kuri IDOSIYE 01 Gihinguranya L " +"Ingano Gutandukanya OYA Idosiye Kuri Gutandukanya Ingano Gutandukanya " +"Cyangwa Idosiye Kuri" + +#: src/shar.c:1759 +#, fuzzy +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"i Imitwe N Izina: Gukoresha Kuri Inyandiko i S i a Cyuzuye Imitwe Ibisohoka " +"ku Izina: C Gukata Ikimenyetso Gutangira i Na: a Gukata Idosiye Bivanze " +"Mburabuzi Umwandiko Idosiye Byose Idosiye Nka Byose Idosiye Nka Nyabibiri " +"Gukoresha Z Na Byose g urwego kugirango Mburabuzi 9 Kuri j Na Byose" + +#: src/shar.c:1777 +#, fuzzy +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "-Kwegeranya Kwegeranya Na Byose B ITEGEKONGENGA Mburabuzi 12 Kuri" + +#: src/shar.c:1782 +#, fuzzy +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"W Oya Inyuguti IBARA OYA Gukoresha Kuri Kugenzura... Oya OYA Gukoresha Kuri " +"Imbanziriza i Imbanziriza Inyuguti ku buri D Gukoresha Kuri i Idosiye in i " +"Bya V Byoroheje Na Oya Gukoresha By'igihe gito Idosiye ku X Oya Kugenzura... " +"Guhindura Ikibazo# Ukoresha: Ukoresha: Mbere Idosiye OYA kugirango M Oya OYA " +"Kugarura IDOSIYE Amatariki Ubutumwa ku F Kugarura in bushyinguro Oya OYA " +"Igikonoshwa" + +#: src/shar.c:1800 +#, fuzzy +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "o ni Bya ngombwa Na: L Cyangwa Ihitamo N ni Bya ngombwa Na: a" + +#: src/shar.c:1804 +#, fuzzy +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "g Z Ihitamo B" + +#: src/shar.c:1807 +#, fuzzy +msgid "Option -g implies -z.\n" +msgstr "g Z" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, fuzzy, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Kuri" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "" + +#: src/shar.c:1966 +#, fuzzy +msgid "DEBUG was not selected at compile time" +msgstr "OYA Byahiswemo ku Gukusanya Igihe" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "" + +#: src/shar.c:2028 +#, fuzzy +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "Sisitemu Gushigikira Gukoresha Z" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "" + +#: src/shar.c:2076 +#, fuzzy, c-format +msgid "illegal output prefix\n" +msgstr "Ibisohoka" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, fuzzy, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "C ni Kigenga i Inkomoko kugirango ni OYA ATARIIGIHARWE kugirango Cyangwa A" + +#: src/shar.c:2170 +#, fuzzy +msgid "WARNING: No user interaction in vanilla mode" +msgstr "Ukoresha: Imikoranire in Ubwoko" + +#: src/shar.c:2182 +#, fuzzy +msgid "WARNING: Non-text storage options overridden" +msgstr "Umwandiko Amahitamo" + +#: src/shar.c:2238 +#, fuzzy +msgid "No input files" +msgstr "Iyinjiza Idosiye" + +#: src/shar.c:2244 +#, fuzzy +msgid "Cannot use -a option without -n" +msgstr "Gukoresha a Ihitamo N" + +#: src/shar.c:2250 +#, fuzzy +msgid "Cannot use -l or -L option without -o" +msgstr "Gukoresha L Cyangwa Ihitamo o" + +#: src/shar.c:2262 +#, fuzzy +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "ku Cyangwa Rusange" + +#: src/shar.c:2303 +#, fuzzy +msgid "You have unpacked the last part" +msgstr "i Iheruka" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "" + +#: src/shar.c:2310 +#, fuzzy, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "Byanze Kuri Kurema bushyinguro" + +#: src/shar.c:2312 +#, fuzzy, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "Byanze Kuri Kurema bushyinguro" + +#: src/unshar.c:171 +#, fuzzy, c-format +msgid "Found no shell commands in %s" +msgstr "Oya Igikonoshwa Amabwiriza in" + +#: src/unshar.c:187 +#, fuzzy, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%snka C ITEGEKONGENGA OYA a Igikonoshwa" + +#: src/unshar.c:223 +#, fuzzy, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Oya Igikonoshwa Amabwiriza Nyuma in" + +#: src/unshar.c:244 +#, fuzzy, c-format +msgid "%s is probably not a shell archive" +msgstr "%sni OYA a Igikonoshwa" + +#: src/unshar.c:245 +#, fuzzy, c-format +msgid "The `cut' line was followed by: %s" +msgstr "Umurongo ku" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "" + +#: src/unshar.c:320 +#, fuzzy +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"ingingo Kuri Amahitamo kugirango Amahitamo D bushyinguro Guhindura>> Kuri " +"Mbere C Guhindura C Kuri IYANDIKA kugirango E Gusohoka 0 Nka Gutandukanya ku " +"Gusohoka 0 E Gutandukanya ku Gutandukanya Nyuma F Nka Ifashayobora " +"Kugaragaza iyi Ifashayobora Na Verisiyo Ibisohoka Verisiyo Ibisobanuro Na " +"Oya Bisanzwe Iyinjiza ni Gusoma" + +#: src/unshar.c:397 +#, fuzzy, c-format +msgid "Cannot chdir to `%s'" +msgstr "Kuri" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "" + +#: src/unshar.c:469 +#, fuzzy +msgid "standard input" +msgstr "Bisanzwe Iyinjiza" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, fuzzy, c-format +msgid "%s: Write error" +msgstr "%s:Ikosa" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, fuzzy, c-format +msgid "%s: Short file" +msgstr "%s:IDOSIYE" + +#: src/uudecode.c:180 +#, fuzzy, c-format +msgid "%s: No `end' line" +msgstr "%s:Umurongo" + +#: src/uudecode.c:241 +#, fuzzy, c-format +msgid "%s: data following `=' padding character" +msgstr "%s:Ibyatanzwe Wuzuza: Inyuguti" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, fuzzy, c-format +msgid "%s: illegal line" +msgstr "%s:Umurongo" + +#: src/uudecode.c:327 +#, fuzzy, c-format +msgid "%s: No `begin' line" +msgstr "%s:Umurongo" + +#: src/uudecode.c:359 +#, fuzzy, c-format +msgid "%s: Illegal ~user" +msgstr "%s:Ukoresha:" + +#: src/uudecode.c:366 +#, fuzzy, c-format +msgid "%s: No user `%s'" +msgstr "%s:Ukoresha:" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "" + +#: src/uudecode.c:400 +#, fuzzy, c-format +msgid "not following symlink (%s)" +msgstr "OYA" + +#: src/uudecode.c:408 +#, fuzzy, c-format +msgid "freopen of %s" +msgstr "Gufungura %s%S" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "" + +#: src/uudecode.c:447 +#, fuzzy +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"ingingo Kuri Amahitamo Kuri Amahitamo o Ibisohoka IDOSIYE Ibisohoka Kuri " +"Ifashayobora Kugaragaza iyi Ifashayobora Na Verisiyo Ibisohoka Verisiyo " +"Ibisobanuro Na" + +# svtools/source\misc\errtxt.src:RID_ERRHDL.ERRCODE_CLASS_WRITE.text +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +#, fuzzy +msgid "Write error" +msgstr "Kwandika ikosa" + +# 4952 +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +#, fuzzy +msgid "Read error" +msgstr "Ikosa ryo mu Isoma" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "" + +#: src/uuencode.c:210 +#, fuzzy +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"-M Gukoresha Imisobekere: Nka Bya Ifashayobora Kugaragaza iyi Ifashayobora " +"Na Verisiyo Ibisohoka Verisiyo Ibisobanuro Na" + +#: src/uuencode.c:276 +#, fuzzy, c-format +msgid "fopen-ing %s" +msgstr "Gufungura %s%S" + +#: src/uuencode.c:278 +#, fuzzy, c-format +msgid "fstat-ing %s" +msgstr "IDOSIYE" + +#, fuzzy +#~ msgid "[no, yes, all, quit] (no)?" +#~ msgstr "[Oya Yego Byose Kuvamo Oya" + +#, fuzzy +#~ msgid "next!" +#~ msgstr "Ibikurikira>" + +#~ msgid "File" +#~ msgstr "Idosiye " + +# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-# +# officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Filter.Graphic.Export.BMP.ExportMode..0.text +# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-# +# officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Filter.Graphic.Export.MET.ExportMode..0.text +# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-# +# officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Filter.Graphic.Export.PCT.ExportMode..0.text +# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-# +# officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Filter.Graphic.Export.SVM.ExportMode..0.text +# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-# +# officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Filter.Graphic.Export.WMF.ExportMode..0.text +# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-# +# officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Filter.Graphic.Export.EMF.ExportMode..0.text +# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-# +# officecfg/registry\schema\org\openoffice\Office\Math.xcs:....Print.Size..0.text +#, fuzzy +#~ msgid "original size" +#~ msgstr "Ingano mwimerere" + +#, fuzzy +#~ msgid "current size" +#~ msgstr "KIGEZWEHO Ingano" + +#, fuzzy +#~ msgid "Must unpack archives in sequence!" +#~ msgstr "Ubushyinguro in" + +#, fuzzy +#~ msgid "lock directory" +#~ msgstr "bushyinguro" + +#, fuzzy +#~ msgid "created lock directory" +#~ msgstr "bushyinguro" + +# sc/source\ui\src\globstr.src:RID_GLOBSTR.STR_DOC_CREATED.text +#, fuzzy +#~ msgid "created %s" +#~ msgstr "Byaremwe" + +#, fuzzy +#~ msgid "could not create %s" +#~ msgstr "Byanze Kuri Kurema" + +#, fuzzy +#~ msgid "restore of" +#~ msgstr "Kugarura Bya" + +#, fuzzy +#~ msgid "failed" +#~ msgstr "Byanze" + +# 5072 +#, fuzzy +#~ msgid "removed" +#~ msgstr "Cyavanyweho" + +#, fuzzy +#~ msgid "failed to remove" +#~ msgstr "Byanze Kuri Gukuraho..." + +#, fuzzy +#~ msgid "continue with part" +#~ msgstr "urifuzagukomeza Na:" + +#, fuzzy +#~ msgid "End of" +#~ msgstr "Impera Bya" diff --git a/po/sharutils.pot b/po/sharutils.pot new file mode 100644 index 0000000..9782cfd --- /dev/null +++ b/po/sharutils.pot @@ -0,0 +1,779 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\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: 8bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "" + +#: src/shar.c:645 +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "" + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "" + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "" + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "" + +#: src/shar.c:671 +msgid "yes" +msgstr "" + +#: src/shar.c:671 +msgid "overwrite this file" +msgstr "" + +#: src/shar.c:672 +msgid "no" +msgstr "" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "" + +#: src/shar.c:673 +msgid "all" +msgstr "" + +#: src/shar.c:673 +msgid "overwrite all files" +msgstr "" + +#: src/shar.c:674 +msgid "none" +msgstr "" + +#: src/shar.c:674 +msgid "overwrite no files" +msgstr "" + +#: src/shar.c:675 +msgid "help" +msgstr "" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "" + +#: src/shar.c:676 +msgid "quit" +msgstr "" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "" + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "" + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "" + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "" + +#: src/shar.c:1086 +msgid "empty" +msgstr "" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "" + +#: src/shar.c:1151 +msgid "binary" +msgstr "" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "" + +#: src/shar.c:1227 +msgid "text" +msgstr "" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "" + +#: src/shar.c:1251 +#, c-format +msgid "overwriting %s" +msgstr "" + +#: src/shar.c:1253 +#, c-format +msgid "overwrite %s" +msgstr "" + +#: src/shar.c:1257 +#, c-format +msgid "SKIPPING %s" +msgstr "" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "" + +#: src/shar.c:1262 +#, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "" + +#: src/shar.c:1276 +#, c-format +msgid "x - extracting %s %s" +msgstr "" + +#: src/shar.c:1392 +#, c-format +msgid "restore of %s failed\n" +msgstr "" + +#: src/shar.c:1401 +#, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "" + +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "" + +#: src/shar.c:1408 +msgid "archive" +msgstr "" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "" + +#: src/shar.c:1460 +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "" + +#: src/shar.c:1471 +#, c-format +msgid "STILL SKIPPING %s" +msgstr "" + +#: src/shar.c:1479 +#, c-format +msgid "continuing file %s" +msgstr "" + +#: src/shar.c:1497 +#, c-format +msgid "File %s is complete" +msgstr "" + +#: src/shar.c:1504 +#, c-format +msgid "uudecoding file %s" +msgstr "" + +#: src/shar.c:1514 +#, c-format +msgid "uncompressing file %s" +msgstr "" + +#: src/shar.c:1522 +#, c-format +msgid "gunzipping file %s" +msgstr "" + +#: src/shar.c:1530 +#, c-format +msgid "bunzipping file %s" +msgstr "" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "" + +#: src/shar.c:1727 +msgid "Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" + +#: src/shar.c:1759 +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "" + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "" + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "" + +#: src/uudecode.c:408 +#, c-format +msgid "freopen of %s" +msgstr "" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" + +#: src/uuencode.c:276 +#, c-format +msgid "fopen-ing %s" +msgstr "" + +#: src/uuencode.c:278 +#, c-format +msgid "fstat-ing %s" +msgstr "" diff --git a/po/sr.gmo b/po/sr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..5278746c7c204a42f179ecb8ba1d3ddf5bd7592f GIT binary patch literal 19423 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 CjI9p< literal 0 HcmV?d00001 diff --git a/po/sr.po b/po/sr.po new file mode 100644 index 0000000..0a71343 --- /dev/null +++ b/po/sr.po @@ -0,0 +1,923 @@ +# sharutils translation into Serbian +# Copyright (C) 2005 Free Software Foundation, Inc. +# This file is distributed under the same license as the sharutils package. +# +# Translators so far: +# Filip Miletić , 2005. +# Aleksandar Jelenak , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: sharutils 4.6.1-pre1\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2005-12-13 21:07-0500\n" +"Last-Translator: Aleksandar Jelenak \n" +"Language-Team: Serbian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Неодређена системска грешка" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: опција `%s' је двосмислена\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: опција `--%s' не допушта аргумент\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: опција `%c%s' не допушта аргумент\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: за опцију `%s' потребан је аргумент\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: опција `--%s' није препозната\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: опција `%c%s' није препозната\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: неисправна опција -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: неважећа опција -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: опција захтева да се наведе аргумент -- %c\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: опција `-W %s' је двосмислена\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: опција `-W %s' не допушта навођење аргумента\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "нема довољно меморије" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "Примедба: без провере md5sum. Размотрите инсталирање GNU coreutils." + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "УПОЗОРЕЊЕ: време и датум се не мењају. Како би било да инсталирате" + +#: src/shar.c:645 +#, fuzzy +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "инсталирам GNU touch, који се налази међу GNU алатима за датотеке..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "креирање директоријума за браву није успело" + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "x - креиран директоријум за браву `'%s\\''." + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "x — креирање директоријума за браву `'%s\\'' није успело." + +#: src/shar.c:671 +msgid "yes" +msgstr "" + +#: src/shar.c:671 +#, fuzzy +msgid "overwrite this file" +msgstr "преписати" + +#: src/shar.c:672 +msgid "no" +msgstr "" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "" + +#: src/shar.c:673 +msgid "all" +msgstr "" + +#: src/shar.c:673 +#, fuzzy +msgid "overwrite all files" +msgstr "преписати" + +#: src/shar.c:674 +msgid "none" +msgstr "" + +#: src/shar.c:674 +#, fuzzy +msgid "overwrite no files" +msgstr "преписати" + +#: src/shar.c:675 +msgid "help" +msgstr "" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "" + +#: src/shar.c:676 +msgid "quit" +msgstr "" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Директоријума има превише за mkdir" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "x — креирао директоријум `%s'\\''." + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "x — креирање директоријума `%s'\\'' није успело." + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "Не може се приступити %s" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "-C је застарела опција, користите -Z" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "Не може се прочитати име тренутног директоријума" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" +"Архиве се морају распаковати по реду!\n" +"Распакујте следећи '`cat ${lock_dir}/seq`' део." + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "Нова датотека, остаје %s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "Граница је и даље %s\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "обнављање „%s“ није успело" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "Крај дела „%d“, настави са делом „%d“" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Крећем са датотеком %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: Није уобичајен тип датотеке" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "У архиви: преостала величина %s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "празно" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(празно)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "Не може се отворити %s" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "сабијен" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "гзипован" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "бзипован" + +#: src/shar.c:1151 +msgid "binary" +msgstr "бинарни" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(сабијен)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(гзипован)" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(бзипован)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(бинаран)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "Програм се није могао поделити (fork)" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Датотека %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "текст" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(текст)" + +#: src/shar.c:1251 +#, fuzzy, c-format +msgid "overwriting %s" +msgstr "преписивање" + +#: src/shar.c:1253 +#, fuzzy, c-format +msgid "overwrite %s" +msgstr "преписати" + +#: src/shar.c:1257 +#, fuzzy, c-format +msgid "SKIPPING %s" +msgstr "ПРЕСКАЧЕМ" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "распакивање je обустављено" + +#: src/shar.c:1262 +#, fuzzy, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "(датотека већ постоји)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Снимам %s (%s)" + +#: src/shar.c:1276 +#, fuzzy, c-format +msgid "x - extracting %s %s" +msgstr "распакујем" + +#: src/shar.c:1392 +#, c-format +msgid "restore of %s failed\n" +msgstr "обнављање „%s“ није успело\n" + +#: src/shar.c:1401 +#, fuzzy, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "Крај дела „%d“, настави са делом „%d“" + +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "Крај „%s“ део %d" + +#: src/shar.c:1408 +msgid "archive" +msgstr "архиве" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "Датотека „%s“ се наставља са делом %d" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "Молим прво отпакујте део 1!" + +#: src/shar.c:1460 +#, fuzzy +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "Молим прво отпакујте део 1!" + +#: src/shar.c:1471 +#, fuzzy, c-format +msgid "STILL SKIPPING %s" +msgstr "И ДАЉЕ ПРЕСКАЧЕМ" + +#: src/shar.c:1479 +#, fuzzy, c-format +msgid "continuing file %s" +msgstr "настављам датотеку" + +#: src/shar.c:1497 +#, fuzzy, c-format +msgid "File %s is complete" +msgstr "је довршен" + +#: src/shar.c:1504 +#, fuzzy, c-format +msgid "uudecoding file %s" +msgstr "декодирам датотеку (uudecode)" + +#: src/shar.c:1514 +#, fuzzy, c-format +msgid "uncompressing file %s" +msgstr "распакујем датотеку" + +#: src/shar.c:1522 +#, fuzzy, c-format +msgid "gunzipping file %s" +msgstr "распакујем гзипом" + +#: src/shar.c:1530 +#, fuzzy, c-format +msgid "bunzipping file %s" +msgstr "распакујем бзипом" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "МД5 провера није успела" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "добављам име излазне датотеке" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "Отварам `%s'" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Затварам `%s'" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Навођењем `%s --help' добијате помоћ.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Usage: %s [OPTION]... [FILE]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "Обавезни аргументи за дугачке опције су обавезни и за кратке опције.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"Информације:\n" +" --help прикажи текст помоћи и заврши рад\n" +" --version прикажи ознаку верзије и заврши рад\n" +" -q, --quiet, --silent не исписуј детаљне извештаје\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Избор датотека:\n" +" -p, --intermix-type допусти да -[BTzZ] у списку датотека промени мод\n" +" -S, --stdin-file-list учитај списак датотека са стандардног улаза\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Избор датотека:\n" +" -p, --intermix-type допусти да -[BTz] у списку датотека промени мод\n" +" -S, --stdin-file-list учитај списак датотека са стандардног улаза\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"Дељење излаза:\n" +" -o, --output-prefix=PREFIX излазне датотеке ће имати име PREFIX.01 \n" +" до PREFIX.NN\n" +" -l, --whole-size-limit=SIZE подели архиву, не датотеке, у делове " +"величине \n" +" SIZE килобајта\n" +" -L, --split-size-limit=SIZE подели архиву, или датотеке у делове " +"величине\n" +" SIZE килобајта\n" + +#: src/shar.c:1759 +#, fuzzy +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Управљање shar заглављима:\n" +" -n, --archive-name=NAME користи NAME као документацију архиве\n" +" -s, --submitter=ADDRESS преправи име пошиљаоца\n" +" -a, --net-headers запиши заглавља Submitted-by: и Archive-name:\n" +" -c, --cut-mark започни архиву ознаком за сечење\n" +"\n" +"Бирање начина за паковање датотека:\n" +" -M, --mixed-uuencode динамички одреди да ли ће се користити " +"uuencode\n" +" -T, --text-files прогласи све датотеке за текстуалне\n" +" -B, --uuencode прогласи све датотеке за бинарне и користи\n" +" uuencode\n" +" -z, --gzip све датотеке пропусти кроз gzip и uuencode\n" +" -g, --level-for-gzip=LEVEL задај ниво компресије -LEVEL (сада је 9) за " +"gzip\n" +" -j, --bzip2 све датотеке пропусти кроз bzip2 и uuencode\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress сабиј и кодирај све датотеке са uuencode\n" +" -b, --bits-per-code=BITS постави опцију -bBITS (сада 12) за compress\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Заштита од грешака у преносу:\n" +" -w, --no-character-count не проверавај величину са `wc -c'\n" +" -D, --no-md5-digest не користи проверу са `md5sum'\n" +" -F, --force-prefix префикс сваке линије биће задати знак\n" +" -d, --here-delimiter=STRING користи STRING за раздвајање датотека\n" +"\n" +"Прављење разних врста архива:\n" +" -V, --vanilla-operation направи једноставне и мало захтевне архиве\n" +" -P, --no-piping обавезно користи привремене датотеке при раду\n" +" -x, --no-check-existing увек бриши постојеће датотеке\n" +" -X, --query-user питај корисника пре брисања датотека\n" +" -m, --no-timestamp не мењај датум и време креирања датотеке\n" +" -Q, --quiet-unshar избегавај испис детаљних порука при раду\n" +" -f, --basename распакуј у исти директоријум без обзира на све\n" +" --no-i18n не користи подршку за интернационализацију\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"Опција -o се мора користити са -l или -L, опција -n се мора користити са -" +"a.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "Опција -g повлачи -z, опција -b повлачи -Z.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "Опција -g повлачи -z.\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" +"Грешке пријавите на адресу <%s>.\n" +"Поруке у вези овог превода слати на адресу .\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "неважећа граница величине датотеке `%s'" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "Неважећи формат (бројно поље прешироко): „%s“\n" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "Прекидач DEBUG није био одабран при превођењу" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "Строго ограничење %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "Овај систем не подржава -Z ('compress'), користите уместо тога -z" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "Благо ограничење %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "неисправан излазни префикс\n" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Copyright (C) %s Задужбина за слободан софтвер, корп.\n" +"Ово је слободан софтвер; погледајте изворни код за услове копирања. НЕМА \n" +"гаранције; не гарантује се ни да је програм одговарајућег квалитета нити\n" +"да одговара намени.\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "УПОЗОРЕЊЕ: у обичном моду рада се не интерагује са корисником" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "УПОЗОРЕЊЕ: Опције за обраду не-текстуалних датотека су промењене" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Нису наведене улазне датотеке" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "Опција -a се не може користити без -n" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "Опције -l или -L се не могу користити без -o" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "" +"МОЛИМО да не користите архиве прављене са -X на Usenet-у и јавним мрежама" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Распаковали сте последњи део" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "Записано је %d фајл(ов)(а)\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "x — уклоњен директоријум за браву `'%s\\''." + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "x — уклањање директоријума за браву `'%s\\'' није успело." + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "Нема команди шкољке у %s" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s личи на изворни код у језику C, а не на архиву" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Нема команди шкољке после `cut' у %s" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s вероватно није архива" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "Линију `cut' пратило је: %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Покрећем процес `sh'" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Обавезни аргументи за дугачке опције су обавезни такође и за кратке опције.\n" +"\n" +" -d, --directory=DIRECTORY иди у директоријум DIRECTORY пре распакивања\n" +" -c, --overwrite достави опцију -c скрипти за преписивање " +"датотека\n" +" -e, --exit-0 исто као `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING подели архиве после STRING\n" +" -f, --force исто као `-c'\n" +" --help прикажи овај текст помоћи и заврши са радом\n" +" --version прикажи ознаку верзије и заврши са радом\n" +"\n" +"Ако ДАТОТЕКА није наведена, чита се са стандардног улаза.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "Није могуће пребацити се у `%s'" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "добави бафер за име датотеке" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "стандардни улаз" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "добави бафер за датотеку" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: Грешка при упису" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: Кратка датотека" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: Нема линије за крај (`end') " + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: подаци следе иза знака `='" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: неисправна линија" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: Нема почетне линије (`begin')" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: Неисправан ~корисник" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: Корисник `%s' не постји" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "није могуће приступити %s" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "не може се уписати FIFO (%s)" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "не пратим симболичку везу (%s)" + +#: src/uudecode.c:408 +#, fuzzy, c-format +msgid "freopen of %s" +msgstr "Отварам `%s'" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Употреба: %s [ДАТОТЕКА]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Обавезни аргументи за дуге опције су обавезни и за кратке опције.\n" +" -o, --output-file=FILE директан излаз у FILE\n" +" --help прикажи текст помоћи и заврши са радом\n" +" --version прикажи ознаке верзије и заврши са радом\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Грешка при упису" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Грешка при читању" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "УПОТРЕБА: %s [УЛАЗНА_ДАТ] УДАЉЕНА_ДАТ\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 користи base64 кодирање, према RFC1521\n" +" --help прикажи текст помоћи и заврши са радом\n" +" --version прикажи ознаку верзије и заврши са радом\n" + +#: src/uuencode.c:276 +#, fuzzy, c-format +msgid "fopen-ing %s" +msgstr "Отварам `%s'" + +#: src/uuencode.c:278 +#, fuzzy, c-format +msgid "fstat-ing %s" +msgstr "Крећем са датотеком %s\n" + +#~ msgid "[no, yes, all, quit] (no)?" +#~ msgstr "[не: no, да: yes, све: all, крај: quit] (no)?" + +#~ msgid "Please unpack part" +#~ msgstr "Молим распакујте део" + +#~ msgid "next!" +#~ msgstr "следећи!" + +#~ msgid "File" +#~ msgstr "Датотека" + +#~ msgid "original size" +#~ msgstr "полазна величина" + +#~ msgid "current size" +#~ msgstr "тренутна величина" + +#~ msgid "lock directory" +#~ msgstr "директоријум за браву" + +#~ msgid "created" +#~ msgstr "направљен" + +#~ msgid "failed to create" +#~ msgstr "није направљен" + +#~ msgid "Must unpack archives in sequence!" +#~ msgstr "Архиве се морају отпаковати редом!" + +#~ msgid "failed" +#~ msgstr "није успело" + +#~ msgid "End of" +#~ msgstr "Крај" + +#~ msgid "part" +#~ msgstr "дела" + +#~ msgid "removed" +#~ msgstr "уклоњен" + +#~ msgid "failed to remove" +#~ msgstr "није уклоњен" diff --git a/po/stamp-po b/po/stamp-po new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/po/stamp-po @@ -0,0 +1 @@ +timestamp diff --git a/po/sv.gmo b/po/sv.gmo new file mode 100644 index 0000000000000000000000000000000000000000..749cdb9680929cf469220e29ecbd23f8ab9c90f8 GIT binary patch literal 19362 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, 1996, 2002, 2005, 2006. +# Revision: 1.27 +# +msgid "" +msgstr "" +"Project-Id-Version: sharutils 4.6.3-pre4\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2006-05-20 10:39+0200\n" +"Last-Translator: Jan Djärv \n" +"Language-Team: Swedish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Okänt systemfel" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: flaggan \"%s\" är tvetydig\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: flaggan \"--%s\" tar inget argument\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: flaggan \"%c%s\" tar inget argument\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: flaggan \"%s\" behöver ett argument\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: okänd flagga \"--%s\"\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: okänd flagga \"%c%s\"\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: otillÃ¥ten flagga -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: ogiltig flagga -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: flaggan behöver ett argument -- %c\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: flaggan \"-W %s\" är tvetydig\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: flaggan \"-W %s\" tar inget argument\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "minnet slut" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" +"OBS: verifierar inte md5-summor. Överväg att installera GNU coreutils." + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "" +"VARNING: Tidsinformation för filer Ã¥terskapas inte. Du borde skaffa och " + +#: src/shar.c:645 +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "installera GNUs \"touch\" som medföljer GNU coreutils..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "lÃ¥skatalogen '${lock_dir}' finns" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "misslyckades med att skapa lÃ¥skatalog" + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "x - skapade lÃ¥skatalog \"%s\"" + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "x - misslyckades med att skapa lÃ¥skatalog \"%s\"" + +#: src/shar.c:671 +msgid "yes" +msgstr "ja" + +#: src/shar.c:671 +msgid "overwrite this file" +msgstr "skriv över den här filen" + +#: src/shar.c:672 +msgid "no" +msgstr "nej" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "hoppa över den här filen" + +#: src/shar.c:673 +msgid "all" +msgstr "alla" + +#: src/shar.c:673 +msgid "overwrite all files" +msgstr "skriv över alla filer" + +#: src/shar.c:674 +msgid "none" +msgstr "inga" + +#: src/shar.c:674 +msgid "overwrite no files" +msgstr "skriv inte över nÃ¥gon fil" + +#: src/shar.c:675 +msgid "help" +msgstr "hjälp" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "förklara alternativ" + +#: src/shar.c:676 +msgid "quit" +msgstr "avsluta" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "avsluta omedelbart" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Kan inte generera mkdir-kommandon för sÃ¥ mÃ¥nga kataloger" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "x - skapade katalog \"%s\"." + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "x - misslyckades med att skapa katalog \"%s\"" + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "Kan inte komma Ã¥t %s" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "-C kommer att tas bort, använd -Z i stället" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "Kan inte komma Ã¥t namnet pÃ¥ aktuell katalog" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" +"Arkiv mÃ¥ste packas upp i ordning.\n" +"Packa upp del \"`cat ${lock_dir}/seq`\" härnäst." + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "Ny fil, Ã¥terstÃ¥r %s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "Begränsningen är fortfarande %s\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "Ã¥terskapande av %s misslyckades" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "Slut pÃ¥ del %d, fortsätt med del %d" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "PÃ¥börjar filen %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: Inte en normal fil" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "I shar: kvarvarande storlek %s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "tom" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(tom)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "Filen %s kunde inte öppnas" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "komprimerad" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "gzip-komprimerad" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "bzip-komprimerad" + +#: src/shar.c:1151 +msgid "binary" +msgstr "binär" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(komprimerad)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(gzip-komprimerad)" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(bzip-komprimerad)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(binär)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "Kunde inte grena" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Fil %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "text" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(text)" + +#: src/shar.c:1251 +#, c-format +msgid "overwriting %s" +msgstr "skriver över %s" + +#: src/shar.c:1253 +#, c-format +msgid "overwrite %s" +msgstr "skriva över %s" + +#: src/shar.c:1257 +#, c-format +msgid "SKIPPING %s" +msgstr "HOPPAR ÖVER %s" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "Ã¥terskapandet avbryts" + +#: src/shar.c:1262 +#, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "HOPPAR ÖVER %s (filen finns redan)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Sparar %s (%s)" + +#: src/shar.c:1276 +#, c-format +msgid "x - extracting %s %s" +msgstr "x - extraherar %s %s" + +#: src/shar.c:1392 +#, c-format +msgid "restore of %s failed\n" +msgstr "Ã¥terskapande av %s misslyckades\n" + +#: src/shar.c:1401 +#, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "Slut pÃ¥ del %ld, fortsätt med del %ld" + +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "Slut pÃ¥ %s del %d" + +#: src/shar.c:1408 +msgid "archive" +msgstr "arkiv" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "Fil %s fortsätter i arkivdel %d" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "Packa upp arkivdel 1 först!" + +#: src/shar.c:1460 +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "Packa upp arkivdel '${shar_sequence}' härnäst!" + +#: src/shar.c:1471 +#, c-format +msgid "STILL SKIPPING %s" +msgstr "FORTSÄTTER ATT HOPPA ÖVER %s" + +#: src/shar.c:1479 +#, c-format +msgid "continuing file %s" +msgstr "fortsätter fil %s" + +#: src/shar.c:1497 +#, c-format +msgid "File %s is complete" +msgstr "Fil %s är komplett" + +#: src/shar.c:1504 +#, c-format +msgid "uudecoding file %s" +msgstr "uudecode:ar fil %s" + +#: src/shar.c:1514 +#, c-format +msgid "uncompressing file %s" +msgstr "uncompress:ar upp fil %s" + +#: src/shar.c:1522 +#, c-format +msgid "gunzipping file %s" +msgstr "gunzip:ar fil %s" + +#: src/shar.c:1530 +#, c-format +msgid "bunzipping file %s" +msgstr "bunzip:ar fil %s" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "MD5-kontrollen misslyckades" + +# 'Ã¥terskapningsvarning: storleken pÃ¥ %s är inte %s' +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "'Ã¥terskapningsvarning: storleken pÃ¥ %s är inte %s'\n" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "allokerar utfilnamn" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "Öppnar \"%s\"" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Stänger \"%s\"" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Försök med \"%s --help\" för ytterligare information.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Användning: %s [FLAGGA]... [FIL]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Obligatoriska argument för lÃ¥nga flaggor är obligatoriska även för korta.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"Välja information:\n" +" -h, --help visa denna hjälptext och avsluta\n" +" -v, --version visa versionsinformation och avsluta\n" +" -q, --quiet, --silent använd inte utförliga meddelanden lokalt\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Välja filer:\n" +" -p, --intermix-type tillÃ¥t -[BTzZ] i fillistor för att ändra lagring\n" +" -S, --stdin-file-list läs fillista frÃ¥n standard in\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Välja filer:\n" +" -p, --intermix-type tillÃ¥t -[BTz] i fillistor för att ändra lagring\n" +" -S, --stdin-file-list läs fillista frÃ¥n standard in\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"Dela arkivet:\n" +" -o, --output-prefix=PREFIX gör filerna PREFIX.01 till PREFIX.NN\n" +" -l, --whole-size-limit=STORLEK dela arkivet i STORLEK kbyte bitar,\n" +" individuella filer delas inte\n" +" -L, --split-size-limit=STORLEK som ovan, individuella filer delas\n" + +#: src/shar.c:1759 +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Kontroll av fält i arkivhuvudet:\n" +" -n, --archive-name=NAMN använd NAMN för att dokumentera arkivet\n" +" -s, --submitter=ADRESS ange explicit adress för arkivinlämnaren\n" +" -a, --net-headers lägg in Submitted-by: och Archive-name:\n" +" -c, --cut-mark börja arkivet med en \"klipp-här\"-rad\n" +" -t, --translate översätt meddelanden i skriptet\n" +"\n" +"Kontroll av hur filer lagras:\n" +" -M, --mixed-uuencode avgör automatiskt om uuencode behövs\n" +" (standardvärde: pÃ¥)\n" +" -T, --text-files behandla alla filer som text\n" +" -B, --uuencode behandla alla filer som binär data,\n" +" använd uuencode\n" +" -z, --gzip kör gzip och uuencode pÃ¥ alla filer\n" +" -g, --level-for-gzip=NIVÅ ge flaggan -NIVÅ till gzip (standardvärde: " +"9)\n" +" -j, --bzip2 kör bzip2 och uuencode pÃ¥ alla filer\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress kör compress och uuencode pÃ¥ alla filer\n" +" -b, --bits-per-code=BITAR ge flaggan -bBITAR till compress\n" +" (standardvärde: 12)\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Skydd mot överföringsfel:\n" +" -w, --no-character-count använd inte \"wc -c\" för att kontrollera\n" +" storleken\n" +" -D, --no-md5-digest använd inte \"md5sum\" för kontroll\n" +" -F, --force-prefix skriv prefixtecknet pÃ¥ alla rader\n" +" -d, --here-delimiter=STRÄNG skilj filer Ã¥t i arkivet med STRÄNG\n" +"\n" +"Olika typer av skalarkiv:\n" +" -V, --vanilla-operation gör enkla arkiv som använder fÃ¥ kommandon\n" +" -P, --no-piping använd enbart temporärfiler vid uppackning\n" +" -x, --no-check-existing skriv över existerande filer vid uppackning\n" +" -X, --query-user frÃ¥ga uppackaren om filer ska skrivas över\n" +" (inte för arkiv till nätet)\n" +" -m, --no-timestamp Ã¥terskapa inte filers modifieringstid\n" +" -Q, --quiet-unshar undvik utförliga meddelanden vid uppackning\n" +" -f, --basename packa upp filer i en katalog, oavsett hierarki\n" +" --no-i18n skapa inte internationaliserade skalarkiv\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"Flaggan -o krävs tillsammans med -l eller -L,\n" +"flaggan -n krävs tillsammans med -a.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "Flaggan -g medför -z, flaggan -b medför -Z.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "Flaggan -g medför -z.\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" +"Rapportera fel till <%s>.\n" +"Rapportera fel eller synpunkter pÃ¥ översättningen till .\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "ogiltig begränsning pÃ¥ filstorlek \"%s\"" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "ogiltigt format (räknarfält för stort): \"%s\"\n" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "DEBUG valdes inte när programmet kompilerades" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "HÃ¥rd begränsning pÃ¥ %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "Det här systemet stöder inte -Z (\"compress\"), använd -z istället" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "Mjuk begränsning pÃ¥ %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "otillÃ¥tet prefix för utfiler\n" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Copyright © %s Free Software Foundation, Inc.\n" +"Detta är fri programvara; se källkoden för kopieringsvillkor. Det finns\n" +"INGEN garanti; inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR NÅGOT SPECIELLT\n" +"ÄNDAMÅL.\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "VARNING: Ingen användarinteraktion i \"vanilla\"-läge" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "VARNING: Lagringsflaggor för icke-text Ã¥sidosatta" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Inga infiler" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "Flaggan -a kan inte användas utan -n" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "Flaggan -l eller -L kan inte användas utan -o" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "" +"Vänligen undvik -X för skalarkiv som ska till Usenet eller offentliga nätverk" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Du har packat upp den sista arkivdelen" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "Skapade %d filer\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "x - tog bort lÃ¥skatalog \"%s\"." + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "x - misslyckades med att ta bort lÃ¥skatalog \"%s\"" + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "Hittade inga skalkommandon i %s" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s ser ut som C-kod, inte som ett skalarkiv" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Hittade inga skalkommandon efter \"klipp-här\" i %s" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s är förmodligen inte ett skalarkiv" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "\"klipp-här\"-raden följdes av: %s" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Startar en skalprocess" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Obligatoriska argument för lÃ¥nga flaggor är obligatoriska även för korta.\n" +"\n" +" -d, --directory=KATALOG gÃ¥ till KATALOG före uppackning\n" +" -c, --overwrite ge -c flaggan till arkivet för överskrivning\n" +" -e, --exit-0 samma sak som `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRÄNG dela upp ihoplagda arkiv efter STRÄNG\n" +" -f, --force samma sak som \"-c\"\n" +" --help visa denna hjälptext och avsluta\n" +" --version visa versionsinformation och avsluta\n" +"\n" +"Om ingen FIL ges sÃ¥ läses standard in.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "Kan inte gÃ¥ till katalog \"%s\"" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "allokera filnamnsbuffert" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "standard in" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "allokera filbuffert" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: Skrivfel" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: Stympad fil" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: \"end\"-rad saknas" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: det finns data efter utfyllnadstecknet \"=\" " + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: felaktig rad" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: \"begin\"-rad saknas" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: OtillÃ¥ten ~user" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: Det finns ingen användare \"%s\"" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "kan inte komma Ã¥t %s" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "skriver inte till FIFO (%s)" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "följer inte symbolisk länk (%s)" + +#: src/uudecode.c:408 +#, c-format +msgid "freopen of %s" +msgstr "öppnar (freopen) %s" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "Ã¥tkomständring (chmod) av %s" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Användning: %s [FIL]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Obligatoriska argument för lÃ¥nga flaggor är obligatoriska även för korta.\n" +" -o, --output-file=FIL skriv resultatet till FIL\n" +" --help visa denna hjälptext och avsluta\n" +" --version visa versionsinformation och avsluta\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Skrivfel" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Fel vid läsning" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Användning: %s [LOKAL_FIL] ICKE_LOKAL_FIL\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 använd base64-kodning enligt RFC1521\n" +" --help visa denna hjälptext och avsluta\n" +" --version visa versionsinformation och avsluta\n" + +#: src/uuencode.c:276 +#, c-format +msgid "fopen-ing %s" +msgstr "öppnar (fopen) %s" + +#: src/uuencode.c:278 +#, c-format +msgid "fstat-ing %s" +msgstr "tar status (fstat) pÃ¥ %s" diff --git a/po/tr.gmo b/po/tr.gmo new file mode 100644 index 0000000000000000000000000000000000000000..ddbabb9703ed0d48c9fa44af4e452f1b75f32648 GIT binary patch literal 18872 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 XUsh}Vy`kj(B^OP@(N_Ehb!q+|#!i=m literal 0 HcmV?d00001 diff --git a/po/tr.po b/po/tr.po new file mode 100644 index 0000000..de15dee --- /dev/null +++ b/po/tr.po @@ -0,0 +1,873 @@ +# translation of sharutils-4.6.3-pre4.po to Turkish +# sharutils-4.6.3-pre4'ün Türkçe çevirisi +# Copyright (C) 2002, 2005, 2006 Free Software Foundation, Inc. +# Eyüp Hakan Duran , 2002, 2004, 2005, 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: sharutils-4.6.3-pre4\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2006-05-21 23:09-0400\n" +"Last-Translator: Eyüp Hakan Duran \n" +"Language-Team: Turkish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-9\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.10.2\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Bilinmeyen sistem hatasý" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: `%s' seçeneði belirsiz\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: `--%s' seçeneði argümansýz kullanýlýr\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: `%c%s' seçeneði argümansýz kullanýlýr\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: `%s' seçeneði bir argümanla kullanýlýr\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: `--%s' seçeneði bilinmiyor\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: `%c%s' seçeneði bilinmiyor\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: kuraldýþý seçenek -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: geçersiz seçenek -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: seçenek bir argümanla kullanýlýr -- %c\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: `-W %s' seçeneði belirsiz\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: `-W %s' seçeneði argümansýz kullanýlýr\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "bellek tükendi" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" +"Not: md5toplamlarý control edilmiyor. GNU coreutils kurmayý gözününde " +"bulundurun." + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "UYARI: Zaman belirteçleri geri yüklenmiyor. GNU Dosya Hizmetleri" + +#: src/shar.c:645 +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "" +"GNU `touch'\\'' yükleniyor, GNU çekirdek araçlarý altýnda daðýtýlmaktadýr..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "kilit dizini '${lock_dir}' mevcut" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "Kilitleyici dizin oluþturulamadý" + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "x - kilitleyici dizini oluþturuldu `'%s\\\"." + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "x - kilitleyici dizini oluþturulamadý `'%s\\\"." + +#: src/shar.c:671 +msgid "yes" +msgstr "evet" + +#: src/shar.c:671 +msgid "overwrite this file" +msgstr "bu dosyanýn üstüne yaz" + +#: src/shar.c:672 +msgid "no" +msgstr "hayýr" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "bu dosyayý atla" + +#: src/shar.c:673 +msgid "all" +msgstr "tümü" + +#: src/shar.c:673 +msgid "overwrite all files" +msgstr "tüm dosyalarýn üstüne yaz" + +#: src/shar.c:674 +msgid "none" +msgstr "hiçbiri" + +#: src/shar.c:674 +msgid "overwrite no files" +msgstr "hiçbir dosyanýn üstüne yazma" + +#: src/shar.c:675 +msgid "help" +msgstr "yardým" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "seçenekleri açýkla" + +#: src/shar.c:676 +msgid "quit" +msgstr "çýkýþ" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "derhal çýk" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "mkdir için çok sayýda dizin" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "x - dizini oluþturdu `'%s\\''." + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "x - dizini oluþturamadý `'%s\\\"." + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "%s'e girilemedi" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "-C reddediliyor, yerine -Z kullanýn" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "Yürürlükteki dizin adý okunamýyor" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" +"Arþivlerin paketi sýrayla açýlmalýdýr!\n" +"Lütfen bir sonra '`cat ${lock_dir}/seq`' bölümünü açýnýz." + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "Yeni dosya, kalan %s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "Halen sýnýr %s\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "%s'nin geri yüklemesi baþarýsýz" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "%d bölümünün sonu, %d bölümüyle devam edin" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "%s dosyasý baþlatýlýyor\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: Sýradan bir dosya deðil" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "Shar içinde kalan boyut: %s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "boþ" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(boþ)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "%s dosyasý açýlamýyor" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "sýkýþtýrýlmýþ" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "gziplendi" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "bziplendi" + +#: src/shar.c:1151 +msgid "binary" +msgstr "iki tabanlý" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(sýkýþtýrýlmýþ)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(gziplenmiþ)" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(bziplenmiþ)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(iki tabanlý)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "Çatallanamadý" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "%s dosyasý (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "metin" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(metin)" + +#: src/shar.c:1251 +#, c-format +msgid "overwriting %s" +msgstr "%s'in üstüne yazýlýyor" + +#: src/shar.c:1253 +#, c-format +msgid "overwrite %s" +msgstr "%s'in üstüne yaz" + +#: src/shar.c:1257 +#, c-format +msgid "SKIPPING %s" +msgstr "%s ATLANIYOR" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "açýlma iptal edildi" + +#: src/shar.c:1262 +#, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "%s ATLANIYOR (dosya zaten var)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "%s kaydediliyor (%s)" + +#: src/shar.c:1276 +#, c-format +msgid "x - extracting %s %s" +msgstr "x - %s %s açýlýyor" + +#: src/shar.c:1392 +#, c-format +msgid "restore of %s failed\n" +msgstr "%s'nin geri yüklemesi baþarýsýz\n" + +#: src/shar.c:1401 +#, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "%1$ld bölümünün sonu, %2$ld bölümüyle devam edin" + +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "%s bölümünün sonu %d" + +#: src/shar.c:1408 +msgid "archive" +msgstr "arþiv" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "%s dosyasý %d bölümünde devam etmektedir" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "Lütfen önce ilk bölümü açýnýz!" + +#: src/shar.c:1460 +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "Lütfen önce '${shar_sequence}' bölümünü açýnýz!" + +#: src/shar.c:1471 +#, c-format +msgid "STILL SKIPPING %s" +msgstr "HÂL ATLANIYOR %s" + +#: src/shar.c:1479 +#, c-format +msgid "continuing file %s" +msgstr "%s dosyasýna devam ediliyor" + +#: src/shar.c:1497 +#, c-format +msgid "File %s is complete" +msgstr "Dosya %s tamamlandý" + +#: src/shar.c:1504 +#, c-format +msgid "uudecoding file %s" +msgstr "dosya %s uuçözülüyor" + +#: src/shar.c:1514 +#, c-format +msgid "uncompressing file %s" +msgstr "dosya %s'in sýkýþtýrmasý açýlýyor" + +#: src/shar.c:1522 +#, c-format +msgid "gunzipping file %s" +msgstr "dosya %s gunzipleniyor" + +#: src/shar.c:1530 +#, c-format +msgid "bunzipping file %s" +msgstr "dosya %s bunzipleniyor" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "MD5 kontrolü baþarýsýz" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "'yenileme uyarýsý: %1$s'in boyutu %2$s deðill\n" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "çýktý dosya adý atanýyor" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "`%s' açýlýyor" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "`%s' kapatýlýyor" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Daha fazla bilgi için `%s --help' yazýn.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Kullanýmý: %s [SEÇENEK]... [DOSYA]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Uzun seçenekler için zorunlu olan argümanlar, kýsa seçenekler için de " +"zorunludur.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"Geribesleme verme:\n" +" --help bu yardýmý görüntüle ve çýk\n" +" --version sürüm bilgisini göster ve çýk\n" +" -q, --quiet, --silent sözlü mesajlarý yerel görüntüleme\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Dosya seçme:\n" +" -p, --intermix type kip deðiþtirmek için dosya listesinde -[BTzZ]'ye " +"izin ver\n" +" -S, --stdin-file-list dosya listesini standart girdiden oku\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Dosya seçme:\n" +" -p, --intermix-type kip deðiþtirmek için dosya listesinde -[BTz]'ye " +"izin ver\n" +" -S, --stdin-file-list dosya listesini standart girdiden oku\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"Çýktý bölme:\n" +" -o, --output-prefix=ÖNEK Çýktýyý ÖNEK.01'den ÖNEK.NN'e dek dosyalara " +"gönder\n" +" -l, --whole-size-limit=BOYUT Dosyalarý deðil arþivi, BOYUT kilobayta " +"böl\n" +" -L, --spilt-size-limit=BOYUT Dosyalarý ya da arþivi BOYUT kilobayta böl\n" + +#: src/shar.c:1759 +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Shar baþlýklarýný belirleme:\n" +" -n, --archive-name=AD arþivi belgelemek için AD'ý kullan\n" +" -s, --submitter=ADRES gönderici ismini belirle\n" +" -a, --net-headers çýktýyý gönderen: & Arþiv ismi: baþlýklar\n" +" -c, --cut-mark shar'ý kesim çizgisiyle baþlat\n" +" -t, --translate mesajlarý betik içinde çevir\n" +"\n" +"Dosya depolanma þeklini seçme:\n" +" -M, --mixed-uuencode uukodlamayý dinamik kararlaþtýr (öntanýmlý)\n" +" -T, --text-files tüm dosyalarý metin varsay\n" +" -B, --uuencode tüm dosyalarý iki tabanlý varsay, uukodla\n" +" -z, --gzip tüm dosyalarý gzipleyip uukodla\n" +" -g, --level-for-gzip=DÜZEY gzip'e geçiþ -DÜZEY'i (öntanýmlýsý:9)\n" +" -j, --bzip2 tüm dosyalarý bzip2'leyip uukodla\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress tüm dosyalarý sýkýþtýr ve uukodla\n" +" -b, --bits-per-code=BIT sýkýþtýrmaya geçiþ -BIT'i (öntanýmlýsý:12)\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Ýletime karþý koruma:\n" +" -w, --no-character-count boyutu kontrol etmek için `wc -c' kullanma\n" +" -D, --no-md5-digest doðrulamak için `md5sum' özütünü kullanma\n" +" -F, --force-prefix önek karakterini her satýrda zorla kullan\n" +" -d, --here-delimiter=DÝZGÝ shar'daki dosyalarý sýnýrlamak için " +"DÝZGÝ'yi kullan\n" +"\n" +"Deðiþik türlerde shar'lar üretme:\n" +" -V, --vanilla-operation çok basit ve esnek shar'lar üret\n" +" -P, --no-piping shar çözüleceðinde tamamen geçici dosyalar " +"kullanarak çöz\n" +" -x, --no-check-existing mevcut dosyalarýn üzerine körlemesine yaz\n" +" -X, --query-user dosyalarýn üzerine yazmadan önce kullanýcýyý sor " +"(Að için deðil)\n" +" -m, --no-timestamp dosya deðiþim tarih ve zamanýný geri yükleme\n" +" -Q, --quit-unshar shar çözüleceðinde mesajlarý dillendirmekten " +"kaçýn\n" +" -f, --basename sýradüzeni yok sayýp, bir dizine geri yükle\n" +" --no-i18n uluslararasýlaþtýrýlmýþ kabuk senaryosu üretme\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"-o seçeneði -l ya da -L ile, -n seçeneði -a ile kullanýlmalýdýr.\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "-g seçeneði -z, -b seçeneði -Z gerektirir.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "-g seçeneði -z gerektirir.\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "Yazýlým hatalarýný <%s>'e bildiriniz.\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "geçersiz dosya boyutu limiti `%s'" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "geçersiz biçem (sayma alaný çok geniþ): '%s'\n" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "HATA AYIKLAMA, derleme sýrasýnda seçilmemiþtir." + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "Donaným sýnýrý %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "Bu sistem -Z'yi ('sýkýþtýr') desteklemiyor, yerine -z kullanýnýz" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "Yazýlým sýnýrý %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "kuraldýþý çýktý öneki\n" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Kopyahakký (C) %s Free Software Foundation, Inc.\n" +"Bu bir serbest yazýlýmdýr; kopyalama koþullarý için kaynak koduna bakýnýz.\n" +"Hiçbir garantisi yoktur; hatta SATILABÝLÝRLÝÐÝ veya ÞAHSÝ KULLANIMINIZA\n" +"UYGUNLUÐU için bile garanti verilmez.\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "UYARI: Vanilla kipinde kullanýcý etkileþimi olmaz" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "UYARI: Metin dýþý depolama seçenekleri geçersiz kýlýndý" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Hiçbir girdi dosyasý yok" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "-a seçeneði, -n seçeneði olmaksýzýn kullanýlamaz" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "-l ya da -L seçeneði, -o'suz kullanýlamaz" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "LÜTFEN Usenet ya da halka açýk aðlarda -X shar'lardan kaçýnýnýz" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Son kýsmý açtýnýz" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "%d dosya oluþturuldu\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "x - kilitleyici dizini sildi `'%s\\''." + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "x - kilitleyici dizini silemedi `'%s\\''." + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "%s'de kabuk komutu bulunamadý" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s, kabuk arþivinden çok, ham C kodunu andýrýyor." + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "%s'deki `kesme'den sonra kabuk komutu bulunamadý" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s, muhtemelen bir kabuk arþivi deðil" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "`kesme' çizgisini %s izliyor" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "`sh' iþlemi baþlatýlýyor" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Uzun seçenekler için zorunlu argümanlar, kýsa seçenekler için de " +"zorunludur.\n" +"\n" +" -d, --directory=DÝZÝN açmadan önce DÝZÝN'e gidin\n" +" -c, --overwrite dosyalarýn üstüne yazmak için shar senaryosuna " +"-c geçin\n" +" -e, --exit-0 `--split-at=\"exit 0\"' ile ayný\n" +" -E, --split-at=DÝZGÝ birleþtirilmiþ shar'larý DÝZGÝ'den sonra böl\n" +" -f, --force `-c' ile ayný\n" +" --help bu yardýmý görüntüle ve çýk\n" +" --version sürüm bilgisini göster ve çýk\n" +"\n" +"DOSYA yoksa, standart girdi okunur.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "`%s' e girilemiyor" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "dosya adý tamponu ata" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "standart girdi" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "dosya tamponu ata" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: Yazma hatasý" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: Kýsa dosya" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: `son' çizgisi yok" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: dolgulama karakteri `=' sonrasý veri" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: kuraldýþý çizgi" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: `baþlangýç' çizgisi yok" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: Kuraldýþý ~kullanýcý" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: Kullanýcý yok `%s'" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "%s'e eriþilemedi" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "FIFO (%s) yazýmý reddedildi" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "simgesel link (%s) izlenemiyor" + +#: src/uudecode.c:408 +#, c-format +msgid "freopen of %s" +msgstr "%s'in freaçýlýmý" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "%s'in chkipi" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Kullaným: %s [DOSYA] \n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Uzun seçenekler için zorunlu argümanlar, kýsa seçenekler için de zorunludur\n" +" -o, --output-file=DOSYA DOSYA'ya doðrudan çýktý\n" +" --help bu yardýmý görüntüle ve çýk\n" +" --version sürüm bilgisini göster ve çýk\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Yazma hatasý" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Okuma hatasý" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "Kullaným: %s [ÝÇDOSYA] DIÞDOSYA\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 RFC1521'deki gibi 64 tabanlý kodlama kullan\n" +" --help bu yardýmý görüntüle ve çýk\n" +" --version sürüm bilgisini göster ve çýk\n" + +#: src/uuencode.c:276 +#, c-format +msgid "fopen-ing %s" +msgstr "%s 'f'açýlýyor" + +#: src/uuencode.c:278 +#, c-format +msgid "fstat-ing %s" +msgstr "%s 'f'statlanýyor" diff --git a/po/vi.gmo b/po/vi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..684a55ee9fde4df884e1145a919d6693c6384456 GIT binary patch literal 22412 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 literal 0 HcmV?d00001 diff --git a/po/vi.po b/po/vi.po new file mode 100644 index 0000000..80ef783 --- /dev/null +++ b/po/vi.po @@ -0,0 +1,901 @@ +# Vietnamese Translation for Sharutils. +# Copyright © 2005, 2006 Free Software Foundation, Inc. +# Clytie Siddall , 2005, 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: sharutils 4.6.3-pre4\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2006-05-24 16:12+0930\n" +"Last-Translator: Clytie Siddall \n" +"Language-Team: Vietnamese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0\n" +"X-Generator: LocFactoryEditor 1.6b36\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "Lỗi hệ thống không rõ" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s: tùy chọn « %s » mÆ¡ hồ.\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s: tùy chọn « --%s » không cho phép đối số.\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s: tùy chọn « %c%s » không cho phép đối số.\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s: tùy chọn « %s » cần đến đối số.\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s: không nhận biệt tùy chọn « --%s ».\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s: không nhận biệt tùy chọn « %c%s ».\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s: không cho phép tùy chọn « -- %c ».\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s: tùy chọn không thích hợp « -- %c ».\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s: tùy chọn cần đến đối số « -- %c ».\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s: tùy chọn « -W %s » mÆ¡ hồ.\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s: tùy chọn « -W %s » không cho phép đối số.\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "hết bộ nhớ hoàn toàn" + +#: src/shar.c:608 +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "" +"Ghi chú : không thể kiểm tra các md5sum. NhÆ° thế thì bạn nên suy tính việc " +"cài đặt chÆ°Æ¡ng trình coreutils của GNU." + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "" +"CẢNH BÁO: không thể phục hồi nhãn thời gian. NhÆ° thế thì bạn nên suy tính " +"việc lấy và" + +#: src/shar.c:645 +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "" +"đang cài đặt trình « touch'\\' » của GNU, được phát hành trong gói phần mềm " +"coreutils (các tiện ích lõi) của GNU" + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "thÆ° mục khóa « ${lock_dir} » đã có" + +#: src/shar.c:657 +msgid "failed to create lock directory" +msgstr "việc tạo thÆ° mục khóa bị lỗi" + +#: src/shar.c:661 +#, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "x - đã tạo thÆ° mục khóa « %s\\'' »" + +#: src/shar.c:663 +#, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "x - việc tạo thÆ° mục khóa « %s'\\' » bị lỗi." + +#: src/shar.c:671 +msgid "yes" +msgstr "có" + +#: src/shar.c:671 +msgid "overwrite this file" +msgstr "ghi đè lên tập tin này" + +#: src/shar.c:672 +msgid "no" +msgstr "không" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "bỏ qua tập tin này" + +#: src/shar.c:673 +msgid "all" +msgstr "hết" + +#: src/shar.c:673 +msgid "overwrite all files" +msgstr "ghi đè lên mọi tập tin" + +#: src/shar.c:674 +msgid "none" +msgstr "không có" + +#: src/shar.c:674 +msgid "overwrite no files" +msgstr "đừng ghi đè gì" + +#: src/shar.c:675 +msgid "help" +msgstr "trợ giúp" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "giải thích các lá»±a chọn" + +#: src/shar.c:676 +msgid "quit" +msgstr "thoát" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "đi vào ngay" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "Quá nhiều thÆ° mục để tạo ra cách mkdir (tạo thÆ° mục)" + +#: src/shar.c:737 +#, c-format +msgid "x - created directory `%s'\\''." +msgstr "x - đã tạo thÆ° mục « %s'\\' »." + +#: src/shar.c:739 +#, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "x - việc tạo thÆ° mục « %s'\\' » bị lỗi." + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "Không thể truy cập %s." + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "« -C » bị phản đối nên hãy sá»­ dụng « -Z » thay thế." + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "Không thể lấy tên thÆ° mục hiện có." + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" +"• Phải giải nén các khó theo thứ tá»±. •\n" +"Lần kế bạn hãy giải nén phần « `c« t ${lock_dir}/seq` »." + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "Tập tin mới, còn lại %s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "Lại bị hạn chế %s\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, c-format +msgid "restore of %s failed" +msgstr "việc phục hồi %s bị lỗi" + +#: src/shar.c:987 +#, c-format +msgid "End of part %d, continue with part %d" +msgstr "Kết thúc phần %d, tiếp tục lại với phần %d" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "Đang bắt đầu tập tin %s...\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s: không phải là tập tin chuẩn" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "Trong « shar: » kích cỡ còn lại %s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "trống" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(trống)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "Không thể mở tập tin %s." + +#: src/shar.c:1148 +msgid "compressed" +msgstr "bị nén" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "bị nén gzip" + +#: src/shar.c:1150 +msgid "bzipped" +msgstr "bị nén bzip" + +#: src/shar.c:1151 +msgid "binary" +msgstr "nhị phân" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(bị nén)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(bị nén gzip)" + +#: src/shar.c:1154 +msgid "(bzipped)" +msgstr "(bị nén bzip)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(nhị phân)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "Không thể tạo tiến trình con" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "Tập tin %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "văn bản" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(văn bản)" + +#: src/shar.c:1251 +#, c-format +msgid "overwriting %s" +msgstr "đang ghi đè lên %s..." + +#: src/shar.c:1253 +#, c-format +msgid "overwrite %s" +msgstr "ghi đè lên %s" + +#: src/shar.c:1257 +#, c-format +msgid "SKIPPING %s" +msgstr "ĐANG BỎ QUA %s..." + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "việc giải nén bị hủy bỏ" + +#: src/shar.c:1262 +#, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "ĐANG BỎ QUA %s (tập tin đã có)..." + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Đang lÆ°u %s (%s)..." + +#: src/shar.c:1276 +#, c-format +msgid "x - extracting %s %s" +msgstr "x — đang giải nén %s %s..." + +#: src/shar.c:1392 +#, c-format +msgid "restore of %s failed\n" +msgstr "việc phục hồi %s bị lỗi\n" + +#: src/shar.c:1401 +#, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "Kết thúc phần %ld, tiếp tục lại với phần %ld" + +#: src/shar.c:1407 +#, c-format +msgid "End of %s part %d" +msgstr "Kết thức %s phần %d" + +#: src/shar.c:1408 +msgid "archive" +msgstr "kho" + +#: src/shar.c:1412 +#, c-format +msgid "File %s is continued in part %d" +msgstr "Tập tin %s có tiếp tục trong phần %d" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "• Hãy giải nén phần 1 trước tiên. •" + +#: src/shar.c:1460 +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "• Hãy giải nén phần « ${shar_sequence} » lần kế tiếp. •" + +#: src/shar.c:1471 +#, c-format +msgid "STILL SKIPPING %s" +msgstr "LẠI ĐANG BỎ QUA %s..." + +#: src/shar.c:1479 +#, c-format +msgid "continuing file %s" +msgstr "đang tiếp tục lại tập tin %s..." + +#: src/shar.c:1497 +#, c-format +msgid "File %s is complete" +msgstr "Tập tin %s đã hoàn tất" + +#: src/shar.c:1504 +#, c-format +msgid "uudecoding file %s" +msgstr "đang giải nén tập tin mã « uu » %s..." + +#: src/shar.c:1514 +#, c-format +msgid "uncompressing file %s" +msgstr "đang giải nén tập tin %s..." + +#: src/shar.c:1522 +#, c-format +msgid "gunzipping file %s" +msgstr "đang giải nén tập tin gzip %s..." + +#: src/shar.c:1530 +#, c-format +msgid "bunzipping file %s" +msgstr "đang giải nén tập tin bzip %s..." + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "Việc kiểm tra MD5 bị lỗi" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "« cảnh báo phục hồi »: kích cỡ của %s không phải là %s\n" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "đang cấp phát tên tập tin xuất..." + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "Đang mở « %s »..." + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Đang đóng « %s »..." + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "Hãy thá»­ lệnh « %s --help » để tìm thông tin thêm (_trợ giúp_).\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Cách sá»­ dụng: %s [TÙY_CHỌN]... [TẬP_TIN]...\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "" +"Tất cả đối số bắt buộc phải sá»­ dụng với tùy chọn dài cÅ©ng bắt buộc với tùy " +"chọn ngắn.\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"Cách gởi thông tin phải hồi:\n" +" --help hiển thị _trợ giúp_ này rồi thoát\n" +" --version xuất thông tin _phiên bản_ rồi thoát\n" +" -q, --quiet, --silent không xuất thông điệp dài trên máy cục bộ (_im_)\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Cách chọn tập tin:\n" +" -p, --intermix-type\n" +"\tcho phép đối số « -[BTzZ] » trong danh sách tập tin để đổi chế độ (_kiểu-" +"trộn-lẫn_)\n" +" -S, --stdin-file-list đọc _danh sách tập tin_ từ _thiết bị nhập chuẩn_\n" + +#: src/shar.c:1745 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"Cách chọn tập tin:\n" +" -p, --intermix-type cho phép đối số -[BTz] trong danh sách tập tin để " +"đổi chế độ (_kiểu-trộn-lẫn_)\n" +" -S, --stdin-file-list đọc _danh sách tập tin_ từ _thiết bị nhập chuẩn_\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"Cách chia tách dữ liệu xuất:\n" +" -o, --output-prefix=TIỀN_TỐ _xuất_ ra các tập tin TIỀN_TỐ.01 đến " +"TIỀN_TỐ.NN (_tiền tố_\n" +" -l, --whole-size-limit=Cá»  \tchia tách kho (không phải tập tin) ra phần " +"Cá»  KB\n" +"\t(_hạn-chế-toàn-kích_cỡ_)\n" +" -L, --split-size-limit=Cá»  \t_chia tách_ kho, hay tập tin, ra phần Cá»  KB\n" +"\t(_hạn-chế-kích_cỡ-bị-chia-tách_)\n" + +#: src/shar.c:1759 +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"Cách điều kiện dòng đầu « shar »:\n" +" -n, --archive-name=TÊN sá»­ dụng _TÊN_ để ghi thông tin về _kho_\n" +" -s, --submitter=ĐỊA_CHỈ không chiụ nghe theo tên _ai đưa ra_\n" +" -a, --net-headers xuất _dòng đầu_ « Submitted-by: » (ai đưa ra)\n" +":\t\t\t\t\t\tvà « Archive-name: » (tên kho) (_mạng_) \n" +" -c, --cut-mark bắt đầu « shar » với dòng bị _cắt_ (_dấu_)\n" +"\n" +"Chọn cách lÆ°u trữ tập tin:\n" +" -M, --mixed-uuencode quyết định động _mã uu_ (mặc định) (_bị " +"trộn_)\n" +" -T, --text-files xá»­ lý mọi _tập tin_ là _văn bản_\n" +" -B, --uuencode xá»­ lý mọi tập tin là nhị phân, sá»­ dụng _mã " +"uu_\n" +" -z, --gzip nén mọi tập tin bằng _gzip_ và mã uu\n" +" -g, --level-for-gzip=CẤP chuyển « -CẤP » (mặc định 9) sang trình gzip\n" +" -j, --bzip2 nén mọi tập tin bằng _bzip2_ và mã uu\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress _nén_ và mã uu hóa mọi tập tin\n" +" -b, --bits-per-code=BIT chuyển « -bBITS » (mặc định 12) sang trình " +"nén\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"Cách bảo vệ chống việc truyền:\n" +" -w, --no-character-count _không_ sá»­ dụng lệnh « wc -c » để kiểm tra " +"kích cỡ\n" +"\t\t(_không-đếm ký-tá»±_)\n" +" -D, --no-md5-digest\n" +"\t\t_không_ sá»­ dụng digest (điều tóm tắt) kiểu « md5sum » để kiểm chứng\n" +" -F, --force-prefix \t_ép buộc_ ký tá»± _tiền tố_ trong mọi dòng\n" +" -d, --here-delimiter=CHUỖI\n" +"\t\tsá»­ dụng CHUỖI để _định giới_ những tập tin khác trong « shar » (_đây_)\n" +"\n" +"Cách tạo những « shar » kiểu khác nhau:\n" +" -V, --vanilla-operation \t\ttạo « shar » kiểu rất đơn giản và dễ sá»­ " +"dụng\n" +"\t\t(_vani [sá»± chọn cÆ¡ bản] thì hành_\n" +" -P, --no-piping \t\tsá»­ dụng chỉ tập tin tạm thời khi « unshar »\n" +"\t\t(_không sá»­ dụng ống dẫn_)\n" +" -x, --no-check-existing \t\tghi đè lên tập tin _tồn tại, không kiểm tra_ " +"trước\n" +" -X, --query-user \t\t_hỏi người dùng_ trước khi ghi đè lên tập " +"tin\n" +"\t\t\t\t\t\t\t\t\t\t\t(không phải cho Mạng)\n" +" -m, --no-timestamp \t_không_ phục hồi _giờ_ và ngày sá»­a đổi tập tin " +"(_nhãn_) \n" +" -Q, --quiet-unshar \ttránh hiển thị thông điệp dài khi « unshar " +"» (_im_)\n" +" -f, --basename \tphục hồi trong cùng một thÆ° mục, không kể phân " +"cấp\n" +"\t\t(_tên-cÆ¡-bản_)\n" +" --no-i18n \t\t\t_không_ ghi tập lệnh vỏ đã _quốc tế hóa_\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"Cần đến tùy chọn « -o » với « -l » or « -L », tùy chọn « -n » với « -a ».\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "Tùy chọn « -g » ngụ ý « -z », tùy chọn « -b » ngụ ý « -Z ».\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "Tùy chọn « -g » ngụ ý « -z ».\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "" +"Hãy thông báo lỗi dịch nào cho %.0s.\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "hạn chế kích thước tập tin không hợp lệ « %s »." + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "định dạng không hợp lệ (trường đếm quá rộng): « %s »\n" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "ChÆ°a chọn tùy chọn DEBUG (gỡ lỗi) vào lúc biên dich." + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "Hạn chế cứng %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "" +"Hệ thống này không hỗ trợ tùy chọn « -Z » (nén) nên hãy sá»­ dụng « -z » thay " +"thế." + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "Hạn chế mềm %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "không cho phép tiền tố xuất\n" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"Bản quyền © năm %s Tổ chức Phần mềm Tá»± do.\n" +"Phần mềm này tá»± do; hãy xem nguồn để tìm điều kiện sao chép.\n" +"Không có bảo đảm gì cả, dù khả năng bán hay khả năng làm việc dứt khoát.\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "" +"CẢNH BÁO : Trong chế độ vani (đơn giản) thì người dùng không tÆ°Æ¡ng tác." + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "CẢNH BÁO : Không chịu nghe theo tùy chọn lÆ°u trữ không là văn bản." + +#: src/shar.c:2238 +msgid "No input files" +msgstr "Không có tập tin nhập" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "Cách sá»­ dụng tùy chọn « -a » phải cÅ©ng nhập « -n »." + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "Cách sá»­ dụng tùy chọn « -l » hay « -L » phải cÅ©ng nhập « -o »." + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "" +"• Quan trọng là bạn không shar kiểu « -X » trên Usenet (nhóm tin) hay mạng " +"công. •" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "Mới giải nén xong mọi phần." + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "Đã tạo %d tập tin.\n" + +#: src/shar.c:2310 +#, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "x — đã gỡ bỏ thÆ° mục khóa « %s'\\' »." + +#: src/shar.c:2312 +#, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "x — việc gỡ bỏ thÆ° mục khóa « %s'\\' » bị lỗi." + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "Không tìm thấy lệnh vỏ nào trong %s" + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s hình nhÆ° mã C thô, không phải kho vỏ." + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "Sau lệnh « cut » (cắt) trong %s, chÆ°a tìm lệnh vỏ nào." + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "Rất có thể là %s không phải là kho vỏ" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr "Dòng « cut » (cắt) có %s theo sau" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "Đang bắt đầu tiến trình « sh »..." + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"Tất cả đối số bắt buộc phải sá»­ dụng với tùy chọn dài cÅ©ng bắt buộc với tùy " +"chọn ngắn.\n" +"\n" +" -d, --directory=THƯ_MỤC \tchuyển đổi sang _THƯ MỤC_ trước khi giải nén\n" +" -c, --overwrite chuyển tùy chọn « -c » sang tập lệnh shar để " +"_ghi đè_ tập tin\n" +" -e, --exit-0 bằng « --split-at=\"exit 0\" »\n" +" -E, --split-at=CHUỖI _chia tách_ các shar nối nhau sau CHUỖI\n" +" -f, --force \tbằng « -c » (_ép buộc_)\n" +" --help \thiển thị _trợ giúp_ này rồi thoát\n" +" --version \txuất thông tin _phiên bản_ rồi thoát\n" +"\n" +"Nếu không có TẬP TIN nào thì sẽ đọc thiết bị nhập chuẩn.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "Không thể chdir (chuyển đổi thÆ° mục) sang « %s »" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "cấp phát bộ đệm tên tập tin" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "thiết bị nhập chuẩn" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "cấp phát bộ đệm tập tin" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: lỗi ghi" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: tập tin ngắn" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: không có dòng « end » (kết thúc)" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: có dữ liệu theo ký tá»± đệm « = »" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: không cho phép dòng này" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: không có dòng « begin » (bắt đầu) nào" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: không cho phép « ~user » (người dùng) này" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: không có người dùng « %s »" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "không thể truy cập %s" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "việc ghi FIFO (nhập trước, xuất trước) bị từ chối (%s)" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "không theo liên kết tượng trÆ°ng (%s)" + +#: src/uudecode.c:408 +#, c-format +msgid "freopen of %s" +msgstr "việc freopen %s" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "việc chmod (thay đổi chế độ) %s" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "Cách sá»­ dụng: %s [TẬP_TIN]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"Tất cả đối số bắt buộc phải sá»­ dụng với tùy chọn dài cÅ©ng bắt buộc với tùy " +"chọn ngắn.\n" +" -o, --output-file=TẬP_TIN hướng _xuất_ ra _TẬP TIN_\n" +" --help hiển thị _trợ giúp_ này rồi thoát\n" +" --version xuất thông tin _phiên bản_ rồi thoát\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "Lỗi ghi" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Lỗi đọc" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "" +"Cách sá»­ dụng: %s [TTN] TTX\n" +"[TTN\t\ttập tin nhập\n" +"TTX\t\ttập tin từ xa]\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 sá»­ dụng mã hóa _cÆ¡ số 64_ nhÆ° theo RFC1521\n" +" --help hiển thị _trợ giúp_ này rồi thoát\n" +" --version xuất thông tin _phiên bản_ rồi thoát\n" + +#: src/uuencode.c:276 +#, c-format +msgid "fopen-ing %s" +msgstr "Đang fopen (mở f) %s..." + +#: src/uuencode.c:278 +#, c-format +msgid "fstat-ing %s" +msgstr "Đang fstat (lấy các thông tin f) %s..." diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo new file mode 100644 index 0000000000000000000000000000000000000000..904d81d7df26ce4b716d6763bfbc09389f8bc5e5 GIT binary patch literal 11239 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 E7kg=3+5i9m literal 0 HcmV?d00001 diff --git a/po/zh_TW.po b/po/zh_TW.po new file mode 100644 index 0000000..e5e689f --- /dev/null +++ b/po/zh_TW.po @@ -0,0 +1,965 @@ +# Translation of `sharutils' messages to Chinese (traditional). +# Copyright (C) 2002 Free Software Foundation, Inc. +# Yuan-Chen Cheng , 2002 +# +msgid "" +msgstr "" +"Project-Id-Version: sharutils 4.3.73\n" +"Report-Msgid-Bugs-To: bug-gnu-utils@gnu.org\n" +"POT-Creation-Date: 2007-07-01 04:57-0700\n" +"PO-Revision-Date: 2002-08-03 20:13 +8\n" +"Last-Translator: Yuan-Chen Cheng \n" +"Language-Team: Chinese (traditional) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=Big5\n" +"Content-Transfer-Encoding: 8bit\n" + +#: lib/error.c:131 lib/error.c:159 +msgid "Unknown system error" +msgstr "¥¼ª¾ªº¨t²Î¿ù»~" + +#: lib/getopt.c:694 +#, c-format +msgid "%s: option `%s' is ambiguous\n" +msgstr "%s¡G¿ï¶µ `%s' ¬O¤£©ú½Tªº\n" + +#: lib/getopt.c:719 +#, c-format +msgid "%s: option `--%s' doesn't allow an argument\n" +msgstr "%s¡G¿ï¶µ `--%s' ¤£¤¹³\¤@­Ó°Ñ¼Æ\n" + +#: lib/getopt.c:724 +#, c-format +msgid "%s: option `%c%s' doesn't allow an argument\n" +msgstr "%s¡G¿ï¶µ `%c%s' ¤£¤¹³\¤@­Ó°Ñ¼Æ\n" + +#: lib/getopt.c:742 lib/getopt.c:915 +#, c-format +msgid "%s: option `%s' requires an argument\n" +msgstr "%s¡G¿ï¶µ`%s' »Ý­n¤@­Ó°Ñ¼Æ\n" + +#: lib/getopt.c:771 +#, c-format +msgid "%s: unrecognized option `--%s'\n" +msgstr "%s¡GµLªk¿ë»{¿ï¶µ `--%s'\n" + +#: lib/getopt.c:775 +#, c-format +msgid "%s: unrecognized option `%c%s'\n" +msgstr "%s¡GµLªk¿ë»{ªº¿ï¶µ `%c%s'\n" + +#: lib/getopt.c:801 +#, c-format +msgid "%s: illegal option -- %c\n" +msgstr "%s¡G«Dªkªº¿ï¶µ -- %c\n" + +#: lib/getopt.c:804 +#, c-format +msgid "%s: invalid option -- %c\n" +msgstr "%s¡GµL®Äªº¿ï¶µ -- %c\n" + +#: lib/getopt.c:834 lib/getopt.c:964 +#, c-format +msgid "%s: option requires an argument -- %c\n" +msgstr "%s¡G¿ï¶µ»Ý­n¤@­Ó°Ñ¼Æ -- %c\n" + +#: lib/getopt.c:881 +#, c-format +msgid "%s: option `-W %s' is ambiguous\n" +msgstr "%s¡G¿ï¶µ `-W %s' ¬O¤£©ú½Tªº\n" + +#: lib/getopt.c:899 +#, c-format +msgid "%s: option `-W %s' doesn't allow an argument\n" +msgstr "%s¡G¿ï¶µ `-W %s' ¤£¤¹³\¤@­Ó°Ñ¼Æ\n" + +#: lib/xmalloc.c:67 +msgid "memory exhausted" +msgstr "°O¾Ð¥ÎºÉ" + +#: src/shar.c:608 +#, fuzzy +msgid "Note: not verifying md5sums. Consider installing GNU coreutils." +msgstr "ĵ§i¡G¤£«ì´_ timestamps¡C¦Ò¼{®³µ¹©M" + +#: src/shar.c:643 +msgid "WARNING: not restoring timestamps. Consider getting and" +msgstr "ĵ§i¡G¤£«ì´_ timestamps¡C¦Ò¼{®³µ¹©M" + +#: src/shar.c:645 +#, fuzzy +msgid "installing GNU `touch'\\'', distributed in GNU coreutils..." +msgstr "¦w¸Ëªº GNU \\`touch'¡A¤À¥¬¦bGNUÀɮפu¨ã¸Ì­±..." + +#: src/shar.c:652 +msgid "lock directory '${lock_dir}' exists" +msgstr "" + +#: src/shar.c:657 +#, fuzzy +msgid "failed to create lock directory" +msgstr "µLªk«Ø¥ßÂê¤Wªº¥Ø¿ý" + +#: src/shar.c:661 +#, fuzzy, c-format +msgid "x - created lock directory `'%s\\''." +msgstr "µLªk«Ø¥ßÂê¤Wªº¥Ø¿ý" + +#: src/shar.c:663 +#, fuzzy, c-format +msgid "x - failed to create lock directory `'%s\\''." +msgstr "µLªk«Ø¥ßÂê¤Wªº¥Ø¿ý" + +#: src/shar.c:671 +msgid "yes" +msgstr "" + +#: src/shar.c:671 +#, fuzzy +msgid "overwrite this file" +msgstr "§ï¼g" + +#: src/shar.c:672 +msgid "no" +msgstr "" + +#: src/shar.c:672 +msgid "skip this file" +msgstr "" + +#: src/shar.c:673 +msgid "all" +msgstr "" + +#: src/shar.c:673 +#, fuzzy +msgid "overwrite all files" +msgstr "§ï¼g" + +#: src/shar.c:674 +msgid "none" +msgstr "" + +#: src/shar.c:674 +#, fuzzy +msgid "overwrite no files" +msgstr "§ï¼g" + +#: src/shar.c:675 +msgid "help" +msgstr "" + +#: src/shar.c:675 +msgid "explain choices" +msgstr "" + +#: src/shar.c:676 +msgid "quit" +msgstr "" + +#: src/shar.c:676 +msgid "exit immediately" +msgstr "" + +#: src/shar.c:718 +msgid "Too many directories for mkdir generation" +msgstr "¹ïmkdir¨Ó»¡¤Ó¦hªº¥Ø¿ý­n²£¥Í" + +#: src/shar.c:737 +#, fuzzy, c-format +msgid "x - created directory `%s'\\''." +msgstr "µLªk«Ø¥ßÂê¤Wªº¥Ø¿ý" + +#: src/shar.c:739 +#, fuzzy, c-format +msgid "x - failed to create directory `%s'\\''." +msgstr "µLªk«Ø¥ßÂê¤Wªº¥Ø¿ý" + +#: src/shar.c:806 src/shar.c:1057 +#, c-format +msgid "Cannot access %s" +msgstr "¤£¯à¦s¨ú %s" + +#: src/shar.c:860 +msgid "-C is being deprecated, use -Z instead" +msgstr "-C ³Q«Å§i¬°¤£¾A¥Î¡A¨Ï¥Î -Z ¥N´À" + +#: src/shar.c:901 src/unshar.c:379 +msgid "Cannot get current directory name" +msgstr "¤£¯à±o¨ì¥Ø«e¤l¥Ø¿ý¦W¦r" + +#: src/shar.c:965 +msgid "" +"Archives must be unpacked in sequence!\n" +"Please unpack part '`cat ${lock_dir}/seq`' next." +msgstr "" + +#: src/shar.c:976 src/shar.c:1383 +#, c-format +msgid "New file, remaining %s, " +msgstr "·sÀɮסAÁÙ¦³%s, " + +#: src/shar.c:977 src/shar.c:1384 +#, c-format +msgid "Limit still %s\n" +msgstr "­­«×¤´¦³ %s\n" + +#: src/shar.c:983 src/shar.c:1558 src/shar.c:1574 +#, fuzzy, c-format +msgid "restore of %s failed" +msgstr "«ì´_ªº" + +#: src/shar.c:987 +#, fuzzy, c-format +msgid "End of part %d, continue with part %d" +msgstr "¥H³¡¤À±µÄò" + +#: src/shar.c:1001 src/shar.c:1477 +#, c-format +msgid "Starting file %s\n" +msgstr "¶}©lÀÉ®× %s\n" + +#: src/shar.c:1052 +#, c-format +msgid "%s: Not a regular file" +msgstr "%s¡G¤£¬O¤@­Ó¥¿±`ªºÀÉ®×" + +#: src/shar.c:1067 +#, c-format +msgid "In shar: remaining size %s\n" +msgstr "¦b shar¡G«O«ù¤j¤p %s\n" + +#: src/shar.c:1086 +msgid "empty" +msgstr "ªÅªº" + +#: src/shar.c:1087 +msgid "(empty)" +msgstr "(ªÅªº)" + +#: src/shar.c:1111 +#, c-format +msgid "Cannot open file %s" +msgstr "¤£¯à¥´¶}ÀÉ®× %s" + +#: src/shar.c:1148 +msgid "compressed" +msgstr "À£ÁYªº" + +#: src/shar.c:1149 +msgid "gzipped" +msgstr "gzipÀ£ÁYªº" + +#: src/shar.c:1150 +#, fuzzy +msgid "bzipped" +msgstr "gzipÀ£ÁYªº" + +#: src/shar.c:1151 +msgid "binary" +msgstr "¤G¶i¦ì" + +#: src/shar.c:1152 +msgid "(compressed)" +msgstr "(À£ÁY)" + +#: src/shar.c:1153 +msgid "(gzipped)" +msgstr "(gzipÀ£ÁYªº)" + +#: src/shar.c:1154 +#, fuzzy +msgid "(bzipped)" +msgstr "(gzipÀ£ÁYªº)" + +#: src/shar.c:1155 +msgid "(binary)" +msgstr "(¤G¶i¦ì)" + +#: src/shar.c:1168 +msgid "Could not fork" +msgstr "¤£¯à fork" + +#: src/shar.c:1173 src/shar.c:1233 +#, c-format +msgid "File %s (%s)" +msgstr "ÀÉ®× %s (%s)" + +#: src/shar.c:1227 +msgid "text" +msgstr "¤å¥»" + +#: src/shar.c:1228 +msgid "(text)" +msgstr "(¤å¥»)" + +#: src/shar.c:1251 +#, fuzzy, c-format +msgid "overwriting %s" +msgstr "§ï¼g" + +#: src/shar.c:1253 +#, fuzzy, c-format +msgid "overwrite %s" +msgstr "§ï¼g" + +#: src/shar.c:1257 +#, fuzzy, c-format +msgid "SKIPPING %s" +msgstr "²¤¹L" + +#: src/shar.c:1258 +msgid "extraction aborted" +msgstr "©ñ±ó¨ú¥X" + +#: src/shar.c:1262 +#, fuzzy, c-format +msgid "SKIPPING %s (file already exists)" +msgstr "(Àɮפw¸g¦s¦b)" + +#: src/shar.c:1272 +#, c-format +msgid "Saving %s (%s)" +msgstr "Àx¦s %s (%s)" + +#: src/shar.c:1276 +#, fuzzy, c-format +msgid "x - extracting %s %s" +msgstr "¨ú¥X" + +#: src/shar.c:1392 +#, fuzzy, c-format +msgid "restore of %s failed\n" +msgstr "«ì´_ªº" + +#: src/shar.c:1401 +#, fuzzy, c-format +msgid "End of part %ld, continue with part %ld" +msgstr "¥H³¡¤À±µÄò" + +#: src/shar.c:1407 +#, fuzzy, c-format +msgid "End of %s part %d" +msgstr "³¡¤Àªº²×ÂI" + +#: src/shar.c:1408 +msgid "archive" +msgstr "¦sÀÉ" + +#: src/shar.c:1412 +#, fuzzy, c-format +msgid "File %s is continued in part %d" +msgstr "±µÄò¦b³¡¥÷" + +#: src/shar.c:1456 +msgid "Please unpack part 1 first!" +msgstr "½Ð¥ý¸Ñ¶}³¡¤À 1¡I" + +#: src/shar.c:1460 +#, fuzzy +msgid "Please unpack part '${shar_sequence}' next!" +msgstr "½Ð¥ý¸Ñ¶}³¡¤À 1¡I" + +#: src/shar.c:1471 +#, fuzzy, c-format +msgid "STILL SKIPPING %s" +msgstr "¤´¬O²¤¹L" + +#: src/shar.c:1479 +#, fuzzy, c-format +msgid "continuing file %s" +msgstr "Ä~ÄòÀÉ®×" + +#: src/shar.c:1497 +#, fuzzy, c-format +msgid "File %s is complete" +msgstr "¬O§¹¥þªº" + +#: src/shar.c:1504 +#, fuzzy, c-format +msgid "uudecoding file %s" +msgstr "¸Ñ¶}ÀÉ®×" + +#: src/shar.c:1514 +#, fuzzy, c-format +msgid "uncompressing file %s" +msgstr "¸ÑÀ£ÁYÀÉ®×" + +#: src/shar.c:1522 +#, fuzzy, c-format +msgid "gunzipping file %s" +msgstr "gzip¸ÑÀ£ÁYÀÉ®×" + +#: src/shar.c:1530 +#, fuzzy, c-format +msgid "bunzipping file %s" +msgstr "gzip¸ÑÀ£ÁYÀÉ®×" + +#: src/shar.c:1585 +msgid "MD5 check failed" +msgstr "MD5 Àˬd¥¢±Ñ" + +#: src/shar.c:1641 +#, c-format +msgid "'restoration warning: size of %s is not %s'\n" +msgstr "" + +#: src/shar.c:1693 +msgid "allocating output file name" +msgstr "" + +#: src/shar.c:1699 +#, c-format +msgid "Opening `%s'" +msgstr "¥´¶} `%s'" + +#: src/shar.c:1710 +#, c-format +msgid "Closing `%s'" +msgstr "Ãö³¬ `%s'" + +#: src/shar.c:1722 src/unshar.c:315 src/uudecode.c:442 src/uuencode.c:205 +#, c-format +msgid "Try `%s --help' for more information.\n" +msgstr "¹Á¸Õ `%s --help' ¥HŪ¨ú§ó¦h¸ê°T.\n" + +#: src/shar.c:1726 src/unshar.c:319 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "¨Ï¥Î¡G%s [°Ñ¼Æ] ¡C¡C¡C[ÀÉ®×]¡C¡C¡C\n" + +#: src/shar.c:1727 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +msgstr "¹ïªø«¬ªº¿ï¶µ©Ò´£¨Ñªº°Ñ¼Æ®æ¦¡»P¹ïµu¦æªº¿ï¶µ¤@¼Ë¡C\n" + +#: src/shar.c:1730 +msgid "" +"\n" +"Giving feedback:\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +" -q, --quiet, --silent do not output verbose messages locally\n" +msgstr "" +"\n" +"´£¨Ñ¦^õX:\n" +" --help Åã¥Ü¥»­¶¨D§U¸ê°T«áÂ÷¶}\n" +" --version ¿é¥Xª©¥»¸ê°T«áÂ÷¶}\n" +" -q, --quiet, --silent ¿é¥X¸û¤Öªº°T®§\n" + +#: src/shar.c:1738 +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"¿ï¾ÜÀÉ®×:\n" +" -p, --intermix-type ¦bÀɮײM³æ¤¤¤¹³\¨Ï¥Î -[BTzZ] ¨Ó§ï«K¼Ò¦¡\n" +" -S, --stdin-file-list ¥Ñ¼Ð·Ç¿é¤JŪ¨úÀɮײM³æ\n" + +#: src/shar.c:1745 +#, fuzzy +msgid "" +"\n" +"Selecting files:\n" +" -p, --intermix-type allow -[BTz] in file lists to change mode\n" +" -S, --stdin-file-list read file list from standard input\n" +msgstr "" +"\n" +"¿ï¾ÜÀÉ®×:\n" +" -p, --intermix-type ¦bÀɮײM³æ¤¤¤¹³\¨Ï¥Î -[BTzZ] ¨Ó§ï«K¼Ò¦¡\n" +" -S, --stdin-file-list ¥Ñ¼Ð·Ç¿é¤JŪ¨úÀɮײM³æ\n" + +#: src/shar.c:1752 +msgid "" +"\n" +"Splitting output:\n" +" -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n" +" -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n" +" -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n" +msgstr "" +"\n" +"¤Á¶}¿é¥X:\n" +" -o, --output-prefix=PREFIX Àɮ׿é¥X¥ÑÀÉ®× PREFIX.01 ¨ì PREFIX.NN\n" +" -l, --whole-size-limit=SIZE ±N archive, «DÀÉ®×, ¨ì SIZE ¤d bytes\n" +" -L, --split-size-limit=SIZE ±N archive, ©ÎÀÉ®×, ¨ì SIZE ¤d bytes\n" + +#: src/shar.c:1759 +#, fuzzy +msgid "" +"\n" +"Controlling the shar headers:\n" +" -n, --archive-name=NAME use NAME to document the archive\n" +" -s, --submitter=ADDRESS override the submitter name\n" +" -a, --net-headers output Submitted-by: & Archive-name: headers\n" +" -c, --cut-mark start the shar with a cut line\n" +" -t, --translate translate messages in the script\n" +"\n" +"Selecting how files are stocked:\n" +" -M, --mixed-uuencode dynamically decide uuencoding (default)\n" +" -T, --text-files treat all files as text\n" +" -B, --uuencode treat all files as binary, use uuencode\n" +" -z, --gzip gzip and uuencode all files\n" +" -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n" +" -j, --bzip2 bzip2 and uuencode all files\n" +msgstr "" +"\n" +"±±¨î shar ¼ÐÀY:\n" +" -n, --archive-name=NAME ¨Ï¥Î NAME ¨Ó±Ô­z¸ÓÀÉ®×Âd\n" +" -s, --submitter=ADDRESS Âмg´£¥æªÌ¦WºÙ\n" +" -a, --net-headers ¿é¥X´£¥æªÌ¤è¦¡: & ÀÉ®×Âd¦WºÙ: ¼ÐÀY\n" +" -c, --cut-mark ¨Ï¥Î¤@­Ó cut ¦æ¨Ó¶}©l shar\n" +"\n" +"¿ï¾ÜÀÉ®×°ïÅ|ªº¤è¦¡:\n" +" -M, --mixed-uuencode °ÊºA¨M©w½s½X¤è¦¡ (¹w³])\n" +" -T, --text-files ±N©Ò¦³ÀÉ®×·í§@¤å¦rÀɳB²z\n" +" -B, --uuencode ±N©Ò¦³ÀɮרϥΤG¶i¦ìÀÉ¡A¨Ï¥Î uuencode\n" +" -z, --gzip gzip À£ÁY¨Ã uuencode ½s½X©Ò¦³ªºÀÉ®×\n" +" -g, --level-for-gzip=LEVEL ±NÀ£ÁY¤ñ -LEVEL (¹w³]¬O 9) µ¹ gzipÀ£ÁYµ{¦¡\n" + +#: src/shar.c:1777 +msgid "" +" -Z, --compress compress and uuencode all files\n" +" -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n" +msgstr "" +" -Z, --compress ±N©Ò¦³ÀÉ®× compress ¨Ã uuencode\n" +" -b, --bits-per-code=BITS ±N°Ñ¼Æ -bBITS (¹w³] 12) µ¹ compress\n" + +#: src/shar.c:1782 +msgid "" +"\n" +"Protecting against transmission:\n" +" -w, --no-character-count do not use `wc -c' to check size\n" +" -D, --no-md5-digest do not use `md5sum' digest to verify\n" +" -F, --force-prefix force the prefix character on every line\n" +" -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n" +"\n" +"Producing different kinds of shars:\n" +" -V, --vanilla-operation produce very simple and undemanding shars\n" +" -P, --no-piping exclusively use temporary files at unshar time\n" +" -x, --no-check-existing blindly overwrite existing files\n" +" -X, --query-user ask user before overwriting files (not for Net)\n" +" -m, --no-timestamp do not restore file modification dates & times\n" +" -Q, --quiet-unshar avoid verbose messages at unshar time\n" +" -f, --basename restore in one directory, despite hierarchy\n" +" --no-i18n do not produce internationalized shell script\n" +msgstr "" +"\n" +"¦bÂà´«¹Lµ{¤¤ªº«OÅ@:\n" +" -w, --no-character-count ¤£¨Ï¥Î `wc -c' ¨ÓÀˬd¤j¤p\n" +" -D, --no-md5-digest ¤£¨Ï¥Î `md5sum' ºK­n¨Ó½T»{\n" +" -F, --force-prefix ±j­¢¦b¨C¤@¦æ«e­±¥[¦r¤¸\n" +" -d, --here-delimiter=STRING ¨Ï¥Î STRING ¦b shar ¸Ì­±°µ¬°Àɮתº¤À¹j\n" +"\n" +"²£¥Í¤£¦PºØÃþªº shar:\n" +" -V, --vanilla-operation ²£¥Í«D±`²³æ¥B¹ïÀô¹Ò­n¨D¤£°ªªºªº shar\n" +" -P, --no-piping ¦b shar ®i¶}®É¨Ï¥Î¼È¦sÀÉ\n" +" -x, --no-check-existing ¤£Àˬd¦aÂмg²{¦³ÀÉ®×\n" +" -X, --query-user ¦bÂмgÀɮ׫e¸ß°Ý¨Ï¥ÎªÌ («D¬° Net ³]­p)\n" +" -m, --no-timestamp ¨Ã¤£¦^´_Àɮתº­×§ï¤é´Á»P®É¶¡\n" +" -Q, --quiet-unshar ¦b¸Ñ¶} shar ®ÉÁקKÅã¥Ü¥X¸Ô²Óªº°T®§\n" +" -f, --basename ¤£ºÞ­ì¦³ªº¥Ø¿ýµ²ºc¡A¦b¤@­Ó¥Ø¿ý¤U¦^¦sÀÉ®×\n" +" --no-i18n ¤£²£¥Í°ê»Ú¤Æªº shell µ{¦¡\n" + +#: src/shar.c:1800 +msgid "" +"\n" +"Option -o is required with -l or -L, option -n is required with -a.\n" +msgstr "" +"\n" +"¨Ï¥Î -l ©Î -L ®É»Ý­n¥[ -o °Ñ¼Æ¡A¨Ï¥Î -a °Ñ¼Æ®É»Ý­n -n °Ñ¼Æ¡C\n" + +#: src/shar.c:1804 +msgid "Option -g implies -z, option -b implies -Z.\n" +msgstr "°Ñ¼Æ -g ¥]¨ç -z, °Ñ¼Æ -b ¥]§t -Z.\n" + +#: src/shar.c:1807 +msgid "Option -g implies -z.\n" +msgstr "°Ñ¼Æ -g ¥]¨ç -z.\n" + +#. TRANSLATORS: add the contact address for your translation team! +#: src/shar.c:1811 src/unshar.c:334 src/uudecode.c:453 src/uuencode.c:215 +#, c-format +msgid "Report bugs to <%s>.\n" +msgstr "±Nµ{¦¡¿ù»~³ø§i°e¨ì <%s>, ½Ķ¿ù»~³ø§i°e¨ì zh-l10n@linux.org.tw.\n" + +#: src/shar.c:1869 +#, c-format +msgid "invalid file size limit `%s'" +msgstr "" + +#: src/shar.c:1905 +#, c-format +msgid "invalid format (count field too wide): '%s'\n" +msgstr "" + +#: src/shar.c:1966 +msgid "DEBUG was not selected at compile time" +msgstr "°£¿ù¿ï¶µ¦b½sĶ®É¨S¦³³Q¿ï¾Ü" + +#: src/shar.c:1986 +#, c-format +msgid "Hard limit %s\n" +msgstr "±jªº­­«× %s\n" + +#: src/shar.c:2028 +msgid "This system doesn't support -Z ('compress'), use -z instead" +msgstr "¦¹¨t²Î¤£¤ä´© -Z ('compress'), ½Ð§ï¥Î -z" + +#: src/shar.c:2061 +#, c-format +msgid "Soft limit %s\n" +msgstr "®zªº­­«× %s\n" + +#: src/shar.c:2076 +#, c-format +msgid "illegal output prefix\n" +msgstr "" + +#: src/shar.c:2123 src/unshar.c:417 src/uudecode.c:491 src/uuencode.c:255 +#, fuzzy, c-format, no-wrap +msgid "" +"Copyright (C) %s Free Software Foundation, Inc.\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +msgstr "" +"ª©Åv©Ò¦³ (C) %s ¦Û¥Ñ³nÅé°òª÷·|\n" +"³o¬O¤@­Ó¦Û¥Ñ³nÅé; Ãö©ó½Æ¨î±ø¥ó½Ð¾\Ū·½½X. ¨S¦³¾á«O;\n" +"¦ý¤£¥]§t´N¾A°â©Ê¥H¤Î¯S©w¥Øªºªº¾A¥Î©Ê.\n" + +#: src/shar.c:2170 +msgid "WARNING: No user interaction in vanilla mode" +msgstr "ĵ§i: ¦b²©ö¼Ò¦¡¤¤¤£¤ä´©¨Ï¥ÎªÌ¤¬°Ê" + +#: src/shar.c:2182 +msgid "WARNING: Non-text storage options overridden" +msgstr "ĵ§i: «D¤å¦rÀx¦s°Ñ¼ÆÂмg" + +#: src/shar.c:2238 +msgid "No input files" +msgstr "¨S¦³¿é¤JªºÀÉ®×" + +#: src/shar.c:2244 +msgid "Cannot use -a option without -n" +msgstr "¤£¯à¨Ï¥Î -a ¿ï¶µ¦Ó¨S¦³ -n" + +#: src/shar.c:2250 +msgid "Cannot use -l or -L option without -o" +msgstr "¤£¯à¨Ï¥Î -l ©Î -L ¿ï¶µ¦Ó¨S¦³ -o" + +#: src/shar.c:2262 +msgid "PLEASE avoid -X shars on Usenet or public networks" +msgstr "½ÐÁקK -X shars ¤W Usenet ©Î¤½¥Îºô¸ô" + +#: src/shar.c:2303 +msgid "You have unpacked the last part" +msgstr "§A¤w¸g¸Ñ¶}³Ì«á³¡¤À" + +#: src/shar.c:2305 +#, c-format +msgid "Created %d files\n" +msgstr "«Ø¥ß %d ÀÉ®×\n" + +#: src/shar.c:2310 +#, fuzzy, c-format +msgid "x - removed lock directory `'%s\\''." +msgstr "µLªk«Ø¥ßÂê¤Wªº¥Ø¿ý" + +#: src/shar.c:2312 +#, fuzzy, c-format +msgid "x - failed to remove lock directory `'%s\\''." +msgstr "µLªk«Ø¥ßÂê¤Wªº¥Ø¿ý" + +#: src/unshar.c:171 +#, c-format +msgid "Found no shell commands in %s" +msgstr "§ä¤£¨ì shell ©R¥O¡A¦b %s " + +#: src/unshar.c:187 +#, c-format +msgid "%s looks like raw C code, not a shell archive" +msgstr "%s¬Ý°_¨Ó¹³­ì©lªº C µ{¦¡½X¡A¤£¤@­Ó Shell Àɮק¨" + +#: src/unshar.c:223 +#, c-format +msgid "Found no shell commands after `cut' in %s" +msgstr "¦b %s ¸Ì­±ªº `cut' ¤§«á§ä¤£¨ì shell ©R¥O" + +#: src/unshar.c:244 +#, c-format +msgid "%s is probably not a shell archive" +msgstr "%s ¥i¯à¤£¬O¤@­Ó shell Àɮק¨" + +#: src/unshar.c:245 +#, c-format +msgid "The `cut' line was followed by: %s" +msgstr " `cut' ©Ò¦b¨º¤@¦æ¦b: %s ¤§«á" + +#: src/unshar.c:271 +msgid "Starting `sh' process" +msgstr "±Ò°Ê `sh' µ{§Ç" + +#: src/unshar.c:320 +msgid "" +"Mandatory arguments to long options are mandatory for short options too.\n" +"\n" +" -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n" +" -c, --overwrite pass -c to shar script for overwriting files\n" +" -e, --exit-0 same as `--split-at=\"exit 0\"'\n" +" -E, --split-at=STRING split concatenated shars after STRING\n" +" -f, --force same as `-c'\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +"\n" +"If no FILE, standard input is read.\n" +msgstr "" +"¹ïªø«¬ªº¿ï¶µ©Ò´£¨Ñªº°Ñ¼Æ®æ¦¡»P¹ïµu¦æªº¿ï¶µ¤@¼Ë\n" +"\n" +" -d, --directory=DIRECTORY ¦b¸Ñ¶}«e§ïÅܥؿý¨ì DIRECTORY\n" +" -c, --overwrite ±N -c ¶Çµ¹ shar ÀÉ®×Âd¨Ó³]©wÂмgÀÉ®×\n" +" -e, --exit-0 »P `--split-at=\"exit 0\"' ¬Û¦P\n" +" -E, --split-at=STRING ¦b STRING ¤§«á¤À³Î¦X¨Ö¹Lªº shar\n" +" -f, --force »P `-c' ¬Û¦P\n" +" --help Åã¥Ü¥»­¶¸ê°T«áÂ÷¶}\n" +" --version Åã¥Üª©¥»¸ê°T«áÂ÷¶}\n" +"\n" +"¦pªG¨S¦³ FILE, ¥Ñ¼Ð·Ç¿é¤JŪ¤J.\n" + +#: src/unshar.c:397 +#, c-format +msgid "Cannot chdir to `%s'" +msgstr "µLªk¤Á¤J¥Ø¿ý `%s'" + +#: src/unshar.c:448 src/unshar.c:510 +msgid "allocate file name buffer" +msgstr "" + +#: src/unshar.c:469 +msgid "standard input" +msgstr "¼Ð·Ç¿é¤J" + +#: src/unshar.c:531 +msgid "allocate file buffer" +msgstr "" + +#: src/uudecode.c:126 src/uudecode.c:430 +#, c-format +msgid "%s: Write error" +msgstr "%s: ¼g¥X¿ù»~" + +#: src/uudecode.c:144 src/uudecode.c:232 +#, c-format +msgid "%s: Short file" +msgstr "%s: µuÀÉ®×" + +#: src/uudecode.c:180 +#, c-format +msgid "%s: No `end' line" +msgstr "%s: ¨S¦³ `end' ¨º¤@¦æ" + +#: src/uudecode.c:241 +#, c-format +msgid "%s: data following `=' padding character" +msgstr "%s: ¸ê®Æ¸òÀH¦b `=' ³o­Ó¶ñ¥R¦r¤¸¤§«á" + +#: src/uudecode.c:265 src/uudecode.c:273 src/uudecode.c:287 +#, c-format +msgid "%s: illegal line" +msgstr "%s: «Dªkªº¤@¦æ" + +#: src/uudecode.c:327 +#, c-format +msgid "%s: No `begin' line" +msgstr "%s: ¦b¸Ó¦æ¤º¨S¦³ `begin'" + +#: src/uudecode.c:359 +#, c-format +msgid "%s: Illegal ~user" +msgstr "%s: «Dªk¨Ï¥ÎªÌ ~user" + +#: src/uudecode.c:366 +#, c-format +msgid "%s: No user `%s'" +msgstr "%s: ¤£¦s¦b¨Ï¥ÎªÌ `%s'" + +#: src/uudecode.c:390 +#, c-format +msgid "cannot access %s" +msgstr "¤£¯à¦s¨ú %s" + +#: src/uudecode.c:395 +#, c-format +msgid "denied writing FIFO (%s)" +msgstr "©Úµ´¼g¥X FIFO (%s)" + +#: src/uudecode.c:400 +#, c-format +msgid "not following symlink (%s)" +msgstr "¨Ã¤£¸òÀH symlink (%s)" + +#: src/uudecode.c:408 +#, fuzzy, c-format +msgid "freopen of %s" +msgstr "¥´¶} `%s'" + +#: src/uudecode.c:414 +#, c-format +msgid "chmod of %s" +msgstr "" + +#: src/uudecode.c:446 +#, c-format +msgid "Usage: %s [FILE]...\n" +msgstr "¨Ï¥Î¤èªk¡G%s [ÀÉ®×]...\n" + +#: src/uudecode.c:447 +msgid "" +"Mandatory arguments to long options are mandatory to short options too.\n" +" -o, --output-file=FILE direct output to FILE\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"¹ïªø«¬ªº¿ï¶µ©Ò´£¨Ñªº°Ñ¼Æ®æ¦¡»P¹ïµu¦æªº¿ï¶µ¤@¼Ë¡C\n" +" -o, --output-file=FILE ª½±µ¿é¥X¨ìÀÉ®× FILE\n" +" --help Åã¥Ü¥»­¶¸ê°T«áÂ÷¶}\n" +" --version ¿é¥Xª©¥»¸ê°T«áÂ÷¶}\n" + +#: src/uuencode.c:136 src/uuencode.c:304 src/uuencode.c:311 +msgid "Write error" +msgstr "¼g¥X¿ù»~" + +#: src/uuencode.c:158 src/uuencode.c:189 src/uuencode.c:191 +msgid "Read error" +msgstr "Ū¨ú¿ù»~" + +#: src/uuencode.c:209 +#, c-format +msgid "Usage: %s [INFILE] REMOTEFILE\n" +msgstr "¨Ï¥Î¤èªk:%s [¿é¤JÀÉ®×] »·ºÝÀÉ®×\n" + +#: src/uuencode.c:210 +msgid "" +"\n" +" -m, --base64 use base64 encoding as of RFC1521\n" +" --help display this help and exit\n" +" --version output version information and exit\n" +msgstr "" +"\n" +" -m, --base64 ¨Ï¥Î base64 ½s½X¦p¦P RFC1521\n" +" --help Åã¥Ü¥»­¶¨D§U¸ê°T«áÂ÷¶}\n" +" --version ¿é¥Xª©¥»¸ê°T«áÂ÷¶}\n" + +#: src/uuencode.c:276 +#, fuzzy, c-format +msgid "fopen-ing %s" +msgstr "¥´¶} `%s'" + +#: src/uuencode.c:278 +#, fuzzy, c-format +msgid "fstat-ing %s" +msgstr "¶}©lÀÉ®× %s\n" + +#~ msgid "[no, yes, all, quit] (no)?" +#~ msgstr "[no§_, yes¬O, all¥þ³¡, quitÂ÷¶}] (no)?" + +#~ msgid "Please unpack part" +#~ msgstr "½Ð¸Ñ¶}³¡¤À" + +#~ msgid "next!" +#~ msgstr "¤U¤@­Ó¡I" + +#~ msgid "File" +#~ msgstr "ÀÉ®×" + +#~ msgid "original size" +#~ msgstr "­ì¨Óªº¤j¤p" + +#~ msgid "current size" +#~ msgstr "¥Ø«e¤j¤p" + +#~ msgid "Must unpack archives in sequence!" +#~ msgstr "¥²¶·¨Ì·Ó¶¶§Ç¸Ñ¶}¸ê®ÆÀÉ¡I" + +#~ msgid "lock directory" +#~ msgstr "Âê¤W¥Ø¿ý" + +#, fuzzy +#~ msgid "created lock directory" +#~ msgstr "Âê¤W¥Ø¿ý" + +#, fuzzy +#~ msgid "created %s" +#~ msgstr "¤w«Ø¥ß" + +#, fuzzy +#~ msgid "could not create %s" +#~ msgstr "µLªk«Ø¥ß" + +#~ msgid "restore of" +#~ msgstr "«ì´_ªº" + +#~ msgid "failed" +#~ msgstr "¥¢±Ñ" + +#~ msgid "removed" +#~ msgstr "²¾°£" + +#~ msgid "failed to remove" +#~ msgstr "²¾°£¥¢±Ñ" + +#~ msgid "continue with part" +#~ msgstr "¥H³¡¤À±µÄò" + +#~ msgid "End of" +#~ msgstr "µ²§ô" + +#~ msgid "part" +#~ msgstr "³¡¤À" + +#~ msgid "" +#~ "Selecting files:\n" +#~ " -p, --intermix-type allow -[BTz] in file lists to change mode\n" +#~ " -S, --stdin-file-list read file list from standard input\n" +#~ msgstr "" +#~ "¿ï¾ÜÀÉ®×:\n" +#~ " -p, --intermix-type ¦bÀɮײM³æ¤¤¤¹³\¨Ï¥Î -[BTzZ] ¨Ó§ï«K¼Ò¦¡\n" +#~ " -S, --stdin-file-list ¥Ñ¼Ð·Ç¿é¤JŪ¨úÀɮײM³æ\n" + +#~ msgid "" +#~ "\n" +#~ "Giving feedback:\n" +#~ " --help display this help and exit\n" +#~ " --version output version information and exit\n" +#~ " -q, --quiet, --silent do not output verbose messages locally\n" +#~ "\n" +#~ "Selecting files:\n" +#~ " -p, --intermix-type allow -[BTzZ] in file lists to change mode\n" +#~ " -S, --stdin-file-list read file list from standard input\n" +#~ "\n" +#~ "Splitting output:\n" +#~ " -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX." +#~ "NN\n" +#~ " -l, --whole-size-limit=SIZE split archive, not files, to SIZE " +#~ "kilobytes\n" +#~ " -L, --split-size-limit=SIZE split archive, or files, to SIZE " +#~ "kilobytes\n" +#~ msgstr "" +#~ "\n" +#~ "µ¹¤©¦^õX:\n" +#~ " --help Åã¥Ü¥»­¶¸ê°T«áÂ÷¶}\n" +#~ " --version ¿é¥Xª©¥»¸ê°T«áÂ÷¶}\n" +#~ " -q, --quiet, --silent ¿é¥X¸ûºë²ªº¸ê°T\n" +#~ "\n" +#~ "¿ï¾ÜÀÉ®×:\n" +#~ " -p, --intermix-type ¤¹³\Àɮפ¤ªº -[BTzZ] ¥H¤Á·|¼Ò¦¡\n" +#~ " -S, --stdin-file-list ±q¼Ð·Ç¿é¤JŪ¨úÀÉ®×\n" +#~ "\n" +#~ "±N¿é¥XÀɮפÁ¶}:\n" +#~ " -o, --output-prefix=PREFIX ¿é¥XÀÉ®×±q PREFIX.01 ¨ì PREFIX.NN\n" +#~ " -l, --whole-size-limit=SIZE ¤Á¶}ÀÉ®×ÂdÀÉ, «DÀÉ®×, ¨ì¤j¤p SIZE KBytes\n" +#~ " -L, --split-size-limit=SIZE ¤Á¶}ÀÉ®×ÂdÀÉ, ©ÎÀÉ®×, ¨ì¤j¤p SIZE KBytes\n" + +#~ msgid "creating directory" +#~ msgstr "«Ø¥ß¥Ø¿ý" diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..154a9ea --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,64 @@ +## Makefile for program src directory in GNU Shar utilities package. +## +## Copyright (C) 1995, 1996, 2002, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +## Process this file with automake to produce Makefile.in. + +bin_PROGRAMS = shar unshar +if UUCODE + bin_PROGRAMS += uuencode uudecode +endif +bin_SCRIPTS = $(ADD_SCRIPT) +EXTRA_SCRIPTS = compress-dummy mail-files mailshar remsync +EXTRA_DIST = scripts.def scripts.tpl scripts.x + +DISTCLEANFILES = $(bin_SCRIPTS) + +localedir = $(datadir)/locale + +AM_CPPFLAGS = -I$(srcdir) -I.. -I$(top_srcdir)/lib -I../intl +DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@ + +# stolen from fileutils-4.1.9: +# Sometimes, the expansion of $(LIBINTL) includes -lc which may +# include modules defining variables like `optind', so libfetish.a +# must precede $(LIBINTL) in order to ensure we use GNU getopt. +# But libshar.a must also follow $(LIBINTL), since libintl uses +# replacement functions defined in libshar.a. +LDADD = ../lib/libshar.a $(LIBINTL) ../lib/libshar.a + +# Source dependecies. +shar_SOURCES = shar.c encode.c +unshar_SOURCES = unshar.c encode.c +uudecode_SOURCES = uudecode.c +uuencode_SOURCES = uuencode.c + +all: exe-bits +installcheck: exe-bits + +$(bin_PROGRAMS): ../lib/libshar.a + +install-exec-hook: $(INSTALL_COMPRESS_LINK) + +compress-link: + test -f $(DESTDIR)$(bindir)/compress-dummy \ + && ln -sf compress-dummy $(DESTDIR)$(bindir)/compress + +exe-bits : $(bin_SCRIPTS) + chmod ugo+x $(bin_SCRIPTS) + +## src/Makefile.am ends here diff --git a/src/Makefile.in b/src/Makefile.in new file mode 100644 index 0000000..b409c4c --- /dev/null +++ b/src/Makefile.in @@ -0,0 +1,607 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 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@ + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = shar$(EXEEXT) unshar$(EXEEXT) $(am__EXEEXT_1) +@UUCODE_TRUE@am__append_1 = uuencode uudecode +subdir = src +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/compress-dummy.in $(srcdir)/mail-files.in \ + $(srcdir)/mailshar.in $(srcdir)/remsync.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/glibc2.m4 $(top_srcdir)/m4/glibc21.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intdiv0.m4 \ + $(top_srcdir)/m4/intmax.m4 $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-posix.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/realloc.m4 \ + $(top_srcdir)/m4/sharutils.m4 $(top_srcdir)/m4/signed.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/xstrtoimax.m4 \ + $(top_srcdir)/version.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = remsync compress-dummy mail-files mailshar +@UUCODE_TRUE@am__EXEEXT_1 = uuencode$(EXEEXT) uudecode$(EXEEXT) +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_shar_OBJECTS = shar.$(OBJEXT) encode.$(OBJEXT) +shar_OBJECTS = $(am_shar_OBJECTS) +shar_LDADD = $(LDADD) +am__DEPENDENCIES_1 = +shar_DEPENDENCIES = ../lib/libshar.a $(am__DEPENDENCIES_1) \ + ../lib/libshar.a +am_unshar_OBJECTS = unshar.$(OBJEXT) encode.$(OBJEXT) +unshar_OBJECTS = $(am_unshar_OBJECTS) +unshar_LDADD = $(LDADD) +unshar_DEPENDENCIES = ../lib/libshar.a $(am__DEPENDENCIES_1) \ + ../lib/libshar.a +am_uudecode_OBJECTS = uudecode.$(OBJEXT) +uudecode_OBJECTS = $(am_uudecode_OBJECTS) +uudecode_LDADD = $(LDADD) +uudecode_DEPENDENCIES = ../lib/libshar.a $(am__DEPENDENCIES_1) \ + ../lib/libshar.a +am_uuencode_OBJECTS = uuencode.$(OBJEXT) +uuencode_OBJECTS = $(am_uuencode_OBJECTS) +uuencode_LDADD = $(LDADD) +uuencode_DEPENDENCIES = ../lib/libshar.a $(am__DEPENDENCIES_1) \ + ../lib/libshar.a +binSCRIPT_INSTALL = $(INSTALL_SCRIPT) +SCRIPTS = $(bin_SCRIPTS) +DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(shar_SOURCES) $(unshar_SOURCES) $(uudecode_SOURCES) \ + $(uuencode_SOURCES) +DIST_SOURCES = $(shar_SOURCES) $(unshar_SOURCES) $(uudecode_SOURCES) \ + $(uuencode_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ADD_SCRIPT = @ADD_SCRIPT@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMPRESS = @COMPRESS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +DIRENT_HEADER = @DIRENT_HEADER@ +DIST_ALPHA = @DIST_ALPHA@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_COMPRESS_LINK = @INSTALL_COMPRESS_LINK@ +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@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAILER = @MAILER@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +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@ +PERL = @PERL@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TAR = @TAR@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = $(datadir)/locale +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +bin_SCRIPTS = $(ADD_SCRIPT) +EXTRA_SCRIPTS = compress-dummy mail-files mailshar remsync +EXTRA_DIST = scripts.def scripts.tpl scripts.x +DISTCLEANFILES = $(bin_SCRIPTS) +AM_CPPFLAGS = -I$(srcdir) -I.. -I$(top_srcdir)/lib -I../intl + +# stolen from fileutils-4.1.9: +# Sometimes, the expansion of $(LIBINTL) includes -lc which may +# include modules defining variables like `optind', so libfetish.a +# must precede $(LIBINTL) in order to ensure we use GNU getopt. +# But libshar.a must also follow $(LIBINTL), since libintl uses +# replacement functions defined in libshar.a. +LDADD = ../lib/libshar.a $(LIBINTL) ../lib/libshar.a + +# Source dependecies. +shar_SOURCES = shar.c encode.c +unshar_SOURCES = unshar.c encode.c +uudecode_SOURCES = uudecode.c +uuencode_SOURCES = uuencode.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits src/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +remsync: $(top_builddir)/config.status $(srcdir)/remsync.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +compress-dummy: $(top_builddir)/config.status $(srcdir)/compress-dummy.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +mail-files: $(top_builddir)/config.status $(srcdir)/mail-files.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +mailshar: $(top_builddir)/config.status $(srcdir)/mailshar.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(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: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +installcheck-binPROGRAMS: $(bin_PROGRAMS) + bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ + case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ + *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ + esac; \ + f=`echo "$$p" | \ + sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + for opt in --help --version; do \ + if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \ + 2>c$${pid}_.err &2; bad=1; fi; \ + done; \ + done; rm -f c$${pid}_.???; exit $$bad +shar$(EXEEXT): $(shar_OBJECTS) $(shar_DEPENDENCIES) + @rm -f shar$(EXEEXT) + $(LINK) $(shar_OBJECTS) $(shar_LDADD) $(LIBS) +unshar$(EXEEXT): $(unshar_OBJECTS) $(unshar_DEPENDENCIES) + @rm -f unshar$(EXEEXT) + $(LINK) $(unshar_OBJECTS) $(unshar_LDADD) $(LIBS) +uudecode$(EXEEXT): $(uudecode_OBJECTS) $(uudecode_DEPENDENCIES) + @rm -f uudecode$(EXEEXT) + $(LINK) $(uudecode_OBJECTS) $(uudecode_LDADD) $(LIBS) +uuencode$(EXEEXT): $(uuencode_OBJECTS) $(uuencode_DEPENDENCIES) + @rm -f uuencode$(EXEEXT) + $(LINK) $(uuencode_OBJECTS) $(uuencode_LDADD) $(LIBS) +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f $$d$$p; then \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ + else :; fi; \ + done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +installcheck-binSCRIPTS: $(bin_SCRIPTS) + bad=0; pid=$$$$; list="$(bin_SCRIPTS)"; for p in $$list; do \ + case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ + *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ + esac; \ + f=`echo "$$p" | sed 's,^.*/,,;$(transform)'`; \ + for opt in --help --version; do \ + if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \ + 2>c$${pid}_.err &2; bad=1; fi; \ + done; \ + done; rm -f c$${pid}_.???; exit $$bad + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encode.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shar.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unshar.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uudecode.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uuencode.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +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 + +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; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +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 + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + 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) $(SCRIPTS) +installdirs: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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 +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +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 mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: install-binPROGRAMS install-binSCRIPTS + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-exec-hook + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: installcheck-binPROGRAMS installcheck-binSCRIPTS + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS + +.MAKE: install-am install-exec-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-binSCRIPTS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-exec-hook \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installcheck-binPROGRAMS installcheck-binSCRIPTS installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-binSCRIPTS + + +all: exe-bits +installcheck: exe-bits + +$(bin_PROGRAMS): ../lib/libshar.a + +install-exec-hook: $(INSTALL_COMPRESS_LINK) + +compress-link: + test -f $(DESTDIR)$(bindir)/compress-dummy \ + && ln -sf compress-dummy $(DESTDIR)$(bindir)/compress + +exe-bits : $(bin_SCRIPTS) + chmod ugo+x $(bin_SCRIPTS) +# 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/compress-dummy.in b/src/compress-dummy.in new file mode 100644 index 0000000..4421e8d --- /dev/null +++ b/src/compress-dummy.in @@ -0,0 +1,50 @@ +#! @SH@ +# compress dummy script for uncompressing legacy shar files. +# Copyright (C) 2002, 2006 Free Software Foundation, Inc. +# Karl Eichwalder , 2002. + +package="@PACKAGE@" +version="@VERSION@" + +progname=`echo $0 | sed -e 's,.*/,,'` + +usage="\ +Usage: $progname OPTION FILE +Replacement script for uncompressing legacy shar files. + +with OPTION in: + --help display this help and exit + --version output version information and exit + + -d uncompress + +Use \`gzip' for compressing files." + +while test $# -gt 0; do + case $1 in + -d) mode=$1; shift ;; +# -x) trace=-x; set -x; shift ;; + --v* ) echo "$progname - $package $version"; exit 0 ;; + --h* ) echo "$usage"; exit 0 ;; + -) break ;; + -*) echo "Try \`$progname --help' for more information."; exit 1 ;; + *) break + esac +done + +if test -z "$mode"; then + exec 1>&2 + cat <<_EOF_ +This is not compress. +This is a replacement script that invokes \`gzip -d' for uncompressing +files compressed with the compress program. +Try \`$progname --help' for more information. +_EOF_ + exit 1 +fi + +gzip -d + +exit $? + +# compress-dummy.in ends here diff --git a/src/encode.c b/src/encode.c new file mode 100644 index 0000000..be5b820 --- /dev/null +++ b/src/encode.c @@ -0,0 +1,98 @@ +/* Handle so called `shell archives'. + + Copyright (C) 1994, 1995, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +#include "system.h" + +/* Basic one-character encoding function to make a char printing. */ +#define ENCODE_BYTE(Byte) ((((Byte) + 63) & 63) + ' ' + 1) + +/* Buffer size for one line of output. */ +#define LINE_BUFFER_SIZE 45 + +/*------------------------------------------. +| Output one GROUP of three bytes on FILE. | +`------------------------------------------*/ + +static void +write_encoded_bytes (group, file) + char *group; + FILE *file; +{ + int c1, c2, c3, c4; + + c1 = group[0] >> 2; + c2 = ((group[0] << 4) & (3 << 4)) | ((group[1] >> 4) & 15); + c3 = ((group[1] << 2) & (15 << 2)) | ((group[2] >> 6) & 3); + c4 = group[2] & 63; + putc (ENCODE_BYTE (c1), file); + putc (ENCODE_BYTE (c2), file); + putc (ENCODE_BYTE (c3), file); + putc (ENCODE_BYTE (c4), file); +} + +/*--------------------------------------------------------------------. +| From FILE, refill BUFFER up to BUFFER_SIZE raw bytes, returning the | +| number of bytes read. | +`--------------------------------------------------------------------*/ + +static int +read_raw_bytes (file, buffer, buffer_size) + FILE *file; + char *buffer; + int buffer_size; +{ + int character; + int counter; + + for (counter = 0; counter < buffer_size; counter++) + { + character = getc (file); + if (character == EOF) + return counter; + buffer[counter] = character; + } + return buffer_size; +} + +/*----------------------------------------------------. +| Copy INPUT file to OUTPUT file, while encoding it. | +`----------------------------------------------------*/ + +void +copy_file_encoded (input, output) + FILE *input; + FILE *output; +{ + char buffer[LINE_BUFFER_SIZE]; + int counter; + int number_of_bytes; + + while (1) + { + number_of_bytes = read_raw_bytes (input, buffer, LINE_BUFFER_SIZE); + putc (ENCODE_BYTE (number_of_bytes), output); + + for (counter = 0; counter < number_of_bytes; counter += 3) + write_encoded_bytes (&buffer[counter], output); + putc ('\n', output); + + if (number_of_bytes == 0) + break; + } +} diff --git a/src/mail-files.in b/src/mail-files.in new file mode 100644 index 0000000..846914e --- /dev/null +++ b/src/mail-files.in @@ -0,0 +1,108 @@ +#! @SH@ +# Mail a list of files, as they are. +# Copyright (C) 1990, 1995, 2005 Free Software Foundation, Inc. +# François Pinard , 1991. + +package="@PACKAGE@" +version="@VERSION@" + +progname=`echo $0 | sed -e 's,.*/,,'` + +usage() +{ + if test $# -gt 0 + then + exec >&2 + echo "$*" + fi + cat <<- _EOF_ + Usage: $progname [OPTION] DESTIN TYPE SUBJECT FILE ... + Where: + OPTION is: + --help display this help and exit + --version output version information and exit + + -x trace script + + DESTIN is a list of email addresses + TYPE is a subject introduction word or short phrase + SUBJECT is a longer description of the contents + FILE ... is a list of files to send + _EOF_ + exit $# +} + +SLEEP=2 + +### Decode the options. + +while test $# -gt 0 +do + case $1 in + -x) trace=-x; set -x; shift ;; + --v* ) echo "$progname - $package $version"; exit 0 ;; + --h* | \ + '-?' ) usage ;; + --) shift ; break ;; + -*) usage "'$1' is an unknown option" ;; + *) break + esac +done + +test $# -ge 4 || usage "Too few arguments." + +destin="$1"; shift +type="$1"; shift +subject="$1"; shift + +maxcount=$# +files="$*" + +for f in ${files} +do test -f ${f} || usage "Error: \`$f' is not a file" ; done + +### Mail all files, making a proper subject for each message. + +( if [ -f $destin ]; then + cat $destin + else + echo $destin + fi +) | ( + total=0 + while read destin; do + count=0 + for file in $files; do + count=`expr $count + 1` + if [ $maxcount = 1 ]; then + string="$type" + else + string="$type ($count/$maxcount)" + fi + echo "Mailing $string to $destin" + [ $total -ne 0 ] && sleep $SLEEP + @MAILER@ -s "$string: $subject" $destin < $file + total=`expr $total + 1` + [ $count -lt $maxcount ] && sleep $SLEEP + done + done + if [ $total -eq 0 ]; then + echo 'No message queued' + elif [ $total -eq 1 ]; then + echo 'Message queued' + else + echo "$count messages queued" + fi +) + +exit 0 + +## Local Variables: +## mode: shell-script +## tab-width: 8 +## indent-tabs-mode: nil +## sh-indentation: 2 +## sh-basic-offset: 2 +## End: +## +## end of get-incidents.sh diff --git a/src/mailshar.in b/src/mailshar.in new file mode 100644 index 0000000..daed0ae --- /dev/null +++ b/src/mailshar.in @@ -0,0 +1,106 @@ +#! @SH@ +# -*- Mode: shell-script -*- +# Mail a multi-part shar from a list of files. +# Copyright (C) 1990, 1994, 1995, 2002 Free Software Foundation, Inc. +# François Pinard , 1991. + +package="@PACKAGE@" +version="@VERSION@" + +prefix='@prefix@' +bindir="@exec_prefix@/bin" +transform='@program_transform_name@' + +shar=$bindir/`echo shar | sed "$transform"` +mail_files=$bindir/`echo mail-files | sed "$transform"` + +progname=`echo $0 | sed -e 's,.*/,,'` + +usage="\ +Usage: $progname [OPTION...] DEST FILE ... + +with OPTION in: + --help display this help and exit + --version output version information and exit + + -S SUBJECT use \"shar: SUBJECT\" as subject line + -s SIZE decide size of each part in Kb, default 60 + -M decide how to send each file separately + -T avoid calling compress, gzip, bzip2 nor uuencode + -B force calling uuencode + -z force calling gzip and uuencode + -j force calling bzip2 and uuencode + -Z force calling compress and uuencode + -x trace script + +If none of -MTBzjZ are given, -z is automatically selected if *none* +of the FILEs have an .arc, .exz, .gif, .z, .gz, .bz2, .Z, .zip, .tgz +or .zoo suffix." + +if type -p mktemp >/dev/null 2>/dev/null; then + temp=`mktemp /var/tmp/$$.shar.XXXXXX` || exit 1 +else + temp=/var/tmp/$$.shar + rm -f $temp* +fi +trap "rm -f $temp*; exit 1" 1 2 3 7 13 15 +trap "rm -f $temp*" 0 + +### Decode the options. + +size=60 + +while test $# -gt 0; do + case $1 in + -S) if test $# -gt 1; then mysubject=$2; shift 2; + else echo "$usage"; exit 1; fi ;; + -s) if test $# -gt 1; then size=$2; shift 2; + else echo "$usage"; exit 1; fi ;; + -[MTBzZ]) mode=$1; shift ;; + -x) trace=-x; set -x; shift ;; + --v* ) echo "$progname - $package $version"; exit 0 ;; + --h* ) echo "$usage"; exit 0 ;; + -) break ;; + -*) echo "Try \`$progname --help' for more information."; exit 1 ;; + *) break + esac +done + +if test $# -lt 2; then + echo "$usage" + exit 1 +fi + +dest="$1" +shift +if test -z "$mysubject" ; then + subject="$*" +else + subject="$mysubject" +fi + +### Check if we should gzip. + +if test -z "$mode"; then + mode=-z + find "$@" -type f -print 2> /dev/null > $temp + while read file; do + case "`echo $file | sed -n 's|.*/||;/\./s|.*\.||p' \ + | tr '[A-Z]' '[a-z]'`" in + arc|exz|gif|gz|bz2|tgz|z|zip|zoo) mode=; break ;; + esac + done < $temp + rm $temp +fi + +### Construct the multi-part shar files and mail them. + +$shar $mode -P -L$size -o$temp -c -F "$@" \ + && $mail_files $trace $dest shar "$subject" $temp* \ + && rm ${temp}* \ + && exit 0 + +rm -f ${temp}* +exit 1 + +# mailshar.in ends here diff --git a/src/remsync.in b/src/remsync.in new file mode 100644 index 0000000..517ea58 --- /dev/null +++ b/src/remsync.in @@ -0,0 +1,2277 @@ +#! @PERL@ +# @configure_input@ +eval "exec @PERL@ -S $0 $*" + if $running_under_some_shell; + +use File::Temp qw/ :mktemp /; + +# Synchronization tool for remote directories. +# +# Copyright (C) 1994, 2007 Free Software Foundation, Inc. +# +# François Pinard , 1994. + +# 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +## Parameters, but not meant to be changed. + +$PACKAGE = '@PACKAGE@'; # name of package for this program +$VERSION = '@VERSION@'; # version number for the whole package +$PROGRAM = 'remsync'; # name of this particular program +$FORMAT = '1.3'; # version of format for files + +$CONFIG = '.remsync'; # file containing synchronization information +$INVOICE = '.remsync.tar.gz'; # default file name of packed synchro. package +$WORKDIR = '.remsync-work'; # directory name of unpacked synchro. package +$ORDERS = 'orders'; # file name containaing synchro. directives + +$DIFF = '@DIFF@'; # GNU diff path +$TAR = '@TAR@'; # GNU tar path +$SH = '@SH@'; # Bash or sh path + +# Special constants. + +$NEWLY_CREATED_SCAN = 2; # Instead of 1, when by remote request + +# Help strings. + +$INITIAL_HELP = "$PROGRAM (format $FORMAT) - GNU $PACKAGE $VERSION + Remote synchronization of files and directories. + +The following commands are available at *any* \`$PROGRAM\' prompt: + + ? reminder for available commands + ! [COMMAND] shell escape for processing COMMAND + abort get out of the current command right away +"; + +$NORMAL_HELP = "Usage: $PROGRAM [COMMANDS...] + + ! [COMMAND] shell escape for processing COMMAND (defaults to shell) + abort get out of the current command right away + quit get out of program, saving file \`$CONFIG\' if modified + +Synchronizing commands: + chdir [DIRECTORY] change current directory to DIRECTORY + mode [MODE] init (do not send contents) or noop (send nothing) + broadcast [SET] export a synchronization package to each site of SET + process [FILE] import a FILE (defaults to \`$INVOICE\') + process [DIRECTORY] or use an already exploded DIRECTORY (\`$WORKDIR\') + +Maintenance commands: + list list title, here, remotes, scans and ignores + files list all files and their known signatures + title [DESCRIPTION] use DESCRIPTION as project title (or list it) + here [ADDRESS [DIRECTORY]] declare our ADDRESS, modify visited DIRECTORY + remote [ADDRESS [DIRECTORY]] declare remote ADDRESS, modify its DIRECTORY + scan [PATTERN] scan directory with \`find\' for shell PATTERN + ignore [REGEXP] ignore scanned files if name matched by REGEXP + delete TYPE DATA delete the remote, scan or ignore having DATA + +To obtain partial lists, use appropriate commands without their parameters. +Commands and keyword arguments may be abbreviated to one letter. +"; + +## Meaning of global variables introduced and used in this program. +## +## Config (.remsync) file: +## $config_filename expanded file name of the $CONFIG file +## $new_config if $CONFIG did not exist prior to this run +## $fetch_config if $CONFIG file should be read and studied +## $save_config if $CONFIG file should be rewritten +## +## Local description: +## $project_title title of the project, from $CONFIG +## $project_title_received title of the project, from invoice +## $here_email our email address, from $CONFIG +## $here_email_received our email address, from invoice +## $here_home normalized project home directory, from $CONFIG +## $here_home_received normalized project home directory, from invoice +## +## Remote descriptions: +## @remote array of remote email addresses, from $CONFIG +## @remote_received array of remote email addresses, from invoice +## %remote for each remote: home directory, from $CONFIG +## %remote_received for each remote: home directory, from invoice +## @site_set selected set of remote ordinals, counted from 0 +## @copy_list mapping of invoice remote indices to $CONFIG's +## $originator index of remote having sent the package +## +## File signatures: +## $study_files if list of local files has to be recomputed +## $checksum_command system command to compute file signatures +## $maximum_name_width maximum length of all studied file names +## %scan for each defined scan, from $CONFIG +## %scan_received for each defined scan, from invoice +## @scan sorted %scan, for numbered selection +## %ignore for each defined ignore, from $CONFIG +## %ignore_received for each defined ignore, from invoice +## @ignore sorted %ignore, for numbered selection +## %local_signature for each file: its signature computed here +## %signature for each file: list of signatures, from $CONFIG +## %signature_received for each file: list of signatures, from invoice +## +## Command control: +## $commands_ahead semi-colon separated list of commands +## $command_loop if dynamically within &command_loop +## $process_loop if dynamically within &process_loop +## $noop_mode if \`mode noop\' was given +## $init_mode if \`mode init\' was given +## $work_directory expanded work directory name +## $workdir_to_unlink expanded work directory name, to later delete +## $invoice_to_unlink expanded invoice file name, to later delete + +## Programming notes around probable Perl 4.X problems: +## * local($_) is avoided, so beware $_ may be destroyed by any routine. +## * @_ is always saved on each routine entry, where sub-routines are used. + +foreach (@ARGV) +{ + if (/^--/) + { + if (length $_ == 2) + { + shift; + last; + } + if ($_ eq substr ('--version', 0, length $_)) + { + print "$PROGRAM (format $FORMAT) - GNU $PACKAGE $VERSION\n"; + exit 0; + } + if ($_ eq substr ('--help', 0, length $_)) + { + print $NORMAL_HELP; + exit 0; + } + &interrupt ("Unknown option \`$_\'"); + } + else + { + last; + } +} + +if (@ARGV) +{ + $commands_ahead = join (';', @ARGV); + @ARGV = (); +} +else +{ + print STDERR $INITIAL_HELP; +} + +$fetch_config = 1; + +&command_loop; + +&maybe_save_config; + +exit 0; + +# Interactive command decoding. + +## Read user commands and dispatch them. + +sub command_loop +{ + $command_loop = 1; + + COMMAND_LOOP: + while (1) + { + if ($commands_ahead) + { + if ($commands_ahead =~ /^([^;]*);(.*)/) + { + $_ = $1; + $commands_ahead = $2; + } + else + { + $_ = $commands_ahead; + $commands_ahead = 'quit'; + } + } + else + { + if ($noop_mode) + { + &query ("\nnoop>>"); + } + elsif ($init_mode) + { + &query ("\ninit>>"); + } + else + { + &query ("\n>>"); + } + } + s/^ +//; + s/ +$//; + + next if /^$/; + next if /^#/; + last if /^q(uit)?$/; + + if (/^c(hdir)?$/ || /^pwd$/) + { + &command_list_cwd; + } + elsif (/^c(hdir|d)? +(.+)/) + { + &command_set_cwd ($2); + } + elsif (/^m(ode)?$/) + { + &command_list_mode; + } + elsif (/^m(ode)? +([^ ]+)$/) + { + &command_set_mode ($2); + } + elsif (/^b(roadcast)?$/) + { + &command_broadcast (''); + } + elsif (/^b(roadcast)? +(.+)$/) + { + &command_broadcast ($2); + } + elsif (/^p(rocess)?$/) + { + &command_process (''); + } + elsif (/^p(rocess)? +([^ ]+)$/) + { + &command_process ($2); + } + elsif (/^l(ist)?$/) + { + &command_list_almost_all; + } + elsif (/^f(iles)?$/) + { + &command_list_files; + } + elsif (/^t(itle)?$/) + { + &command_list_title; + } + elsif (/^t(itle)? +(.+)$/) + { + &command_set_title ($2); + } + elsif (/^h(ere)?$/) + { + &command_list_here; + } + elsif (/^h(ere)? +([^ ]+) *([^ ]*)$/) + { + &command_set_here ($2, $3); + } + elsif (/^r(emote)?$/) + { + &command_list_remote; + } + elsif (/^r(emote)? +([^ ]+) *([^ ]*)$/) + { + &command_set_remote ($2, $3); + } + elsif (/^s(can)?$/) + { + &command_list_scan; + } + elsif (/^s(can)? +([^ ]+)$/) + { + &command_set_scan ($2); + } + elsif (/^i(gnore)?$/) + { + &command_list_ignore; + } + elsif (/^i(gnore)? +([^ ]+)$/) + { + &command_set_ignore ($2); + } + elsif (/^d(elete)? *r(emote)? +([^ ]+)$/) + { + &command_delete_remote ($3); + } + elsif (/^d(elete)? *s(can)? +([^ ]+)$/) + { + &command_delete_scan ($3); + } + elsif (/^d(elete)? *i(gnore)? +([^ ]+)$/) + { + &command_delete_ignore ($3); + } + else + { + &diagnose ("Unrecognized command \`$_\', try \`?\' for help"); + } + } + + $command_loop = 0; +} + +## List current working directory. +## Synopses: `chdir' or `pwd'. + +sub command_list_cwd +{ + print `pwd`; +} + +## Change current working directory. +## Synopses: `chdir DIRECTORY' or `cd DIRECTORY'. + +sub command_set_cwd +{ + local ($directory) = @_; + + $directory = &expand_filename ($directory); + + if (-d $directory) + { + &maybe_save_config; + + if (chdir ($directory)) + { + $fetch_config = 1; + } + else + { + &diagnose ("Unable to change to directory \`$directory\'"); + } + } + else + { + &diagnose ("Non-existing directory \`$directory\'"); + } +} + +## List all modes. +## Synopsis: `mode'. + +sub command_list_mode +{ + print STDERR "\n"; + printf STDERR + "Init mode %-5s Send file signatures, but no file contents\n", + ($init_mode ? '(on)' : '(off)'); + printf STDERR + "Noop mode %-5s Avoid sending email, do not update \`$CONFIG\'", + ($noop_mode ? '(on)' : '(off)'); + print STDERR "\n"; +} + +## Set one of modes. +## Synopsis: `mode MODE'. + +sub command_set_mode +{ + local ($mode) = @_; + + if ($mode eq 'i' || $mode eq 'init') + { + $init_mode = 1; + } + elsif ($mode eq 'n' || $mode eq 'noop') + { + $noop_mode = 1; + } + else + { + &diagnose ("Unrecognized mode \`$mode\'"); + } +} + +## List title, here information, all remotes, all scans and all ignores. +## Synopsis: `list'. + +sub command_list_almost_all +{ + &maybe_fetch_config; + + print "\n$project_title\n\n"; + + print "HERE:\n"; + &command_list_here; + + print "REMOTE:\n" if @remote; + &command_list_remote; + + print "SCAN:\n" if %scan; + &command_list_scan; + + print "IGNORE:\n" if %ignore; + &command_list_ignore; +} + +## List information for all files. +## Synopsis: `files'. + +sub command_list_files +{ + local ($format, $field); + + &maybe_fetch_config; + &maybe_study_files; + + $format = " %-5s %-${maximum_name_width}s "; + foreach (sort keys %signature) + { + printf $format, $local_signature{$_}, $_; + foreach $field (split (/ /, $signature{$_})) + { + $field = ' ...' if $field eq $local_signature{$_}; + printf '%-7s', $field; + } + print "\n"; + } +} + +## List the title of the project. +## Synopsis: `title'. + +sub command_list_title +{ + &maybe_fetch_config; + + print "$project_title\n"; +} + +## Set the title of the project. +## Synopsis: `title DESCRIPTION'. + +sub command_set_title +{ + local ($description) = @_; + + &maybe_fetch_config; + + if ($description ne $project_title) + { + $project_title = $description; + $save_config = 1; + } +} + +## List local information. +## Synopsis: `here'. + +sub command_list_here +{ + &maybe_fetch_config; + + print " [0]\t$here_email $here_home\n"; +} + +## Modify our local information to ADDRESS and DIRECTORY. +## Synopsis: `here ADDRESS DIRECTORY'. + +sub command_set_here +{ + local ($email, $directory) = @_; + + &maybe_fetch_config; + + $email =~ tr/A-Z/a-z/; + if ($email ne '-' && $email ne $here_email) + { + $here_email = $email; + $save_config = 1; + } + + if ($directory && $directory ne $here_home) + { + $here_home = &normalize_directory ($directory); + $config_filename = &expand_filename ("$here_home/$CONFIG"); + $save_config = 1; + } +} + +## List information for all remotes. +## Synopsis: `remote'. + +sub command_list_remote +{ + local ($index, $email); + + &maybe_fetch_config; + + $index = 0; + foreach (@remote) + { + $index++; + print " [$index]\t$_ $remote{$_}\n"; + } +} + +## Create a new remote given its REMOTE address, modify its DIRECTORY. +## Synopsis: `remote REMOTE DIRECTORY'. + +sub command_set_remote +{ + local ($remote, $directory) = @_; + local ($index); + + &maybe_fetch_config; + + $remote =~ tr/A-Z/a-z/; + $remote = $remote[$remote - 1] if ($remote > 0 && $remote <= @remote); + + if (defined $remote{$remote}) + { + if ($directory && $remote{$remote} ne $directory) + { + $remote{$remote} = $directory; + $save_config = 1; + } + elsif ($remote{$remote} ne '-') + { + &diagnose ("Remote directory is known to be \`$remote{$remote}\'"); + &query ('Do you want me to keep this knowledge (y/n)? [y]'); + if (! /(y|yes)/i) + { + $remote{$remote} = '-'; + $save_config = 1; + } + } + } + else + { + if ($directory) + { + &create_remote ($remote, $directory); + } + else + { + &create_remote ($remote, '-'); + $index = @remote; + &warn ("You may also use \`remote $index DIRECTORY\'" + . ' if you know the remote directory'); + } + } +} + +## Delete an existing remote given its ADDRESS address. +## Synopsis: `delete remote ADDRESS'. + +sub command_delete_remote +{ + local ($remote) = @_; + + &maybe_fetch_config; + + $remote = $remote[$remote - 1] if ($remote > 0 && $remote <= @remote); + &delete_remote ($remote); +} + +## List information for all scans. +## Synopsis: `scan'. + +sub command_list_scan +{ + local ($index); +## FIXME: local (@scan); ? + + &maybe_fetch_config; + + $index = 0; + @scan = (); + foreach (sort keys %scan) + { + $index++; + push (@scan, $_); + print " [$index]\t$_\n"; + } +} + +## Create a new SCAN. +## Synopsis: `scan SCAN'. + +sub command_set_scan +{ + local ($scan) = @_; + + &maybe_fetch_config; + + if (defined $scan{$scan}) + { + &diagnose ("Redundant creation of scan \`$scan\'"); + } + else + { + $scan{$scan} = 1; + $save_config = 1; + $study_files = 1; + } +} + +## Delete an existing SCAN. +## Synopsis: `delete scan SCAN'. + +sub command_delete_scan +{ + local ($scan) = @_; + + &maybe_fetch_config; + + $scan = $scan[$scan - 1] if ($scan > 0 && $scan <= @scan); + if (defined $scan{$scan}) + { + delete $scan{$scan}; + $save_config = 1; + $study_files = 1; + } + else + { + &diagnose ("Cannot delete inexisting scan \`$scan\'"); + } +} + +## List information for all ignores. +## Synopsis: `ignore'. + +sub command_list_ignore +{ + local ($index); +## FIXME: local (@ignore); ? + + &maybe_fetch_config; + + $index = 0; + @ignore = (); + foreach (sort keys %ignore) + { + $index++; + push (@ignore, $_); + print " [$index]\t$_\n"; + } +} + +## Create a new IGNORE. +## Synopsis: `ignore IGNORE'. + +sub command_set_ignore +{ + local ($ignore) = @_; + + &maybe_fetch_config; + + if (defined $ignore{$ignore}) + { + &diagnose ("Redundant creation of ignore \`$ignore\'"); + } + else + { + $ignore{$ignore} = 1; + $save_config = 1; + $study_files = 1; + } +} + +## Delete an existing IGNORE. +## Synopsis: `delete ignore IGNORE'. + +sub command_delete_ignore +{ + local ($ignore) = @_; + local ($index); + + &maybe_fetch_config; + + $ignore = $ignore[$ignore - 1] if ($ignore > 0 && $ignore <= @ignore); + if (defined $ignore{$ignore}) + { + delete $ignore{$ignore}; + $save_config = 1; + $study_files = 1; + } + else + { + &diagnose ("Cannot delete inexisting ignore \`$ignore\'"); + } +} + +# Broadcasting away synchronization packages. + +## Export a synchronization package to each site of SET. +## Synopsis: `broadcast SET'. + +sub command_broadcast +{ + local ($set) = @_; + local ($site, $index, $ordinal, $file, @signature); + + &maybe_fetch_config; + + &decode_site_set ($set); + foreach $site (@site_set) + { + &warn (''); + &warn ("Broadcasting to address \`$remote[$site]\'"); + + if (-f $INVOICE && ! $noop_mode) + { + &diagnose ("The invoice \`$INVOICE\' already exists!"); + &query ('Should I delete it for you (y/n)? [n]'); + &interrupt ('Command aborted!') if ! /^(y|yes)/i; + unlink $INVOICE + || &interrupt ("Cannot delete file \`$INVOICE\'"); + } + if (-d $WORKDIR && ! $noop_mode) + { + &diagnose ("The work directory \`$WORKDIR\' already exists!"); + &query ('Should I remove all of it first (y/n)? [y]'); + &interrupt ('Command aborted!') if ! /^(y|yes)/i; + system "rm -rf $WORKDIR" + || &interrupt ("Cannot remove directory \`$WORKDIR\'"); + } + + &maybe_study_files; + &update_file_registry; + + # Initialize the invoice. + + if (! $noop_mode) + { + mkdir ($WORKDIR, 0700) + || &interrupt ("Unable to make directory \`$WORKDIR\'"); + open (OUTPUT, ">$WORKDIR/$ORDERS") + || &interrupt ("Cannot create file \`$WORKDIR/$ORDERS\'"); + + print OUTPUT "format\t$PROGRAM $FORMAT\n"; + print OUTPUT "title\t$project_title\n"; + print OUTPUT "here\t$here_email $here_home\n"; + foreach (@remote) + { + print OUTPUT "remote\t$_ $remote{$_}\n"; + } + foreach (sort keys %scan) + { + print OUTPUT "scan\t$_\n"; + } + foreach (sort keys %ignore) + { + print OUTPUT "ignore\t$_\n"; + } + + print OUTPUT "visit\t$site\n"; + print OUTPUT "copy\t", join (' ', @site_set), "\n"; + } + + # Transmit all file signatures and replacement orders. + + $ordinal = 0; + foreach $file (sort keys %signature) + { + if (! $noop_mode) + { + print OUTPUT "check\t$file $local_signature{$file}"; + @signature = split (/ /, $signature{$file}); + foreach (@site_set) + { + print OUTPUT ' ', $signature[$_]; + } + print OUTPUT "\n"; + } + + next if $init_mode; + next if $signature[$site] eq $local_signature{$file}; + + &warn ("Packaging file \`$file\'"); + if (! $noop_mode) + { + $ordinal++; + symlink ("../$file", "$WORKDIR/$ordinal"); + print OUTPUT "update\t$file $signature[$site] $ordinal\n"; + } + $signature[$site] = $local_signature{$file}; + $signature{$file} = join (' ', @signature); + $save_config = 1; + } + + # Complete the invoice. + + if (! $noop_mode) + { + close OUTPUT; + system "$TAR cfzh $INVOICE $WORKDIR" + || &interrupt ("Cannot construct invoice \`$INVOICE\'" + . " from directory \`$WORKDIR\'"); + system "rm -rf $WORKDIR" + || &interrupt ("Cannot remove directory \`$WORKDIR\'"); + system "mailshar $remote[$site] $INVOICE" + || &interrupt ("Cannot send file \`$INVOICE\'" + . " to address \`$remote[$site]\'"); + unlink $INVOICE + || &interrupt ("Cannot delete file \`$INVOICE\'"); + } + } + &warn ("Command \`broadcast\' done"); +} + +# Processing received synchronization packages. + +## Import a FILE or use an already exploded DIRECTORY. +## Synopses: `process [FILE]' or `process [DIRECTORY]'. + +sub command_process +{ + local ($argument) = @_; + local ($invoice, $prior, $file, @signature); + + $work_directory = &expand_filename ($WORKDIR); + + if ($argument) + { + $invoice = &expand_filename ($argument); + } + elsif (-f $INVOICE) + { + $invoice = &expand_filename ($INVOICE); + $invoice_to_unlink = $invoice if ! $noop_mode; + } + elsif (-d $WORKDIR) + { + $invoice = $work_directory; + } + else + { + &interrupt ("No argument, no invoice \`$INVOICE\'" + . " and no directory \`$WORKDIR\'"); + } + + if (-f $invoice) + { + &warn ("Exploding invoice \`$invoice\'"); + + if (-d $WORKDIR) + { + &diagnose ("The work directory \`$WORKDIR\' already exists!"); + &query ('Should I remove all of it first (y/n)? [y]'); + &interrupt ('Command aborted!') if ! /^(y|yes)/i; + system "rm -rf $WORKDIR" + || &interrupt ("Cannot remove directory \`$WORKDIR\'"); + } + + system "$TAR xfoz $invoice" + || &interrupt ("Failure while untarring file \`$invoice\'"); + $workdir_to_unlink = $work_directory; + } + + chop ($prior = `pwd`); + open (ORDERS, "$work_directory/$ORDERS") + || &interrupt ("Cannot read file \`$work_directory/$ORDERS\'"); + + &process_loop; + + close ORDERS; + chdir $prior; + + if ($workdir_to_unlink) + { + unlink "$workdir_to_unlink/$ORDERS~"; # in case edited in place + unlink "$workdir_to_unlink/$ORDERS" + || &diagnose ("Cannot delete file \`$workdir_to_unlink/$ORDERS\'"); + rmdir $workdir_to_unlink + || &diagnose ("Cannot remove directory \`$workdir_to_unlink\'"); + $workdir_to_unlink = ''; + } + + if ($invoice_to_unlink) + { + unlink $invoice_to_unlink + || &diagnose ("Cannot delete file \`$invoice_to_unlink\'"); + $invoice_to_unlink = ''; + } + &warn ('Command `process\' done'); +} + +## Decode each received package orders, in turn. Most validation +## is delayed until the `visit' order. + +sub process_loop +{ + local (@signature, $auto); + + $process_loop = 1; + + PROCESS_LOOP: + while () + { + chop; + + # Handle commands not requiring the analysis of file $CONFIG. + + if (/^format\t$PROGRAM ([^ ]+)$/o) + { + &interrupt + ("Need $PROGRAM (format $FORMAT) to process this package!") + if $1 ne $FORMAT; + } + elsif (/^title\t(.*)/) + { + $project_title_received = $1; + } + elsif (/^here\t([^ ]+) ([^ ]+)$/) + { + ($here_email_received, $here_home_received) = ($1, $2); + $here_email_received =~ tr/A-Z/a-z/; + } + elsif (/^remote\t([^ ]+) ([^ ]+)$/) + { + warn "Remote-1 $1 $2\n"; # FIXME + $_ = $1; + tr/A-Z/a-z/; + push (@remote_received, $_); + $remote_received{$_} = $2; + warn "Remote-2 $1 $2\n"; # FIXME + } + elsif (/^scan\t([^ ]+)$/) + { + $scan_received{$1} = 1; + } + elsif (/^ignore\t([^ ]+)$/) + { + $ignore_received{$1} = 1; + } + elsif (/^visit\t([^ ]+)$/) + { + &process_visit ($1); + } + elsif (/^copy\t(.+)/) + { + &process_copy ($1); + } + elsif (/^check\t([^ ]+) ([^ ]+) (.+)/) + { + &process_check ($1, $2, $3); + } + elsif (/^update\t([^ ]+) ([^ ]+) ([^ ]+)$/) + { + &process_update ($1, $2, $3); + } + else + { + &interrupt ("Unrecognized command \`$_\' in process input"); + } + } + + $process_loop = 0; + &update_file_registry; + + if (%signature_received) + { + foreach $file (sort keys %signature) + { + &diagnose ("File \`$file\' is unknown remotely") + if ! defined $signature_received{$file}; + $auto = 'warn'; + } + if ($auto) + { + &warn ('Replying `y\' (yes) deletes the said file'); + &warn (' `n\' (no) keeps the said file'); + &warn (' `a\' (all) deletes the file and all following'); + &warn (' `q\' (quit) keeps the file and all following'); + $auto = ''; + } + foreach $file (sort keys %signature) + { + if (! defined $signature_received{$file}) + { + @signature = split (/ /, $signature{$file}); + if ($signature[$originator] ne '-') + { + $signature[$originator] = '-'; + $save_config = 1; + $signature{$file} = join (' ', @signature); + } + + if ($auto) + { + $_ = $auto; + } + else + { + &query + ("Should I delete file \`$file\' here (y/n/a/q)? [n]"); + } + + if (/^(a|all)$/i) + { + $auto = 'yes'; + $_ = $auto; + } + elsif (/^(q|quit)$/i) + { + $auto = 'no'; + $_ = $auto; + } + + if (/^(y|yes)$/i) + { + if (! $noop_mode) + { + unlink $file + || &diagnose ("Cannot delete file \`$file\'"); + } + delete $signature{$file}; + } + } + } + } +} + +## Prepare to visit a directory, conciliating all received information. +## Synopsis: `visit VISITED', where VISITED is an index in remotes. + +sub process_visit +{ + local ($visited) = @_; + local ($email, $home, $string, $scan, $ignore); + + &maybe_save_config; + + &warn (''); + &warn ('Package being received:'); + &warn (" from address \`$here_email_received\'"); + &warn (" for project \`$project_title_received\'"); + + # Check the recipient address. + + $email = &guess_here_email; + $string = $remote_received[$visited]; + + if (! &equivalent_email ($email, $string)) + { + &diagnose ("This package was sent to address \`$string\'"); + &warn ("but your address is known to be \`$email\'"); + &warn (''); + &warn ('The possibilities at this point are:'); + &warn (" 1. Correct your full email address to \`$string\'"); + &warn (" 2. Use your current email address \`$email\'"); + &warn (' 3. Specify another full email address (beware!)'); + &warn (' 4. Abandon the processing of this package'); + $_ = ''; + &query ('Which action do you choose (1-4)? [1]') + while ! /^[1-4]$/; + if ($_ eq '1') + { + $email = $string; + } + elsif ($_ eq '3') + { + $_ = &guess_here_email; + &query ("What is your full email address, here? [$_]"); + $email = $_; + } + elsif ($_ eq '4') + { + &interrupt ('Command aborted!'); + } + } + + # Check the recipient directory. + + $string = $remote_received{$string}; + $_ = &expand_filename ($string); + if (-d $_) + { + $home = $string; + } + else + { + chop ($_ = `pwd`); + $home = &normalize_directory ($_); + + &diagnose ("This package was aimed for directory \`$string\'"); + &warn ('but this directory does not exist here'); + &warn (''); + &warn ('The possibilities at this point are:'); + &warn (" 1. Attempt creating the \`$string\' directory"); + &warn (" 2. Use the current directory \`$home\' (are you sure?)"); + &warn (' 3. Specify another synchronized directory (beware!)'); + &warn (' 4. Abandon the processing of this package'); + $_ = ''; + &query ('Which action do you choose (1-4)? [1]') + while ! /^[1-4]$/; + if ($_ eq '1') + { + $home = $string; + } + elsif ($_ eq '3') + { + &query ("Which directory should be used? [$home]"); + $home = &normalize_directory ($_); + } + elsif ($_ eq '4') + { + &interrupt ('Command aborted!'); + } + } + + # Force our way to the wanted directory. + + &warn ("Visiting directory \`$home'," + . " remote was \`$here_home_received\'"); + + $home = &expand_filename ($home); + &prepare_filename ("$home/$CONFIG"); + chdir $home || &interrupt ("Cannot change directory to \`$home\'"); + + # Swallow or simulate the $CONFIG file. + + if (-f "$home/$CONFIG") + { + $fetch_config = 1; + &maybe_fetch_config; + + # Reconciliate $project_title. + + if ($project_title ne $project_title_received) + { + &diagnose ("The package title is \`$project_title_received\'"); + &warn ("but \`$CONFIG\' says it should be \`$project_title\'"); + &warn (''); + &warn ('The possibilities at this point are:'); + &warn (" 1. Use \`$project_title_received\' as title"); + &warn (" 2. Keep \`$project_title' as title\'"); + &warn (' 3. Specify another project title'); + $_ = ''; + &query ('Which action do you choose (1-3)? [1]') + while ! /^[1-3]$/; + if ($_ eq '1') + { + $project_title = $project_title_received; + } + elsif ($_ eq '3') + { + &query ('What will be the new project title?'); + $project_title = $_; + } + } + + # Reconciliate $here_email. + + if (! &equivalent_email ($email, $here_email)) + { + &diagnose ("This package is sent to address \`$here_email\'"); + &warn ("but \`$CONFIG\' says it should have been \`$email\'"); + &warn (''); + &warn ('The possibilities at this point are:'); + &warn (" 1. Use your current full email address \`$email\'"); + &warn (" 2. Correct your full email address to \`$here_email\'"); + &warn (' 3. Specify another full email address'); + $_ = ''; + &query ('Which action do you choose (1-3)? [1]') + while ! /^[1-3]$/; + if ($_ eq '1') + { + $here_email = $email; + } + elsif ($_ eq '3') + { + $_ = &guess_here_email; + &query ("What is your full email address, here? [$_]"); + $here_email = $_; + } + } + + # Reconciliate $here_home. + + $home = &normalize_directory ($home); + if ($home ne $here_home) + { + &diagnose ("This package is aimed for directory \`$here_home\'"); + &warn ("but \`$CONFIG\' says it should have been \`$home\'"); + &warn (''); + &warn ('The possibilities at this point are:'); + &warn (" 1. Record the \`$home\' directory in the configuration"); + &warn (" 2. Correct the directory to \`$here_home\'"); + &warn (' 3. Record another name for this directory (beware!)'); + $_ = ''; + &query ('Which action do you choose (1-3)? [1]') + while ! /^[1-3]$/; + if ($_ eq '1') + { + $here_home = $home; + $config_filename = &expand_filename ("$here_home/$CONFIG"); + } + elsif ($_ eq '3') + { + &query ("Which directory should be used? [$home]"); + $here_home = &normalize_directory ($_); + $config_filename = &expand_filename ("$here_home/$CONFIG"); + } + } + + # Reconciliate remote information. + + foreach $remote (sort keys %remote) + { + if (defined $remote_received{$remote}) + { + if ($remote{$remote} ne $remote_received{$remote}) + { + &diagnose ("Conflicting directories for \`$remote\'"); + &warn (" known as \`$remote{$remote}\' here and"); + &warn (" as \`$remote_received{$remote}\' remotely"); + &warn (''); + &warn ('The possibilities at this point are:'); + &warn (" 1. Accept \`$remote_received{$remote}\'"); + &warn (" 2. Keep \`$remote{$remote}\'"); + &warn (' 3. Declare another directory...'); + $_ = ''; + &query ('Which action do you choose (1-3)? [1]') + while ! /^[1-3]$/; + if ($_ eq '1') + { + $remote{$remote} = $remote_received{$remote}; + $save_config = 1; + } + elsif ($_ eq '3') + { + &query ("\ +Which directory should be used? [$remote_received{$remote}]"); + if ($_ ne $remote{remote}) + { + $remote{$remote} = &normalize_directory ($_); + $save_config = 1; + } + } + } + delete $remote_received{$remote}; + } + elsif ($remote ne $here_email_received) + { + &diagnose ("Remote \`$remote\' is unknown remotely"); + &query ('Should I forget it here (y/n)? [n]'); + # FIXME: this might require more adjustments? + delete $remote{$remote} if /(y|yes)/i; + } + } + foreach $remote (sort keys %remote_received) + { + if ($remote ne $here_email) + { + &diagnose + ("Remote \`$remote\' is known remotely but not here"); + &query ('Should I learn it here (y/n)? [y]'); + &create_remote ($remote, $remote_received{$remote}) + if (/(y|yes)/i); + } + delete $remote_received{$remote}; + } + + # At last, finally, decide who is sending the package. + + $originator = &validated_remote_index ($here_email_received); + + # Reconciliate scan information. + + foreach $scan (sort keys %scan) + { + if (defined $scan_received{$scan}) + { + delete $scan_received{$scan}; + } + else + { + &diagnose ("Scan \`$scan\' is unknown remotely"); + &query ('Should I forget it here (y/n)? [n]'); + delete $scan{$scan} if /(y|yes)/i; + } + } + foreach $scan (sort keys %scan_received) + { + &diagnose + ("Scan \`$scan\' is known remotely but not here"); + &query ('Should I learn it here (y/n)? [y]'); + $scan{$scan} = $NEWLY_CREATED_SCAN if /(y|yes)/i; + delete $scan_received{$scan}; + } + + # Reconciliate ignore information. + + foreach $ignore (sort keys %ignore) + { + if (defined $ignore_received{$ignore}) + { + delete $ignore_received{$ignore}; + } + else + { + &diagnose ("Ignore \`$ignore\' is unknown remotely"); + &query ('Should I forget it here (y/n)? [n]'); + delete $ignore{$ignore} if /(y|yes)/i; + } + } + foreach $ignore (sort keys %ignore_received) + { + &diagnose + ("Ignore \`$ignore\' is known remotely but not here"); + &query ('Should I learn it here (y/n)? [y]'); + $ignore{$ignore} = 1 if /(y|yes)/i; + delete $ignore_received{$ignore}; + } + } + else + { + + # Use remote information for initializing the local one. + + &warn ('Initializing file \`$CONFIG\' from received information'); + + $project_title = $project_title_received; + $here_email = $remote_received[$visited]; + $here_home = $remote_received{$here_email}; + $config_filename = &expand_filename ("$here_home/$CONFIG"); + + if ($here_email ne $here_email_received) + { + $remote_received[$visited] = $here_email_received; + $remote_received{$here_email_received} = $here_home_received; + delete $remote_received{$here_email}; + } + + @remote = @remote_received; + + %remote = %remote_received; + %remote_received = (); + %scan = %scan_received; + %scan_received = (); + %ignore = %ignore_received; + %ignore_received = (); + + $new_config = 1; + $save_config = 1; + $fetch_config = 0; + $study_files = 1; + } +} + +## Package was sent to each address in SET. +## Synopsis: `copy SET'. + +sub process_copy +{ + local ($set) = @_; + local ($counter); + + &maybe_fetch_config; + + @copy_list = (); + $counter = 0; + foreach (split (' ', $set)) + { + $_ = $remote_received[$_]; + + $copy_list[$counter++] + = $_ eq $here_email ? -1 : &validated_remote_index ($_); + } +} + +## Set FILE signatures to SIGNATURE, given a SET of previous values. +## Synopsis: `check FILE SIGNATURE SET'. + +sub process_check +{ + local ($file, $signature, $set) = @_; + local (@signature, @check, $counter, $new_signature); + + @check = split (' ', $set); + &interrupt ("Unmatching number of signatures for file \`$file\'") + if @check != @copy_list; + +# &maybe_fetch_config; + &maybe_study_files; + + if (defined $signature{$file}) + { + @signature = split (/ /, $signature{$file}); + } + else + { + @signature = ('-') x @remote; + } + if ($signature ne $signature[$originator]) + { + $signature[$originator] = $signature; + $save_config = 1; + } + for ($counter = 0; $counter < @check; $counter++) + { + if ($copy_list[$counter] >= 0 && $check[$counter] ne '-') + { + if ($signature[$copy_list[$counter]] eq '-' + || $signature[$copy_list[$counter]] eq $check[$counter]) + { + $new_signature = $signature; + } + else + { + # If we do have an idea of a remote file\'s signature, and + # if this idea is contradicted by a synchronization + # package, rather say we know nothing besides that the + # file merely exists. Give it a signature from hell. + + $new_signature = '666'; + } + if ($new_signature ne $signature[$copy_list[$counter]]) + { + $signature[$copy_list[$counter]] = $new_signature; + $save_config = 1; + } + } + } + + $signature{$file} = join (' ', @signature); + $signature_received{$file} = 1; +} + +## If FILE checks to SIGNATURE, replace it by PACKAGED. +## Synopsis: `update FILE SIGNATURE PACKAGED'. + +sub process_update +{ + local ($file, $old_signature, $packaged) = @_; + local ($action, $cautious, $packaged_signature); + + $packaged = "$work_directory/$packaged"; + +# &maybe_fetch_config; +# &maybe_study_files; + + if (&ignorable_file ($file)) + { + &diagnose ("File \`$file\' is the subject of some \`ignore\'"); + &query ('Should I accept it nevertheless (y/n)? [n]'); + $action = 'UNLINK' if ! /^(y|yes)$/i; + } + + if (! $action && -f $file && ! defined $local_signature{$file}) + { + &diagnose ("File \`$file\' was not found here"); + $local_signature{$file} = &single_signature ($file); + $cautious = 1; + } + + if (! $action && -f $file && $old_signature eq $local_signature{$file}) + { + if ($cautious) + { + &query ('Show diffs before updating it (y/n)? [y]'); + $action = /^(y|yes)$/i ? 'DIFF' : 'MOVE'; + } + else + { + &warn ("Updating file \`$file\'"); + $action = 'MOVE'; + } + } + + if (! $action && -f $file) + { + $packaged_signature = &single_signature ($packaged); + if ($old_signature eq '-') + { + if ($packaged_signature eq $local_signature{$file}) + { + &diagnose ("Redundant creation of file \`$file\'"); + $action = 'UNLINK'; + } + else + { + &diagnose ("Unexpected preexisting file \`$file'"); + $action = 'DIFF'; + } + } + else + { + if ($packaged_signature eq $local_signature{$file}) + { + &diagnose ("Redundant updating of file \`$file\'"); + $action = 'UNLINK'; + } + else + { + &diagnose ("Local changes occurred to file \`$file\'"); + $action = 'DIFF'; + } + } + } + + if (! $action) # $file does not exist here + { + if ($old_signature eq '-') + { + &warn ("Creating new file \`$file\'"); + $action = 'MOVE'; + } + else + { + &diagnose ("File \`$file\' has disappeared from here"); + &query ('Should I recreate it from remote copy (y/n)? [y]'); + $action = /^(y|yes)$/i ? 'MOVE' : 'UNLINK'; + } + } + + if ($action eq 'DIFF') + { + &warn (''); + &warn ("$DIFF -u $here_home/$file $packaged"); + system "$DIFF -u $here_home/$file $packaged"; + &warn (''); + &warn ('Before replying to next question, please reconciliate:'); + &warn (" -) \`$here_home/$file\'"); + &warn (" +) \`$packaged\'"); + &warn (''); + &query ('Now, which of these files should be kept (-/+)? [-]'); + $action = /^\+$/ ? 'MOVE' : 'UNLINK'; + } + + if ($action eq 'UNLINK' && ! $noop_mode) + { + unlink $packaged || &diagnose ("Cannot delete file \`$packaged\'"); + } + + if ($action eq 'MOVE' && ! $noop_mode) + { + if (-f $file) + { + unlink $file || &diagnose ("Cannot delete file \`$file\'"); + } + &prepare_filename ($file); + system "mv $packaged $file" + || &interrupt ("Cannot move packaged file into \`$file\'"); + $local_signature{$file} = &single_signature ($file); + } +} + +# $CONFIG file maintainance. + +## Digest in file \`$CONFIG\' if not done already. + +sub maybe_fetch_config +{ + local (@signature, $index, $string); + + return if ! $fetch_config; + + %remote = (); + %scan = (); + %ignore = (); + %signature = (); + + if (open (CONFIG, $CONFIG)) + { + while (chop ($_ = )) + { + next if /^$/; + next if /^#/; + + if (/^format\t$PROGRAM ([^ ]+)$/o) + { + &interrupt ("$CONFIG:$.: Unmatching format for $CONFIG") + if $1 ne $FORMAT; + } + elsif (/^title\t(.*)$/) + { + $project_title = $1; + &warn ("Reading configuration for project \`$project_title\'"); + } + elsif (/^here\t([^ ]+) ([^ ]+)$/) + { + ($here_email, $here_home) = ($1, $2); + $here_email =~ tr/A-Z/a-z/; + $config_filename = &expand_filename ("$here_home/$CONFIG"); + } + elsif (/^remote\t([^ ]+) ([^ ]+)$/) + { + local ($save_config); # protect against &create_remote; + + $string = $1; + $string =~ tr/A-Z/a-z/; + &create_remote ($1, $2); + } + elsif (/^scan\t([^ ]+)$/) + { + $scan{$1} = 1; + } + elsif (/^ignore\t([^ ]+)$/) + { + if ($1 eq '\\.remsync') + { + $ignore{'\\.remsync.*'} = 1; + } + else + { + $ignore{$1} = 1; + } + } + elsif (/^\t([^ ]+) (.*)/) + { + + # Temporary code, the time everything is getting updated. + # Was: $signature{$1} = $2; + + @signature = split (/ /, $2); + for ($index = 0; $index < @remote; $index++) + { + if (! $signature[$index]) + { + &diagnose ("Empty signature for file \`$1\' [$index]"); + $signature[$index] = '-'; + $save_config = 1; + } + } + $signature{$1} = join (' ', @signature); + } + else + { + &interrupt ("** $CONFIG:$.: Illegal format for $CONFIG"); + } + } + close CONFIG; + + if (! $project_title) + { + &diagnose ('There is no title for this project.'); + &query ('Please enter a short project description:'); + $project_title = $_; + } + } + else + { + chop ($_ = `pwd`); + $_ = &normalize_directory ($_); + &diagnose ("Directory \`$_\' is not ready for synchronization"); + &query ('Should I prepare it for its first time (y/n)? [y]'); + &interrupt ('Command aborted!') if ! /^(y|yes)$/i; + $new_config = 1; + + &query ('Please enter a short project description:'); + $project_title = $_; + + $_ = &guess_here_email; + &query ("What is your full email address, here? [$_]"); + $here_email = $_; + + chop ($_ = `pwd`); + $here_home = &normalize_directory ($_); + $config_filename = &expand_filename ("$here_home/$CONFIG"); + + foreach (('(.*/)?core(\\..*)?', + '.*,v', + '.*/RCS/.*', + '.*\\.(bak|BAK)', + '.*\\.[oa]', + '.*~', + "\\$CONFIG.*", + '\\\#.*')) + { + $ignore{$_} = 1; + } + } + + $fetch_config = 0; + $save_config = 1; + $study_files = 1; +} + +## Write back file \`$CONFIG\' if it has been modified. + +sub maybe_save_config +{ + local ($index); + + return if ! $save_config; + $save_config = 0; + return if $noop_mode; + + if (! $new_config) + { + unlink "$config_filename.bak"; + rename ("$config_filename", "$config_filename.bak") + || &interrupt ("Cannot backup file \`$config_filename'"); + } + + open (CONFIG, ">$config_filename") + || &interrupt ("Cannot create file \`$config_filename\'"); + print CONFIG + "# This file is maintained automatically by program \`$PROGRAM\'.", + " DO NOT EDIT!\n"; + print CONFIG "\n"; + print CONFIG "format\t$PROGRAM $FORMAT\n"; + print CONFIG "title\t$project_title\n"; + &diagnose ('There is no project title, yet') if ! $project_title; + print CONFIG "here\t$here_email $here_home\n"; + &diagnose ('There are no declared remote connections, yet') + if ! @remote; + foreach (@remote) + { + print CONFIG "remote\t$_ $remote{$_}\n"; + } + print CONFIG "\n"; + foreach (sort keys %scan) + { + print CONFIG "scan\t$_\n"; + } + foreach (sort keys %ignore) + { + print CONFIG "ignore\t$_\n"; + } + foreach (sort keys %signature) + { + print CONFIG "\t", $_, ' ', $signature{$_}, "\n"; + } + close CONFIG; +} + +## Scan for files with `find' and `sum', unless this is done already. + +sub maybe_study_files +{ + local ($list, $signature, $file); + + # Do not execute this lengthy process without reason. + + return if ! $study_files; + &warn ('Studying local files for their signature'); + + # Find the proper "sum" command. + + if (! $checksum_command) + { + foreach (('sum', 'sum -r')) + { + if (`echo x | $_` =~ /^00070 /) + { + $checksum_command = $_; + last; + } + } + &interrupt ('Cannot find BSD program `sum\' around') + if ! $checksum_command; + } + + # Trigger execution of find with all the %scan parameters. + + if (%scan == 0) + { + $list = ' .'; + } + else + { + $list = ''; + foreach (sort keys %scan) + { + $list .= " '$_'"; + } + } + + $findtempfile = mktemp( "./remsync.XXXXXX" ); + + open (SCAN, + "find$list -type f 2> $findtempfile | xargs -r $checksum_command |") + || &interrupt ('Cannot launch program `find\''); + + # Process each existing file in turn. + + %local_signature = (); + $maximum_name_width = 0; + + while () + { + if (/^([0-9]+) +[0-9]+ +(\.\/)?(.*)/) + { + ($signature, $file) = ($1, $3); + } + else + { + chop; + &diagnose ("Unrecognized output from program \`sum\': \`$_\'"); + next; + } + + next if &ignorable_file ($file); + + $local_signature{$file} = $signature; + $maximum_name_width = length $file + if length $file > $maximum_name_width; + } + close SCAN; + + # Clean out scanning for non-existing files. + + open (SCAN, $findtempfile); + while () + { + chop; + if (/^find: (.*): No such file or directory$/) + { + $file = $1; + &diagnose ("No files found while scanning for \`$file\'"); + if (! defined $scan{$file}) + { + &diagnose ('And this is not even a valid scan. Bizarre...'); + } + elsif ($scan{$file} != $NEWLY_CREATED_SCAN) + { + &warn ('\ +To get rid of this warning, delete the scan or have it find something!'); + &query ('Should I delete this scan now (y/n)? [y]'); + &command_delete_scan ($file) if /^(y|yes)$/i; + } + } + else + { + &diagnose ("Scan error: $_"); + } + } + close SCAN; + unlink $findtempfile; + + $study_files = 0; +} + +## Compute `sum' over a single file. + +sub single_signature +{ + (split (' ', `$checksum_command $_[0]`))[0]; +} + +## Update file and signature matrix according to what exists here. + +sub update_file_registry +{ + local ($cautious, $size); + + foreach (sort keys %signature) + { + if (! defined $local_signature{$_}) + { + &warn ("Forgetting file \`$_\'"); + delete $signature{$_}; + $save_config = 1; + } + } + + foreach (sort keys %local_signature) + { + if (! defined $signature{$_}) + { + $size = int (((stat $_)[7] + 999) / 1000); + &warn ("Noticing new file \`$_\' [${size}K]"); + $signature{$_} = join (' ', ('-') x @remote); + $save_config = 1; + $cautious = 1 if $size > 100; + } + } + + if ($cautious && !$process_loop) + { + &diagnose ('There were new files bigger than 100K'); + &query ('Should I resume the current command (y/n)? [y]'); + &interrupt ('Command aborted!') if ! /^(y|yes)$/i; + } +} + +# Identification and filename services. + +## Return a sensible suggestion for our probable email address. + +sub guess_here_email +{ + return $here_email if $here_email; + + chop ($_ = `hostname`); + if (/\./) + { + $_ = "$ENV{'LOGNAME'}@$_"; + } + else + { + $_ .= "!$ENV{'LOGNAME'}"; + } + tr/A-Z/a-z/; + return $_; +} + +## Use forgiving rules to test for equivalence between EMAIL_LEFT +## and EMAIL_RIGHT. + +sub equivalent_email +{ + local ($email_left, $email_right) = @_; + local ($user_left, $user_right, $domain_left, $domain_right); + + if ($email_left =~ /(.+)@(.+)/) + { + ($user_left, $domain_left) = ($1, $2); + } + elsif ($email_left =~ /(.+)!([^!]+)/) + { + ($user_left, $domain_left) = ($2, $1); + } + else + { + ($user_left, $domain_left) = ($email_left, ''); + } + + if ($email_right =~ /(.+)@(.+)/) + { + ($user_right, $domain_right) = ($1, $2); + } + elsif ($email_right =~ /(.+)!([^!]+)/) + { + ($user_right, $domain_right) = ($2, $1); + } + else + { + ($user_right, $domain_right) = ($email_right, ''); + } + + $domain_left =~ s/\.uucp$//; + $domain_right =~ s/\.uucp$//; + + return 0 if ($user_left !~ /^$user_right(-batch)?$/ + && $user_right !~ /^$user_left(-batch)?$/); + + return 0 if ($domain_left !~ /$domain_right$/ + && $domain_right !~ /$domain_left$/); + 1; +} + +## Return the given filename expanded so the system will recognize it. + +sub expand_filename +{ + local ($pwd); + + $_ = $_[0]; + if (/^~/) + { + return $ENV{'HOME'} if /^~$/; + s|^~/|$ENV{'HOME'}/|; + } + return $_ if /^\//; + + chop ($pwd = `pwd`); + "$pwd/$_"; +} + +## Return the given directory normalized so the user will like +## it more. However, still avoid relative notations. + +sub normalize_directory +{ + return '~' if $_[0] eq $ENV{'HOME'}; + + $_ = $_[0]; + s|^$ENV{'HOME'}/|~/|; + chop ($_ = `cd $_; pwd`) if ! /^[~\/]/; + $_; +} + +## Ensure intermediate directories exist by creating them as needed, +## and that the appropriate permissions are set for the FILE to be +## created or replaced. + +sub prepare_filename +{ + local ($filename) = @_; + local (@filename, $counter); + + if (-e $filename) + { + &interrupt ("Cannot modify read-only file \`$filename\'") + if ! -w $filename; + return; + } + + @filename = split (/\//, $filename); + pop @filename; + + for ($counter = $filename[0] ? 0 : 1; $counter < @filename; $counter++) + { + $filename = join ('/', @filename[0 .. $counter]); + next if -d $filename; + &warn (" Creating new directory \`$filename\'"); + if (! mkdir ($filename, 0755)) + { + &interrupt ("Cannot create directory \`$filename\'"); + return; + } + } +} + +# Various services. + +## Says whether if FILE should be ignored. + +sub ignorable_file +{ + local ($file) = @_; + + foreach (keys %ignore) + { + if (/^!(.*)/) + { + return 1 if $file !~ /^$1$/; + } + else + { + return 1 if $file =~ /^$_$/; + } + } + 0; +} + +## Initialize @site_set according to the given SET. + +sub decode_site_set +{ + local ($set) = @_; + local ($index, $counter); + + if ($set eq '') + { + @site_set = 0 .. @remote - 1; + } + elsif ($set eq '!') + { + @site_set = (); + } + elsif ($set =~ /!(.*)/) + { + @site_set = 0 .. @remote - 1; + foreach (split (' ', $1)) + { + $site_set[&validated_remote_index ($_)] = ''; + } + @site_set = grep (/./, @site_set); + } + else + { + @site_set = (); + @copy_list = (); # used to parallel "from" and "check" lines + $counter = 0; + foreach (split (' ', $set)) + { + $index = &validated_remote_index ($_); + $copy_list[$counter++] = $index; + $site_set[$index] = $index; + } + @site_set = grep (/./, @site_set); + } +} + +## Create a new REMOTE address with its related DIRECTORY. + +sub create_remote +{ + local ($remote, $directory) = @_; + + push (@remote, $remote); + $remote{$remote} = $directory; + foreach (keys %signature) + { + $signature{$_} .= ' -'; + } + $save_config = 1; +} + +## Alter a REMOTE address to a NEW_REMOTE address, known to be equivalent. + +sub change_remote +{ + local ($remote, $new_remote) = @_; + + return if $remote eq $new_remote; + $remote[&validated_remote_index ($remote)] = $new_remote; + $remote{$new_remote} = $remote{$remote}; + delete $remote{$remote}; + $save_config = 1; +} + +## Destroy information related to a REMOTE address. + +sub delete_remote +{ + local ($remote) = @_; + local (@signature, $index); + + $index = &validated_remote_index ($remote); + @remote = @remote[0 .. $index - 1, $index + 1 .. @remote - 1]; + delete $remote{$remote}; + + foreach (keys %signature) + { + @signature = split (/ /, $signature{$_}); + $signature{$_} + = join (' ', + @signature[0 .. $index - 1, $index + 1 .. @signature - 1]); + } + $save_config = 1; +} + +## Return the index of a given REMOTE, interrupting the command if not found. + +sub validated_remote_index +{ + local ($remote) = @_; + local ($index); + + $index = &remote_index ($remote); + return $index if $index >= 0; + &interrupt ("Specification \`$remote\' invalid for remote address"); +} + +## Return the index of a given REMOTE, or a negative value if not found. + +sub remote_index +{ + local ($remote) = @_; + local ($index); + + $remote = $remote[$remote - 1] if ($remote > 0 && $remote <= @remote); + $index = 0; + foreach (@remote) + { + return $index if $remote eq $_; + $index++; + } + -1; +} + +# Interactive dialog and error processing. + +## Query the user interactively with QUESTION, return the reply +## in $_. An empty reply means the default signature from the QUESTION +## if any, written as "...? [DEFAULT]". Echo the input if used +## in process. + +sub query +{ + local ($query) = @_; + + while (1) + { + print STDERR "\a$query "; + $_ = <>; + if ($_) + { + print STDERR if ! -t; + chop; + if (/^\?$/) + { + print STDERR $NORMAL_HELP; + next; + } + if (/^! *(.*)$/) + { + if ($1) + { + system $1; + } + elsif (defined $ENV{$SHELL}) + { + system $ENV{$SHELL}; + } + else + { + system $SH; + } + next; + } + if (/^abort$/) + { + if ($save_config) + { + &diagnose + ("Modifications to file \`$CONFIG\' are unsaved"); + &query ('Should I stop without saving them (y/n)? [n]'); + if (/^(y|yes)$/i) + { + $command_loop = 0; + $process_loop = 0; + &interrupt ('Program aborted!'); + } + } + &interrupt ('Command aborted!'); + } + $_ = $1 if (! $_ && $query =~ /\? \[(.+)\]$/); + return; + } + else + { + print STDERR "quit\n"; + $_ = 'quit'; + return; + } + } +} + +## Issue a message for the (possibly interactive) user. + +sub warn +{ + warn " $_[0]\n"; +} + +## Issue an error message for the (possibly interactive) user. + +sub diagnose +{ + warn "* $_[0]\n"; +} + +## Issue an error message for the (possibly interactive) user, while +## interrupting the command being currently executed. Abort if none. + +sub interrupt +{ + if ($process_loop) + { + $workdir_to_unlink = ''; + $invoice_to_unlink = ''; + %signature_received = (); + + warn "* $_[0]\n"; + last PROCESS_LOOP; + } + elsif ($command_loop) + { + warn "* $_[0]\n"; + next COMMAND_LOOP; + } + else + { + die "** $_[0]\n"; + } +} + +# Local Variables: +# mode: perl +# End: diff --git a/src/scripts.def b/src/scripts.def new file mode 100644 index 0000000..50c4e67 --- /dev/null +++ b/src/scripts.def @@ -0,0 +1,281 @@ +/* + + This file defines the shell script strings in normal shell script format. + The template will reformat them so that after they pass through the C + compiler, they will be restored to the form you see here (with leading + tabs stripped, per shell "heredoc" conventions). + + */ + +AutoGen Definitions scripts.tpl; + +#ifdef EMIT_TEMPLATE +text = { + name = ; + body = <<- _EOBody_ + + _EOBody_; +}; +#endif + + +text = { + name = contents; + body = <<- _EOBody_ + # + # This shar contains: + # length mode name + # ------ ---------- ------------------------------------------ + _EOBody_; +}; + + +text = { + name = noisy_mkdir; + body = <<- _EOBody_ + ${echo} $echo_n 'x - %s: '$echo_c + mkdir '%s' + _EOBody_; +}; + + +text = { + name = continue_archive; + body = <<- _EOBody_ + #!/bin/sh + # This is `%s' (part %d of %s). + # Do not concatenate these parts, unpack them in order with `/bin/sh'. + # File `%s' is being continued... + # + lock_dir=_sh%05d + _EOBody_; +}; + + +text = { + name = dev_tty_check; + body = <<- _EOBody_ + if test -n "`ls /dev/tty 2>/dev/null`" + then shar_tty=/dev/tty + else shar_tty= ; fi + _EOBody_; +}; + + +text = { + name = echo_checks; + body = <<- _EOBody_ + if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null + then if (echo -n test; echo 1,2,3) | grep n >/dev/null + then shar_n= shar_c=' + ' + else shar_n=-n shar_c= ; fi + else shar_n= shar_c='\c' ; fi + _EOBody_; +}; + + +text = { + name = echo_string; + body = <<- _EOBody_ + ${echo} '%s' + _EOBody_; +}; + + +text = { + name = file_leader; + body = <<- _EOBody_ + #!/bin/sh + # This is %s%s archive (produced by GNU %s %s). + # To extract the files from this archive, save it to some FILE, remove + # everything before the `#!/bin/sh' line above, then type `sh FILE'. + # + lock_dir=_sh%05d + _EOBody_; +}; + + +text = { + name = i18n; + body = <<- _EOBody_ + save_IFS="${IFS}" + IFS="${IFS}:" + gettext_dir=FAILED + locale_dir=FAILED + first_param="$1" + for dir in $PATH + do + if test "$gettext_dir" = FAILED && test -f $dir/gettext \ + && ($dir/gettext --version >/dev/null 2>&1) + then + case `$dir/gettext --version 2>&1 | sed 1q` in + *GNU*) gettext_dir=$dir ;; + esac + fi + if test "$locale_dir" = FAILED && test -f $dir/shar \ + && ($dir/shar --print-text-domain-dir >/dev/null 2>&1) + then + locale_dir=`$dir/shar --print-text-domain-dir` + fi + done + IFS="$save_IFS" + if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED + then + echo=echo + else + TEXTDOMAINDIR=$locale_dir + export TEXTDOMAINDIR + TEXTDOMAIN=sharutils + export TEXTDOMAIN + echo="$gettext_dir/gettext -s" + fi + _EOBody_; +}; + + +text = { + name = lock_dir; + body = <<- _EOBody_ + ${echo} $shar_n 'x - %s' "\`${lock_dir}': "$shar_c + _EOBody_; +}; + + +text = { + name = md5check; + body = <<- _EOBody_ + MD5SUM=${MD5SUM-md5sum} + f=`${MD5SUM} --version | egrep '^md5sum .*(core|text)utils'` + test -n "${f}" && md5check=true || md5check=false + ${md5check} || \ + echo '%s' + _EOBody_; +}; + + +text = { + name = md5test; + body = <<- _EOBody_ + if ${md5check} + then ( + ${MD5SUM} -c >/dev/null 2>&1 || ${echo} '%s: %s' + ) << \%s + _EOBody_; +}; + + +text = { + name = query_answers; + body = <<- _EOBody_ + ans_yes='%s' yes_means='%s' + ans_no='%s' no_means='%s' + ans_all='%s' all_means='%s' + ans_none='%s' none_means='%s' + ans_help='%s' help_means='%s' + ans_quit='%s' quit_means='%s' + user_answers='no yes all none help quit' + shar_wish='no' + ans_list=" +[<${ans_no}>, ${ans_yes}, ${ans_all}, ${ans_none}, ${ans_help}, ${ans_quit}] ? " + + eval_ans=' + if test -z "${shar_wish}" ; then answer=no ; else + answer='help' + case "${ans_yes}" in "${shar_wish}"* ) answer=yes ; break ;; esac + case "${ans_no}" in "${shar_wish}"* ) answer=no ; break ;; esac + case "${ans_all}" in "${shar_wish}"* ) answer=all ; break ;; esac + case "${ans_none}" in "${shar_wish}"* ) answer=none ; break ;; esac + case "${ans_quit}" in "${shar_wish}"* ) answer=quit ; break ;; esac + fi' + _EOBody_; +}; + +text = { + name = query_check; + body = <<- _EOBody_ + case "${shar_wish}" in + quit) ${echo} '%s'; exit 1 ;; + none) ${echo} 'x - %s' ; shar_skip=yes ;; + no) shar_skip=yes ;; + yes | all) shar_skip=no ;; + esac + else + shar_skip=no + fi + if test $shar_skip = yes; then + ${echo} 'x - %s' + _EOBody_; +}; + + +text = { + name = query_user; + body = <<- _EOBody_ + while : ; do + answer=${shar_wish} + case $shar_wish in + all) ${echo} 'x - %s' ; break ;; + none) break ;; + *) ${echo} $shar_n "? - %s${ans_list}"$shar_c + if test -n "$shar_tty" + then read shar_wish < $shar_tty + else read shar_wish + fi + eval "${eval_ans}" ;; + esac + shar_wish=help + for f in ${user_answers} + do eval printf "'%%-9s %%s\n'" \"\${ans_${f}}\" \"\${${f}_means}\" + done + done + shar_wish=${answer} + _EOBody_; +}; + + +text = { + name = seq_check; + body = <<- _EOBody_ + if test ! -r ${lock_dir}/seq; then + ${echo} '%s' + exit 1 + fi + shar_sequence=`cat ${lock_dir}/seq` + test "$shar_sequence" = %d + _EOBody_; +}; + + +text = { + name = timestamp; + body = <<- _EOBody_ + f=shar-touch.$$ + st1=200112312359.59 + st2=123123592001.59 + st2tr=123123592001.5 # old SysV 14-char limit + st3=1231235901 + + if touch -am -t ${st1} ${f} >/dev/null 2>&1 && \ + test ! -f ${st1} && test -f ${f}; then + shar_touch='touch -am -t $1$2$3$4$5$6.$7 "$8"' + + elif touch -am ${st2} ${f} >/dev/null 2>&1 && \ + test ! -f ${st2} && test ! -f ${st2tr} && test -f ${f}; then + shar_touch='touch -am $3$4$5$6$1$2.$7 "$8"' + + elif touch -am ${st3} ${f} >/dev/null 2>&1 && \ + test ! -f ${st3} && test -f ${f}; then + shar_touch='touch -am $3$4$5$6$2 "$8"' + + else + shar_touch=: + echo + ${echo} '%s' + ${echo} '%s' + echo + fi + rm -f ${st1} ${st2} ${st2tr} ${st3} ${f} + # + _EOBody_; +}; diff --git a/src/scripts.tpl b/src/scripts.tpl new file mode 100644 index 0000000..3af9521 --- /dev/null +++ b/src/scripts.tpl @@ -0,0 +1,34 @@ +[= autogen5 template x =] +[= (dne " * " "/* ") +=] + * +[= (gpl "shar" " * ") +;; /* =] + * + * This file defines the shell script strings in C format. + * The compiler will reconstruct the original string found in scripts.def. + * shar.c will emit these strings into the constructed shar archive. + * See "scripts.def" for rationale. + */ +[= + + (define body-text "") + (make-header-guard "shar") =][= + +FOR text =][= + + (set! body-text (string-append (get "body") "\n")) + + (string-append + (sprintf "\n\nstatic const char %s_z[%d] = \n" + (get "name") (+ 1 (string-length body-text)) ) + + (def-file-line "body" c-file-line-fmt) + (kr-string body-text) ";" ) =][= + +ENDFOR text + +=] + +#endif /* [= (. header-guard) =] */ +/* end of [= (out-name) =] */ diff --git a/src/scripts.x b/src/scripts.x new file mode 100644 index 0000000..91f7546 --- /dev/null +++ b/src/scripts.x @@ -0,0 +1,230 @@ +/* -*- buffer-read-only: t -*- vi: set ro: + * + * DO NOT EDIT THIS FILE (scripts.x) + * + * It has been AutoGen-ed Sunday July 1, 2007 at 04:54:14 AM PDT + * From the definitions scripts.def + * and the template file scripts.tpl + * + * shar is free software. + * + * You may 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. + * + * shar 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 shar. If not, write to: + * The Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor + * Boston, MA 02110-1301, USA. + * + * This file defines the shell script strings in C format. + * The compiler will reconstruct the original string found in scripts.def. + * shar.c will emit these strings into the constructed shar archive. + * See "scripts.def" for rationale. + */ +#ifndef SHAR_SCRIPTS_X_GUARD +#define SHAR_SCRIPTS_X_GUARD 1 + +static const char contents_z[113] = +#line 25 "scripts.def" +"#\n\ +# This shar contains:\n\ +# length mode name\n\ +# ------ ---------- ------------------------------------------\n"; + +static const char noisy_mkdir_z[46] = +#line 36 "scripts.def" +"${echo} $echo_n 'x - %s: '$echo_c\n\ +mkdir '%s'\n"; + +static const char continue_archive_z[167] = +#line 45 "scripts.def" +"#!/bin/sh\n\ +# This is `%s' (part %d of %s).\n\ +# Do not concatenate these parts, unpack them in order with `/bin/sh'.\n\ +# File `%s' is being continued...\n\ +#\n\ +lock_dir=_sh%05d\n"; + +static const char dev_tty_check_z[83] = +#line 58 "scripts.def" +"if test -n \"`ls /dev/tty 2>/dev/null`\"\n\ +then shar_tty=/dev/tty\n\ +else shar_tty= ; fi\n"; + +static const char echo_checks_z[202] = +#line 68 "scripts.def" +"if (echo \"testing\\c\"; echo 1,2,3) | grep c >/dev/null\n\ +then if (echo -n test; echo 1,2,3) | grep n >/dev/null\n\ + then shar_n= shar_c='\n\ +'\n\ + else shar_n=-n shar_c= ; fi\n\ +else shar_n= shar_c='\\c' ; fi\n"; + +static const char echo_string_z[14] = +#line 81 "scripts.def" +"${echo} '%s'\n"; + +static const char file_leader_z[218] = +#line 89 "scripts.def" +"#!/bin/sh\n\ +# This is %s%s archive (produced by GNU %s %s).\n\ +# To extract the files from this archive, save it to some FILE, remove\n\ +# everything before the `#!/bin/sh' line above, then type `sh FILE'.\n\ +#\n\ +lock_dir=_sh%05d\n"; + +static const char i18n_z[736] = +#line 102 "scripts.def" +"save_IFS=\"${IFS}\"\n\ +IFS=\"${IFS}:\"\n\ +gettext_dir=FAILED\n\ +locale_dir=FAILED\n\ +first_param=\"$1\"\n\ +for dir in $PATH\n\ +do\n\ + if test \"$gettext_dir\" = FAILED && test -f $dir/gettext \\\n\ + && ($dir/gettext --version >/dev/null 2>&1)\n\ + then\n\ + case `$dir/gettext --version 2>&1 | sed 1q` in\n\ + *GNU*) gettext_dir=$dir ;;\n\ + esac\n\ + fi\n\ + if test \"$locale_dir\" = FAILED && test -f $dir/shar \\\n\ + && ($dir/shar --print-text-domain-dir >/dev/null 2>&1)\n\ + then\n\ + locale_dir=`$dir/shar --print-text-domain-dir`\n\ + fi\n\ +done\n\ +IFS=\"$save_IFS\"\n\ +if test \"$locale_dir\" = FAILED || test \"$gettext_dir\" = FAILED\n\ +then\n\ + echo=echo\n\ +else\n\ + TEXTDOMAINDIR=$locale_dir\n\ + export TEXTDOMAINDIR\n\ + TEXTDOMAIN=sharutils\n\ + export TEXTDOMAIN\n\ + echo=\"$gettext_dir/gettext -s\"\n\ +fi\n"; + +static const char lock_dir_z[52] = +#line 140 "scripts.def" +"${echo} $shar_n 'x - %s' \"\\`${lock_dir}': \"$shar_c\n"; + +static const char md5check_z[165] = +#line 148 "scripts.def" +"MD5SUM=${MD5SUM-md5sum}\n\ +f=`${MD5SUM} --version | egrep '^md5sum .*(core|text)utils'`\n\ +test -n \"${f}\" && md5check=true || md5check=false\n\ +${md5check} || \\\n\ + echo '%s'\n"; + +static const char md5test_z[99] = +#line 160 "scripts.def" +" if ${md5check}\n\ + then (\n\ + ${MD5SUM} -c >/dev/null 2>&1 || ${echo} '%s: %s'\n\ + ) << \\%s\n"; + +static const char query_answers_z[769] = +#line 171 "scripts.def" +"ans_yes='%s' yes_means='%s'\n\ +ans_no='%s' no_means='%s'\n\ +ans_all='%s' all_means='%s'\n\ +ans_none='%s' none_means='%s'\n\ +ans_help='%s' help_means='%s'\n\ +ans_quit='%s' quit_means='%s'\n\ +user_answers='no yes all none help quit'\n\ +shar_wish='no'\n\ +ans_list=\"\n\ +[<${ans_no}>, ${ans_yes}, ${ans_all}, ${ans_none}, ${ans_help}, ${ans_quit}] ? \"\n\n\ +eval_ans='\n\ +if test -z \"${shar_wish}\" ; then answer=no ; else\n\ + answer='help'\n\ + case \"${ans_yes}\" in \"${shar_wish}\"* ) answer=yes ; break ;; esac\n\ + case \"${ans_no}\" in \"${shar_wish}\"* ) answer=no ; break ;; esac\n\ + case \"${ans_all}\" in \"${shar_wish}\"* ) answer=all ; break ;; esac\n\ + case \"${ans_none}\" in \"${shar_wish}\"* ) answer=none ; break ;; esac\n\ + case \"${ans_quit}\" in \"${shar_wish}\"* ) answer=quit ; break ;; esac\n\ +fi'\n"; + +static const char query_check_z[246] = +#line 197 "scripts.def" +" case \"${shar_wish}\" in\n\ + quit) ${echo} '%s'; exit 1 ;;\n\ + none) ${echo} 'x - %s' ; shar_skip=yes ;;\n\ + no) shar_skip=yes ;;\n\ + yes | all) shar_skip=no ;;\n\ + esac\n\ +else\n\ + shar_skip=no\n\ +fi\n\ +if test $shar_skip = yes; then\n\ + ${echo} 'x - %s'\n"; + +static const char query_user_z[486] = +#line 215 "scripts.def" +" while : ; do\n\ + answer=${shar_wish}\n\ + case $shar_wish in\n\ + all) ${echo} 'x - %s' ; break ;;\n\ + none) break ;;\n\ + *) ${echo} $shar_n \"? - %s${ans_list}\"$shar_c\n\ + if test -n \"$shar_tty\"\n\ + then read shar_wish < $shar_tty\n\ + else read shar_wish\n\ + fi\n\ + eval \"${eval_ans}\" ;;\n\ + esac\n\ + shar_wish=help\n\ + for f in ${user_answers}\n\ + do eval printf \"'%%-9s %%s\\n'\" \\\"\\${ans_${f}}\\\" \\\"\\${${f}_means}\\\"\n\ + done\n\ + done\n\ + shar_wish=${answer}\n"; + +static const char seq_check_z[125] = +#line 240 "scripts.def" +"if test ! -r ${lock_dir}/seq; then\n\ + ${echo} '%s'\n\ + exit 1\n\ +fi\n\ +shar_sequence=`cat ${lock_dir}/seq`\n\ +test \"$shar_sequence\" = %d\n"; + +static const char timestamp_z[661] = +#line 253 "scripts.def" +"f=shar-touch.$$\n\ +st1=200112312359.59\n\ +st2=123123592001.59\n\ +st2tr=123123592001.5 # old SysV 14-char limit\n\ +st3=1231235901\n\n\ +if touch -am -t ${st1} ${f} >/dev/null 2>&1 && \\\n\ + test ! -f ${st1} && test -f ${f}; then\n\ + shar_touch='touch -am -t $1$2$3$4$5$6.$7 \"$8\"'\n\n\ +elif touch -am ${st2} ${f} >/dev/null 2>&1 && \\\n\ + test ! -f ${st2} && test ! -f ${st2tr} && test -f ${f}; then\n\ + shar_touch='touch -am $3$4$5$6$1$2.$7 \"$8\"'\n\n\ +elif touch -am ${st3} ${f} >/dev/null 2>&1 && \\\n\ + test ! -f ${st3} && test -f ${f}; then\n\ + shar_touch='touch -am $3$4$5$6$2 \"$8\"'\n\n\ +else\n\ + shar_touch=:\n\ + echo\n\ + ${echo} '%s'\n\ + ${echo} '%s'\n\ + echo\n\ +fi\n\ +rm -f ${st1} ${st2} ${st2tr} ${st3} ${f}\n\ +#\n"; + +#endif /* SHAR_SCRIPTS_X_GUARD */ +/* end of scripts.x */ diff --git a/src/shar.c b/src/shar.c new file mode 100644 index 0000000..186c66c --- /dev/null +++ b/src/shar.c @@ -0,0 +1,2325 @@ +/* Handle so called `shell archives'. + + Copyright (C) 1994, 1995, 1996, 2002, 2005, + 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif +#include "liballoca.h" + +#include "system.h" +#include "basename.h" +#include "error.h" +#include "exit.h" +#include "xalloc.h" +#include "xgetcwd.h" + +#include "scripts.x" + +#if HAVE_LOCALE_H +# include +#else +# define setlocale(Category, Locale) +#endif +#include "gettext.h" + +/* + * _() and N_() strings are both extracted into the .pot file. + */ +#define _(str) gettext (str) +#define N_(str) gettext_maybe (str) + +#ifndef NUL +# define NUL '\0' +#endif + +static const char *cut_mark_line + = "---- Cut Here and feed the following to sh ----\n"; + +/* Delimiter to put after each file. */ +#define DEFAULT_HERE_DELIMITER "SHAR_EOF" + +/* Character which goes in front of each line. */ +#define DEFAULT_LINE_PREFIX_1 'X' + +/* Character which goes in front of each line if here_delimiter[0] == + DEFAULT_LINE_PREFIX_1. */ +#define DEFAULT_LINE_PREFIX_2 'Y' + +/* Shell command able to count characters from its standard input. We + have to take care for the locale setting because wc in multi-byte + character environments get different results. */ +#define CHARACTER_COUNT_COMMAND "LC_ALL=C wc -c <" + +/* Maximum length for a text line before it is considered binary. */ +#define MAXIMUM_NON_BINARY_LINE 200 + +/* System related declarations. */ + +#include + +#if STDC_HEADERS +# define ISASCII(Char) 1 +#else +# ifdef isascii +# define ISASCII(Char) isascii (Char) +# else +# if HAVE_ISASCII +# define ISASCII(Char) isascii (Char) +# else +# define ISASCII(Char) ((Char) & 0x7f == (unsigned char) (Char)) +# endif +# endif +#endif + +#include + +struct tm *localtime (); + +#ifdef HAVE_LIMITS_H +# include +#endif + +/* Determine whether an integer type is signed, and its bounds. + This code assumes two's (or one's!) complement with no holes. */ + +/* The extra casts work around common compiler bugs, + e.g. Cray C 5.0.3.0 when t == time_t. */ +#ifndef TYPE_SIGNED +# define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) +#endif +#ifndef TYPE_MINIMUM +# define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \ + ? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) \ + : (t) 0)) +#endif +#ifndef TYPE_MAXIMUM +# define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t))) +#endif + +#if !NO_WALKTREE + +/* Declare directory reading routines and structures. */ + +#ifdef __MSDOS__ +# include "msd_dir.h" +#else +# include DIRENT_HEADER +#endif + +#if HAVE_DIRENT_H +# define NAMLEN(dirent) (strlen((dirent)->d_name)) +#else +# define NAMLEN(dirent) ((dirent)->d_namlen) +# ifndef __MSDOS__ +# define dirent direct +# endif +#endif + +#endif /* !NO_WALKTREE */ + +/* Option variables. */ + +#include "getopt.h" +#include "inttostr.h" +#include "md5.h" + +/* No Brown-Shirt mode. */ +static int vanilla_operation_mode = 0; + +/* Mixed text and binary files. */ +static int mixed_uuencoded_file_mode = -1; + +/* Flag for binary files. */ +static int uuencoded_file_mode = -1; + +/* Run input files through gzip (requires uuencoded_file_mode). */ +static int gzipped_file_mode = -1; + +/* -N option to gzip. */ +static int gzip_compression_level = 9; + +/* Run input files through bzip2 (requires uuencoded_file_mode). */ +static int bzipped_file_mode = -1; + +/* Run input files through compress (requires uuencoded_file_mode). */ +static int compressed_file_mode = -1; + +/* -bN option to compress */ +static int bits_per_compressed_byte = 12; + +/* Generate $shar_touch commands. */ +static int timestamp_mode = 1; + +/* Option to provide wc checking. */ +static int character_count_mode = 1; + +/* Option to provide MD5 sum checking. */ +static int md5_count_mode = 1; + +/* Use temp file instead of pipe to feed uudecode. This gives better + error detection, at expense of disk space. This is also necessary for + those versions of uudecode unwilling to read their standard input. */ +static int inhibit_piping_mode = 0; + +/* --no-i18n option to prevent internationalized shell archives. */ +static int no_i18n = 0; + +/* Character to get at the beginning of each line. */ +static int line_prefix = '\0'; + +/* Option to generate "Archive-name:" headers. */ +static int net_headers_mode = 0; + +/* Documentation name for archive. */ +static char *archive_name = NULL; + +/* Option to provide append feedback at shar time. */ +static int quiet_mode = 0; + +/* Option to provide extract feedback at unshar time. */ +static int quiet_unshar_mode = 0; + +/* Pointer to delimiter string. */ +static const char *here_delimiter = DEFAULT_HERE_DELIMITER; + +/* Value of strlen (here_delimiter). */ +static size_t here_delimiter_length = 0; + +/* Use line_prefix even when first char does not force it. */ +static int mandatory_prefix_mode = 0; + +/* Option to provide cut mark. */ +static int cut_mark_mode = 0; + +/* Check if file exists. */ +static int check_existing_mode = 1; + +/* Interactive overwrite. */ +static int query_user_mode = 0; + +/* Allow positional parameters. */ +static int intermixed_parameter_mode = 0; + +/* Strip directories from filenames. */ +static int basename_mode; + +/* Switch for debugging on. */ +#if DEBUG +static int debugging_mode = 0; +#endif + +/* Split files in the middle. */ +static int split_file_mode = 0; + +/* File size limit in bytes. */ +static off_t file_size_limit = 0; + +/* Other global variables. */ + +/* The name this program was run with. */ +const char *program_name; + +/* If non-zero, display usage information and exit. */ +static int show_help = 0; + +/* If non-zero, print the version on standard output and exit. */ +static int show_version = 0; + +/* File onto which the shar script is being written. */ +static FILE *output = NULL; + +/* Position for archive type message. */ +static off_t archive_type_position = 0; + +/* Position for first file in the shar file. */ +static off_t first_file_position = 0; + +/* Base for output filename. */ +static char *output_base_name = NULL; + +/* Actual output filename. */ +static char *output_filename = NULL; + +static char *submitter_address = NULL; + +/* Output file ordinal. FIXME: also flag for -o. */ +static int part_number = 0; + +/* Table saying whether each character is binary or not. */ +static unsigned char byte_is_binary[256]; + +/* For checking file type and access modes. */ +static struct stat struct_stat; + +/* Nonzero if special NLS option (--print-text-domain-dir) is selected. */ +static int print_text_dom_dir = 0; + +/* The number used to make the intermediate files unique. */ +static int sharpid = 0; + +/* scribble space. */ +static size_t scribble_size = 1024 + (BUFSIZ * 2); +static char* scribble = NULL; + +static int translate_script = 0; + +static char* +gettext_maybe( char* pz ) +{ + if (translate_script) + return gettext (pz); + return pz; +} + +#if DEBUG +# define DEBUG_PRINT(Format, Value) \ + if (debugging_mode) \ + { \ + char buf[INT_BUFSIZE_BOUND (off_t)]; \ + printf (Format, offtostr (Value, buf)); \ + } +#else +# define DEBUG_PRINT(Format, Value) +#endif + +static void open_output __P ((void)); +static void close_output __P ((void)); +static void usage __P ((int)) +#if defined __GNUC__ && ((__GNUC__ == 2 && __GNUC_MINOR__ >= 5) || __GNUC__ > 2) + __attribute__ ((noreturn)) +#endif +; + +/* Walking tree routines. */ + +/* Define a type just for easing ansi2knr's life. */ +typedef int (*walker_t) __P ((const char *, const char *)); + +static void +echo_status( const char* test_pz, + const char* ok_format_pz, + const char* bad_format_pz, + const char* what_pz, + int die_on_failure ) +{ + static const char test_okay_z[] = "if %s\nthen ${echo} '"; + static const char test_else_z[] = "'\nelse ${echo} '"; + static const char test_fail_z[] = "if %s\nthen : ; else ${echo} '"; + static const char test_exit_z[] = "'\n exit 1\nfi\n"; + static const char test_fi_z[] = "'\nfi\n"; + + if (ok_format_pz != NULL) + { + fprintf (output, test_okay_z, test_pz); + fprintf (output, ok_format_pz, what_pz); + + if (bad_format_pz != NULL) + { + fputs (test_else_z, output); + fprintf (output, bad_format_pz, what_pz); + } + } + else + { + fprintf (output, test_fail_z, test_pz); + fprintf (output, bad_format_pz, what_pz); + } + + if (die_on_failure) + fputs (test_exit_z, output); + else + fputs (test_fi_z, output); +} + +static void +echo_text( const char* format_pz, const char* arg_pz, int cascade ) +{ + fputs (" ${echo} 'x -", output); + fprintf (output, format_pz, arg_pz); + fputs (cascade ? "' &&\n" : "'\n", output); +} + +#if !NO_WALKTREE + +/*--------------------------------------------------------------------------. +| Recursively call ROUTINE on each entry, down the directory tree. NAME | +| is the path to explore. RESTORE_NAME is the name that will be later | +| relative to the unsharing directory. ROUTINE may also assume | +| struct_stat is set, it accepts updated values for NAME and RESTORE_NAME. | +`--------------------------------------------------------------------------*/ + +static int +walkdown (routine, local_name, restore_name) + walker_t routine; + const char *local_name; + const char *restore_name; +{ + DIR *directory; /* directory being scanned */ + int status; /* status to return */ + + char *local_name_copy; /* writeable copy of local_name */ + size_t local_name_length; /* number of characters in local_name_copy */ + size_t sizeof_local_name; /* allocated size of local_name_copy */ + + char *restore_name_copy; /* writeable copy of restore_name */ + int restore_offset; /* passdown copy of restore_name */ + size_t restore_name_length; /* number of characters in restore_name_copy */ + size_t sizeof_restore_name; /* allocated size of restore_name_copy */ + + if (stat (local_name, &struct_stat)) + { + error (0, errno, local_name); + return 1; + } + + if (!S_ISDIR (struct_stat.st_mode & S_IFMT)) + return (*routine) (local_name, restore_name); + + if (directory = opendir (local_name), !directory) + { + error (0, errno, local_name); + return 1; + } + + status = 0; + + /* include trailing '/' in length */ + + local_name_length = strlen (local_name) + 1; + sizeof_local_name = local_name_length + 32; + local_name_copy = xmalloc (sizeof_local_name); + memcpy (local_name_copy, local_name, local_name_length-1); + local_name_copy[ local_name_length-1 ] = '/'; + local_name_copy[ local_name_length ] = NUL; + + restore_name_length = strlen (restore_name) + 1; + sizeof_restore_name = restore_name_length + 32; + restore_name_copy = xmalloc (sizeof_restore_name); + memcpy (restore_name_copy, restore_name, restore_name_length-1); + restore_name_copy[ restore_name_length-1 ] = '/'; + restore_name_copy[ restore_name_length ] = NUL; + + { + size_t sz = (sizeof_local_name < sizeof_restore_name) + ? sizeof_restore_name : sizeof_local_name; + sz = 1024 + (sz * 2); + if (scribble_size < sz) + { + scribble_size = (sz + 4096) & 0x0FFF; + scribble = xrealloc (scribble, scribble_size); + } + } + + if ((restore_name_copy[0] == '.') && (restore_name_copy[1] == '/')) + restore_offset = 2; + else + restore_offset = 0; + + for (;;) + { + struct dirent *entry = readdir (directory); + const char* pzN; + int space_need; + + if (entry == NULL) + break; + + /* append the new file name after the trailing '/' char. + If we need more space, add in a buffer so we needn't + allocate over and over. */ + + pzN = entry->d_name; + if (*pzN == '.') + { + if (pzN[1] == NUL) + continue; + if ((pzN[1] == '.') && (pzN[2] == NUL)) + continue; + } + + space_need = 1 + NAMLEN (entry); + if (local_name_length + space_need > sizeof_local_name) + { + sizeof_local_name = local_name_length + space_need + 16; + local_name_copy = (char *) + xrealloc (local_name_copy, sizeof_local_name); + } + strcpy (local_name_copy + local_name_length, pzN); + + if (restore_name_length + space_need > sizeof_restore_name) + { + sizeof_restore_name = restore_name_length + space_need + 16; + restore_name_copy = (char *) + xrealloc (restore_name_copy, sizeof_restore_name); + } + strcpy (restore_name_copy + restore_name_length, pzN); + + status = walkdown (routine, local_name_copy, + restore_name_copy + restore_offset); + if (status != 0) + break; + } + + /* Clean up. */ + + free (local_name_copy); + free (restore_name_copy); + +#if CLOSEDIR_VOID + closedir (directory); +#else + if (closedir (directory)) + { + error (0, errno, local_name); + return 1; + } +#endif + + return status; +} + +#endif /* !NO_WALKTREE */ + +/*------------------------------------------------------------------. +| Walk through the directory tree, calling ROUTINE for each entry. | +| ROUTINE may also assume struct_stat is set. | +`------------------------------------------------------------------*/ + +static int +walktree (routine, local_name) + walker_t routine; + const char *local_name; +{ + const char *restore_name; + char *local_name_copy; + + /* Remove crumb at end. */ + { + int len = strlen (local_name); + char *cursor; + + local_name_copy = (char *) alloca (len + 1); + memcpy (local_name_copy, local_name, len + 1); + cursor = local_name_copy + len - 1; + + while (*cursor == '/' && cursor > local_name_copy) + *(cursor--) = NUL; + } + + /* Remove crumb at beginning. */ + + if (basename_mode) + restore_name = basename (local_name_copy); + else if (!strncmp (local_name_copy, "./", 2)) + restore_name = local_name_copy + 2; + else + restore_name = local_name_copy; + +#if NO_WALKTREE + + /* Just act on current entry. */ + + { + int status = stat (local_name_copy, &struct_stat); + + if (status != 0) + error (0, errno, local_name_copy); + else + status = (*routine) (local_name_copy, restore_name); + + return status; + } + +#else + + /* Walk recursively. */ + + return walkdown (routine, local_name_copy, restore_name); + +#endif +} + +/* Generating parts of shar file. */ + +/*---------------------------------------------------------------------. +| Build a `drwxrwxrwx' string corresponding to MODE into MODE_STRING. | +`---------------------------------------------------------------------*/ + +static char * +mode_string (mode) + unsigned mode; +{ + static char result[12]; + + strcpy (result, "----------"); + + if (mode & 00400) + result[1] = 'r'; + if (mode & 00200) + result[2] = 'w'; + if (mode & 00100) + result[3] = 'x'; + if (mode & 04000) + result[3] = 's'; + if (mode & 00040) + result[4] = 'r'; + if (mode & 00020) + result[5] = 'w'; + if (mode & 00010) + result[6] = 'x'; + if (mode & 02000) + result[6] = 's'; + if (mode & 00004) + result[7] = 'r'; + if (mode & 00002) + result[8] = 'w'; + if (mode & 00001) + result[9] = 'x'; + + return result; +} + +/*-----------------------------------------------------------------------. +| Generate shell code which, at *unshar* time, will study the properties | +| of the unpacking system and set some variables accordingly. | +`-----------------------------------------------------------------------*/ + +static void +generate_configure () +{ + if (md5_count_mode) + fprintf (output, md5check_z, N_("\ +Note: not verifying md5sums. Consider installing GNU coreutils.")); + + if (no_i18n) + fputs ("echo=echo\n", output); + else + { + fputs (i18n_z, output); + /* Above the name of the program of the package which supports the + --print-text-domain-dir option has to be given. */ + } + + if (!quiet_unshar_mode) + { + if (vanilla_operation_mode) + fputs ("shar_tty= shar_n= shar_c='\n'\n", + output); + else + { + if (query_user_mode) + /* Check if /dev/tty exists. If yes, define shar_tty to + `/dev/tty', else, leave it empty. */ + + fputs (dev_tty_check_z, output); + + /* Try to find a way to echo a message without newline. Set + shar_n to `-n' or nothing for an echo option, and shar_c + to `\c' or nothing for a string terminator. */ + + fputs (echo_checks_z, output); + } + } + + if (timestamp_mode) + { + fprintf (output, timestamp_z, N_("\ +WARNING: not restoring timestamps. Consider getting and"), + N_("\ +installing GNU `touch'\\'', distributed in GNU coreutils...")); + } + + if (file_size_limit == 0 || part_number == 1) + { + echo_status ("test ! -d ${lock_dir}", NULL, + N_("lock directory '${lock_dir}' exists"), NULL, 1); + + /* Create locking directory. */ + if (vanilla_operation_mode) + echo_status ("mkdir ${lock_dir}", NULL, + N_("failed to create lock directory"), NULL, 1); + else + { + const char* did_pz = + N_("x - created lock directory `'%s\\''."); + const char* not_pz = + N_("x - failed to create lock directory `'%s\\''."); + echo_status ("mkdir ${lock_dir}", did_pz, not_pz, "${lock_dir}", 1); + } + } + + if (query_user_mode) + { + fprintf (output, query_answers_z, + N_("yes"), N_("overwrite this file"), + N_("no"), N_("skip this file"), + N_("all"), N_("overwrite all files"), + N_("none"), N_("overwrite no files"), + N_("help"), N_("explain choices"), + N_("quit"), N_("exit immediately")); + } +} + +/*----------------------------------------------. +| generate_mkdir | +| Make sure it is done only once for each dir | +`----------------------------------------------*/ + +static int mkdir_alloc_ct = 0; +static int mkdir_already_ct = 0; +static char** mkdir_already; + +static void +generate_mkdir (path) + const char *path; +{ + /* If already generated code for this dir creation, don't do again. */ + + { + int ct = mkdir_already_ct; + char** pp = mkdir_already; + + while (--ct > 0) + { + if (strcmp (*(pp++), path) == 0) + return; + } + } + + /* Haven't done this one. */ + + if (++mkdir_already_ct > mkdir_alloc_ct) + { + /* + * We need more name space. Get larger and larger chunks of space. + * The bound is when integers go negative. Too many directories. :) + * + * 16, 40, 76, 130, 211, 332, 514, 787, 1196, 1810, 2731, 4112, ... + */ + mkdir_alloc_ct += 16 + (mkdir_alloc_ct/2); + if (mkdir_alloc_ct < 0) + error (EXIT_FAILURE, 0, _("Too many directories for mkdir generation")); + + if (mkdir_already != NULL) + mkdir_already = + xrealloc (mkdir_already, mkdir_alloc_ct * sizeof (char*)); + else + mkdir_already = xmalloc (mkdir_alloc_ct * sizeof (char*)); + } + + /* Add the directory into our "we've done this already" table */ + + mkdir_already[ mkdir_already_ct-1 ] = xstrdup (path); + + /* Generate the text. */ + + fprintf (output, "if test ! -d '%s'; then\n", path); + if (!quiet_unshar_mode) + { + const char* did_pz = + N_("x - created directory `%s'\\''."); + const char* not_pz = + N_("x - failed to create directory `%s'\\''."); + fprintf (output, " mkdir '%s'\n", path); + echo_status ("test $? -eq 0", did_pz, not_pz, path, 1); + } + else + fprintf (output, " mkdir '%s' || exit 1\n", path); + fputs ("fi\n", output); +} + +static void +clear_mkdir_already (void) +{ + char** pp = mkdir_already; + int ct = mkdir_already_ct; + + mkdir_already_ct = 0; + while (--ct >= 0) + { + free (*pp); + *(pp++) = NULL; + } +} + +/*---. +| ? | +`---*/ + +static void +generate_mkdir_script (path) + const char *path; +{ + char *cursor; + + for (cursor = strchr (path, '/'); cursor; cursor = strchr (cursor + 1, '/')) + { + + /* Avoid empty string if leading or double '/'. */ + + if (cursor == path || *(cursor - 1) == '/') + continue; + + /* Omit '.'. */ + + if (cursor[-1] == '.' && (cursor == path + 1 || cursor[-2] == '/')) + continue; + + /* Temporarily terminate string. FIXME! */ + + *cursor = 0; + generate_mkdir (path); + *cursor = '/'; + } +} + +/* Walking routines. */ + +/*---. +| ? | +`---*/ + +static int +check_accessibility (local_name, restore_name) + const char *local_name; + const char *restore_name; +{ + if (access (local_name, 4)) + { + error (0, 0, _("Cannot access %s"), local_name); + return 1; + } + + return 0; +} + +/*---. +| ? | +`---*/ + +static int +generate_one_header_line (local_name, restore_name) + const char *local_name; + const char *restore_name; +{ + char buf[INT_BUFSIZE_BOUND (off_t)]; + fprintf (output, "# %6s %s %s\n", offtostr (struct_stat.st_size, buf), + mode_string (struct_stat.st_mode), restore_name); + return 0; +} + +/*---. +| ? | +`---*/ + +static void +generate_full_header (argc, argv) + int argc; + char *const *argv; +{ + char *current_directory; + time_t now; + struct tm *local_time; + char buffer[80]; /* FIXME: No fix limit in GNU... */ + int warned_once; + int counter; + + warned_once = 0; + for (counter = 0; counter < argc; counter++) + { + + /* Skip positional parameters. */ + + if (intermixed_parameter_mode && + (strcmp (argv[counter], "-B") == 0 || + strcmp (argv[counter], "-T") == 0 || + strcmp (argv[counter], "-M") == 0 || + strcmp (argv[counter], "-z") == 0 || + strcmp (argv[counter], "-Z") == 0 || + strcmp (argv[counter], "-C") == 0)) + { + if (!warned_once && strcmp (argv[counter], "-C") == 0) + { + error (0, 0, _("-C is being deprecated, use -Z instead")); + warned_once = 1; + } + continue; + } + + if (walktree (check_accessibility, argv[counter])) + exit (EXIT_FAILURE); + } + + if (net_headers_mode) + { + fprintf (output, "Submitted-by: %s\n", submitter_address); + fprintf (output, "Archive-name: %s%s%02d\n\n", + archive_name, (strchr (archive_name, '/')) ? "" : "/part", + part_number ? part_number : 1); + } + + if (cut_mark_mode) + fputs (cut_mark_line, output); + { + char* pz = archive_name ? archive_name : ""; + char* ch = archive_name ? ", a shell" : "a shell"; + + fprintf (output, file_leader_z, pz, ch, PACKAGE, VERSION, sharpid); + } + + time (&now); + local_time = localtime (&now); + strftime (buffer, 79, "%Y-%m-%d %H:%M %Z", local_time); + fprintf (output, "# Made on %s by <%s>.\n", + buffer, submitter_address); + + current_directory = xgetcwd (); + if (current_directory) + { + fprintf (output, "# Source directory was `%s'.\n", + current_directory); + free (current_directory); + } + else + error (0, errno, _("Cannot get current directory name")); + + fputs ("#\n# Existing files ", output); + if (check_existing_mode) + fputs ("will *not* be overwritten, unless `-c' is specified.\n", + output); + else if (query_user_mode) + fputs ("MAY be overwritten.\n", output); + else + fputs ("WILL be overwritten.\n", output); + + if (query_user_mode) + fputs ("# The unsharer will be INTERACTIVELY queried.\n", + output); + + if (vanilla_operation_mode) + { + fputs ( + "# This format requires very little intelligence at unshar time.\n# ", + output); + if (check_existing_mode || split_file_mode) + fputs ("\"if test\", ", output); + if (split_file_mode) + fputs ("\"cat\", \"rm\", ", output); + fputs ("\"echo\", \"mkdir\", and \"sed\" may be needed.\n", output); + } + + if (split_file_mode) + { + + /* May be split, explain. */ + + fputs ("#\n", output); + archive_type_position = ftello (output); + fprintf (output, "%-75s\n%-75s\n", "#", "#"); + } + + fputs (contents_z, output); + + for (counter = 0; counter < argc; counter++) + { + + /* Output names of files but not parameters. */ + + if (intermixed_parameter_mode && + (strcmp (argv[counter], "-B") == 0 || + strcmp (argv[counter], "-T") == 0 || + strcmp (argv[counter], "-M") == 0 || + strcmp (argv[counter], "-z") == 0 || + strcmp (argv[counter], "-Z") == 0 || + strcmp (argv[counter], "-C") == 0)) + continue; + + if (walktree (generate_one_header_line, argv[counter])) + exit (EXIT_FAILURE); + } + fputs ("#\n", output); + + generate_configure (); + + if (split_file_mode) + { + /* Now check the sequence. */ + echo_status ("test ! -r ${lock_dir}/seq", NULL, + N_("Archives must be unpacked in sequence!\n" + "Please unpack part '`cat ${lock_dir}/seq`' next."), + NULL, 1); + } +} + +void +change_files (const char *restore_name, off_t remaining_size) +{ + /* Change to another file. */ + + DEBUG_PRINT (_("New file, remaining %s, "), remaining_size); + DEBUG_PRINT (_("Limit still %s\n"), file_size_limit); + + /* Close the "&&" and report an error if any of the above + failed. */ + + fputs (" :\n", output); + echo_status ("test $? -ne 0", N_("restore of %s failed"), NULL, + restore_name, 0); + + fputs ("'\n${echo} '", output); + fprintf (output, N_("End of part %d, continue with part %d"), + part_number, part_number+1); + fputs ("'\nexit 0\n", output); + + close_output (); + + /* Clear mkdir_already in case the user unshars out of order. */ + + clear_mkdir_already (); + + /* Form the next filename. */ + + open_output (); + if (!quiet_mode) + fprintf (stderr, _("Starting file %s\n"), output_filename); + + if (net_headers_mode) + { + fprintf (output, "Submitted-by: %s\n", submitter_address); + fprintf (output, "Archive-name: %s%s%02d\n\n", archive_name, + strchr (archive_name, '/') ? "" : "/part", + part_number ? part_number : 1); + } + + if (cut_mark_mode) + fputs (cut_mark_line, output); + + { + static const char part_z[] = + "part %02d of %s "; + char *nm = archive_name ? archive_name : "a multipart"; + char *pz = xmalloc (sizeof(part_z) + strlen(nm) + 16); + sprintf (pz, part_z, part_number, nm); + fprintf (output, file_leader_z, pz, "", PACKAGE, VERSION, sharpid); + free (pz); + } + + generate_configure (); + + first_file_position = ftello (output); +} + +/* Prepare a shar script. */ + +/*---. +| ? | +`---*/ + +static int +shar (local_name, restore_name) + const char *local_name; + const char *restore_name; +{ + char buffer[BUFSIZ]; + FILE *input; + off_t remaining_size; + int split_flag = 0; /* file split flag */ + const char *file_type; /* text of binary */ + const char *file_type_remote; /* text or binary, avoiding locale */ + struct tm *restore_time; + + /* Check to see that this is still a regular file and readable. */ + + if (!S_ISREG (struct_stat.st_mode & S_IFMT)) + { + error (0, 0, _("%s: Not a regular file"), local_name); + return 1; + } + if (access (local_name, 4)) + { + error (0, 0, _("Cannot access %s"), local_name); + return 1; + } + + /* If file_size_limit set, get the current output length. */ + + if (file_size_limit) + { + off_t current_size = ftello (output); + remaining_size = file_size_limit - current_size - 1024; + DEBUG_PRINT (_("In shar: remaining size %s\n"), remaining_size); + + if (!split_file_mode && current_size > first_file_position + && ((uuencoded_file_mode + ? struct_stat.st_size + struct_stat.st_size / 3 + : struct_stat.st_size) + > remaining_size)) + change_files (restore_name, remaining_size); + } + else + remaining_size = 0; /* give some value to the variable */ + + fprintf (output, "# ============= %s ==============\n", + restore_name); + + generate_mkdir_script (restore_name); + + if (struct_stat.st_size == 0) + { + file_type = _("empty"); + file_type_remote = N_("(empty)"); + input = NULL; /* give some value to the variable */ + } + else + { + + /* If mixed, determine the file type. */ + + if (mixed_uuencoded_file_mode) + { + + /* Uuencoded was once decided through calling the `file' + program and studying its output: the method was slow and + error prone. There is only one way of doing it correctly, + and this is to read the input file, seeking for one binary + character. Considering the average file size, even reading + the whole file (if it is text) would be usually faster than + calling `file'. */ + + int character; + int line_length; + + if (input = fopen (local_name, "rb"), input == NULL) + { + error (0, errno, _("Cannot open file %s"), local_name); + return 1; + } + + /* Assume initially that the input file is text. Then try to prove + it is binary by looking for binary characters or long lines. */ + + uuencoded_file_mode = 0; + line_length = 0; + while (character = getc (input), character != EOF) + if (character == '\n') + line_length = 0; + else if ( +#ifdef __CHAR_UNSIGNED__ + byte_is_binary[character] +#else + byte_is_binary[character & 0xFF] +#endif + || line_length == MAXIMUM_NON_BINARY_LINE) + { + uuencoded_file_mode = 1; + break; + } + else + line_length++; + fclose (input); + + /* Text files should terminate by an end of line. */ + + if (line_length > 0) + uuencoded_file_mode = 1; + } + + if (uuencoded_file_mode) + { + static int pid, pipex[2]; + + file_type = (compressed_file_mode ? _("compressed") + : gzipped_file_mode ? _("gzipped") + : bzipped_file_mode ? _("bzipped") + : _("binary")); + file_type_remote = (compressed_file_mode ? N_("(compressed)") + : gzipped_file_mode ? N_("(gzipped)") + : bzipped_file_mode ? N_("(bzipped)") + : N_("(binary)")); + + /* Fork a uuencode process. */ + + pipe (pipex); + fflush (output); + + if (pid = fork (), pid != 0) + { + + /* Parent, create a file to read. */ + + if (pid < 0) + error (EXIT_FAILURE, errno, _("Could not fork")); + close (pipex[1]); + input = fdopen (pipex[0], "r"); + if (!input) + { + error (0, errno, _("File %s (%s)"), local_name, file_type); + return 1; + } + } + else + { + + /* Start writing the pipe with encodes. */ + + FILE *outptr; + + if (compressed_file_mode) + { + sprintf (buffer, "compress -b%d < '%s'", + bits_per_compressed_byte, local_name); + input = popen (buffer, "r"); + } + else if (gzipped_file_mode) + { + sprintf (buffer, "gzip -%d < '%s'", + gzip_compression_level, local_name); + input = popen (buffer, "r"); + } + else if (bzipped_file_mode) + { + sprintf (buffer, "bzip2 < '%s'", local_name); + input = popen (buffer, "r"); + } + else + input = fopen (local_name, "rb"); + + outptr = fdopen (pipex[1], "w"); + fputs ("begin 600 ", outptr); + if (compressed_file_mode) + fprintf (outptr, "_sh%05d/cmp\n", sharpid); + else if (gzipped_file_mode) + fprintf (outptr, "_sh%05d/gzi\n", sharpid); + else if (bzipped_file_mode) + fprintf (outptr, "_sh%05d/bzi\n", sharpid); + else + fprintf (outptr, "%s\n", restore_name); + copy_file_encoded (input, outptr); + fprintf (outptr, "end\n"); + if (compressed_file_mode || gzipped_file_mode + || bzipped_file_mode) + pclose (input); + else + fclose (input); + + exit (EXIT_SUCCESS); + } + } + else + { + file_type = _("text"); + file_type_remote = N_("(text)"); + + input = fopen (local_name, "r"); + if (!input) + { + error (0, errno, _("File %s (%s)"), local_name, file_type); + return 1; + } + } + } + + /* Protect existing files. */ + + if (check_existing_mode) + { + fprintf (output, "if test -f '%s' && test \"$first_param\" != -c; then\n", + restore_name); + + if (query_user_mode) + { + char* pzOverwriting = scribble; + char* pzOverwrite; + + sprintf (pzOverwriting, N_("overwriting %s"), restore_name); + pzOverwrite = scribble + strlen(pzOverwriting) + 2; + sprintf (pzOverwrite, N_("overwrite %s"), restore_name); + + fprintf (output, query_user_z, pzOverwriting, pzOverwrite); + + sprintf (pzOverwriting, N_("SKIPPING %s"), restore_name); + fprintf (output, query_check_z, N_("extraction aborted"), + pzOverwriting, pzOverwriting); + } + else + echo_text (N_("SKIPPING %s (file already exists)"), + restore_name, 0); + + if (split_file_mode) + fputs (" rm -f ${lock_dir}/new\nelse\n > ${lock_dir}/new\n", output); + else + fputs ("else\n", output); + } + + if (!quiet_mode) + error (0, 0, _("Saving %s (%s)"), local_name, file_type); + + if (!quiet_unshar_mode) + { + sprintf (scribble, N_("x - extracting %s %s"), + restore_name, file_type_remote); + fprintf (output, echo_string_z, scribble); + } + + if (struct_stat.st_size == 0) + { + + /* Just touch the file, or empty it if it exists. */ + + fprintf (output, " > '%s' &&\n", + restore_name); + } + else + { + /* Run sed for non-empty files. */ + + if (uuencoded_file_mode) + { + + /* Run sed through uudecode (via temp file if might get split). */ + + fprintf (output, " sed 's/^%c//' << '%s' ", + line_prefix, here_delimiter); + if (inhibit_piping_mode) + fprintf (output, "> ${lock_dir}/uue &&\n"); + else + fputs ("| uudecode &&\n", output); + } + else + { + + /* Just run it into the file. */ + + fprintf (output, " sed 's/^%c//' << '%s' > '%s' &&\n", + line_prefix, here_delimiter, restore_name); + } + + while (fgets (buffer, BUFSIZ, input)) + { + + /* Output a line and test the length. */ + + if (!mandatory_prefix_mode + && ISASCII (buffer[0]) +#ifdef isgraph + && isgraph (buffer[0]) +#else + && isprint (buffer[0]) && !isspace (buffer[0]) +#endif + /* Protect lines already starting with the prefix. */ + && buffer[0] != line_prefix + + /* Old mail programs interpret ~ directives. */ + && buffer[0] != '~' + + /* Avoid mailing lines which are just `.'. */ + && buffer[0] != '.' + +#if STRNCMP_IS_FAST + && strncmp (buffer, here_delimiter, here_delimiter_length) + + /* unshar -e: avoid `exit 0'. */ + && strncmp (buffer, "exit 0", 6) + + /* Don't let mail prepend a `>'. */ + && strncmp (buffer, "From", 4) +#else + && (buffer[0] != here_delimiter[0] + || strncmp (buffer, here_delimiter, here_delimiter_length)) + + /* unshar -e: avoid `exit 0'. */ + && (buffer[0] != 'e' || strncmp (buffer, "exit 0", 6)) + + /* Don't let mail prepend a `>'. */ + && (buffer[0] != 'F' || strncmp (buffer, "From", 4)) +#endif + ) + fputs (buffer, output); + else + { + fprintf (output, "%c%s", line_prefix, buffer); + remaining_size--; + } + + /* Try completing an incomplete line, but not if the incomplete + line contains no character. This might occur with -T for + incomplete files, or sometimes when switching to a new file. */ + + if (*buffer && buffer[strlen (buffer) - 1] != '\n') + { + putc ('\n', output); + remaining_size--; + } + + if (split_file_mode +#if MSDOS + /* 1 extra for CR. */ + && (remaining_size -= strlen (buffer) + 1) < 0 +#else + && (remaining_size -= strlen (buffer)) < 0 +#endif + ) + { + + /* Change to another file. */ + + DEBUG_PRINT (_("New file, remaining %s, "), remaining_size); + DEBUG_PRINT (_("Limit still %s\n"), file_size_limit); + + fprintf (output, "%s\n", here_delimiter); + + /* Close the "&&" and report an error if any of the above + failed. */ + + fputs (" :\n", output); + echo_status ("test $? -ne 0", N_("restore of %s failed\n"), NULL, + restore_name, 0); + + if (check_existing_mode) + fputs ("fi\n", output); + + if (quiet_unshar_mode) + { + sprintf (scribble, + N_("End of part %ld, continue with part %ld"), + (long)part_number, (long)part_number + 1); + fprintf (output, echo_string_z, scribble); + } + else + { + sprintf (scribble, N_("End of %s part %d"), + archive_name ? archive_name : N_("archive"), + part_number); + fprintf (output, echo_string_z, scribble); + + sprintf (scribble, N_("File %s is continued in part %d"), + restore_name, (long)part_number + 1); + fprintf (output, echo_string_z, scribble); + } + + fprintf (output, "echo %d > ${lock_dir}/seq\nexit 0\n", + part_number + 1); + + if (part_number == 1) + { + + /* Rewrite the info lines on the first header. */ + + fseeko (output, archive_type_position, SEEK_SET); + fprintf (output, "%-75s\n%-75s\n", + "# This is part 1 of a multipart archive.", + "# Do not concatenate these parts, unpack them in order with `/bin/sh'."); + } + close_output (); + + /* Next! */ + + open_output (); + + if (net_headers_mode) + { + fprintf (output, "Submitted-by: %s\n", submitter_address); + fprintf (output, "Archive-name: %s%s%02d\n\n", + archive_name, + strchr (archive_name, '/') ? "" : "/part", + part_number ? part_number : 1); + } + + if (cut_mark_mode) + fputs (cut_mark_line, output); + + fprintf (output, continue_archive_z, + basename (output_filename), part_number, + archive_name ? archive_name : "a multipart archive", + restore_name, sharpid); + + generate_configure (); + + fprintf (output, seq_check_z, + N_("Please unpack part 1 first!"), + part_number); + + echo_status ("test $? -eq 0", NULL, + N_("Please unpack part '${shar_sequence}' next!"), + NULL, 1); + + if (check_existing_mode) + { + if (quiet_unshar_mode) + fprintf (output, "if test -f ${lock_dir}/new; then\n"); + else + { + fputs ("if test ! -f ${lock_dir}/new\nthen echo 'x - ", + output); + fprintf (output, N_("STILL SKIPPING %s"), restore_name); + fputs ("'\nelse\n", output); + } + } + + if (!quiet_mode) + fprintf (stderr, _("Starting file %s\n"), output_filename); + if (!quiet_unshar_mode) + echo_text (N_("continuing file %s"), restore_name, 0); + fprintf (output, " sed 's/^%c//' << '%s' >> ", + line_prefix, here_delimiter); + if (uuencoded_file_mode) + fprintf (output, "${lock_dir}/uue &&\n"); + else + fprintf (output, "%s &&\n", restore_name); + remaining_size = file_size_limit; + split_flag = 1; + } + } + + fclose (input); + while (wait (NULL) >= 0) + ; + + fprintf (output, "%s\n", here_delimiter); + if (split_flag && !quiet_unshar_mode) + echo_text (N_("File %s is complete"), restore_name, 1); + + /* If this file was uuencoded w/Split, decode it and drop the temp. */ + + if (uuencoded_file_mode && inhibit_piping_mode) + { + if (!quiet_unshar_mode) + echo_text (N_("uudecoding file %s"), restore_name, 1); + + fprintf (output, " uudecode ${lock_dir}/uue < ${lock_dir}/uue &&\n"); + } + + /* If this file was compressed, uncompress it and drop the temp. */ + + if (compressed_file_mode) + { + if (!quiet_unshar_mode) + echo_text (N_("uncompressing file %s"), restore_name, 1); + + fprintf (output, " compress -d < ${lock_dir}/cmp > '%s' &&\n", + restore_name); + } + else if (gzipped_file_mode) + { + if (!quiet_unshar_mode) + echo_text (N_("gunzipping file %s"), restore_name, 1); + + fprintf (output, " gzip -d < ${lock_dir}/gzi > '%s' &&\n", + restore_name); + } + else if (bzipped_file_mode) + { + if (!quiet_unshar_mode) + echo_text (N_("bunzipping file %s"), restore_name, 1); + + fprintf (output, " bzip2 -d < ${lock_dir}/bzi > '%s' &&\n", + restore_name); + } + } + + if (timestamp_mode) + { + + /* Set the dates as they were. */ + + restore_time = localtime (&struct_stat.st_mtime); + fprintf (output, "\ + (set %02d %02d %02d %02d %02d %02d %02d '%s'; eval \"$shar_touch\") &&\n", + (restore_time->tm_year + 1900) / 100, + (restore_time->tm_year + 1900) % 100, + restore_time->tm_mon + 1, restore_time->tm_mday, + restore_time->tm_hour, restore_time->tm_min, + restore_time->tm_sec, restore_name); + } + + if (vanilla_operation_mode) + { + + /* Close the "&&" and report an error if any of the above + failed. */ + fputs (":\n", output); + echo_status ("test $? -ne 0", N_("restore of %s failed"), NULL, + restore_name, 0); + } + else + { + unsigned char md5buffer[16]; + FILE *fp = NULL; + int did_md5 = 0; + + /* Set the permissions as they were. */ + + fprintf (output, " chmod %04o '%s'\n", + (unsigned) (struct_stat.st_mode & 0777), restore_name); + + /* Report an error if any of the above failed. */ + + echo_status ("test $? -ne 0", N_("restore of %s failed"), NULL, + restore_name, 0); + + if (md5_count_mode && (fp = fopen (local_name, "r")) != NULL + && md5_stream (fp, md5buffer) == 0) + { + /* Validate the transferred file using `md5sum' command. */ + size_t cnt; + did_md5 = 1; + + fprintf (output, md5test_z, restore_name, + N_("MD5 check failed"), here_delimiter); + + for (cnt = 0; cnt < 16; ++cnt) + fprintf (output, "%02x", md5buffer[cnt]); + + fprintf (output, " %c%s\n%s\n", + ' ', restore_name, here_delimiter); + /* This ^^^ space is not necessarily a parameter now. But it + is a flag for binary/text mode and will perhaps be used later. */ + } + + if (fp != NULL) + fclose (fp); + + if (character_count_mode) + { + /* Validate the transferred file using simple `wc' command. */ + + FILE *pfp; + char command[BUFSIZ]; + + sprintf (command, "LC_ALL=C wc -c < '%s'", local_name); + if (pfp = popen (command, "r"), pfp) + { + char wc[BUFSIZ]; + + if (did_md5) + { + fputs (" else\n", output); + } + + { + char* pz = wc; + for (;;) + { + int ch = (unsigned int)fgetc (pfp); + if (! isspace (ch)) + { + *(pz++) = ch; + break; + } + } + if (pz[-1] != NUL) do + { + int ch = (unsigned int)fgetc (pfp); + if ((ch < 0) || isspace (ch)) + break; + *pz = ch; + } while (++pz < wc+BUFSIZ-1); + *pz = NUL; + } + + fprintf (output, + "test `LC_ALL=C wc -c < '%s'` -ne %s && \\\n ${echo} ", + restore_name, wc); + fprintf (output, + N_("'restoration warning: size of %s is not %s'\n"), + restore_name, wc); + pclose (pfp); + } + } + if (did_md5) + fputs (" fi\n", output); + } + + /* If the exists option is in place close the if. */ + + if (check_existing_mode) + fputs ("fi\n", output); + + return 0; +} + +/* Main control. */ + +/*-----------------------------------------------------------------------. +| Set file mode, accepting a parameter 'M' for mixed uuencoded mode, 'B' | +| for uuencoded mode, 'z' for gzipped mode, 'j' for bzipped mode, or 'Z' | +| for compressed mode. | +| Any other value yields text mode. | +`-----------------------------------------------------------------------*/ + +static void +set_file_mode (mode) + int mode; +{ + if (mode == 'B' && uuencoded_file_mode) + /* Selecting uuencode mode should not contradict compression. */ + return; + + mixed_uuencoded_file_mode = mode == 'M'; + uuencoded_file_mode = mode == 'B'; + gzipped_file_mode = mode == 'z'; + bzipped_file_mode = mode == 'j'; + compressed_file_mode = mode == 'Z'; + + if (gzipped_file_mode || bzipped_file_mode || compressed_file_mode) + uuencoded_file_mode = 1; +} + +/*-------------------------------------------. +| Open the next output file, or die trying. | +`-------------------------------------------*/ + +static void +open_output () +{ + if (output_filename == NULL) + error (EXIT_FAILURE, ENXIO, _("allocating output file name")); + + sprintf(output_filename, output_base_name, ++part_number); + output = fopen (output_filename, "w"); + + if (!output) + error (EXIT_FAILURE, errno, _("Opening `%s'"), output_filename); +} + +/*-----------------------------------------------. +| Close the current output file, or die trying. | +`-----------------------------------------------*/ + +static void +close_output () +{ + if (fclose (output) != 0) + error (EXIT_FAILURE, errno, _("Closing `%s'"), output_filename); +} + +/*----------------------------------. +| Output a command format message. | +`----------------------------------*/ + +static void +usage (status) + int status; +{ + if (status != EXIT_SUCCESS) + fprintf (stderr, _("Try `%s --help' for more information.\n"), + program_name); + else + { + printf (_("Usage: %s [OPTION]... [FILE]...\n"), program_name); + fputs (_("\ +Mandatory arguments to long options are mandatory for short options too.\n"), + stdout); + fputs (_("\ +\n\ +Giving feedback:\n\ + --help display this help and exit\n\ + --version output version information and exit\n\ + -q, --quiet, --silent do not output verbose messages locally\n"), + stdout); +#if HAVE_COMPRESS + fputs (_("\ +\n\ +Selecting files:\n\ + -p, --intermix-type allow -[BTzZ] in file lists to change mode\n\ + -S, --stdin-file-list read file list from standard input\n"), + stdout); +#else + fputs (_("\ +\n\ +Selecting files:\n\ + -p, --intermix-type allow -[BTz] in file lists to change mode\n\ + -S, --stdin-file-list read file list from standard input\n"), + stdout); +#endif + fputs (_("\ +\n\ +Splitting output:\n\ + -o, --output-prefix=PREFIX output to file PREFIX.01 through PREFIX.NN\n\ + -l, --whole-size-limit=SIZE split archive, not files, to SIZE kilobytes\n\ + -L, --split-size-limit=SIZE split archive, or files, to SIZE kilobytes\n"), + stdout); + fputs (_("\ +\n\ +Controlling the shar headers:\n\ + -n, --archive-name=NAME use NAME to document the archive\n\ + -s, --submitter=ADDRESS override the submitter name\n\ + -a, --net-headers output Submitted-by: & Archive-name: headers\n\ + -c, --cut-mark start the shar with a cut line\n\ + -t, --translate translate messages in the script\n\ +\n\ +Selecting how files are stocked:\n\ + -M, --mixed-uuencode dynamically decide uuencoding (default)\n\ + -T, --text-files treat all files as text\n\ + -B, --uuencode treat all files as binary, use uuencode\n\ + -z, --gzip gzip and uuencode all files\n\ + -g, --level-for-gzip=LEVEL pass -LEVEL (default 9) to gzip\n\ + -j, --bzip2 bzip2 and uuencode all files\n"), + stdout); +#if HAVE_COMPRESS + fputs (_("\ + -Z, --compress compress and uuencode all files\n\ + -b, --bits-per-code=BITS pass -bBITS (default 12) to compress\n"), + stdout); +#endif + fputs (_("\ +\n\ +Protecting against transmission:\n\ + -w, --no-character-count do not use `wc -c' to check size\n\ + -D, --no-md5-digest do not use `md5sum' digest to verify\n\ + -F, --force-prefix force the prefix character on every line\n\ + -d, --here-delimiter=STRING use STRING to delimit the files in the shar\n\ +\n\ +Producing different kinds of shars:\n\ + -V, --vanilla-operation produce very simple and undemanding shars\n\ + -P, --no-piping exclusively use temporary files at unshar time\n\ + -x, --no-check-existing blindly overwrite existing files\n\ + -X, --query-user ask user before overwriting files (not for Net)\n\ + -m, --no-timestamp do not restore file modification dates & times\n\ + -Q, --quiet-unshar avoid verbose messages at unshar time\n\ + -f, --basename restore in one directory, despite hierarchy\n\ + --no-i18n do not produce internationalized shell script\n"), + stdout); + fputs (_("\n\ +Option -o is required with -l or -L, option -n is required with -a.\n"), + stdout); +#if HAVE_COMPRESS + fputs (_("Option -g implies -z, option -b implies -Z.\n"), + stdout); +#else + fputs (_("Option -g implies -z.\n"), + stdout); +#endif + /* TRANSLATORS: add the contact address for your translation team! */ + printf (_("Report bugs to <%s>.\n"), PACKAGE_BUGREPORT); + } + exit (status); +} + +/*--------------------------------------. +| Decode options and launch execution. | +`--------------------------------------*/ + +static const struct option long_options[] = +{ + {"archive-name", required_argument, NULL, 'n'}, + {"basename", no_argument, NULL, 'f'}, + {"bits-per-code", required_argument, NULL, 'b'}, + {"bzip2", no_argument, NULL, 'j'}, + {"compress", no_argument, NULL, 'Z'}, + {"cut-mark", no_argument, NULL, 'c'}, + {"force-prefix", no_argument, NULL, 'F'}, + {"gzip", no_argument, NULL, 'z'}, + {"here-delimiter", required_argument, NULL, 'd'}, + {"intermix-type", no_argument, NULL, 'p'}, + {"level-for-gzip", required_argument, NULL, 'g'}, + {"mixed-uuencode", no_argument, NULL, 'M'}, + {"net-headers", no_argument, NULL, 'a'}, + {"no-character-count", no_argument, &character_count_mode, 0}, + {"no-check-existing", no_argument, NULL, 'x'}, + {"no-i18n", no_argument, &no_i18n, 1}, + {"no-md5-digest", no_argument, &md5_count_mode, 0}, + {"no-piping", no_argument, NULL, 'P'}, + {"no-timestamp", no_argument, NULL, 'm'}, + {"output-prefix", required_argument, NULL, 'o'}, + {"print-text-domain-dir", no_argument, &print_text_dom_dir, 1}, + {"query-user", no_argument, NULL, 'X'}, + {"quiet", no_argument, NULL, 'q'}, + {"quiet-unshar", no_argument, NULL, 'Q'}, + {"split-size-limit", required_argument, NULL, 'L'}, + {"stdin-file-list", no_argument, NULL, 'S'}, + {"submitter", required_argument, NULL, 's'}, + {"text-files", no_argument, NULL, 'T'}, + {"translate", no_argument, NULL, 't'}, + {"uuencode", no_argument, NULL, 'B'}, + {"vanilla-operation", no_argument, NULL, 'V'}, + {"whole-size-limit", required_argument, NULL, 'l'}, + + {"help", no_argument, &show_help, 1}, + {"version", no_argument, &show_version, 1}, + + { NULL, 0, NULL, 0 }, +}; + +/* Limit file sizes to LIMIT KiB. */ + +static void +set_file_size_limit (char const *limit) +{ + char *numend; + intmax_t lim = strtoimax (limit, &numend, 10); + if (*numend || ! (0 < lim && lim <= TYPE_MAXIMUM (off_t) / 1024)) + error (EXIT_FAILURE, 0, _("invalid file size limit `%s'"), limit); + lim *= 1024; + if (! file_size_limit || lim < file_size_limit) + file_size_limit = lim; +} + + +char * +parse_output_base_name(char *arg) +{ + int c; + int hadarg = 0; + char *fmt, *p; + int base_name_len = 128; + + for (p = arg ; (c = *p++) != 0; ) + { + base_name_len++; + if (c != '%') + continue; + c = *p++; + if (c == '%') + continue; + if (hadarg) + return NULL; + while (c != 0 && strchr("#0+- 'I", c) != 0) + c = *p++; + if (c == 0) + return NULL; + if (c >= '0' && c <= '9') + { + long v; + errno = 0; + v = strtol(p-1, &fmt, 10); + if ((v == 0) || (v > 16) || (errno != 0)) + { + fprintf(stderr, _("invalid format (count field too wide): '%s'\n"), + arg); + return NULL; + } + p = fmt; + c = *p++; + base_name_len += v; + } + if (c == '.') + { + c = *p++; + while (c != 0 && c >= '0' && c <= '9') + c = *p++; + } + if (c == 0 || strchr("diouxX", c) == 0) + return NULL; + hadarg = 1; + } + fmt = xmalloc(strlen(arg) + (hadarg ? 1 : 6)); + strcpy(fmt, arg); + if (!hadarg) + strcat(fmt, ".%02d"); + output_filename = xmalloc(base_name_len); + return fmt; +} + + +/*---. +| ? | +`---*/ + +int +main (argc, argv) + int argc; + char *const *argv; +{ + int status = EXIT_SUCCESS; + int stdin_file_list = 0; + int optchar; + + program_name = argv[0]; + sharpid = (int) getpid (); + setlocale (LC_ALL, ""); + + /* Set the text message domain. */ + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + + while (optchar = getopt_long (argc, argv, + "+$BDFL:MPQSTVXZab:cd:fg:hjl:mn:o:pqs:wxz", + long_options, NULL), + optchar != EOF) + switch (optchar) + { + case 0: case 1: /* handled by getopt_long() */ + break; + + case '$': +#if DEBUG + debugging_mode = 1; +#else + error (0, 0, _("DEBUG was not selected at compile time")); +#endif + break; + + case 'B': + set_file_mode ('B'); + break; + + case 'D': + md5_count_mode = 0; + break; + + case 'F': + mandatory_prefix_mode = 1; + break; + + case 'L': + set_file_size_limit (optarg); + split_file_mode = 1; + inhibit_piping_mode = 1; + DEBUG_PRINT (_("Hard limit %s\n"), file_size_limit); + break; + + case 'M': + set_file_mode ('M'); + break; + + case 'P': + inhibit_piping_mode = 1; + break; + + case 'Q': + quiet_unshar_mode = 1; + break; + + case 'S': + stdin_file_list = 1; + break; + + case 'V': + vanilla_operation_mode = 1; + break; + + case 't': + translate_script = 1; + break; + + case 'T': + set_file_mode ('T'); + break; + + case 'X': + query_user_mode = 1; + check_existing_mode = 1; + break; + + case 'b': + bits_per_compressed_byte = atoi (optarg); + /* Fall through. */ + + case 'Z': +#ifndef HAVE_COMPRESS + error (EXIT_FAILURE, 0, _("\ +This system doesn't support -Z ('compress'), use -z instead")); +#endif + set_file_mode ('Z'); + break; + + case 'a': + net_headers_mode = 1; + break; + + case 'c': + cut_mark_mode = 1; + break; + + case 'd': + here_delimiter = optarg; + break; + + case 'f': + basename_mode = 1; + break; + + case 'h': + usage (EXIT_SUCCESS); + break; + + case 'j': + set_file_mode ('j'); + break; + + case 'l': + set_file_size_limit (optarg); + split_file_mode = 0; + DEBUG_PRINT (_("Soft limit %s\n"), file_size_limit); + break; + + case 'm': + timestamp_mode = 0; + break; + + case 'n': + archive_name = optarg; + break; + + case 'o': + output_base_name = parse_output_base_name(optarg); + if (!output_base_name) + { + fprintf (stderr, _("illegal output prefix\n")); + exit (EXIT_FAILURE); + } + part_number = 0; + open_output (); + break; + + case 'p': + intermixed_parameter_mode = 1; + break; + + case 'q': + quiet_mode = 1; + break; + + case 's': + submitter_address = optarg; + break; + + case 'w': + character_count_mode = 0; + break; + + case 'x': + check_existing_mode = 0; + break; + + case 'g': + gzip_compression_level = atoi (optarg); + /* Fall through. */ + + case 'z': + set_file_mode ('z'); + break; + + default: + usage (EXIT_FAILURE); + } + + /* Internationalized shell scripts are not vanilla. */ + if (vanilla_operation_mode) + no_i18n = 1; + + if (show_version) + { + printf ("%s (GNU %s) %s\n", basename (program_name), PACKAGE, VERSION); + /* xgettext: no-wrap */ + printf (_("Copyright (C) %s Free Software Foundation, Inc.\n\ +This is free software; see the source for copying conditions. There is NO\n\ +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ +"), + "1994, 1995, 1996, 2004, 2005"); + exit (EXIT_SUCCESS); + } + + if (show_help) + usage (EXIT_SUCCESS); + + if (print_text_dom_dir != 0) + { + /* Support for internationalized shell scripts is only usable with + GNU gettext. If we don't use it simply mark it as not available. */ +#if !defined ENABLE_NLS || defined HAVE_CATGETS \ + || (defined HAVE_GETTEXT && !defined __USE_GNU_GETTEXT) + exit (EXIT_FAILURE); +#else + puts (LOCALEDIR); + exit (EXIT_SUCCESS); +#endif + } + + line_prefix = (here_delimiter[0] == DEFAULT_LINE_PREFIX_1 + ? DEFAULT_LINE_PREFIX_2 + : DEFAULT_LINE_PREFIX_1); + + here_delimiter_length = strlen (here_delimiter); + + if (vanilla_operation_mode) + { + if (mixed_uuencoded_file_mode < 0) + set_file_mode ('T'); + + /* Implies -m, -w, -D, -F and -P. */ + + timestamp_mode = 0; + character_count_mode = 0; + md5_count_mode = 0; + mandatory_prefix_mode = 1; + inhibit_piping_mode = 1; + + /* Forbids -X. */ + + if (query_user_mode) + { + error (0, 0, _("WARNING: No user interaction in vanilla mode")); + query_user_mode = 0; + } + + /* Diagnose if not in -T state. */ + + if (mixed_uuencoded_file_mode + || uuencoded_file_mode + || gzipped_file_mode + || bzipped_file_mode + || compressed_file_mode + || intermixed_parameter_mode) + error (0, 0, _("WARNING: Non-text storage options overridden")); + } + + /* Set defaults for unset options. */ + + if (mixed_uuencoded_file_mode < 0) + set_file_mode ('M'); + + if (!submitter_address) + submitter_address = get_submitter (NULL); + + if (!output) + output = stdout; + + /* Maybe prepare to decide dynamically about file type. */ + + if (mixed_uuencoded_file_mode || intermixed_parameter_mode) + { + memset ((char *) byte_is_binary, 1, 256); + byte_is_binary['\b'] = 0; + byte_is_binary['\t'] = 0; + byte_is_binary['\f'] = 0; + memset ((char *) byte_is_binary + 32, 0, 127 - 32); + } + + /* Maybe read file list from standard input. */ + + if (stdin_file_list) + { + char stdin_buf[258]; /* FIXME: No fix limit in GNU... */ + char **list; + int max_argc; + + argc = 0; + max_argc = 32; + list = (char **) xmalloc (max_argc * sizeof (char *)); + stdin_buf[0] = 0; + while (fgets (stdin_buf, sizeof (stdin_buf), stdin)) + { + if (argc == max_argc) + list = (char **) xrealloc (list, + (max_argc *= 2) * sizeof (char *)); + if (stdin_buf[0] != NUL) + stdin_buf[strlen (stdin_buf) - 1] = 0; + list[argc] = xstrdup (stdin_buf); + ++argc; + stdin_buf[0] = 0; + } + argv = list; + optind = 0; + } + + /* Diagnose various usage errors. */ + + if (optind >= argc) + { + error (0, 0, _("No input files")); + usage (EXIT_FAILURE); + } + + if (net_headers_mode && !archive_name) + { + error (0, 0, _("Cannot use -a option without -n")); + usage (EXIT_FAILURE); + } + + if (file_size_limit && !part_number) + { + error (0, 0, _("Cannot use -l or -L option without -o")); + usage (EXIT_FAILURE); + } + + /* Start making the archive file. */ + + generate_full_header (argc - optind, &argv[optind]); + + if (query_user_mode) + { + quiet_unshar_mode = 0; + if (net_headers_mode) + error (0, 0, _("PLEASE avoid -X shars on Usenet or public networks")); + + fputs ("shar_wish=\n", output); + } + + first_file_position = ftello (output); + + /* Process positional parameters and files. */ + + scribble = xmalloc (scribble_size); + + for (; optind < argc; optind++) + { + char* arg = argv[optind]; + + if (intermixed_parameter_mode && (arg[0] == '-') && (arg[2] == NUL)) + { + switch (arg[1]) { + case 'B': + case 'T': + case 'M': + case 'z': + case 'Z': + set_file_mode (arg[1]); + continue; + + case 'C': + set_file_mode ('Z'); + continue; + } + } + + if (walktree (shar, arg)) + status = EXIT_FAILURE; + } + + /* Delete the sequence file, if any. */ + + if (split_file_mode && part_number > 1) + { + fprintf (output, "$echo '%s'\n", + N_("You have unpacked the last part")); + if (quiet_mode) + fprintf (stderr, _("Created %d files\n"), part_number); + } + + { + const char* did_pz = + N_("x - removed lock directory `'%s\\''."); + const char* not_pz = + N_("x - failed to remove lock directory `'%s\\''."); + + echo_status ("rm -fr ${lock_dir}", did_pz, not_pz, "${lock_dir}", 1); + } + fputs ("exit 0\n", output); + exit (status); +} +/* + * Local Variables: + * mode: C + * c-file-style: "gnu" + * indent-tabs-mode: nil + * End: + * end of agen5/autogen.c */ diff --git a/src/unshar.c b/src/unshar.c new file mode 100644 index 0000000..cb4f492 --- /dev/null +++ b/src/unshar.c @@ -0,0 +1,552 @@ +/* Handle so called `shell archives'. + + Copyright (C) 1994, 1995, 1996, 2002, 2005, + 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +/* Unpackage one or more shell archive files. The `unshar' program is a + filter which removes the front part of a file and passes the rest to + the `sh' command. It understands phrases like "cut here", and also + knows about shell comment characters and the Unix commands `echo', + `cat', and `sed'. */ + +#include "system.h" +#include "getopt.h" +#include "basename.h" +#include "error.h" +#include "exit.h" +#include "stpcpy.h" +#include "xgetcwd.h" + +#if HAVE_LOCALE_H +# include +#else +# define setlocale(Category, Locale) +#endif +#include "gettext.h" +#define _(str) gettext (str) + +/* Buffer size for shell process input. */ +#define SHELL_BUFFER_SIZE 8196 + +#define EOL '\n' + +/* The name this program was run with. */ +const char *program_name; + +/* If non-zero, display usage information and exit. */ +static int show_help = 0; + +/* If non-zero, print the version on standard output and exit. */ +static int show_version = 0; + +static int pass_c_flag = 0; +static int continue_reading = 0; +static const char *exit_string = "exit 0"; +static size_t exit_string_length; +static char *current_directory; + +/*-------------------------------------------------------------------. +| Match the leftmost part of a string. Returns 1 if initial | +| characters of DATA match PATTERN exactly; else 0. This was | +| formerly a function. But because we always have a constant string | +| as the seconf argument and the length of the second argument is a | +| lot of shorter than the buffer the first argument is pointing at, | +| we simply use `memcmp'. And one more point: even if the `memcmp' | +| function does not work correct for 8 bit characters it does not | +| matter here. We are only interested in equal or not equal | +| information. | +`-------------------------------------------------------------------*/ + +#define starting_with(data, pattern) \ + (memcmp (data, pattern, sizeof (pattern) - 1) == 0) + +static FILE* load_stdin (char **p_name_buf); + +/*-------------------------------------------------------------------------. +| For a DATA string and a PATTERN containing one or more embedded | +| asterisks (matching any number of characters), return non-zero if the | +| match succeeds, and set RESULT_ARRAY[I] to the characters matched by the | +| I'th *. | +`-------------------------------------------------------------------------*/ + +static int +matched_by (data, pattern, result_array) + const char *data; + const char *pattern; + char **result_array; +{ + const char *pattern_cursor = NULL; + const char *data_cursor = NULL; + char *result_cursor = NULL; + int number_of_results = 0; + + while (1) + if (*pattern == '*') + { + pattern_cursor = ++pattern; + data_cursor = data; + result_cursor = result_array[number_of_results++]; + *result_cursor = '\0'; + } + else if (*data == *pattern) + { + if (*pattern == '\0') + /* The pattern matches. */ + return 1; + + pattern++; + data++; + } + else + { + if (*data == '\0') + /* The pattern fails: no more data. */ + return 0; + + if (pattern_cursor == NULL) + /* The pattern fails: no star to adjust. */ + return 0; + + /* Restart pattern after star. */ + + pattern = pattern_cursor; + *result_cursor++ = *data_cursor; + *result_cursor = '\0'; + + /* Rescan after copied char. */ + + data = ++data_cursor; + } +} + +/*------------------------------------------------------------------------. +| Associated with a given file NAME, position FILE at the start of the | +| shell command portion of a shell archive file. Scan file from position | +| START. | +`------------------------------------------------------------------------*/ + +static int +find_archive (name, file, start) + const char *name; + FILE *file; + off_t start; +{ + char buffer[BUFSIZ]; + off_t position; + + /* Results from star matcher. */ + + static char res1[BUFSIZ], res2[BUFSIZ], res3[BUFSIZ], res4[BUFSIZ]; + static char *result[] = {res1, res2, res3, res4}; + + fseeko (file, start, SEEK_SET); + + while (1) + { + + /* Record position of the start of this line. */ + + position = ftello (file); + + /* Read next line, fail if no more and no previous process. */ + + if (!fgets (buffer, BUFSIZ, file)) + { + if (!start) + error (0, 0, _("Found no shell commands in %s"), name); + return 0; + } + + /* Bail out if we see C preprocessor commands or C comments. */ + + if (starting_with (buffer, "#include") + || starting_with (buffer, "# include") + || starting_with (buffer, "#define") + || starting_with (buffer, "# define") + || starting_with (buffer, "#ifdef") + || starting_with (buffer, "# ifdef") + || starting_with (buffer, "#ifndef") + || starting_with (buffer, "# ifndef") + || starting_with (buffer, "/*")) + { + error (0, 0, _("%s looks like raw C code, not a shell archive"), + name); + return 0; + } + + /* Does this line start with a shell command or comment. */ + + if (starting_with (buffer, "#") + || starting_with (buffer, ":") + || starting_with (buffer, "echo ") + || starting_with (buffer, "sed ") + || starting_with (buffer, "cat ") + || starting_with (buffer, "if ")) + { + fseeko (file, position, SEEK_SET); + return 1; + } + + /* Does this line say "Cut here". */ + + if (matched_by (buffer, "*CUT*HERE*", result) || + matched_by (buffer, "*cut*here*", result) || + matched_by (buffer, "*TEAR*HERE*", result) || + matched_by (buffer, "*tear*here*", result) || + matched_by (buffer, "*CUT*CUT*", result) || + matched_by (buffer, "*cut*cut*", result)) + { + + /* Read next line after "cut here", skipping blank lines. */ + + while (1) + { + position = ftello (file); + + if (!fgets (buffer, BUFSIZ, file)) + { + error (0, 0, _("Found no shell commands after `cut' in %s"), + name); + return 0; + } + + if (*buffer != '\n') + break; + } + + /* Win if line starts with a comment character of lower case + letter. */ + + if (*buffer == '#' || *buffer == ':' + || (('a' <= *buffer) && ('z' >= *buffer))) + { + fseeko (file, position, SEEK_SET); + return 1; + } + + /* Cut here message lied to us. */ + + error (0, 0, _("%s is probably not a shell archive"), name); + error (0, 0, _("The `cut' line was followed by: %s"), buffer); + return 0; + } + } +} + +/*-----------------------------------------------------------------. +| Unarchive a shar file provided on file NAME. The file itself is | +| provided on the already opened FILE. | +`-----------------------------------------------------------------*/ + +static void +unarchive_shar_file (name, file) + const char *name; + FILE *file; +{ + char buffer[SHELL_BUFFER_SIZE]; + FILE *shell_process; + off_t current_position = 0; + char *more_to_read; + + while (find_archive (name, file, current_position)) + { + printf ("%s:\n", name); + shell_process = popen (pass_c_flag ? "sh -s - -c" : "sh", "w"); + if (!shell_process) + error (EXIT_FAILURE, errno, _("Starting `sh' process")); + + if (!continue_reading) + { + size_t len; + + while ((len = fread (buffer, 1, SHELL_BUFFER_SIZE, file)) != 0) + fwrite (buffer, 1, len, shell_process); +#if 0 + /* Don't know whether a test is appropriate here. */ + if (ferror (shell_process) != 0) + fwrite (buffer, length, 1, shell_process); +#endif + pclose (shell_process); + break; + } + else + { + while (more_to_read = fgets (buffer, SHELL_BUFFER_SIZE, file), + more_to_read != NULL) + { + fputs (buffer, shell_process); + if (!strncmp (exit_string, buffer, exit_string_length)) + break; + } + pclose (shell_process); + + if (more_to_read) + current_position = ftello (file); + else + break; + } + } +} + +/*-----------------------------. +| Explain how to use program. | +`-----------------------------*/ + +static void +usage (status) + int status; +{ + if (status != EXIT_SUCCESS) + fprintf (stderr, _("Try `%s --help' for more information.\n"), + program_name); + else + { + printf (_("Usage: %s [OPTION]... [FILE]...\n"), program_name); + fputs (_("\ +Mandatory arguments to long options are mandatory for short options too.\n\ +\n\ + -d, --directory=DIRECTORY change to DIRECTORY before unpacking\n\ + -c, --overwrite pass -c to shar script for overwriting files\n\ + -e, --exit-0 same as `--split-at=\"exit 0\"'\n\ + -E, --split-at=STRING split concatenated shars after STRING\n\ + -f, --force same as `-c'\n\ + --help display this help and exit\n\ + --version output version information and exit\n\ +\n\ +If no FILE, standard input is read.\n"), + stdout); + /* TRANSLATORS: add the contact address for your translation team! */ + printf (_("Report bugs to <%s>.\n"), PACKAGE_BUGREPORT); + } + exit (status); +} + +/*--------------------------------------. +| Decode options and launch execution. | +`--------------------------------------*/ + +static const struct option long_options[] = +{ + {"directory", required_argument, NULL, 'd'}, + {"exit-0", no_argument, NULL, 'e'}, + {"force", no_argument, NULL, 'f'}, + {"overwrite", no_argument, NULL, 'c'}, + {"split-at", required_argument, NULL, 'E'}, + + {"help", no_argument, &show_help, 1}, + {"version", no_argument, &show_version, 1}, + + { NULL, 0, NULL, 0 }, +}; + +int +main (argc, argv) + int argc; + char *const *argv; +{ + FILE *file; + char* name_buffer = NULL; + int optchar; + + program_name = argv[0]; + setlocale (LC_ALL, ""); + + /* Set the text message domain. */ + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + +#ifdef __MSDOS__ + setbuf (stdout, NULL); + setbuf (stderr, NULL); +#endif + + if (current_directory = xgetcwd (), !current_directory) + error (EXIT_FAILURE, errno, _("Cannot get current directory name")); + + /* Process options. */ + + while (optchar = getopt_long (argc, argv, "E:cd:ef", long_options, NULL), + optchar != EOF) + switch (optchar) + { + case '\0': + break; + + case 'c': + case 'f': + pass_c_flag = 1; + break; + + case 'd': + if (chdir (optarg) == -1) + error (2, 0, _("Cannot chdir to `%s'"), optarg); + break; + + case 'E': + exit_string = optarg; + /* Fall through. */ + + case 'e': + continue_reading = 1; + exit_string_length = strlen (exit_string); + break; + + default: + usage (EXIT_FAILURE); + } + + if (show_version) + { + printf ("%s (GNU %s) %s\n", basename (program_name), PACKAGE, VERSION); + /* xgettext: no-wrap */ + printf (_("Copyright (C) %s Free Software Foundation, Inc.\n\ +This is free software; see the source for copying conditions. There is NO\n\ +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ +"), + "1994, 1995, 1996, 2005"); + exit (EXIT_SUCCESS); + } + + if (show_help) + usage (EXIT_SUCCESS); + + if (optind < argc) + { + size_t buflen = 0; + argv += optind; + + for (;;) + { + char* arg = *(argv++); + size_t sz; + if (arg == NULL) + break; + + sz = strlen (current_directory) + strlen (arg) + 2; + if (sz > buflen) + { + buflen = sz + 32; + name_buffer = (name_buffer == NULL) + ? malloc (buflen) + : realloc (name_buffer, buflen); + if (name_buffer == NULL) + error (EXIT_FAILURE, ENOMEM, _("allocate file name buffer")); + } + + if (*arg == '/') + strcpy (name_buffer, arg); + else + { + char *cp = stpcpy (name_buffer, current_directory); + *cp++ = '/'; + strcpy (cp, arg); + } + if (file = fopen (name_buffer, "r"), !file) + error (EXIT_FAILURE, errno, name_buffer); + unarchive_shar_file (name_buffer, file); + fclose (file); + } + } + else + { + file = load_stdin (&name_buffer); + + unarchive_shar_file (_("standard input"), file); + + fclose (file); + unlink (name_buffer); + } + + exit (EXIT_SUCCESS); +} + + +static FILE* +load_stdin (char **p_name_buf) +{ + static const char z_tmpfile[] = "unsh.XXXXXX"; + char *pz_fname; + FILE *fp; + + /* + * FIXME: actually configure this stuff: + */ +#if defined(_SC_PAGESIZE) + long pg_sz = sysconf (_SC_PAGESIZE); +#elif defined(_SC_PAGE_SIZE) + long pg_sz = sysconf (_SC_PAGE_SIZE); +#elif defined(HAVE_GETPAGESIZE) + long pg_sz = getpagesize(); +#else +# define pg_sz 8192 +#endif + + { + size_t name_size; + char *pz_tmp = getenv ("TMPDIR"); + + if (pz_tmp == NULL) + pz_tmp = "/tmp"; + + name_size = strlen (pz_tmp) + sizeof (z_tmpfile) + 1; + *p_name_buf = pz_fname = malloc (name_size); + + if (pz_fname == NULL) + error (EXIT_FAILURE, ENOMEM, _("allocate file name buffer")); + + sprintf (pz_fname, "%s/%s", pz_tmp, z_tmpfile); + } + + { + int fd = mkstemp (pz_fname); + if (fd < 0) + error (EXIT_FAILURE, errno, pz_fname); + + fp = fdopen (fd, "w+"); + } + + if (fp == NULL) + error (EXIT_FAILURE, errno, pz_fname); + + { + char *buf = malloc (pg_sz); + size_t size_read; + + if (buf == NULL) + error (EXIT_FAILURE, ENOMEM, _("allocate file buffer")); + + while (size_read = fread (buf, 1, pg_sz, stdin), + size_read != 0) + fwrite (buf, size_read, 1, fp); + + free (buf); + } + + rewind (fp); + + return fp; +} + +/* + * Local Variables: + * mode: C + * c-file-style: "gnu" + * tab-width: 8 + * indent-tabs-mode: nil + * End: + * end of agen5/autogen.c */ diff --git a/src/uudecode.c b/src/uudecode.c new file mode 100644 index 0000000..a3ae722 --- /dev/null +++ b/src/uudecode.c @@ -0,0 +1,537 @@ + +static const char cright_years_z[] = + +/* uudecode utility. Copyright (C) */ + + "1994, 1995, 1996, 2002, 2005, 2006, 2007"; + + /* Free Software Foundation, Inc. + + Copyright (C) 1994, 1995, 1996, 2002, 2005, 2006, + 2007 Free Software Foundation, Inc. + + This product 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 3, or (at your option) + any later version. + + This product 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 product; see the file COPYING. If not, write to + the Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* Copyright (c) 1983 Regents of the University of California. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. + 4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. */ + +/* Reworked to GNU style by Ian Lance Taylor, ian@airs.com, August 93. */ + +#ifdef HAVE_CONFIG_H +# include +#endif +#include "liballoca.h" + +#include "system.h" +#include "basename.h" +#include "error.h" +#include "exit.h" + +#if HAVE_LOCALE_H +# include +#else +# define setlocale(Category, Locale) +#endif +#include "gettext.h" +#define _(str) gettext (str) + +/*=====================================================================\ +| uudecode [FILE ...] | +| | +| Create the specified FILE, decoding as you go. Used with uuencode. | +\=====================================================================*/ + +#include +#include "getopt.h" + +#define UU_MODE_BITS(_M) ((_M) & (S_IRWXU | S_IRWXG | S_IRWXO)) +#if HAVE_FCHMOD +#define UU_CHMOD(_n, _fd, _m) fchmod ((_fd), UU_MODE_BITS(_m)) +#else +#define UU_CHMOD(_n, _fd, _m) chmod ((_n), UU_MODE_BITS(_m)) +#endif + +struct passwd *getpwnam (); + +static struct option longopts[] = +{ + { "version", no_argument, NULL, 'v' }, + { "help", no_argument, NULL, 'h' }, + { "output-file", required_argument, NULL, 'o' }, + { NULL, 0, NULL, 0 } +}; + +static int read_stduu __P ((const char *inname, const char *outname)); +static int read_base64 __P ((const char *inname, const char *outname)); +static int decode __P ((const char *, const char *)); +static void usage __P ((int)) +#if defined __GNUC__ && ((__GNUC__ == 2 && __GNUC_MINOR__ >= 5) || __GNUC__ > 2) + __attribute__ ((noreturn)) +#endif +; + +/* The name this program was run with. */ +const char *program_name; + +/* Single character decode. */ +#define DEC(Char) (((Char) - ' ') & 077) + +#if !defined S_ISLNK && defined S_IFLNK +# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) +#endif + +#define TRY_PUTCHAR(c) do { \ + if (putchar (c) == EOF) { \ + error (0, 0, _("%s: Write error"), outname); \ + return 1; \ + } \ + } while (0) + +static int +read_stduu (inname, outname) + const char *inname, *outname; +{ + char buf[2 * BUFSIZ]; + + while (1) + { + int n; + char *p; + + if (fgets ((char *) buf, sizeof(buf), stdin) == NULL) + { + error (0, 0, _("%s: Short file"), inname); + return 1; + } + p = buf; + + /* N is used to avoid writing out all the characters at the end of + the file. */ + + n = DEC (*p); + if (n <= 0) + break; + for (++p; n >= 3; p += 4, n -= 3) + { + TRY_PUTCHAR (DEC (p[0]) << 2 | DEC (p[1]) >> 4); + TRY_PUTCHAR (DEC (p[1]) << 4 | DEC (p[2]) >> 2); + TRY_PUTCHAR (DEC (p[2]) << 6 | DEC (p[3])); + } + if (n > 0) + { + TRY_PUTCHAR (DEC (p[0]) << 2 | DEC (p[1]) >> 4); + if (n >= 2) + TRY_PUTCHAR (DEC (p[1]) << 4 | DEC (p[2]) >> 2); + } + } + + do { + if (fgets (buf, sizeof(buf), stdin) == NULL) + break; + + if (strcmp (buf, "end\n") == 0) + return 0; + + if (strcmp (buf, "end\r\n") == 0) + return 0; + } while (0); + + error (0, 0, _("%s: No `end' line"), inname); + return 1; +} + +static int +read_base64 (inname, outname) + const char *inname, *outname; +{ + static const char b64_tab[256] = + { + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*000-007*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*010-017*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*020-027*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*030-037*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*040-047*/ + '\177', '\177', '\177', '\76', '\177', '\177', '\177', '\77', /*050-057*/ + '\64', '\65', '\66', '\67', '\70', '\71', '\72', '\73', /*060-067*/ + '\74', '\75', '\177', '\177', '\177', '\100', '\177', '\177', /*070-077*/ + '\177', '\0', '\1', '\2', '\3', '\4', '\5', '\6', /*100-107*/ + '\7', '\10', '\11', '\12', '\13', '\14', '\15', '\16', /*110-117*/ + '\17', '\20', '\21', '\22', '\23', '\24', '\25', '\26', /*120-127*/ + '\27', '\30', '\31', '\177', '\177', '\177', '\177', '\177', /*130-137*/ + '\177', '\32', '\33', '\34', '\35', '\36', '\37', '\40', /*140-147*/ + '\41', '\42', '\43', '\44', '\45', '\46', '\47', '\50', /*150-157*/ + '\51', '\52', '\53', '\54', '\55', '\56', '\57', '\60', /*160-167*/ + '\61', '\62', '\63', '\177', '\177', '\177', '\177', '\177', /*170-177*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*200-207*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*210-217*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*220-227*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*230-237*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*240-247*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*250-257*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*260-267*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*270-277*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*300-307*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*310-317*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*320-327*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*330-337*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*340-347*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*350-357*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*360-367*/ + '\177', '\177', '\177', '\177', '\177', '\177', '\177', '\177', /*370-377*/ + }; + char buf[2 * BUFSIZ]; + + while (1) + { + int last_data = 0; + unsigned char *p; + + if (fgets (buf, sizeof(buf), stdin) == NULL) + { + error (0, 0, _("%s: Short file"), inname); + return 1; + } + p = (unsigned char *) buf; + + if (memcmp (buf, "====", 4) == 0) + break; + if (last_data != 0) + { + error (0, 0, _("%s: data following `=' padding character"), inname); + return 1; + } + + /* The following implementation of the base64 decoding might look + a bit clumsy but I only try to follow the POSIX standard: + ``All line breaks or other characters not found in the table + [with base64 characters] shall be ignored by decoding + software.'' */ + while (*p != '\n') + { + char c1, c2, c3; + + while ((b64_tab[*p] & '\100') != 0) + if (*p == '\n' || *p++ == '=') + break; + if (*p == '\n') + /* This leaves the loop. */ + continue; + c1 = b64_tab[*p++]; + + while ((b64_tab[*p] & '\100') != 0) + if (*p == '\n' || *p++ == '=') + { + error (0, 0, _("%s: illegal line"), inname); + return 1; + } + c2 = b64_tab[*p++]; + + while (b64_tab[*p] == '\177') + if (*p++ == '\n') + { + error (0, 0, _("%s: illegal line"), inname); + return 1; + } + if (*p == '=') + { + TRY_PUTCHAR (c1 << 2 | c2 >> 4); + last_data = 1; + break; + } + c3 = b64_tab[*p++]; + + while (b64_tab[*p] == '\177') + if (*p++ == '\n') + { + error (0, 0, _("%s: illegal line"), inname); + return 1; + } + TRY_PUTCHAR (c1 << 2 | c2 >> 4); + TRY_PUTCHAR (c2 << 4 | c3 >> 2); + if (*p == '=') + { + last_data = 1; + break; + } + else + TRY_PUTCHAR (c3 << 6 | b64_tab[*p++]); + } + } + + return 0; +} + + +static int +decode (inname, forced_outname) + const char *inname; + const char *forced_outname; +{ + struct passwd *pw; + register int n; + register char *p; + int mode, n1; + char buf[2 * BUFSIZ]; + char *outname; + int do_base64 = 0; + struct stat attr; + int rval; + + /* Search for header line. */ + + while (1) + { + if (fgets (buf, sizeof (buf), stdin) == NULL) + { + error (0, 0, _("%s: No `begin' line"), inname); + return 1; + } + + if (strncmp (buf, "begin", 5) == 0) + { + if (sscanf (buf, "begin-base64 %o %[^\n]", &mode, buf) == 2) + { + do_base64 = 1; + break; + } + else if (sscanf (buf, "begin %o %[^\n]", &mode, buf) == 2) + break; + } + } + + /* If the output file name is given on the command line this rules. */ + if (forced_outname != NULL) + outname = (char *) forced_outname; + else + { + /* Handle ~user/file format. */ + + if (buf[0] != '~') + outname = buf; + else + { + p = buf + 1; + while (*p != '/') + ++p; + if (*p == '\0') + { + error (0, 0, _("%s: Illegal ~user"), inname); + return 1; + } + *p++ = '\0'; + pw = getpwnam (buf + 1); + if (pw == NULL) + { + error (0, 0, _("%s: No user `%s'"), inname, buf + 1); + return 1; + } + n = strlen (pw->pw_dir); + n1 = strlen (p); + outname = (char *) alloca ((size_t) (n + n1 + 2)); + memcpy (outname + n + 1, p, (size_t) (n1 + 1)); + memcpy (outname, pw->pw_dir, (size_t) n); + outname[n] = '/'; + } + } + + /* Create output file and set mode. */ + + if ( (strcmp (outname, "/dev/stdout") != 0) + && (strcmp (outname, "-") != 0) ) + { + FILE* fp; + + /* Check out file if it exists */ + if (!access(outname, F_OK)) + { + if (lstat(outname, &attr) == -1) + { + error (0, errno, _("cannot access %s"), outname); + return 1; + } + if (S_ISFIFO(attr.st_mode)) + { + error (0, errno, _("denied writing FIFO (%s)"), outname); + return 1; + } + if (S_ISLNK(attr.st_mode)) + { + error (0, errno, _("not following symlink (%s)"), outname); + return 1; + } + } + + fp = freopen (outname, FOPEN_WRITE_BINARY, stdout); + if (fp != stdout) + { + error (0, errno, _("freopen of %s"), outname); + return 1; + } + + if (UU_CHMOD(outname, fileno (fp), mode) != 0) + { + error (0, errno, _("chmod of %s"), outname); + return 1; + } + } + + /* We differenciate decoding standard UU encoding and base64. A + common function would only slow down the program. */ + + /* For each input line: */ + if (do_base64) + rval = read_base64 (inname, outname); + else + rval = read_stduu (inname, outname); + + if (rval == 0 && (ferror(stdout) || fflush(stdout) != 0)) + { + error (0, 0, _("%s: Write error"), outname); + return 1; + } + + return rval; +} + +static void +usage (status) + int status; +{ + if (status != 0) + fprintf (stderr, _("Try `%s --help' for more information.\n"), + program_name); + else + { + printf (_("Usage: %s [FILE]...\n"), program_name); + fputs (_("\ +Mandatory arguments to long options are mandatory to short options too.\n\ + -o, --output-file=FILE direct output to FILE\n\ + --help display this help and exit\n\ + --version output version information and exit\n"), stdout); + /* TRANSLATORS: add the contact address for your translation team! */ + printf (_("Report bugs to <%s>.\n"), PACKAGE_BUGREPORT); + } + exit (status); +} + +int +main (argc, argv) + int argc; + char *const *argv; +{ + int opt; + int exit_status; + const char *outname; + + program_name = argv[0]; + outname = NULL; + setlocale (LC_ALL, ""); + + /* Set the text message domain. */ + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + + while (opt = getopt_long (argc, argv, "o:", longopts, (int *) NULL), + opt != EOF) + { + switch (opt) + { + case 'h': + usage (EXIT_SUCCESS); + + case 'o': + outname = optarg; + break; + + case 'v': + printf ("%s (GNU %s) %s\n", basename (program_name), + PACKAGE, VERSION); + /* xgettext: no-wrap */ + printf (_("Copyright (C) %s Free Software Foundation, Inc.\n\ +This is free software; see the source for copying conditions. There is NO\n\ +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ +"), + cright_years_z); + exit (EXIT_SUCCESS); + + case 0: + break; + + default: + usage (EXIT_FAILURE); + } + } + + if (optind == argc) + exit_status = decode ("stdin", outname) == 0 ? EXIT_SUCCESS : EXIT_FAILURE; + else + { + exit_status = EXIT_SUCCESS; + do + { + if (freopen (argv[optind], "r", stdin) != NULL) + { + if (decode (argv[optind], outname) != 0) + exit_status = EXIT_FAILURE; + } + else + { + error (0, errno, "%s", argv[optind]); + exit_status = EXIT_FAILURE; + } + optind++; + } + while (optind < argc); + } + + exit (exit_status); +} + +/* + * Local Variables: + * mode: C + * c-file-style: "gnu" + * indent-tabs-mode: nil + * End: + * end of agen5/autogen.c */ diff --git a/src/uuencode.c b/src/uuencode.c new file mode 100644 index 0000000..415196d --- /dev/null +++ b/src/uuencode.c @@ -0,0 +1,314 @@ + +static const char cright_years_z[] = + "1994, 1995, 1996, 2002, 2005, 2007"; + +/* uuencode utility. + Copyright (C) 1994, 1995, 1996, 2002, 2005, + 2007 Free Software Foundation, Inc. + + This product 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 3, or (at your option) + any later version. + + This product 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 product; see the file COPYING. If not, write to + the Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* Copyright (c) 1983 Regents of the University of California. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. + 4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. */ + +/* Reworked to GNU style by Ian Lance Taylor, ian@airs.com, August 93. */ + +#include "system.h" +#include "basename.h" +#include "error.h" +#include "exit.h" + +#if HAVE_LOCALE_H +# include +#else +# define setlocale(Category, Locale) +#endif +#include "gettext.h" +#define _(str) gettext (str) + +/*=======================================================\ +| uuencode [INPUT] OUTPUT | +| | +| Encode a file so it can be mailed to a remote system. | +\=======================================================*/ + +#include "getopt.h" + +#define RW (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH) + +static struct option longopts[] = +{ + { "base64", 0, 0, 'm' }, + { "version", 0, 0, 'v' }, + { "help", 0, 0, 'h' }, + { NULL, 0, 0, 0 } +}; + +static inline void try_putchar __P ((int)); +static void encode __P ((void)); +static void usage __P ((int)) +#if defined __GNUC__ && ((__GNUC__ == 2 && __GNUC_MINOR__ >= 5) || __GNUC__ > 2) + __attribute__ ((noreturn)) +#endif +; + +/* The name this program was run with. */ +const char *program_name; + +/* Pointer to the translation table we currently use. */ +const char *trans_ptr; + +/* The two currently defined translation tables. The first is the + standard uuencoding, the second is base64 encoding. */ +const char uu_std[64] = +{ + '`', '!', '"', '#', '$', '%', '&', '\'', + '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', ':', ';', '<', '=', '>', '?', + '@', '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', '[', '\\', ']', '^', '_' +}; + +const char uu_base64[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', '+', '/' +}; + +/* ENC is the basic 1 character encoding function to make a char printing. */ +#define ENC(Char) (trans_ptr[(Char) & 077]) + +static inline void +try_putchar (c) + int c; +{ + if (putchar (c) == EOF) + error (EXIT_FAILURE, 0, _("Write error")); +} + +/*------------------------------------------------. +| Copy from IN to OUT, encoding as you go along. | +`------------------------------------------------*/ + +static void +encode () +{ + register int n; + int finishing = 0; + register char *p; + char buf[46]; /* 45 should be enough, but one never knows... */ + + while ( !finishing && (n = fread (buf, 1, 45, stdin)) > 0 ) + { + if (n < 45) + { + if (feof (stdin)) + finishing = 1; + else + error (EXIT_FAILURE, 0, _("Read error")); + } + + if (trans_ptr == uu_std) + putchar (ENC (n)); + + for (p = buf; n > 2; n -= 3, p += 3) + { + try_putchar (ENC (*p >> 2)); + try_putchar (ENC (((*p << 4) & 060) | ((p[1] >> 4) & 017))); + try_putchar (ENC (((p[1] << 2) & 074) | ((p[2] >> 6) & 03))); + try_putchar (ENC (p[2] & 077)); + } + + if (n > 0) /* encode the last one or two chars */ + { + char tail = trans_ptr == uu_std ? ENC ('\0') : '='; + + if (n == 1) + p[1] = '\0'; + + try_putchar (ENC (*p >> 2)); + try_putchar (ENC (((*p << 4) & 060) | ((p[1] >> 4) & 017))); + try_putchar (n == 1 ? tail : ENC ((p[1] << 2) & 074)); + try_putchar (tail); + } + + try_putchar ('\n'); + } + + if (ferror (stdin)) + error (EXIT_FAILURE, 0, _("Read error")); + if (fclose (stdin) != 0) + error (EXIT_FAILURE, errno, _("Read error")); + + if (trans_ptr == uu_std) + { + try_putchar (ENC ('\0')); + try_putchar ('\n'); + } +} + +static void +usage (status) + int status; +{ + if (status != 0) + fprintf (stderr, _("Try `%s --help' for more information.\n"), + program_name); + else + { + printf (_("Usage: %s [INFILE] REMOTEFILE\n"), program_name); + fputs (_("\n\ + -m, --base64 use base64 encoding as of RFC1521\n\ + --help display this help and exit\n\ + --version output version information and exit\n"), stdout); + /* TRANSLATORS: add the contact address for your translation team! */ + printf (_("Report bugs to <%s>.\n"), PACKAGE_BUGREPORT); + } + exit (status); +} + +int +main (argc, argv) + int argc; + char *const *argv; +{ + int opt; + struct stat sb; + int mode; + + /* Set global variables. */ + trans_ptr = uu_std; /* Standard encoding is old uu format. */ + + program_name = argv[0]; + setlocale (LC_ALL, ""); + + /* Set the text message domain. */ + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + + while (opt = getopt_long (argc, argv, "hm", longopts, (int *) NULL), + opt != EOF) + { + switch (opt) + { + case 'h': + usage (EXIT_SUCCESS); + + case 'm': + trans_ptr = uu_base64; + break; + + case 'v': + printf ("%s (GNU %s) %s\n", basename (program_name), + PACKAGE, VERSION); + /* xgettext: no-wrap */ + printf (_("Copyright (C) %s Free Software Foundation, Inc.\n\ +This is free software; see the source for copying conditions. There is NO\n\ +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"), + cright_years_z); + exit (EXIT_SUCCESS); + + case 0: + break; + + default: + usage (EXIT_FAILURE); + } + } + + switch (argc - optind) + { + case 2: + /* Optional first argument is input file. */ + { + FILE *fp = freopen (argv[optind], FOPEN_READ_BINARY, stdin); + if (fp != stdin) + error (EXIT_FAILURE, errno, _("fopen-ing %s"), argv[optind]); + if (fstat (fileno (stdin), &sb) != 0) + error (EXIT_FAILURE, errno, _("fstat-ing %s"), argv[optind]); + mode = sb.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO); + optind++; + break; + } + + case 1: +#if __CYGWIN + if (! isatty (STDIN_FILENO)) + setmode (STDIN_FILENO, O_BINARY); +#endif + + mode = RW & ~umask (RW); + break; + + case 0: + default: + usage (EXIT_FAILURE); + } + +#if S_IRWXU != 0700 +choke me - Must translate mode argument +#endif + + if (printf ("begin%s %o %s\n", trans_ptr == uu_std ? "" : "-base64", + mode, argv[optind]) < 0) + error (EXIT_FAILURE, errno, _("Write error")); + + encode (); + + if (ferror (stdout) || + printf (trans_ptr == uu_std ? "end\n" : "====\n") < 0 || + fclose (stdout) != 0) + error (EXIT_FAILURE, errno, _("Write error")); + + exit (EXIT_SUCCESS); +} diff --git a/tests/Makefile.am b/tests/Makefile.am new file mode 100644 index 0000000..b2a5143 --- /dev/null +++ b/tests/Makefile.am @@ -0,0 +1,32 @@ +## Makefile for the checks subdirectory of the GNU Shar utilities. +## +## Copyright (C) 1995, 1996, 2005, 2006, 2007 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 3, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +## Process this file with automake to produce Makefile.in. + +TESTS = uutest-1 uude-1 shar-1 shar-2 shar-3 +TESTS_ENVIRONMENT = \ + top_srcdir=$(top_srcdir) \ + PATH=`cd ../src && pwd`:"$$PATH" \ + PACKAGE_STRING='$(PACKAGE_STRING)' top_builddir=$(top_builddir) + +EXTRA_DIST = $(TESTS) testdata shar-1.ok + +clean : local-clean + +local-clean : + rm -rf shar-1-* shar-1.in shar-2*.* $${TMPDIR=/tmp}/shar-3*.d diff --git a/tests/Makefile.in b/tests/Makefile.in new file mode 100644 index 0000000..b4772f8 --- /dev/null +++ b/tests/Makefile.in @@ -0,0 +1,441 @@ +# Makefile.in generated by automake 1.10 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 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@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +subdir = tests +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \ + $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/glibc2.m4 $(top_srcdir)/m4/glibc21.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intdiv0.m4 \ + $(top_srcdir)/m4/intmax.m4 $(top_srcdir)/m4/inttypes-pri.m4 \ + $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ + $(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \ + $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/printf-posix.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/realloc.m4 \ + $(top_srcdir)/m4/sharutils.m4 $(top_srcdir)/m4/signed.m4 \ + $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \ + $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \ + $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ + $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/xstrtoimax.m4 \ + $(top_srcdir)/version.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ADD_SCRIPT = @ADD_SCRIPT@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMPRESS = @COMPRESS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF = @DIFF@ +DIRENT_HEADER = @DIRENT_HEADER@ +DIST_ALPHA = @DIST_ALPHA@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GENCAT = @GENCAT@ +GLIBC2 = @GLIBC2@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +HAVE_ASPRINTF = @HAVE_ASPRINTF@ +HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ +HAVE_SNPRINTF = @HAVE_SNPRINTF@ +HAVE_WPRINTF = @HAVE_WPRINTF@ +INSTALL = @INSTALL@ +INSTALL_COMPRESS_LINK = @INSTALL_COMPRESS_LINK@ +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@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LDFLAGS = @LDFLAGS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +MAILER = @MAILER@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGMERGE = @MSGMERGE@ +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@ +PERL = @PERL@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SH = @SH@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TAR = @TAR@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +TESTS = uutest-1 uude-1 shar-1 shar-2 shar-3 +TESTS_ENVIRONMENT = \ + top_srcdir=$(top_srcdir) \ + PATH=`cd ../src && pwd`:"$$PATH" \ + PACKAGE_STRING='$(PACKAGE_STRING)' top_builddir=$(top_builddir) + +EXTRA_DIST = $(TESTS) testdata shar-1.ok +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits tests/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnits tests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \ + srcdir=$(srcdir); export srcdir; \ + list=' $(TESTS) '; \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *$$ws$$tst$$ws*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + echo "XPASS: $$tst"; \ + ;; \ + *) \ + echo "PASS: $$tst"; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *$$ws$$tst$$ws*) \ + xfail=`expr $$xfail + 1`; \ + echo "XFAIL: $$tst"; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + echo "FAIL: $$tst"; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + echo "SKIP: $$tst"; \ + fi; \ + done; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="All $$all tests passed"; \ + else \ + banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all tests failed"; \ + else \ + banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + skipped="($$skip tests were not run)"; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + test -z "$$skipped" || echo "$$skipped"; \ + test -z "$$report" || echo "$$report"; \ + echo "$$dashes"; \ + test "$$failed" -eq 0; \ + else :; fi + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + 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 + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +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_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(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-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-TESTS check-am clean clean-generic \ + distclean distclean-generic distdir dvi dvi-am html html-am \ + info info-am install install-am install-data install-data-am \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ + uninstall-am + + +clean : local-clean + +local-clean : + rm -rf shar-1-* shar-1.in shar-2*.* $${TMPDIR=/tmp}/shar-3*.d +# 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/tests/shar-1 b/tests/shar-1 new file mode 100755 index 0000000..6f48879 --- /dev/null +++ b/tests/shar-1 @@ -0,0 +1,58 @@ +#! /bin/sh + +current_dir=`pwd` + +tmpfile=shar-1-$$ +inf=shar-1.in +sharf=${tmpfile}.shar +outf=${tmpfile}.outf + +# Test whether -f/--basename option removes all references to the old +# file name. + +trap "rm -fr shar-1.in ${tmpfile}.*" 1 2 3 15 + +echo "This is a test" > ${inf} +chmod 0644 ${inf} 2> /dev/null >&2 +SHAR=../src/shar + +${SHAR} -f $current_dir/${inf} > ${sharf} 2> /dev/null || exit 1 + +sed -e "s/__PACKAGE_STRING__/${PACKAGE_STRING}/" \ + $top_srcdir/tests/shar-1.ok > ${tmpfile}.sample + +# Remove variations based on PID and the current date +# +sed -e 's/^# Made on.*/# Made on .../' \ + -e 's/^# Source directory was.*/# Source directory was .../' \ + -e 's/=_sh[0-9][0-9]*/=_sh/' \ + -e 's/(set .. .. .. .. .. .. ../(set /' \ +${sharf} > ${outf} 2> /dev/null + +: ${DIFF=diff} +${DIFF} -c ${tmpfile}.sample ${outf} || exit 1 + +# test basic functioning of unshar +# +: ${UNSHAR=../src/unshar} +mv -f ${inf} ${outf} + +res=`${UNSHAR} ${sharf} 2>&1` || { + echo "${res}" >&2 + exit 1 +} + +${DIFF} ${inf} ${outf} || exit 1 + +rm -f shar-1.in ${tmpfile}.* +exit 0 + +## Local Variables: +## mode: shell-script +## tab-width: 8 +## indent-tabs-mode: nil +## sh-indentation: 2 +## sh-basic-offset: 2 +## End: + +## end of shar-1 diff --git a/tests/shar-1.ok b/tests/shar-1.ok new file mode 100644 index 0000000..1ef6510 --- /dev/null +++ b/tests/shar-1.ok @@ -0,0 +1,124 @@ +#!/bin/sh +# This is a shell archive (produced by GNU __PACKAGE_STRING__). +# To extract the files from this archive, save it to some FILE, remove +# everything before the `#!/bin/sh' line above, then type `sh FILE'. +# +lock_dir=_sh +# Made on ... +# Source directory was ... +# +# Existing files will *not* be overwritten, unless `-c' is specified. +# +# This shar contains: +# length mode name +# ------ ---------- ------------------------------------------ +# 15 -rw-r--r-- shar-1.in +# +MD5SUM=${MD5SUM-md5sum} +f=`${MD5SUM} --version | egrep '^md5sum .*(core|text)utils'` +test -n "${f}" && md5check=true || md5check=false +${md5check} || \ + echo 'Note: not verifying md5sums. Consider installing GNU coreutils.' +save_IFS="${IFS}" +IFS="${IFS}:" +gettext_dir=FAILED +locale_dir=FAILED +first_param="$1" +for dir in $PATH +do + if test "$gettext_dir" = FAILED && test -f $dir/gettext \ + && ($dir/gettext --version >/dev/null 2>&1) + then + case `$dir/gettext --version 2>&1 | sed 1q` in + *GNU*) gettext_dir=$dir ;; + esac + fi + if test "$locale_dir" = FAILED && test -f $dir/shar \ + && ($dir/shar --print-text-domain-dir >/dev/null 2>&1) + then + locale_dir=`$dir/shar --print-text-domain-dir` + fi +done +IFS="$save_IFS" +if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED +then + echo=echo +else + TEXTDOMAINDIR=$locale_dir + export TEXTDOMAINDIR + TEXTDOMAIN=sharutils + export TEXTDOMAIN + echo="$gettext_dir/gettext -s" +fi +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null +then if (echo -n test; echo 1,2,3) | grep n >/dev/null + then shar_n= shar_c=' +' + else shar_n=-n shar_c= ; fi +else shar_n= shar_c='\c' ; fi +f=shar-touch.$$ +st1=200112312359.59 +st2=123123592001.59 +st2tr=123123592001.5 # old SysV 14-char limit +st3=1231235901 + +if touch -am -t ${st1} ${f} >/dev/null 2>&1 && \ + test ! -f ${st1} && test -f ${f}; then + shar_touch='touch -am -t $1$2$3$4$5$6.$7 "$8"' + +elif touch -am ${st2} ${f} >/dev/null 2>&1 && \ + test ! -f ${st2} && test ! -f ${st2tr} && test -f ${f}; then + shar_touch='touch -am $3$4$5$6$1$2.$7 "$8"' + +elif touch -am ${st3} ${f} >/dev/null 2>&1 && \ + test ! -f ${st3} && test -f ${f}; then + shar_touch='touch -am $3$4$5$6$2 "$8"' + +else + shar_touch=: + echo + ${echo} 'WARNING: not restoring timestamps. Consider getting and' + ${echo} 'installing GNU `touch'\'', distributed in GNU coreutils...' + echo +fi +rm -f ${st1} ${st2} ${st2tr} ${st3} ${f} +# +if test ! -d ${lock_dir} +then : ; else ${echo} 'lock directory '${lock_dir}' exists' + exit 1 +fi +if mkdir ${lock_dir} +then ${echo} 'x - created lock directory `'${lock_dir}\''.' +else ${echo} 'x - failed to create lock directory `'${lock_dir}\''.' + exit 1 +fi +# ============= shar-1.in ============== +if test -f 'shar-1.in' && test "$first_param" != -c; then + ${echo} 'x -SKIPPING shar-1.in (file already exists)' +else +${echo} 'x - extracting shar-1.in (text)' + sed 's/^X//' << 'SHAR_EOF' > 'shar-1.in' && +This is a test +SHAR_EOF + (set 'shar-1.in'; eval "$shar_touch") && + chmod 0644 'shar-1.in' +if test $? -ne 0 +then ${echo} 'restore of shar-1.in failed' +fi + if ${md5check} + then ( + ${MD5SUM} -c >/dev/null 2>&1 || ${echo} 'shar-1.in: MD5 check failed' + ) << \SHAR_EOF +ff22941336956098ae9a564289d1bf1b shar-1.in +SHAR_EOF + else +test `LC_ALL=C wc -c < 'shar-1.in'` -ne 15 && \ + ${echo} 'restoration warning: size of shar-1.in is not 15' + fi +fi +if rm -fr ${lock_dir} +then ${echo} 'x - removed lock directory `'${lock_dir}\''.' +else ${echo} 'x - failed to remove lock directory `'${lock_dir}\''.' + exit 1 +fi +exit 0 diff --git a/tests/shar-2 b/tests/shar-2 new file mode 100755 index 0000000..526add1 --- /dev/null +++ b/tests/shar-2 @@ -0,0 +1,45 @@ +#! /bin/sh + +tmppfx=shar-2-$$ + +mkdir ${tmppfx}.dir ${tmppfx}.d ${tmppfx}.d/one ${tmppfx}.d/two +for d in "" /one /two +do + dir=${tmppfx}.d${d} + echo This file is shar-2${d}/first > ${dir}/first + exec 3> ${dir}/second + echo This file is shar-2${d}/second >&3 + f=0 + while test $f -lt 32 + do g=\\`printf %0d $f` + printf "$g" + f=`expr $f + 1` + done >&3 + echo >&3 + echo This file is shar-2${d}/second >&3 + exec 3>&- +done + +: ${SHAR=`cd ../src ; pwd`/shar} +: ${UNSHAR=`cd ../src ; pwd`/unshar} +(cd ${tmppfx}.d ; ${SHAR} -m . 2>/dev/null) > ${tmppfx}.shar + +: ${DIFF=diff} + +( cd ${tmppfx}.dir + ${UNSHAR} ../${tmppfx}.shar ) + +${DIFF} -r ${tmppfx}.d ${tmppfx}.dir || exit 1 + +rm -rf ${tmppfx}.* +exit 0 + +## Local Variables: +## mode: shell-script +## tab-width: 8 +## indent-tabs-mode: nil +## sh-indentation: 2 +## sh-basic-offset: 2 +## End: + +## end of shar-2 diff --git a/tests/shar-3 b/tests/shar-3 new file mode 100755 index 0000000..1f0a159 --- /dev/null +++ b/tests/shar-3 @@ -0,0 +1,48 @@ +#! /bin/sh + +current_dir=`pwd` +TMPDIR=${TMPDIR=/tmp} +export TMPDIR +testname=shar-3 +testdir=${TMPDIR}/${testname}-$$.d +rm -rf ${testdir} +(umask 077 ; mkdir ${testdir}) || exit 1 +opts="-S -o ${testdir}/${testname}-%04d.shar" +opts="${opts} -L32 -n ${testname}-test -s ${testname} -z" + +shar=`cd ../src ; pwd`/shar +unshar=`cd ../src ; pwd`/unshar +top_builddir=`cd ${top_builddir} ; pwd` + +cd ${top_builddir} +find . -type f | \ + sed 's,^./,,' | \ + ${shar} -q ${opts} + +cd ${testdir} +mkdir ${testname}.d +opts=-d${testname}.d + +for f in ${testname}-*.shar +do + ${unshar} ${opts} ${f} +done >/dev/null + +if diff -r ${top_builddir} ${testname}.d +then : +else echo ${top_builddir} and ${testname}.d differ ; exit 1 +fi + +cd ${current_dir} +rm -rf ${testdir} +exit 0 + +## Local Variables: +## mode: shell-script +## tab-width: 8 +## indent-tabs-mode: nil +## sh-indentation: 2 +## sh-basic-offset: 2 +## End: + +## end of shar-3 diff --git a/tests/testdata b/tests/testdata new file mode 100644 index 0000000..2db6ca7 --- /dev/null +++ b/tests/testdata @@ -0,0 +1,9 @@ +begin 664 test.bin +M``$"`P0%!@<("0H+#`T.#Q`1$A,4%187&!D:&QP='A\@(2(C)"4F)R@I*BLL +M+2XO,#$R,S0U-C'EZ>WQ]?G^`@8*#A(6& +MAXB)BHN,C8Z/D)&2DY25EI>8F9J;G)V>GZ"AHJ.DI::GJ*FJJZRMKJ^PL;*S +MM+6VM[BYNKN\O;Z_P,'"P\3%QL?(R+CY.7FY^CIZNOL[>[O\/'R\_3U]O?X^?K[_/W^_P`` +` +end diff --git a/tests/uude-1 b/tests/uude-1 new file mode 100755 index 0000000..2aa5f32 --- /dev/null +++ b/tests/uude-1 @@ -0,0 +1,39 @@ +#! /bin/sh +# uudecode output file handling; cf. ../src/ChangeLog 2002-07-06 + +trap 'rm -fr $tmpfiles' 1 2 3 15 + +tno=1 + +tmpfiles="test.bin uudata${tno} uude-test${tno}.err" +rm -fr $tmpfiles + +echo "Was schlimm ist" > uudata${tno} +: ${LN=ln} +${LN} -sf uudata${tno} test.bin + +: ${UUDECODE=uudecode} +# : ${top_srcdir=..} +LC_MESSAGES=C LC_ALL= \ +${UUDECODE} ${top_srcdir}/tests/testdata 2>&1 \ + | sed 's/.*\(not following symlink (test.bin)\).*/\1/' > uude-test${tno}.err + +rm -f test.bin +mkfifo test.bin +LC_MESSAGES=C LC_ALL= \ +${UUDECODE} ${top_srcdir}/tests/testdata 2>&1 \ + | sed 's/.*\(denied writing FIFO (test.bin)\).*/\1/' >>uude-test${tno}.err + +tmpfiles="$tmpfiles uude-test${tno}.ok" +cat << EOF > uude-test${tno}.ok +not following symlink (test.bin) +denied writing FIFO (test.bin) +EOF + +: ${DIFF=diff} +${DIFF} uude-test${tno}.ok uude-test${tno}.err +result=$? + +rm -fr $tmpfiles + +exit $result diff --git a/tests/uutest-1 b/tests/uutest-1 new file mode 100755 index 0000000..59cc216 --- /dev/null +++ b/tests/uutest-1 @@ -0,0 +1,27 @@ +#! /bin/sh + +trap 'rm -fr $tmpfiles' 1 2 3 15 + +tmpfiles="test.bin test.out" +# Make sure no files are left over. +rm -fr $tmpfiles + +: ${UUDECODE=uudecode} +${UUDECODE} $top_srcdir/tests/testdata +result=$? + +if test $result -eq 0; then + : ${UUENCODE=uuencode} + ${UUENCODE} test.bin test.bin > test.out + result=$? + + if test $result -eq 0; then + : ${DIFF=diff} + ${DIFF} $top_srcdir/tests/testdata test.out > /dev/null + result=$? + fi +fi + +rm -fr $tmpfiles + +exit $result diff --git a/version.m4 b/version.m4 new file mode 100644 index 0000000..d1dc387 --- /dev/null +++ b/version.m4 @@ -0,0 +1,5 @@ +m4_define([sharutils_version], [4.7]) +m4_define([sharutils_eaddr], [bug-gnu-utils@gnu.org]) +m4_define([gettext_version], [0.14.5]) +AC_PREREQ([2.61]) +[DIST_ALPHA=] -- 2.7.4